; 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_meltw_descriptor = type <{ i32, i32, i32, i32, i32, i32, i8, i8, i8, i16, i16, i8 }>
%struct.libxsmm_mateltwise_kernel_config_struct = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8 }
%struct.libxsmm_generated_code = type { ptr, i32, i32, i32, i32, i32, i32 }
%struct.libxsmm_mateltwise_gp_reg_mapping_struct = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }

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

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

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

declare i32 @libxsmm_generator_mateltwise_is_binary_cmp_op(ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_unary_binary_avx512_microkernel(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4) #0 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  store ptr %4, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #3
  store i32 0, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #3
  store i32 0, ptr %20, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #3
  store i32 0, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #3
  store i32 32, ptr %26, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #3
  store i32 11, ptr %27, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #3
  store i32 127, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #3
  store i32 127, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #3
  %37 = load ptr, ptr %10, align 8, !tbaa !5
  %38 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %37, i32 0, i32 11
  %39 = load i8, ptr %38, align 1, !tbaa !11
  %40 = zext i8 %39 to i32
  %41 = icmp eq i32 %40, 1
  br i1 %41, label %42, label %49

42:                                               ; preds = %5
  %43 = load ptr, ptr %10, align 8, !tbaa !5
  %44 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %43, i32 0, i32 9
  %45 = load i16, ptr %44, align 1, !tbaa !14
  %46 = zext i16 %45 to i32
  %47 = and i32 %46, 2
  %48 = icmp sgt i32 %47, 0
  br i1 %48, label %116, label %49

49:                                               ; preds = %42, %5
  %50 = load ptr, ptr %10, align 8, !tbaa !5
  %51 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %50, i32 0, i32 11
  %52 = load i8, ptr %51, align 1, !tbaa !11
  %53 = zext i8 %52 to i32
  %54 = icmp eq i32 %53, 2
  br i1 %54, label %55, label %62

55:                                               ; preds = %49
  %56 = load ptr, ptr %10, align 8, !tbaa !5
  %57 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %56, i32 0, i32 9
  %58 = load i16, ptr %57, align 1, !tbaa !14
  %59 = zext i16 %58 to i32
  %60 = and i32 %59, 1
  %61 = icmp sgt i32 %60, 0
  br i1 %61, label %116, label %62

62:                                               ; preds = %55, %49
  %63 = load ptr, ptr %10, align 8, !tbaa !5
  %64 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %63, i32 0, i32 11
  %65 = load i8, ptr %64, align 1, !tbaa !11
  %66 = zext i8 %65 to i32
  %67 = icmp eq i32 %66, 2
  br i1 %67, label %68, label %75

68:                                               ; preds = %62
  %69 = load ptr, ptr %10, align 8, !tbaa !5
  %70 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %69, i32 0, i32 9
  %71 = load i16, ptr %70, align 1, !tbaa !14
  %72 = zext i16 %71 to i32
  %73 = and i32 %72, 2
  %74 = icmp sgt i32 %73, 0
  br i1 %74, label %116, label %75

75:                                               ; preds = %68, %62
  %76 = load ptr, ptr %10, align 8, !tbaa !5
  %77 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %76, i32 0, i32 11
  %78 = load i8, ptr %77, align 1, !tbaa !11
  %79 = zext i8 %78 to i32
  %80 = icmp eq i32 %79, 3
  br i1 %80, label %81, label %88

81:                                               ; preds = %75
  %82 = load ptr, ptr %10, align 8, !tbaa !5
  %83 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %82, i32 0, i32 9
  %84 = load i16, ptr %83, align 1, !tbaa !14
  %85 = zext i16 %84 to i32
  %86 = and i32 %85, 1
  %87 = icmp sgt i32 %86, 0
  br i1 %87, label %116, label %88

88:                                               ; preds = %81, %75
  %89 = load ptr, ptr %10, align 8, !tbaa !5
  %90 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %89, i32 0, i32 11
  %91 = load i8, ptr %90, align 1, !tbaa !11
  %92 = zext i8 %91 to i32
  %93 = icmp eq i32 %92, 3
  br i1 %93, label %94, label %101

94:                                               ; preds = %88
  %95 = load ptr, ptr %10, align 8, !tbaa !5
  %96 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %95, i32 0, i32 9
  %97 = load i16, ptr %96, align 1, !tbaa !14
  %98 = zext i16 %97 to i32
  %99 = and i32 %98, 2
  %100 = icmp sgt i32 %99, 0
  br i1 %100, label %116, label %101

101:                                              ; preds = %94, %88
  %102 = load ptr, ptr %10, align 8, !tbaa !5
  %103 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %102, i32 0, i32 11
  %104 = load i8, ptr %103, align 1, !tbaa !11
  %105 = zext i8 %104 to i32
  %106 = icmp eq i32 %105, 3
  br i1 %106, label %107, label %114

107:                                              ; preds = %101
  %108 = load ptr, ptr %10, align 8, !tbaa !5
  %109 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %108, i32 0, i32 9
  %110 = load i16, ptr %109, align 1, !tbaa !14
  %111 = zext i16 %110 to i32
  %112 = and i32 %111, 4
  %113 = icmp sgt i32 %112, 0
  br label %114

114:                                              ; preds = %107, %101
  %115 = phi i1 [ false, %101 ], [ %113, %107 ]
  br label %116

116:                                              ; preds = %114, %94, %81, %68, %55, %42
  %117 = phi i1 [ true, %94 ], [ true, %81 ], [ true, %68 ], [ true, %55 ], [ true, %42 ], [ %115, %114 ]
  %118 = zext i1 %117 to i64
  %119 = select i1 %117, i32 1, i32 0
  store i32 %119, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #3
  %120 = load ptr, ptr %10, align 8, !tbaa !5
  %121 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %120, i32 0, i32 11
  %122 = load i8, ptr %121, align 1, !tbaa !11
  %123 = zext i8 %122 to i32
  %124 = icmp eq i32 %123, 1
  br i1 %124, label %125, label %132

125:                                              ; preds = %116
  %126 = load ptr, ptr %10, align 8, !tbaa !5
  %127 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %126, i32 0, i32 9
  %128 = load i16, ptr %127, align 1, !tbaa !14
  %129 = zext i16 %128 to i32
  %130 = and i32 %129, 8
  %131 = icmp sgt i32 %130, 0
  br i1 %131, label %199, label %132

132:                                              ; preds = %125, %116
  %133 = load ptr, ptr %10, align 8, !tbaa !5
  %134 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %133, i32 0, i32 11
  %135 = load i8, ptr %134, align 1, !tbaa !11
  %136 = zext i8 %135 to i32
  %137 = icmp eq i32 %136, 2
  br i1 %137, label %138, label %145

138:                                              ; preds = %132
  %139 = load ptr, ptr %10, align 8, !tbaa !5
  %140 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %139, i32 0, i32 9
  %141 = load i16, ptr %140, align 1, !tbaa !14
  %142 = zext i16 %141 to i32
  %143 = and i32 %142, 16
  %144 = icmp sgt i32 %143, 0
  br i1 %144, label %199, label %145

145:                                              ; preds = %138, %132
  %146 = load ptr, ptr %10, align 8, !tbaa !5
  %147 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %146, i32 0, i32 11
  %148 = load i8, ptr %147, align 1, !tbaa !11
  %149 = zext i8 %148 to i32
  %150 = icmp eq i32 %149, 2
  br i1 %150, label %151, label %158

151:                                              ; preds = %145
  %152 = load ptr, ptr %10, align 8, !tbaa !5
  %153 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %152, i32 0, i32 9
  %154 = load i16, ptr %153, align 1, !tbaa !14
  %155 = zext i16 %154 to i32
  %156 = and i32 %155, 32
  %157 = icmp sgt i32 %156, 0
  br i1 %157, label %199, label %158

158:                                              ; preds = %151, %145
  %159 = load ptr, ptr %10, align 8, !tbaa !5
  %160 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %159, i32 0, i32 11
  %161 = load i8, ptr %160, align 1, !tbaa !11
  %162 = zext i8 %161 to i32
  %163 = icmp eq i32 %162, 3
  br i1 %163, label %164, label %171

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

171:                                              ; preds = %164, %158
  %172 = load ptr, ptr %10, align 8, !tbaa !5
  %173 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %172, i32 0, i32 11
  %174 = load i8, ptr %173, align 1, !tbaa !11
  %175 = zext i8 %174 to i32
  %176 = icmp eq i32 %175, 3
  br i1 %176, label %177, label %184

177:                                              ; preds = %171
  %178 = load ptr, ptr %10, align 8, !tbaa !5
  %179 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %178, i32 0, i32 9
  %180 = load i16, ptr %179, align 1, !tbaa !14
  %181 = zext i16 %180 to i32
  %182 = and i32 %181, 128
  %183 = icmp sgt i32 %182, 0
  br i1 %183, label %199, label %184

184:                                              ; preds = %177, %171
  %185 = load ptr, ptr %10, align 8, !tbaa !5
  %186 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %185, i32 0, i32 11
  %187 = load i8, ptr %186, align 1, !tbaa !11
  %188 = zext i8 %187 to i32
  %189 = icmp eq i32 %188, 3
  br i1 %189, label %190, label %197

190:                                              ; preds = %184
  %191 = load ptr, ptr %10, align 8, !tbaa !5
  %192 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %191, i32 0, i32 9
  %193 = load i16, ptr %192, align 1, !tbaa !14
  %194 = zext i16 %193 to i32
  %195 = and i32 %194, 256
  %196 = icmp sgt i32 %195, 0
  br label %197

197:                                              ; preds = %190, %184
  %198 = phi i1 [ false, %184 ], [ %196, %190 ]
  br label %199

199:                                              ; preds = %197, %177, %164, %151, %138, %125
  %200 = phi i1 [ true, %177 ], [ true, %164 ], [ true, %151 ], [ true, %138 ], [ true, %125 ], [ %198, %197 ]
  %201 = zext i1 %200 to i64
  %202 = select i1 %200, i32 1, i32 0
  store i32 %202, ptr %31, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #3
  store i32 32, ptr %32, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #3
  store i32 80, ptr %33, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #3
  store i32 128, ptr %34, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #3
  store i32 176, ptr %35, align 4, !tbaa !9
  %203 = load ptr, ptr %10, align 8, !tbaa !5
  %204 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %203, i32 0, i32 0
  %205 = load i32, ptr %204, align 1, !tbaa !15
  %206 = load ptr, ptr %10, align 8, !tbaa !5
  %207 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %206, i32 0, i32 2
  %208 = load i32, ptr %207, align 1, !tbaa !16
  %209 = icmp ugt i32 %205, %208
  br i1 %209, label %210, label %216

210:                                              ; preds = %199
  %211 = load i32, ptr %30, align 4, !tbaa !9
  %212 = icmp ugt i32 %211, 0
  br i1 %212, label %216, label %213

213:                                              ; preds = %210
  %214 = load i32, ptr %31, align 4, !tbaa !9
  %215 = icmp ugt i32 %214, 0
  br i1 %215, label %216, label %224

216:                                              ; preds = %213, %210, %199
  %217 = load ptr, ptr %10, align 8, !tbaa !5
  %218 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %217, i32 0, i32 0
  %219 = load i32, ptr %218, align 1, !tbaa !15
  %220 = load ptr, ptr %10, align 8, !tbaa !5
  %221 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %220, i32 0, i32 3
  %222 = load i32, ptr %221, align 1, !tbaa !17
  %223 = icmp ugt i32 %219, %222
  br i1 %223, label %224, label %233

224:                                              ; preds = %216, %213
  %225 = load ptr, ptr %6, align 8, !tbaa !5
  %226 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %227 = icmp ult i32 1, %226
  br i1 %227, label %228, label %230

228:                                              ; preds = %224
  %229 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %231

230:                                              ; preds = %224
  br label %231

231:                                              ; preds = %230, %228
  %232 = phi i32 [ %229, %228 ], [ 1, %230 ]
  call void @libxsmm_handle_error(ptr noundef %225, i32 noundef 90007, ptr noundef @__func__.libxsmm_generator_unary_binary_avx512_microkernel, ptr noundef @.str, i32 noundef 4061, i32 noundef %232)
  store i32 1, ptr %36, align 4
  br label %2147

233:                                              ; preds = %216
  %234 = load ptr, ptr %10, align 8, !tbaa !5
  %235 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %234, i32 noundef 0)
  %236 = icmp eq i32 1, %235
  br i1 %236, label %273, label %237

237:                                              ; preds = %233
  %238 = load ptr, ptr %10, align 8, !tbaa !5
  %239 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %238, i32 noundef 0)
  %240 = icmp eq i32 9, %239
  br i1 %240, label %273, label %241

241:                                              ; preds = %237
  %242 = load ptr, ptr %10, align 8, !tbaa !5
  %243 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %242, i32 noundef 0)
  %244 = icmp eq i32 8, %243
  br i1 %244, label %273, label %245

245:                                              ; preds = %241
  %246 = load ptr, ptr %10, align 8, !tbaa !5
  %247 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %246, i32 noundef 0)
  %248 = icmp eq i32 0, %247
  br i1 %248, label %273, label %249

249:                                              ; preds = %245
  %250 = load ptr, ptr %10, align 8, !tbaa !5
  %251 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %250, i32 noundef 0)
  %252 = icmp eq i32 2, %251
  br i1 %252, label %273, label %253

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

257:                                              ; preds = %253
  %258 = load ptr, ptr %10, align 8, !tbaa !5
  %259 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %258, i32 noundef 0)
  %260 = icmp eq i32 4, %259
  br i1 %260, label %273, label %261

261:                                              ; preds = %257
  %262 = load ptr, ptr %10, align 8, !tbaa !5
  %263 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %262, i32 noundef 0)
  %264 = icmp eq i32 5, %263
  br i1 %264, label %273, label %265

265:                                              ; preds = %261
  %266 = load ptr, ptr %10, align 8, !tbaa !5
  %267 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %266, i32 noundef 0)
  %268 = icmp eq i32 11, %267
  br i1 %268, label %273, label %269

269:                                              ; preds = %265
  %270 = load ptr, ptr %10, align 8, !tbaa !5
  %271 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %270, i32 noundef 0)
  %272 = icmp eq i32 10, %271
  br i1 %272, label %273, label %317

273:                                              ; preds = %269, %265, %261, %257, %253, %249, %245, %241, %237, %233
  %274 = load ptr, ptr %10, align 8, !tbaa !5
  %275 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %274, i32 noundef 3)
  %276 = icmp eq i32 1, %275
  br i1 %276, label %389, label %277

277:                                              ; preds = %273
  %278 = load ptr, ptr %10, align 8, !tbaa !5
  %279 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %278, i32 noundef 3)
  %280 = icmp eq i32 9, %279
  br i1 %280, label %389, label %281

281:                                              ; preds = %277
  %282 = load ptr, ptr %10, align 8, !tbaa !5
  %283 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %282, i32 noundef 3)
  %284 = icmp eq i32 8, %283
  br i1 %284, label %389, label %285

285:                                              ; preds = %281
  %286 = load ptr, ptr %10, align 8, !tbaa !5
  %287 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %286, i32 noundef 3)
  %288 = icmp eq i32 0, %287
  br i1 %288, label %389, label %289

289:                                              ; preds = %285
  %290 = load ptr, ptr %10, align 8, !tbaa !5
  %291 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %290, i32 noundef 3)
  %292 = icmp eq i32 2, %291
  br i1 %292, label %389, label %293

293:                                              ; preds = %289
  %294 = load ptr, ptr %10, align 8, !tbaa !5
  %295 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %294, i32 noundef 3)
  %296 = icmp eq i32 3, %295
  br i1 %296, label %389, label %297

297:                                              ; preds = %293
  %298 = load ptr, ptr %10, align 8, !tbaa !5
  %299 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %298, i32 noundef 3)
  %300 = icmp eq i32 4, %299
  br i1 %300, label %389, label %301

301:                                              ; preds = %297
  %302 = load ptr, ptr %10, align 8, !tbaa !5
  %303 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %302, i32 noundef 3)
  %304 = icmp eq i32 5, %303
  br i1 %304, label %389, label %305

305:                                              ; preds = %301
  %306 = load ptr, ptr %10, align 8, !tbaa !5
  %307 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %306, i32 noundef 3)
  %308 = icmp eq i32 11, %307
  br i1 %308, label %389, label %309

309:                                              ; preds = %305
  %310 = load ptr, ptr %10, align 8, !tbaa !5
  %311 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %310, i32 noundef 3)
  %312 = icmp eq i32 14, %311
  br i1 %312, label %389, label %313

313:                                              ; preds = %309
  %314 = load ptr, ptr %10, align 8, !tbaa !5
  %315 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %314, i32 noundef 3)
  %316 = icmp eq i32 10, %315
  br i1 %316, label %389, label %317

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

321:                                              ; preds = %317
  %322 = load ptr, ptr %10, align 8, !tbaa !5
  %323 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %322, i32 noundef 3)
  %324 = icmp eq i32 1, %323
  br i1 %324, label %389, label %325

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

329:                                              ; preds = %325
  %330 = load ptr, ptr %10, align 8, !tbaa !5
  %331 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %330, i32 noundef 3)
  %332 = icmp eq i32 1, %331
  br i1 %332, label %389, label %333

333:                                              ; preds = %329, %325
  %334 = load ptr, ptr %10, align 8, !tbaa !5
  %335 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %334, i32 noundef 0)
  %336 = icmp eq i32 8, %335
  br i1 %336, label %337, label %341

337:                                              ; preds = %333
  %338 = load ptr, ptr %10, align 8, !tbaa !5
  %339 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %338, i32 noundef 3)
  %340 = icmp eq i32 1, %339
  br i1 %340, label %389, label %341

341:                                              ; preds = %337, %333
  %342 = load ptr, ptr %10, align 8, !tbaa !5
  %343 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %342, i32 noundef 0)
  %344 = icmp eq i32 2, %343
  br i1 %344, label %345, label %349

345:                                              ; preds = %341
  %346 = load ptr, ptr %10, align 8, !tbaa !5
  %347 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %346, i32 noundef 3)
  %348 = icmp eq i32 12, %347
  br i1 %348, label %389, label %349

349:                                              ; preds = %345, %341
  %350 = load ptr, ptr %10, align 8, !tbaa !5
  %351 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %350, i32 noundef 0)
  %352 = icmp eq i32 1, %351
  br i1 %352, label %353, label %357

353:                                              ; preds = %349
  %354 = load ptr, ptr %10, align 8, !tbaa !5
  %355 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %354, i32 noundef 3)
  %356 = icmp eq i32 12, %355
  br i1 %356, label %389, label %357

357:                                              ; preds = %353, %349
  %358 = load ptr, ptr %10, align 8, !tbaa !5
  %359 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %358, i32 noundef 0)
  %360 = icmp eq i32 2, %359
  br i1 %360, label %361, label %365

361:                                              ; preds = %357
  %362 = load ptr, ptr %10, align 8, !tbaa !5
  %363 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %362, i32 noundef 3)
  %364 = icmp eq i32 10, %363
  br i1 %364, label %389, label %365

365:                                              ; preds = %361, %357
  %366 = load ptr, ptr %10, align 8, !tbaa !5
  %367 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %366, i32 noundef 0)
  %368 = icmp eq i32 1, %367
  br i1 %368, label %369, label %373

369:                                              ; preds = %365
  %370 = load ptr, ptr %10, align 8, !tbaa !5
  %371 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %370, i32 noundef 3)
  %372 = icmp eq i32 10, %371
  br i1 %372, label %389, label %373

373:                                              ; preds = %369, %365
  %374 = load ptr, ptr %10, align 8, !tbaa !5
  %375 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %374, i32 noundef 0)
  %376 = icmp eq i32 2, %375
  br i1 %376, label %377, label %381

377:                                              ; preds = %373
  %378 = load ptr, ptr %10, align 8, !tbaa !5
  %379 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %378, i32 noundef 3)
  %380 = icmp eq i32 8, %379
  br i1 %380, label %389, label %381

381:                                              ; preds = %377, %373
  %382 = load ptr, ptr %10, align 8, !tbaa !5
  %383 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %382, i32 noundef 0)
  %384 = icmp eq i32 1, %383
  br i1 %384, label %385, label %390

385:                                              ; preds = %381
  %386 = load ptr, ptr %10, align 8, !tbaa !5
  %387 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %386, i32 noundef 3)
  %388 = icmp eq i32 8, %387
  br i1 %388, label %389, label %390

389:                                              ; preds = %385, %377, %369, %361, %353, %345, %337, %329, %321, %313, %309, %305, %301, %297, %293, %289, %285, %281, %277, %273
  br label %399

390:                                              ; preds = %385, %381
  %391 = load ptr, ptr %6, align 8, !tbaa !5
  %392 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %393 = icmp ult i32 1, %392
  br i1 %393, label %394, label %396

394:                                              ; preds = %390
  %395 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %397

396:                                              ; preds = %390
  br label %397

397:                                              ; preds = %396, %394
  %398 = phi i32 [ %395, %394 ], [ 1, %396 ]
  call void @libxsmm_handle_error(ptr noundef %391, i32 noundef 90033, ptr noundef @__func__.libxsmm_generator_unary_binary_avx512_microkernel, ptr noundef @.str, i32 noundef 4099, i32 noundef %398)
  store i32 1, ptr %36, align 4
  br label %2147

399:                                              ; preds = %389
  %400 = load ptr, ptr %10, align 8, !tbaa !5
  %401 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %400, i32 0, i32 11
  %402 = load i8, ptr %401, align 1, !tbaa !11
  %403 = zext i8 %402 to i32
  %404 = icmp eq i32 %403, 1
  br i1 %404, label %405, label %448

405:                                              ; preds = %399
  %406 = load ptr, ptr %10, align 8, !tbaa !5
  %407 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %406, i32 0, i32 10
  %408 = load i16, ptr %407, align 1, !tbaa !18
  %409 = zext i16 %408 to i32
  %410 = icmp eq i32 %409, 33
  br i1 %410, label %411, label %448

411:                                              ; preds = %405
  %412 = load ptr, ptr %10, align 8, !tbaa !5
  %413 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %412, i32 noundef 0)
  %414 = icmp eq i32 8, %413
  br i1 %414, label %423, label %415

415:                                              ; preds = %411
  %416 = load ptr, ptr %10, align 8, !tbaa !5
  %417 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %416, i32 noundef 0)
  %418 = icmp eq i32 1, %417
  br i1 %418, label %423, label %419

419:                                              ; preds = %415
  %420 = load ptr, ptr %10, align 8, !tbaa !5
  %421 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %420, i32 noundef 0)
  %422 = icmp eq i32 9, %421
  br i1 %422, label %423, label %438

423:                                              ; preds = %419, %415, %411
  %424 = load ptr, ptr %10, align 8, !tbaa !5
  %425 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %424, i32 noundef 3)
  %426 = icmp eq i32 11, %425
  br i1 %426, label %427, label %438

427:                                              ; preds = %423
  %428 = load ptr, ptr %10, align 8, !tbaa !5
  %429 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %428, i32 noundef 4)
  %430 = icmp eq i32 14, %429
  br i1 %430, label %431, label %438

431:                                              ; preds = %427
  %432 = load ptr, ptr %9, align 8, !tbaa !5
  %433 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %432, i32 0, i32 120
  store i32 16, ptr %433, align 4, !tbaa !19
  %434 = load ptr, ptr %9, align 8, !tbaa !5
  %435 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %434, i32 0, i32 124
  store i32 16, ptr %435, align 4, !tbaa !21
  %436 = load ptr, ptr %9, align 8, !tbaa !5
  %437 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %436, i32 0, i32 123
  store i32 16, ptr %437, align 4, !tbaa !22
  br label %447

438:                                              ; preds = %427, %423, %419
  %439 = load ptr, ptr %6, align 8, !tbaa !5
  %440 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %441 = icmp ult i32 1, %440
  br i1 %441, label %442, label %444

442:                                              ; preds = %438
  %443 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %445

444:                                              ; preds = %438
  br label %445

445:                                              ; preds = %444, %442
  %446 = phi i32 [ %443, %442 ], [ 1, %444 ]
  call void @libxsmm_handle_error(ptr noundef %439, i32 noundef 90033, ptr noundef @__func__.libxsmm_generator_unary_binary_avx512_microkernel, ptr noundef @.str, i32 noundef 4115, i32 noundef %446)
  store i32 1, ptr %36, align 4
  br label %2147

447:                                              ; preds = %431
  br label %505

448:                                              ; preds = %405, %399
  %449 = load ptr, ptr %10, align 8, !tbaa !5
  %450 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %449, i32 0, i32 11
  %451 = load i8, ptr %450, align 1, !tbaa !11
  %452 = zext i8 %451 to i32
  %453 = icmp eq i32 %452, 2
  br i1 %453, label %454, label %501

454:                                              ; preds = %448
  %455 = load ptr, ptr %10, align 8, !tbaa !5
  %456 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %455, i32 0, i32 10
  %457 = load i16, ptr %456, align 1, !tbaa !18
  %458 = zext i16 %457 to i32
  %459 = icmp eq i32 %458, 26
  br i1 %459, label %460, label %501

460:                                              ; preds = %454
  %461 = load ptr, ptr %10, align 8, !tbaa !5
  %462 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %461, i32 noundef 3)
  %463 = icmp eq i32 8, %462
  br i1 %463, label %472, label %464

464:                                              ; preds = %460
  %465 = load ptr, ptr %10, align 8, !tbaa !5
  %466 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %465, i32 noundef 3)
  %467 = icmp eq i32 1, %466
  br i1 %467, label %472, label %468

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

472:                                              ; preds = %468, %464, %460
  %473 = load ptr, ptr %10, align 8, !tbaa !5
  %474 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %473, i32 noundef 0)
  %475 = icmp eq i32 11, %474
  br i1 %475, label %476, label %491

476:                                              ; preds = %472
  %477 = load ptr, ptr %10, align 8, !tbaa !5
  %478 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %477, i32 noundef 1)
  %479 = icmp eq i32 11, %478
  br i1 %479, label %480, label %491

480:                                              ; preds = %476
  %481 = load ptr, ptr %10, align 8, !tbaa !5
  %482 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %481, i32 noundef 4)
  %483 = icmp eq i32 14, %482
  br i1 %483, label %484, label %491

484:                                              ; preds = %480
  %485 = load ptr, ptr %9, align 8, !tbaa !5
  %486 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %485, i32 0, i32 120
  store i32 16, ptr %486, align 4, !tbaa !19
  %487 = load ptr, ptr %9, align 8, !tbaa !5
  %488 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %487, i32 0, i32 124
  store i32 16, ptr %488, align 4, !tbaa !21
  %489 = load ptr, ptr %9, align 8, !tbaa !5
  %490 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %489, i32 0, i32 123
  store i32 16, ptr %490, align 4, !tbaa !22
  br label %500

491:                                              ; preds = %480, %476, %472, %468
  %492 = load ptr, ptr %6, align 8, !tbaa !5
  %493 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %494 = icmp ult i32 1, %493
  br i1 %494, label %495, label %497

495:                                              ; preds = %491
  %496 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %498

497:                                              ; preds = %491
  br label %498

498:                                              ; preds = %497, %495
  %499 = phi i32 [ %496, %495 ], [ 1, %497 ]
  call void @libxsmm_handle_error(ptr noundef %492, i32 noundef 90033, ptr noundef @__func__.libxsmm_generator_unary_binary_avx512_microkernel, ptr noundef @.str, i32 noundef 4128, i32 noundef %499)
  store i32 1, ptr %36, align 4
  br label %2147

500:                                              ; preds = %484
  br label %504

501:                                              ; preds = %454, %448
  %502 = load ptr, ptr %10, align 8, !tbaa !5
  %503 = load ptr, ptr %9, align 8, !tbaa !5
  call void @libxsmm_generator_configure_avx512_vlens(ptr noundef %502, ptr noundef %503)
  br label %504

504:                                              ; preds = %501, %500
  br label %505

505:                                              ; preds = %504, %447
  %506 = load ptr, ptr %6, align 8, !tbaa !5
  %507 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %506, i32 0, i32 6
  %508 = load i32, ptr %507, align 4, !tbaa !23
  %509 = icmp ult i32 %508, 1005
  br i1 %509, label %510, label %523

510:                                              ; preds = %505
  %511 = load ptr, ptr %9, align 8, !tbaa !5
  %512 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %511, i32 0, i32 120
  %513 = load i32, ptr %512, align 4, !tbaa !19
  %514 = udiv i32 %513, 4
  %515 = load ptr, ptr %9, align 8, !tbaa !5
  %516 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %515, i32 0, i32 120
  store i32 %514, ptr %516, align 4, !tbaa !19
  %517 = load ptr, ptr %9, align 8, !tbaa !5
  %518 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %517, i32 0, i32 123
  %519 = load i32, ptr %518, align 4, !tbaa !22
  %520 = udiv i32 %519, 4
  %521 = load ptr, ptr %9, align 8, !tbaa !5
  %522 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %521, i32 0, i32 123
  store i32 %520, ptr %522, align 4, !tbaa !22
  store i32 16, ptr %26, align 4, !tbaa !9
  br label %561

523:                                              ; preds = %505
  %524 = load ptr, ptr %6, align 8, !tbaa !5
  %525 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %524, i32 0, i32 6
  %526 = load i32, ptr %525, align 4, !tbaa !23
  %527 = icmp ult i32 %526, 1051
  br i1 %527, label %528, label %541

528:                                              ; preds = %523
  %529 = load ptr, ptr %9, align 8, !tbaa !5
  %530 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %529, i32 0, i32 120
  %531 = load i32, ptr %530, align 4, !tbaa !19
  %532 = udiv i32 %531, 2
  %533 = load ptr, ptr %9, align 8, !tbaa !5
  %534 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %533, i32 0, i32 120
  store i32 %532, ptr %534, align 4, !tbaa !19
  %535 = load ptr, ptr %9, align 8, !tbaa !5
  %536 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %535, i32 0, i32 123
  %537 = load i32, ptr %536, align 4, !tbaa !22
  %538 = udiv i32 %537, 2
  %539 = load ptr, ptr %9, align 8, !tbaa !5
  %540 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %539, i32 0, i32 123
  store i32 %538, ptr %540, align 4, !tbaa !22
  store i32 16, ptr %26, align 4, !tbaa !9
  br label %560

541:                                              ; preds = %523
  %542 = load ptr, ptr %6, align 8, !tbaa !5
  %543 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %542, i32 0, i32 6
  %544 = load i32, ptr %543, align 4, !tbaa !23
  %545 = icmp ult i32 %544, 1101
  br i1 %545, label %546, label %559

546:                                              ; preds = %541
  %547 = load ptr, ptr %9, align 8, !tbaa !5
  %548 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %547, i32 0, i32 120
  %549 = load i32, ptr %548, align 4, !tbaa !19
  %550 = udiv i32 %549, 2
  %551 = load ptr, ptr %9, align 8, !tbaa !5
  %552 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %551, i32 0, i32 120
  store i32 %550, ptr %552, align 4, !tbaa !19
  %553 = load ptr, ptr %9, align 8, !tbaa !5
  %554 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %553, i32 0, i32 123
  %555 = load i32, ptr %554, align 4, !tbaa !22
  %556 = udiv i32 %555, 2
  %557 = load ptr, ptr %9, align 8, !tbaa !5
  %558 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %557, i32 0, i32 123
  store i32 %556, ptr %558, align 4, !tbaa !22
  store i32 32, ptr %26, align 4, !tbaa !9
  br label %559

559:                                              ; preds = %546, %541
  br label %560

560:                                              ; preds = %559, %528
  br label %561

561:                                              ; preds = %560, %510
  %562 = load ptr, ptr %10, align 8, !tbaa !5
  %563 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %562, i32 0, i32 11
  %564 = load i8, ptr %563, align 1, !tbaa !11
  %565 = zext i8 %564 to i32
  %566 = icmp eq i32 %565, 1
  br i1 %566, label %567, label %599

567:                                              ; preds = %561
  %568 = load ptr, ptr %10, align 8, !tbaa !5
  %569 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %568, i32 0, i32 9
  %570 = load i16, ptr %569, align 1, !tbaa !14
  %571 = zext i16 %570 to i32
  %572 = and i32 %571, 1
  %573 = icmp sgt i32 %572, 0
  br i1 %573, label %574, label %599

574:                                              ; preds = %567
  %575 = load ptr, ptr %10, align 8, !tbaa !5
  %576 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %575, i32 0, i32 3
  %577 = load i32, ptr %576, align 1, !tbaa !17
  %578 = add i32 %577, 15
  %579 = load ptr, ptr %10, align 8, !tbaa !5
  %580 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %579, i32 0, i32 3
  %581 = load i32, ptr %580, align 1, !tbaa !17
  %582 = add i32 %581, 15
  %583 = urem i32 %582, 16
  %584 = sub i32 %578, %583
  %585 = load ptr, ptr %9, align 8, !tbaa !5
  %586 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %585, i32 0, i32 17
  store i32 %584, ptr %586, align 4, !tbaa !25
  %587 = load ptr, ptr %10, align 8, !tbaa !5
  %588 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %587, i32 0, i32 2
  %589 = load i32, ptr %588, align 1, !tbaa !16
  %590 = add i32 %589, 15
  %591 = load ptr, ptr %10, align 8, !tbaa !5
  %592 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %591, i32 0, i32 2
  %593 = load i32, ptr %592, align 1, !tbaa !16
  %594 = add i32 %593, 15
  %595 = urem i32 %594, 16
  %596 = sub i32 %590, %595
  %597 = load ptr, ptr %9, align 8, !tbaa !5
  %598 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %597, i32 0, i32 16
  store i32 %596, ptr %598, align 4, !tbaa !26
  br label %599

599:                                              ; preds = %574, %567, %561
  %600 = load ptr, ptr %10, align 8, !tbaa !5
  %601 = call i32 @libxsmm_generator_mateltwise_is_binary_cmp_op(ptr noundef %600)
  %602 = icmp ugt i32 %601, 0
  br i1 %602, label %603, label %623

603:                                              ; preds = %599
  %604 = load ptr, ptr %10, align 8, !tbaa !5
  %605 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %604, i32 0, i32 9
  %606 = load i16, ptr %605, align 1, !tbaa !14
  %607 = zext i16 %606 to i32
  %608 = and i32 %607, 128
  %609 = icmp sgt i32 %608, 0
  br i1 %609, label %610, label %623

610:                                              ; preds = %603
  %611 = load ptr, ptr %10, align 8, !tbaa !5
  %612 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %611, i32 0, i32 3
  %613 = load i32, ptr %612, align 1, !tbaa !17
  %614 = add i32 %613, 15
  %615 = load ptr, ptr %10, align 8, !tbaa !5
  %616 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %615, i32 0, i32 3
  %617 = load i32, ptr %616, align 1, !tbaa !17
  %618 = add i32 %617, 15
  %619 = urem i32 %618, 16
  %620 = sub i32 %614, %619
  %621 = load ptr, ptr %9, align 8, !tbaa !5
  %622 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %621, i32 0, i32 17
  store i32 %620, ptr %622, align 4, !tbaa !25
  br label %623

623:                                              ; preds = %610, %603, %599
  %624 = load ptr, ptr %10, align 8, !tbaa !5
  %625 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %624, i32 0, i32 10
  %626 = load i16, ptr %625, align 1, !tbaa !18
  %627 = zext i16 %626 to i32
  %628 = icmp eq i32 %627, 6
  br i1 %628, label %641, label %629

629:                                              ; preds = %623
  %630 = load ptr, ptr %10, align 8, !tbaa !5
  %631 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %630, i32 0, i32 10
  %632 = load i16, ptr %631, align 1, !tbaa !18
  %633 = zext i16 %632 to i32
  %634 = icmp eq i32 %633, 35
  br i1 %634, label %641, label %635

635:                                              ; preds = %629
  %636 = load ptr, ptr %10, align 8, !tbaa !5
  %637 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %636, i32 0, i32 10
  %638 = load i16, ptr %637, align 1, !tbaa !18
  %639 = zext i16 %638 to i32
  %640 = icmp eq i32 %639, 26
  br i1 %640, label %641, label %663

641:                                              ; preds = %635, %629, %623
  %642 = load ptr, ptr %10, align 8, !tbaa !5
  %643 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %642, i32 0, i32 11
  %644 = load i8, ptr %643, align 1, !tbaa !11
  %645 = zext i8 %644 to i32
  %646 = icmp eq i32 %645, 1
  br i1 %646, label %647, label %663

647:                                              ; preds = %641
  %648 = load ptr, ptr %10, align 8, !tbaa !5
  %649 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %648, i32 0, i32 9
  %650 = load i16, ptr %649, align 1, !tbaa !14
  %651 = zext i16 %650 to i32
  %652 = and i32 %651, 1
  %653 = icmp eq i32 %652, 0
  br i1 %653, label %654, label %663

654:                                              ; preds = %647
  %655 = load ptr, ptr %6, align 8, !tbaa !5
  %656 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %657 = icmp ult i32 1, %656
  br i1 %657, label %658, label %660

658:                                              ; preds = %654
  %659 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %661

660:                                              ; preds = %654
  br label %661

661:                                              ; preds = %660, %658
  %662 = phi i32 [ %659, %658 ], [ 1, %660 ]
  call void @libxsmm_handle_error(ptr noundef %655, i32 noundef 90045, ptr noundef @__func__.libxsmm_generator_unary_binary_avx512_microkernel, ptr noundef @.str, i32 noundef 4161, i32 noundef %662)
  store i32 1, ptr %36, align 4
  br label %2147

663:                                              ; preds = %647, %641, %635
  %664 = load ptr, ptr %8, align 8, !tbaa !5
  %665 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %664, i32 0, i32 1
  store i32 8, ptr %665, align 4, !tbaa !27
  %666 = load ptr, ptr %8, align 8, !tbaa !5
  %667 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %666, i32 0, i32 6
  store i32 9, ptr %667, align 4, !tbaa !29
  %668 = load ptr, ptr %8, align 8, !tbaa !5
  %669 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %668, i32 0, i32 24
  store i32 10, ptr %669, align 4, !tbaa !30
  %670 = load ptr, ptr %8, align 8, !tbaa !5
  %671 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %670, i32 0, i32 25
  store i32 11, ptr %671, align 4, !tbaa !31
  %672 = load ptr, ptr %8, align 8, !tbaa !5
  %673 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %672, i32 0, i32 35
  store i32 1, ptr %673, align 4, !tbaa !32
  %674 = load ptr, ptr %10, align 8, !tbaa !5
  %675 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %674, i32 0, i32 11
  %676 = load i8, ptr %675, align 1, !tbaa !11
  %677 = zext i8 %676 to i32
  %678 = icmp eq i32 %677, 2
  br i1 %678, label %679, label %692

679:                                              ; preds = %663
  %680 = load ptr, ptr %8, align 8, !tbaa !5
  %681 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %680, i32 0, i32 2
  store i32 0, ptr %681, align 4, !tbaa !33
  %682 = load ptr, ptr %10, align 8, !tbaa !5
  %683 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %682, i32 0, i32 9
  %684 = load i16, ptr %683, align 1, !tbaa !14
  %685 = zext i16 %684 to i32
  %686 = and i32 %685, 64
  %687 = icmp sgt i32 %686, 0
  br i1 %687, label %688, label %691

688:                                              ; preds = %679
  %689 = load ptr, ptr %8, align 8, !tbaa !5
  %690 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %689, i32 0, i32 15
  store i32 2, ptr %690, align 4, !tbaa !34
  br label %691

691:                                              ; preds = %688, %679
  br label %883

692:                                              ; preds = %663
  %693 = load ptr, ptr %10, align 8, !tbaa !5
  %694 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %693, i32 0, i32 11
  %695 = load i8, ptr %694, align 1, !tbaa !11
  %696 = zext i8 %695 to i32
  %697 = icmp eq i32 %696, 3
  br i1 %697, label %698, label %713

698:                                              ; preds = %692
  %699 = load ptr, ptr %8, align 8, !tbaa !5
  %700 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %699, i32 0, i32 2
  store i32 0, ptr %700, align 4, !tbaa !33
  %701 = load ptr, ptr %8, align 8, !tbaa !5
  %702 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %701, i32 0, i32 3
  store i32 12, ptr %702, align 4, !tbaa !35
  %703 = load ptr, ptr %10, align 8, !tbaa !5
  %704 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %703, i32 0, i32 9
  %705 = load i16, ptr %704, align 1, !tbaa !14
  %706 = zext i16 %705 to i32
  %707 = and i32 %706, 2048
  %708 = icmp sgt i32 %707, 0
  br i1 %708, label %709, label %712

709:                                              ; preds = %698
  %710 = load ptr, ptr %8, align 8, !tbaa !5
  %711 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %710, i32 0, i32 15
  store i32 2, ptr %711, align 4, !tbaa !34
  br label %712

712:                                              ; preds = %709, %698
  br label %882

713:                                              ; preds = %692
  %714 = load ptr, ptr %10, align 8, !tbaa !5
  %715 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %714, i32 0, i32 10
  %716 = load i16, ptr %715, align 1, !tbaa !18
  %717 = zext i16 %716 to i32
  %718 = icmp eq i32 %717, 63
  br i1 %718, label %719, label %722

719:                                              ; preds = %713
  %720 = load ptr, ptr %8, align 8, !tbaa !5
  %721 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %720, i32 0, i32 7
  store i32 0, ptr %721, align 4, !tbaa !36
  br label %722

722:                                              ; preds = %719, %713
  %723 = load ptr, ptr %10, align 8, !tbaa !5
  %724 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %723, i32 0, i32 10
  %725 = load i16, ptr %724, align 1, !tbaa !18
  %726 = zext i16 %725 to i32
  %727 = icmp eq i32 %726, 5
  br i1 %727, label %746, label %728

728:                                              ; preds = %722
  %729 = load ptr, ptr %10, align 8, !tbaa !5
  %730 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %729, i32 0, i32 10
  %731 = load i16, ptr %730, align 1, !tbaa !18
  %732 = zext i16 %731 to i32
  %733 = icmp eq i32 %732, 6
  br i1 %733, label %746, label %734

734:                                              ; preds = %728
  %735 = load ptr, ptr %10, align 8, !tbaa !5
  %736 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %735, i32 0, i32 10
  %737 = load i16, ptr %736, align 1, !tbaa !18
  %738 = zext i16 %737 to i32
  %739 = icmp eq i32 %738, 34
  br i1 %739, label %746, label %740

740:                                              ; preds = %734
  %741 = load ptr, ptr %10, align 8, !tbaa !5
  %742 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %741, i32 0, i32 10
  %743 = load i16, ptr %742, align 1, !tbaa !18
  %744 = zext i16 %743 to i32
  %745 = icmp eq i32 %744, 35
  br i1 %745, label %746, label %749

746:                                              ; preds = %740, %734, %728, %722
  %747 = load ptr, ptr %8, align 8, !tbaa !5
  %748 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %747, i32 0, i32 9
  store i32 0, ptr %748, align 4, !tbaa !37
  br label %749

749:                                              ; preds = %746, %740
  %750 = load ptr, ptr %10, align 8, !tbaa !5
  %751 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %750, i32 0, i32 10
  %752 = load i16, ptr %751, align 1, !tbaa !18
  %753 = zext i16 %752 to i32
  %754 = icmp eq i32 %753, 36
  br i1 %754, label %761, label %755

755:                                              ; preds = %749
  %756 = load ptr, ptr %10, align 8, !tbaa !5
  %757 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %756, i32 0, i32 10
  %758 = load i16, ptr %757, align 1, !tbaa !18
  %759 = zext i16 %758 to i32
  %760 = icmp eq i32 %759, 37
  br i1 %760, label %761, label %766

761:                                              ; preds = %755, %749
  %762 = load ptr, ptr %8, align 8, !tbaa !5
  %763 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %762, i32 0, i32 9
  store i32 0, ptr %763, align 4, !tbaa !37
  %764 = load ptr, ptr %8, align 8, !tbaa !5
  %765 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %764, i32 0, i32 10
  store i32 1, ptr %765, align 4, !tbaa !38
  br label %766

766:                                              ; preds = %761, %755
  %767 = load ptr, ptr %10, align 8, !tbaa !5
  %768 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %767, i32 0, i32 10
  %769 = load i16, ptr %768, align 1, !tbaa !18
  %770 = zext i16 %769 to i32
  %771 = icmp eq i32 %770, 34
  br i1 %771, label %778, label %772

772:                                              ; preds = %766
  %773 = load ptr, ptr %10, align 8, !tbaa !5
  %774 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %773, i32 0, i32 10
  %775 = load i16, ptr %774, align 1, !tbaa !18
  %776 = zext i16 %775 to i32
  %777 = icmp eq i32 %776, 35
  br i1 %777, label %778, label %781

778:                                              ; preds = %772, %766
  %779 = load ptr, ptr %8, align 8, !tbaa !5
  %780 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %779, i32 0, i32 10
  store i32 1, ptr %780, align 4, !tbaa !38
  br label %781

781:                                              ; preds = %778, %772
  %782 = load ptr, ptr %10, align 8, !tbaa !5
  %783 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %782, i32 0, i32 10
  %784 = load i16, ptr %783, align 1, !tbaa !18
  %785 = zext i16 %784 to i32
  %786 = icmp eq i32 %785, 33
  br i1 %786, label %799, label %787

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

793:                                              ; preds = %787
  %794 = load ptr, ptr %10, align 8, !tbaa !5
  %795 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %794, i32 0, i32 10
  %796 = load i16, ptr %795, align 1, !tbaa !18
  %797 = zext i16 %796 to i32
  %798 = icmp eq i32 %797, 65
  br i1 %798, label %799, label %802

799:                                              ; preds = %793, %787, %781
  %800 = load ptr, ptr %8, align 8, !tbaa !5
  %801 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %800, i32 0, i32 11
  store i32 0, ptr %801, align 4, !tbaa !39
  br label %805

802:                                              ; preds = %793
  %803 = load ptr, ptr %8, align 8, !tbaa !5
  %804 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %803, i32 0, i32 11
  store i32 127, ptr %804, align 4, !tbaa !39
  br label %805

805:                                              ; preds = %802, %799
  %806 = load ptr, ptr %10, align 8, !tbaa !5
  %807 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %806, i32 0, i32 10
  %808 = load i16, ptr %807, align 1, !tbaa !18
  %809 = zext i16 %808 to i32
  %810 = icmp eq i32 %809, 65
  br i1 %810, label %811, label %814

811:                                              ; preds = %805
  %812 = load ptr, ptr %8, align 8, !tbaa !5
  %813 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %812, i32 0, i32 12
  store i32 2, ptr %813, align 4, !tbaa !40
  br label %817

814:                                              ; preds = %805
  %815 = load ptr, ptr %8, align 8, !tbaa !5
  %816 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %815, i32 0, i32 12
  store i32 127, ptr %816, align 4, !tbaa !40
  br label %817

817:                                              ; preds = %814, %811
  %818 = load ptr, ptr %10, align 8, !tbaa !5
  %819 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %818, i32 0, i32 10
  %820 = load i16, ptr %819, align 1, !tbaa !18
  %821 = zext i16 %820 to i32
  %822 = icmp eq i32 %821, 25
  br i1 %822, label %829, label %823

823:                                              ; preds = %817
  %824 = load ptr, ptr %10, align 8, !tbaa !5
  %825 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %824, i32 0, i32 10
  %826 = load i16, ptr %825, align 1, !tbaa !18
  %827 = zext i16 %826 to i32
  %828 = icmp eq i32 %827, 26
  br i1 %828, label %829, label %846

829:                                              ; preds = %823, %817
  %830 = load ptr, ptr %8, align 8, !tbaa !5
  %831 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %830, i32 0, i32 13
  store i32 0, ptr %831, align 4, !tbaa !41
  %832 = load ptr, ptr %8, align 8, !tbaa !5
  %833 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %832, i32 0, i32 14
  store i32 1, ptr %833, align 4, !tbaa !42
  %834 = load ptr, ptr %10, align 8, !tbaa !5
  %835 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %834, i32 0, i32 10
  %836 = load i16, ptr %835, align 1, !tbaa !18
  %837 = zext i16 %836 to i32
  %838 = icmp eq i32 %837, 25
  br i1 %838, label %839, label %842

839:                                              ; preds = %829
  %840 = load ptr, ptr %8, align 8, !tbaa !5
  %841 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %840, i32 0, i32 15
  store i32 2, ptr %841, align 4, !tbaa !34
  br label %845

842:                                              ; preds = %829
  %843 = load ptr, ptr %8, align 8, !tbaa !5
  %844 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %843, i32 0, i32 15
  store i32 127, ptr %844, align 4, !tbaa !34
  br label %845

845:                                              ; preds = %842, %839
  br label %853

846:                                              ; preds = %823
  %847 = load ptr, ptr %8, align 8, !tbaa !5
  %848 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %847, i32 0, i32 13
  store i32 127, ptr %848, align 4, !tbaa !41
  %849 = load ptr, ptr %8, align 8, !tbaa !5
  %850 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %849, i32 0, i32 14
  store i32 127, ptr %850, align 4, !tbaa !42
  %851 = load ptr, ptr %8, align 8, !tbaa !5
  %852 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %851, i32 0, i32 15
  store i32 127, ptr %852, align 4, !tbaa !34
  br label %853

853:                                              ; preds = %846, %845
  %854 = load ptr, ptr %10, align 8, !tbaa !5
  %855 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %854, i32 0, i32 10
  %856 = load i16, ptr %855, align 1, !tbaa !18
  %857 = zext i16 %856 to i32
  %858 = icmp eq i32 %857, 42
  br i1 %858, label %865, label %859

859:                                              ; preds = %853
  %860 = load ptr, ptr %10, align 8, !tbaa !5
  %861 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %860, i32 0, i32 10
  %862 = load i16, ptr %861, align 1, !tbaa !18
  %863 = zext i16 %862 to i32
  %864 = icmp eq i32 %863, 43
  br i1 %864, label %865, label %868

865:                                              ; preds = %859, %853
  %866 = load ptr, ptr %8, align 8, !tbaa !5
  %867 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %866, i32 0, i32 34
  store i32 0, ptr %867, align 4, !tbaa !43
  br label %871

868:                                              ; preds = %859
  %869 = load ptr, ptr %8, align 8, !tbaa !5
  %870 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %869, i32 0, i32 34
  store i32 127, ptr %870, align 4, !tbaa !43
  br label %871

871:                                              ; preds = %868, %865
  %872 = load ptr, ptr %10, align 8, !tbaa !5
  %873 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %872, i32 0, i32 9
  %874 = load i16, ptr %873, align 1, !tbaa !14
  %875 = zext i16 %874 to i32
  %876 = and i32 %875, 4096
  %877 = icmp sgt i32 %876, 0
  br i1 %877, label %878, label %881

878:                                              ; preds = %871
  %879 = load ptr, ptr %8, align 8, !tbaa !5
  %880 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %879, i32 0, i32 15
  store i32 2, ptr %880, align 4, !tbaa !34
  br label %881

881:                                              ; preds = %878, %871
  br label %882

882:                                              ; preds = %881, %712
  br label %883

883:                                              ; preds = %882, %691
  %884 = load ptr, ptr %10, align 8, !tbaa !5
  %885 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %884, i32 0, i32 11
  %886 = load i8, ptr %885, align 1, !tbaa !11
  %887 = zext i8 %886 to i32
  %888 = icmp eq i32 %887, 1
  br i1 %888, label %889, label %1333

889:                                              ; preds = %883
  %890 = load ptr, ptr %6, align 8, !tbaa !5
  %891 = load ptr, ptr %9, align 8, !tbaa !5
  %892 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %891, i32 0, i32 14
  %893 = load i32, ptr %892, align 4, !tbaa !44
  %894 = load ptr, ptr %8, align 8, !tbaa !5
  %895 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %894, i32 0, i32 0
  %896 = load i32, ptr %895, align 4, !tbaa !45
  %897 = load i32, ptr %32, align 4, !tbaa !9
  %898 = load ptr, ptr %8, align 8, !tbaa !5
  %899 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %898, i32 0, i32 1
  %900 = load i32, ptr %899, align 4, !tbaa !27
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %890, i32 noundef %893, i32 noundef %896, i32 noundef 127, i32 noundef 0, i32 noundef %897, i32 noundef %900, i32 noundef 0)
  %901 = load ptr, ptr %6, align 8, !tbaa !5
  %902 = load ptr, ptr %9, align 8, !tbaa !5
  %903 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %902, i32 0, i32 14
  %904 = load i32, ptr %903, align 4, !tbaa !44
  %905 = load ptr, ptr %8, align 8, !tbaa !5
  %906 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %905, i32 0, i32 0
  %907 = load i32, ptr %906, align 4, !tbaa !45
  %908 = load i32, ptr %33, align 4, !tbaa !9
  %909 = load ptr, ptr %8, align 8, !tbaa !5
  %910 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %909, i32 0, i32 6
  %911 = load i32, ptr %910, align 4, !tbaa !29
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %901, i32 noundef %904, i32 noundef %907, i32 noundef 127, i32 noundef 0, i32 noundef %908, i32 noundef %911, i32 noundef 0)
  %912 = load ptr, ptr %10, align 8, !tbaa !5
  %913 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %912, i32 0, i32 10
  %914 = load i16, ptr %913, align 1, !tbaa !18
  %915 = zext i16 %914 to i32
  %916 = icmp eq i32 %915, 63
  br i1 %916, label %917, label %930

917:                                              ; preds = %889
  %918 = load ptr, ptr %6, align 8, !tbaa !5
  %919 = load ptr, ptr %9, align 8, !tbaa !5
  %920 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %919, i32 0, i32 14
  %921 = load i32, ptr %920, align 4, !tbaa !44
  %922 = load ptr, ptr %8, align 8, !tbaa !5
  %923 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %922, i32 0, i32 0
  %924 = load i32, ptr %923, align 4, !tbaa !45
  %925 = load i32, ptr %33, align 4, !tbaa !9
  %926 = add nsw i32 %925, 8
  %927 = load ptr, ptr %8, align 8, !tbaa !5
  %928 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %927, i32 0, i32 7
  %929 = load i32, ptr %928, align 4, !tbaa !36
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %918, i32 noundef %921, i32 noundef %924, i32 noundef 127, i32 noundef 0, i32 noundef %926, i32 noundef %929, i32 noundef 0)
  br label %1332

930:                                              ; preds = %889
  %931 = load ptr, ptr %10, align 8, !tbaa !5
  %932 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %931, i32 0, i32 10
  %933 = load i16, ptr %932, align 1, !tbaa !18
  %934 = zext i16 %933 to i32
  %935 = icmp eq i32 %934, 5
  br i1 %935, label %936, label %949

936:                                              ; preds = %930
  %937 = load ptr, ptr %6, align 8, !tbaa !5
  %938 = load ptr, ptr %9, align 8, !tbaa !5
  %939 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %938, i32 0, i32 14
  %940 = load i32, ptr %939, align 4, !tbaa !44
  %941 = load ptr, ptr %8, align 8, !tbaa !5
  %942 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %941, i32 0, i32 0
  %943 = load i32, ptr %942, align 4, !tbaa !45
  %944 = load i32, ptr %33, align 4, !tbaa !9
  %945 = add nsw i32 %944, 8
  %946 = load ptr, ptr %8, align 8, !tbaa !5
  %947 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %946, i32 0, i32 9
  %948 = load i32, ptr %947, align 4, !tbaa !37
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %937, i32 noundef %940, i32 noundef %943, i32 noundef 127, i32 noundef 0, i32 noundef %945, i32 noundef %948, i32 noundef 0)
  br label %1331

949:                                              ; preds = %930
  %950 = load ptr, ptr %10, align 8, !tbaa !5
  %951 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %950, i32 0, i32 10
  %952 = load i16, ptr %951, align 1, !tbaa !18
  %953 = zext i16 %952 to i32
  %954 = icmp eq i32 %953, 6
  br i1 %954, label %955, label %968

955:                                              ; preds = %949
  %956 = load ptr, ptr %6, align 8, !tbaa !5
  %957 = load ptr, ptr %9, align 8, !tbaa !5
  %958 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %957, i32 0, i32 14
  %959 = load i32, ptr %958, align 4, !tbaa !44
  %960 = load ptr, ptr %8, align 8, !tbaa !5
  %961 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %960, i32 0, i32 0
  %962 = load i32, ptr %961, align 4, !tbaa !45
  %963 = load i32, ptr %32, align 4, !tbaa !9
  %964 = add nsw i32 %963, 8
  %965 = load ptr, ptr %8, align 8, !tbaa !5
  %966 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %965, i32 0, i32 9
  %967 = load i32, ptr %966, align 4, !tbaa !37
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %956, i32 noundef %959, i32 noundef %962, i32 noundef 127, i32 noundef 0, i32 noundef %964, i32 noundef %967, i32 noundef 0)
  br label %1330

968:                                              ; preds = %949
  %969 = load ptr, ptr %10, align 8, !tbaa !5
  %970 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %969, i32 0, i32 10
  %971 = load i16, ptr %970, align 1, !tbaa !18
  %972 = zext i16 %971 to i32
  %973 = icmp eq i32 %972, 36
  br i1 %973, label %974, label %988

974:                                              ; preds = %968
  %975 = load ptr, ptr %6, align 8, !tbaa !5
  %976 = load ptr, ptr %9, align 8, !tbaa !5
  %977 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %976, i32 0, i32 14
  %978 = load i32, ptr %977, align 4, !tbaa !44
  %979 = load ptr, ptr %8, align 8, !tbaa !5
  %980 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %979, i32 0, i32 0
  %981 = load i32, ptr %980, align 4, !tbaa !45
  %982 = load ptr, ptr %8, align 8, !tbaa !5
  %983 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %982, i32 0, i32 10
  %984 = load i32, ptr %983, align 4, !tbaa !38
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %975, i32 noundef %978, i32 noundef %981, i32 noundef 127, i32 noundef 0, i32 noundef 0, i32 noundef %984, i32 noundef 0)
  %985 = load ptr, ptr %8, align 8, !tbaa !5
  %986 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %985, i32 0, i32 10
  %987 = load i32, ptr %986, align 4, !tbaa !38
  store i32 %987, ptr %29, align 4, !tbaa !9
  br label %1329

988:                                              ; preds = %968
  %989 = load ptr, ptr %10, align 8, !tbaa !5
  %990 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %989, i32 0, i32 10
  %991 = load i16, ptr %990, align 1, !tbaa !18
  %992 = zext i16 %991 to i32
  %993 = icmp eq i32 %992, 37
  br i1 %993, label %994, label %1020

994:                                              ; preds = %988
  %995 = load ptr, ptr %6, align 8, !tbaa !5
  %996 = load ptr, ptr %9, align 8, !tbaa !5
  %997 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %996, i32 0, i32 14
  %998 = load i32, ptr %997, align 4, !tbaa !44
  %999 = load ptr, ptr %8, align 8, !tbaa !5
  %1000 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %999, i32 0, i32 0
  %1001 = load i32, ptr %1000, align 4, !tbaa !45
  %1002 = load i32, ptr %32, align 4, !tbaa !9
  %1003 = add nsw i32 %1002, 8
  %1004 = load ptr, ptr %8, align 8, !tbaa !5
  %1005 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1004, i32 0, i32 9
  %1006 = load i32, ptr %1005, align 4, !tbaa !37
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %995, i32 noundef %998, i32 noundef %1001, i32 noundef 127, i32 noundef 0, i32 noundef %1003, i32 noundef %1006, i32 noundef 0)
  %1007 = load ptr, ptr %6, align 8, !tbaa !5
  %1008 = load ptr, ptr %9, align 8, !tbaa !5
  %1009 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1008, i32 0, i32 14
  %1010 = load i32, ptr %1009, align 4, !tbaa !44
  %1011 = load ptr, ptr %8, align 8, !tbaa !5
  %1012 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1011, i32 0, i32 0
  %1013 = load i32, ptr %1012, align 4, !tbaa !45
  %1014 = load ptr, ptr %8, align 8, !tbaa !5
  %1015 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1014, i32 0, i32 10
  %1016 = load i32, ptr %1015, align 4, !tbaa !38
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1007, i32 noundef %1010, i32 noundef %1013, i32 noundef 127, i32 noundef 0, i32 noundef 0, i32 noundef %1016, i32 noundef 0)
  %1017 = load ptr, ptr %8, align 8, !tbaa !5
  %1018 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1017, i32 0, i32 10
  %1019 = load i32, ptr %1018, align 4, !tbaa !38
  store i32 %1019, ptr %29, align 4, !tbaa !9
  br label %1328

1020:                                             ; preds = %988
  %1021 = load ptr, ptr %10, align 8, !tbaa !5
  %1022 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1021, i32 0, i32 10
  %1023 = load i16, ptr %1022, align 1, !tbaa !18
  %1024 = zext i16 %1023 to i32
  %1025 = icmp eq i32 %1024, 34
  br i1 %1025, label %1026, label %1052

1026:                                             ; preds = %1020
  %1027 = load ptr, ptr %6, align 8, !tbaa !5
  %1028 = load ptr, ptr %9, align 8, !tbaa !5
  %1029 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1028, i32 0, i32 14
  %1030 = load i32, ptr %1029, align 4, !tbaa !44
  %1031 = load ptr, ptr %8, align 8, !tbaa !5
  %1032 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1031, i32 0, i32 0
  %1033 = load i32, ptr %1032, align 4, !tbaa !45
  %1034 = load ptr, ptr %8, align 8, !tbaa !5
  %1035 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1034, i32 0, i32 10
  %1036 = load i32, ptr %1035, align 4, !tbaa !38
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1027, i32 noundef %1030, i32 noundef %1033, i32 noundef 127, i32 noundef 0, i32 noundef 0, i32 noundef %1036, i32 noundef 0)
  %1037 = load ptr, ptr %6, align 8, !tbaa !5
  %1038 = load ptr, ptr %9, align 8, !tbaa !5
  %1039 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1038, i32 0, i32 14
  %1040 = load i32, ptr %1039, align 4, !tbaa !44
  %1041 = load ptr, ptr %8, align 8, !tbaa !5
  %1042 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1041, i32 0, i32 0
  %1043 = load i32, ptr %1042, align 4, !tbaa !45
  %1044 = load i32, ptr %33, align 4, !tbaa !9
  %1045 = add nsw i32 %1044, 8
  %1046 = load ptr, ptr %8, align 8, !tbaa !5
  %1047 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1046, i32 0, i32 9
  %1048 = load i32, ptr %1047, align 4, !tbaa !37
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1037, i32 noundef %1040, i32 noundef %1043, i32 noundef 127, i32 noundef 0, i32 noundef %1045, i32 noundef %1048, i32 noundef 0)
  %1049 = load ptr, ptr %8, align 8, !tbaa !5
  %1050 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1049, i32 0, i32 10
  %1051 = load i32, ptr %1050, align 4, !tbaa !38
  store i32 %1051, ptr %29, align 4, !tbaa !9
  br label %1327

1052:                                             ; preds = %1020
  %1053 = load ptr, ptr %10, align 8, !tbaa !5
  %1054 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1053, i32 0, i32 10
  %1055 = load i16, ptr %1054, align 1, !tbaa !18
  %1056 = zext i16 %1055 to i32
  %1057 = icmp eq i32 %1056, 35
  br i1 %1057, label %1058, label %1084

1058:                                             ; preds = %1052
  %1059 = load ptr, ptr %6, align 8, !tbaa !5
  %1060 = load ptr, ptr %9, align 8, !tbaa !5
  %1061 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1060, i32 0, i32 14
  %1062 = load i32, ptr %1061, align 4, !tbaa !44
  %1063 = load ptr, ptr %8, align 8, !tbaa !5
  %1064 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1063, i32 0, i32 0
  %1065 = load i32, ptr %1064, align 4, !tbaa !45
  %1066 = load i32, ptr %32, align 4, !tbaa !9
  %1067 = add nsw i32 %1066, 8
  %1068 = load ptr, ptr %8, align 8, !tbaa !5
  %1069 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1068, i32 0, i32 9
  %1070 = load i32, ptr %1069, align 4, !tbaa !37
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1059, i32 noundef %1062, i32 noundef %1065, i32 noundef 127, i32 noundef 0, i32 noundef %1067, i32 noundef %1070, i32 noundef 0)
  %1071 = load ptr, ptr %6, align 8, !tbaa !5
  %1072 = load ptr, ptr %9, align 8, !tbaa !5
  %1073 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1072, i32 0, i32 14
  %1074 = load i32, ptr %1073, align 4, !tbaa !44
  %1075 = load ptr, ptr %8, align 8, !tbaa !5
  %1076 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1075, i32 0, i32 0
  %1077 = load i32, ptr %1076, align 4, !tbaa !45
  %1078 = load ptr, ptr %8, align 8, !tbaa !5
  %1079 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1078, i32 0, i32 10
  %1080 = load i32, ptr %1079, align 4, !tbaa !38
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1071, i32 noundef %1074, i32 noundef %1077, i32 noundef 127, i32 noundef 0, i32 noundef 0, i32 noundef %1080, i32 noundef 0)
  %1081 = load ptr, ptr %8, align 8, !tbaa !5
  %1082 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1081, i32 0, i32 10
  %1083 = load i32, ptr %1082, align 4, !tbaa !38
  store i32 %1083, ptr %29, align 4, !tbaa !9
  br label %1326

1084:                                             ; preds = %1052
  %1085 = load ptr, ptr %10, align 8, !tbaa !5
  %1086 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1085, i32 0, i32 10
  %1087 = load i16, ptr %1086, align 1, !tbaa !18
  %1088 = zext i16 %1087 to i32
  %1089 = icmp eq i32 %1088, 33
  br i1 %1089, label %1090, label %1113

1090:                                             ; preds = %1084
  %1091 = load ptr, ptr %6, align 8, !tbaa !5
  %1092 = load ptr, ptr %9, align 8, !tbaa !5
  %1093 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1092, i32 0, i32 14
  %1094 = load i32, ptr %1093, align 4, !tbaa !44
  %1095 = load ptr, ptr %8, align 8, !tbaa !5
  %1096 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1095, i32 0, i32 0
  %1097 = load i32, ptr %1096, align 4, !tbaa !45
  %1098 = load i32, ptr %33, align 4, !tbaa !9
  %1099 = add nsw i32 %1098, 8
  %1100 = load ptr, ptr %8, align 8, !tbaa !5
  %1101 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1100, i32 0, i32 11
  %1102 = load i32, ptr %1101, align 4, !tbaa !39
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1091, i32 noundef %1094, i32 noundef %1097, i32 noundef 127, i32 noundef 0, i32 noundef %1099, i32 noundef %1102, i32 noundef 0)
  %1103 = load ptr, ptr %6, align 8, !tbaa !5
  %1104 = load ptr, ptr %9, align 8, !tbaa !5
  %1105 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1104, i32 0, i32 14
  %1106 = load i32, ptr %1105, align 4, !tbaa !44
  %1107 = load ptr, ptr %8, align 8, !tbaa !5
  %1108 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1107, i32 0, i32 11
  %1109 = load i32, ptr %1108, align 4, !tbaa !39
  %1110 = load ptr, ptr %8, align 8, !tbaa !5
  %1111 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1110, i32 0, i32 11
  %1112 = load i32, ptr %1111, align 4, !tbaa !39
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1103, i32 noundef %1106, i32 noundef %1109, i32 noundef 127, i32 noundef 0, i32 noundef 0, i32 noundef %1112, i32 noundef 0)
  br label %1325

1113:                                             ; preds = %1084
  %1114 = load ptr, ptr %10, align 8, !tbaa !5
  %1115 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1114, i32 0, i32 10
  %1116 = load i16, ptr %1115, align 1, !tbaa !18
  %1117 = zext i16 %1116 to i32
  %1118 = icmp eq i32 %1117, 64
  br i1 %1118, label %1119, label %1135

1119:                                             ; preds = %1113
  %1120 = load ptr, ptr %6, align 8, !tbaa !5
  %1121 = load ptr, ptr %9, align 8, !tbaa !5
  %1122 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1121, i32 0, i32 14
  %1123 = load i32, ptr %1122, align 4, !tbaa !44
  %1124 = load ptr, ptr %8, align 8, !tbaa !5
  %1125 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1124, i32 0, i32 0
  %1126 = load i32, ptr %1125, align 4, !tbaa !45
  %1127 = load i32, ptr %33, align 4, !tbaa !9
  %1128 = add nsw i32 %1127, 8
  %1129 = load ptr, ptr %8, align 8, !tbaa !5
  %1130 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1129, i32 0, i32 11
  %1131 = load i32, ptr %1130, align 4, !tbaa !39
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1120, i32 noundef %1123, i32 noundef %1126, i32 noundef 127, i32 noundef 0, i32 noundef %1128, i32 noundef %1131, i32 noundef 0)
  %1132 = load ptr, ptr %8, align 8, !tbaa !5
  %1133 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1132, i32 0, i32 11
  %1134 = load i32, ptr %1133, align 4, !tbaa !39
  store i32 %1134, ptr %28, align 4, !tbaa !9
  br label %1324

1135:                                             ; preds = %1113
  %1136 = load ptr, ptr %10, align 8, !tbaa !5
  %1137 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1136, i32 0, i32 10
  %1138 = load i16, ptr %1137, align 1, !tbaa !18
  %1139 = zext i16 %1138 to i32
  %1140 = icmp eq i32 %1139, 65
  br i1 %1140, label %1141, label %1160

1141:                                             ; preds = %1135
  %1142 = load ptr, ptr %6, align 8, !tbaa !5
  %1143 = load ptr, ptr %9, align 8, !tbaa !5
  %1144 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1143, i32 0, i32 14
  %1145 = load i32, ptr %1144, align 4, !tbaa !44
  %1146 = load ptr, ptr %8, align 8, !tbaa !5
  %1147 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1146, i32 0, i32 0
  %1148 = load i32, ptr %1147, align 4, !tbaa !45
  %1149 = load i32, ptr %33, align 4, !tbaa !9
  %1150 = add nsw i32 %1149, 8
  %1151 = load ptr, ptr %8, align 8, !tbaa !5
  %1152 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1151, i32 0, i32 11
  %1153 = load i32, ptr %1152, align 4, !tbaa !39
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1142, i32 noundef %1145, i32 noundef %1148, i32 noundef 127, i32 noundef 0, i32 noundef %1150, i32 noundef %1153, i32 noundef 0)
  %1154 = load ptr, ptr %8, align 8, !tbaa !5
  %1155 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1154, i32 0, i32 11
  %1156 = load i32, ptr %1155, align 4, !tbaa !39
  store i32 %1156, ptr %28, align 4, !tbaa !9
  %1157 = load ptr, ptr %8, align 8, !tbaa !5
  %1158 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1157, i32 0, i32 12
  %1159 = load i32, ptr %1158, align 4, !tbaa !40
  store i32 %1159, ptr %29, align 4, !tbaa !9
  br label %1323

1160:                                             ; preds = %1135
  %1161 = load ptr, ptr %10, align 8, !tbaa !5
  %1162 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1161, i32 0, i32 10
  %1163 = load i16, ptr %1162, align 1, !tbaa !18
  %1164 = zext i16 %1163 to i32
  %1165 = icmp eq i32 %1164, 25
  br i1 %1165, label %1166, label %1205

1166:                                             ; preds = %1160
  %1167 = load ptr, ptr %6, align 8, !tbaa !5
  %1168 = load ptr, ptr %9, align 8, !tbaa !5
  %1169 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1168, i32 0, i32 14
  %1170 = load i32, ptr %1169, align 4, !tbaa !44
  %1171 = load ptr, ptr %8, align 8, !tbaa !5
  %1172 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1171, i32 0, i32 0
  %1173 = load i32, ptr %1172, align 4, !tbaa !45
  %1174 = load ptr, ptr %8, align 8, !tbaa !5
  %1175 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1174, i32 0, i32 15
  %1176 = load i32, ptr %1175, align 4, !tbaa !34
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1167, i32 noundef %1170, i32 noundef %1173, i32 noundef 127, i32 noundef 0, i32 noundef 8, i32 noundef %1176, i32 noundef 0)
  %1177 = load ptr, ptr %6, align 8, !tbaa !5
  %1178 = load ptr, ptr %9, align 8, !tbaa !5
  %1179 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1178, i32 0, i32 14
  %1180 = load i32, ptr %1179, align 4, !tbaa !44
  %1181 = load ptr, ptr %8, align 8, !tbaa !5
  %1182 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1181, i32 0, i32 0
  %1183 = load i32, ptr %1182, align 4, !tbaa !45
  %1184 = load ptr, ptr %8, align 8, !tbaa !5
  %1185 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1184, i32 0, i32 14
  %1186 = load i32, ptr %1185, align 4, !tbaa !42
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1177, i32 noundef %1180, i32 noundef %1183, i32 noundef 127, i32 noundef 0, i32 noundef 0, i32 noundef %1186, i32 noundef 0)
  %1187 = load ptr, ptr %6, align 8, !tbaa !5
  %1188 = load ptr, ptr %9, align 8, !tbaa !5
  %1189 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1188, i32 0, i32 14
  %1190 = load i32, ptr %1189, align 4, !tbaa !44
  %1191 = load ptr, ptr %8, align 8, !tbaa !5
  %1192 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1191, i32 0, i32 0
  %1193 = load i32, ptr %1192, align 4, !tbaa !45
  %1194 = load i32, ptr %33, align 4, !tbaa !9
  %1195 = add nsw i32 %1194, 8
  %1196 = load ptr, ptr %8, align 8, !tbaa !5
  %1197 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1196, i32 0, i32 13
  %1198 = load i32, ptr %1197, align 4, !tbaa !41
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1187, i32 noundef %1190, i32 noundef %1193, i32 noundef 127, i32 noundef 0, i32 noundef %1195, i32 noundef %1198, i32 noundef 0)
  %1199 = load ptr, ptr %8, align 8, !tbaa !5
  %1200 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1199, i32 0, i32 15
  %1201 = load i32, ptr %1200, align 4, !tbaa !34
  store i32 %1201, ptr %28, align 4, !tbaa !9
  %1202 = load ptr, ptr %8, align 8, !tbaa !5
  %1203 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1202, i32 0, i32 14
  %1204 = load i32, ptr %1203, align 4, !tbaa !42
  store i32 %1204, ptr %29, align 4, !tbaa !9
  br label %1322

1205:                                             ; preds = %1160
  %1206 = load ptr, ptr %10, align 8, !tbaa !5
  %1207 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1206, i32 0, i32 10
  %1208 = load i16, ptr %1207, align 1, !tbaa !18
  %1209 = zext i16 %1208 to i32
  %1210 = icmp eq i32 %1209, 26
  br i1 %1210, label %1211, label %1237

1211:                                             ; preds = %1205
  %1212 = load ptr, ptr %6, align 8, !tbaa !5
  %1213 = load ptr, ptr %9, align 8, !tbaa !5
  %1214 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1213, i32 0, i32 14
  %1215 = load i32, ptr %1214, align 4, !tbaa !44
  %1216 = load ptr, ptr %8, align 8, !tbaa !5
  %1217 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1216, i32 0, i32 0
  %1218 = load i32, ptr %1217, align 4, !tbaa !45
  %1219 = load i32, ptr %32, align 4, !tbaa !9
  %1220 = add nsw i32 %1219, 8
  %1221 = load ptr, ptr %8, align 8, !tbaa !5
  %1222 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1221, i32 0, i32 13
  %1223 = load i32, ptr %1222, align 4, !tbaa !41
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1212, i32 noundef %1215, i32 noundef %1218, i32 noundef 127, i32 noundef 0, i32 noundef %1220, i32 noundef %1223, i32 noundef 0)
  %1224 = load ptr, ptr %6, align 8, !tbaa !5
  %1225 = load ptr, ptr %9, align 8, !tbaa !5
  %1226 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1225, i32 0, i32 14
  %1227 = load i32, ptr %1226, align 4, !tbaa !44
  %1228 = load ptr, ptr %8, align 8, !tbaa !5
  %1229 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1228, i32 0, i32 0
  %1230 = load i32, ptr %1229, align 4, !tbaa !45
  %1231 = load ptr, ptr %8, align 8, !tbaa !5
  %1232 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1231, i32 0, i32 14
  %1233 = load i32, ptr %1232, align 4, !tbaa !42
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1224, i32 noundef %1227, i32 noundef %1230, i32 noundef 127, i32 noundef 0, i32 noundef 0, i32 noundef %1233, i32 noundef 0)
  %1234 = load ptr, ptr %8, align 8, !tbaa !5
  %1235 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1234, i32 0, i32 14
  %1236 = load i32, ptr %1235, align 4, !tbaa !42
  store i32 %1236, ptr %29, align 4, !tbaa !9
  br label %1321

1237:                                             ; preds = %1205
  %1238 = load ptr, ptr %10, align 8, !tbaa !5
  %1239 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1238, i32 0, i32 10
  %1240 = load i16, ptr %1239, align 1, !tbaa !18
  %1241 = zext i16 %1240 to i32
  %1242 = icmp eq i32 %1241, 42
  br i1 %1242, label %1243, label %1267

1243:                                             ; preds = %1237
  %1244 = load ptr, ptr %10, align 8, !tbaa !5
  %1245 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1244, i32 0, i32 9
  %1246 = load i16, ptr %1245, align 1, !tbaa !14
  %1247 = zext i16 %1246 to i32
  %1248 = and i32 %1247, 1024
  %1249 = icmp eq i32 %1248, 0
  br i1 %1249, label %1250, label %1263

1250:                                             ; preds = %1243
  %1251 = load ptr, ptr %6, align 8, !tbaa !5
  %1252 = load ptr, ptr %9, align 8, !tbaa !5
  %1253 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1252, i32 0, i32 14
  %1254 = load i32, ptr %1253, align 4, !tbaa !44
  %1255 = load ptr, ptr %8, align 8, !tbaa !5
  %1256 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1255, i32 0, i32 0
  %1257 = load i32, ptr %1256, align 4, !tbaa !45
  %1258 = load i32, ptr %32, align 4, !tbaa !9
  %1259 = add nsw i32 %1258, 8
  %1260 = load ptr, ptr %8, align 8, !tbaa !5
  %1261 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1260, i32 0, i32 34
  %1262 = load i32, ptr %1261, align 4, !tbaa !43
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1251, i32 noundef %1254, i32 noundef %1257, i32 noundef 127, i32 noundef 0, i32 noundef %1259, i32 noundef %1262, i32 noundef 0)
  br label %1263

1263:                                             ; preds = %1250, %1243
  %1264 = load ptr, ptr %8, align 8, !tbaa !5
  %1265 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1264, i32 0, i32 34
  %1266 = load i32, ptr %1265, align 4, !tbaa !43
  store i32 %1266, ptr %28, align 4, !tbaa !9
  br label %1320

1267:                                             ; preds = %1237
  %1268 = load ptr, ptr %10, align 8, !tbaa !5
  %1269 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1268, i32 0, i32 10
  %1270 = load i16, ptr %1269, align 1, !tbaa !18
  %1271 = zext i16 %1270 to i32
  %1272 = icmp eq i32 %1271, 43
  br i1 %1272, label %1273, label %1297

1273:                                             ; preds = %1267
  %1274 = load ptr, ptr %10, align 8, !tbaa !5
  %1275 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1274, i32 0, i32 9
  %1276 = load i16, ptr %1275, align 1, !tbaa !14
  %1277 = zext i16 %1276 to i32
  %1278 = and i32 %1277, 1024
  %1279 = icmp eq i32 %1278, 0
  br i1 %1279, label %1280, label %1293

1280:                                             ; preds = %1273
  %1281 = load ptr, ptr %6, align 8, !tbaa !5
  %1282 = load ptr, ptr %9, align 8, !tbaa !5
  %1283 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1282, i32 0, i32 14
  %1284 = load i32, ptr %1283, align 4, !tbaa !44
  %1285 = load ptr, ptr %8, align 8, !tbaa !5
  %1286 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1285, i32 0, i32 0
  %1287 = load i32, ptr %1286, align 4, !tbaa !45
  %1288 = load i32, ptr %32, align 4, !tbaa !9
  %1289 = add nsw i32 %1288, 8
  %1290 = load ptr, ptr %8, align 8, !tbaa !5
  %1291 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1290, i32 0, i32 34
  %1292 = load i32, ptr %1291, align 4, !tbaa !43
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1281, i32 noundef %1284, i32 noundef %1287, i32 noundef 127, i32 noundef 0, i32 noundef %1289, i32 noundef %1292, i32 noundef 0)
  br label %1293

1293:                                             ; preds = %1280, %1273
  %1294 = load ptr, ptr %8, align 8, !tbaa !5
  %1295 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1294, i32 0, i32 34
  %1296 = load i32, ptr %1295, align 4, !tbaa !43
  store i32 %1296, ptr %28, align 4, !tbaa !9
  br label %1319

1297:                                             ; preds = %1267
  %1298 = load ptr, ptr %10, align 8, !tbaa !5
  %1299 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1298, i32 0, i32 9
  %1300 = load i16, ptr %1299, align 1, !tbaa !14
  %1301 = zext i16 %1300 to i32
  %1302 = and i32 %1301, 4096
  %1303 = icmp sgt i32 %1302, 0
  br i1 %1303, label %1304, label %1318

1304:                                             ; preds = %1297
  %1305 = load ptr, ptr %6, align 8, !tbaa !5
  %1306 = load ptr, ptr %9, align 8, !tbaa !5
  %1307 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1306, i32 0, i32 14
  %1308 = load i32, ptr %1307, align 4, !tbaa !44
  %1309 = load ptr, ptr %8, align 8, !tbaa !5
  %1310 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1309, i32 0, i32 0
  %1311 = load i32, ptr %1310, align 4, !tbaa !45
  %1312 = load ptr, ptr %8, align 8, !tbaa !5
  %1313 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1312, i32 0, i32 15
  %1314 = load i32, ptr %1313, align 4, !tbaa !34
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1305, i32 noundef %1308, i32 noundef %1311, i32 noundef 127, i32 noundef 0, i32 noundef 8, i32 noundef %1314, i32 noundef 0)
  %1315 = load ptr, ptr %8, align 8, !tbaa !5
  %1316 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1315, i32 0, i32 15
  %1317 = load i32, ptr %1316, align 4, !tbaa !34
  store i32 %1317, ptr %28, align 4, !tbaa !9
  br label %1318

1318:                                             ; preds = %1304, %1297
  br label %1319

1319:                                             ; preds = %1318, %1293
  br label %1320

1320:                                             ; preds = %1319, %1263
  br label %1321

1321:                                             ; preds = %1320, %1211
  br label %1322

1322:                                             ; preds = %1321, %1166
  br label %1323

1323:                                             ; preds = %1322, %1141
  br label %1324

1324:                                             ; preds = %1323, %1119
  br label %1325

1325:                                             ; preds = %1324, %1090
  br label %1326

1326:                                             ; preds = %1325, %1058
  br label %1327

1327:                                             ; preds = %1326, %1026
  br label %1328

1328:                                             ; preds = %1327, %994
  br label %1329

1329:                                             ; preds = %1328, %974
  br label %1330

1330:                                             ; preds = %1329, %955
  br label %1331

1331:                                             ; preds = %1330, %936
  br label %1332

1332:                                             ; preds = %1331, %917
  br label %1477

1333:                                             ; preds = %883
  %1334 = load ptr, ptr %10, align 8, !tbaa !5
  %1335 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1334, i32 0, i32 11
  %1336 = load i8, ptr %1335, align 1, !tbaa !11
  %1337 = zext i8 %1336 to i32
  %1338 = icmp eq i32 %1337, 2
  br i1 %1338, label %1339, label %1394

1339:                                             ; preds = %1333
  %1340 = load ptr, ptr %6, align 8, !tbaa !5
  %1341 = load ptr, ptr %9, align 8, !tbaa !5
  %1342 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1341, i32 0, i32 14
  %1343 = load i32, ptr %1342, align 4, !tbaa !44
  %1344 = load ptr, ptr %8, align 8, !tbaa !5
  %1345 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1344, i32 0, i32 0
  %1346 = load i32, ptr %1345, align 4, !tbaa !45
  %1347 = load i32, ptr %32, align 4, !tbaa !9
  %1348 = load ptr, ptr %8, align 8, !tbaa !5
  %1349 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1348, i32 0, i32 1
  %1350 = load i32, ptr %1349, align 4, !tbaa !27
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1340, i32 noundef %1343, i32 noundef %1346, i32 noundef 127, i32 noundef 0, i32 noundef %1347, i32 noundef %1350, i32 noundef 0)
  %1351 = load ptr, ptr %6, align 8, !tbaa !5
  %1352 = load ptr, ptr %9, align 8, !tbaa !5
  %1353 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1352, i32 0, i32 14
  %1354 = load i32, ptr %1353, align 4, !tbaa !44
  %1355 = load ptr, ptr %8, align 8, !tbaa !5
  %1356 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1355, i32 0, i32 0
  %1357 = load i32, ptr %1356, align 4, !tbaa !45
  %1358 = load i32, ptr %33, align 4, !tbaa !9
  %1359 = load ptr, ptr %8, align 8, !tbaa !5
  %1360 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1359, i32 0, i32 2
  %1361 = load i32, ptr %1360, align 4, !tbaa !33
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1351, i32 noundef %1354, i32 noundef %1357, i32 noundef 127, i32 noundef 0, i32 noundef %1358, i32 noundef %1361, i32 noundef 0)
  %1362 = load ptr, ptr %6, align 8, !tbaa !5
  %1363 = load ptr, ptr %9, align 8, !tbaa !5
  %1364 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1363, i32 0, i32 14
  %1365 = load i32, ptr %1364, align 4, !tbaa !44
  %1366 = load ptr, ptr %8, align 8, !tbaa !5
  %1367 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1366, i32 0, i32 0
  %1368 = load i32, ptr %1367, align 4, !tbaa !45
  %1369 = load i32, ptr %34, align 4, !tbaa !9
  %1370 = load ptr, ptr %8, align 8, !tbaa !5
  %1371 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1370, i32 0, i32 6
  %1372 = load i32, ptr %1371, align 4, !tbaa !29
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1362, i32 noundef %1365, i32 noundef %1368, i32 noundef 127, i32 noundef 0, i32 noundef %1369, i32 noundef %1372, i32 noundef 0)
  %1373 = load ptr, ptr %10, align 8, !tbaa !5
  %1374 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1373, i32 0, i32 9
  %1375 = load i16, ptr %1374, align 1, !tbaa !14
  %1376 = zext i16 %1375 to i32
  %1377 = and i32 %1376, 64
  %1378 = icmp sgt i32 %1377, 0
  br i1 %1378, label %1379, label %1393

1379:                                             ; preds = %1339
  %1380 = load ptr, ptr %6, align 8, !tbaa !5
  %1381 = load ptr, ptr %9, align 8, !tbaa !5
  %1382 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1381, i32 0, i32 14
  %1383 = load i32, ptr %1382, align 4, !tbaa !44
  %1384 = load ptr, ptr %8, align 8, !tbaa !5
  %1385 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1384, i32 0, i32 0
  %1386 = load i32, ptr %1385, align 4, !tbaa !45
  %1387 = load ptr, ptr %8, align 8, !tbaa !5
  %1388 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1387, i32 0, i32 15
  %1389 = load i32, ptr %1388, align 4, !tbaa !34
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1380, i32 noundef %1383, i32 noundef %1386, i32 noundef 127, i32 noundef 0, i32 noundef 8, i32 noundef %1389, i32 noundef 0)
  %1390 = load ptr, ptr %8, align 8, !tbaa !5
  %1391 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1390, i32 0, i32 15
  %1392 = load i32, ptr %1391, align 4, !tbaa !34
  store i32 %1392, ptr %28, align 4, !tbaa !9
  br label %1393

1393:                                             ; preds = %1379, %1339
  br label %1476

1394:                                             ; preds = %1333
  %1395 = load ptr, ptr %10, align 8, !tbaa !5
  %1396 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1395, i32 0, i32 11
  %1397 = load i8, ptr %1396, align 1, !tbaa !11
  %1398 = zext i8 %1397 to i32
  %1399 = icmp eq i32 %1398, 3
  br i1 %1399, label %1400, label %1466

1400:                                             ; preds = %1394
  %1401 = load ptr, ptr %6, align 8, !tbaa !5
  %1402 = load ptr, ptr %9, align 8, !tbaa !5
  %1403 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1402, i32 0, i32 14
  %1404 = load i32, ptr %1403, align 4, !tbaa !44
  %1405 = load ptr, ptr %8, align 8, !tbaa !5
  %1406 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1405, i32 0, i32 0
  %1407 = load i32, ptr %1406, align 4, !tbaa !45
  %1408 = load i32, ptr %32, align 4, !tbaa !9
  %1409 = load ptr, ptr %8, align 8, !tbaa !5
  %1410 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1409, i32 0, i32 1
  %1411 = load i32, ptr %1410, align 4, !tbaa !27
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1401, i32 noundef %1404, i32 noundef %1407, i32 noundef 127, i32 noundef 0, i32 noundef %1408, i32 noundef %1411, i32 noundef 0)
  %1412 = load ptr, ptr %6, align 8, !tbaa !5
  %1413 = load ptr, ptr %9, align 8, !tbaa !5
  %1414 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1413, i32 0, i32 14
  %1415 = load i32, ptr %1414, align 4, !tbaa !44
  %1416 = load ptr, ptr %8, align 8, !tbaa !5
  %1417 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1416, i32 0, i32 0
  %1418 = load i32, ptr %1417, align 4, !tbaa !45
  %1419 = load i32, ptr %33, align 4, !tbaa !9
  %1420 = load ptr, ptr %8, align 8, !tbaa !5
  %1421 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1420, i32 0, i32 2
  %1422 = load i32, ptr %1421, align 4, !tbaa !33
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1412, i32 noundef %1415, i32 noundef %1418, i32 noundef 127, i32 noundef 0, i32 noundef %1419, i32 noundef %1422, i32 noundef 0)
  %1423 = load ptr, ptr %6, align 8, !tbaa !5
  %1424 = load ptr, ptr %9, align 8, !tbaa !5
  %1425 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1424, i32 0, i32 14
  %1426 = load i32, ptr %1425, align 4, !tbaa !44
  %1427 = load ptr, ptr %8, align 8, !tbaa !5
  %1428 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1427, i32 0, i32 0
  %1429 = load i32, ptr %1428, align 4, !tbaa !45
  %1430 = load i32, ptr %34, align 4, !tbaa !9
  %1431 = load ptr, ptr %8, align 8, !tbaa !5
  %1432 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1431, i32 0, i32 3
  %1433 = load i32, ptr %1432, align 4, !tbaa !35
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1423, i32 noundef %1426, i32 noundef %1429, i32 noundef 127, i32 noundef 0, i32 noundef %1430, i32 noundef %1433, i32 noundef 0)
  %1434 = load ptr, ptr %6, align 8, !tbaa !5
  %1435 = load ptr, ptr %9, align 8, !tbaa !5
  %1436 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1435, i32 0, i32 14
  %1437 = load i32, ptr %1436, align 4, !tbaa !44
  %1438 = load ptr, ptr %8, align 8, !tbaa !5
  %1439 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1438, i32 0, i32 0
  %1440 = load i32, ptr %1439, align 4, !tbaa !45
  %1441 = load i32, ptr %35, align 4, !tbaa !9
  %1442 = load ptr, ptr %8, align 8, !tbaa !5
  %1443 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1442, i32 0, i32 6
  %1444 = load i32, ptr %1443, align 4, !tbaa !29
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1434, i32 noundef %1437, i32 noundef %1440, i32 noundef 127, i32 noundef 0, i32 noundef %1441, i32 noundef %1444, i32 noundef 0)
  %1445 = load ptr, ptr %10, align 8, !tbaa !5
  %1446 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1445, i32 0, i32 9
  %1447 = load i16, ptr %1446, align 1, !tbaa !14
  %1448 = zext i16 %1447 to i32
  %1449 = and i32 %1448, 2048
  %1450 = icmp sgt i32 %1449, 0
  br i1 %1450, label %1451, label %1465

1451:                                             ; preds = %1400
  %1452 = load ptr, ptr %6, align 8, !tbaa !5
  %1453 = load ptr, ptr %9, align 8, !tbaa !5
  %1454 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1453, i32 0, i32 14
  %1455 = load i32, ptr %1454, align 4, !tbaa !44
  %1456 = load ptr, ptr %8, align 8, !tbaa !5
  %1457 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1456, i32 0, i32 0
  %1458 = load i32, ptr %1457, align 4, !tbaa !45
  %1459 = load ptr, ptr %8, align 8, !tbaa !5
  %1460 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1459, i32 0, i32 15
  %1461 = load i32, ptr %1460, align 4, !tbaa !34
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1452, i32 noundef %1455, i32 noundef %1458, i32 noundef 127, i32 noundef 0, i32 noundef 8, i32 noundef %1461, i32 noundef 0)
  %1462 = load ptr, ptr %8, align 8, !tbaa !5
  %1463 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1462, i32 0, i32 15
  %1464 = load i32, ptr %1463, align 4, !tbaa !34
  store i32 %1464, ptr %28, align 4, !tbaa !9
  br label %1465

1465:                                             ; preds = %1451, %1400
  br label %1475

1466:                                             ; preds = %1394
  %1467 = load ptr, ptr %6, align 8, !tbaa !5
  %1468 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %1469 = icmp ult i32 1, %1468
  br i1 %1469, label %1470, label %1472

1470:                                             ; preds = %1466
  %1471 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %1473

1472:                                             ; preds = %1466
  br label %1473

1473:                                             ; preds = %1472, %1470
  %1474 = phi i32 [ %1471, %1470 ], [ 1, %1472 ]
  call void @libxsmm_handle_error(ptr noundef %1467, i32 noundef 90000, ptr noundef @__func__.libxsmm_generator_unary_binary_avx512_microkernel, ptr noundef @.str, i32 noundef 4508, i32 noundef %1474)
  br label %1475

1475:                                             ; preds = %1473, %1465
  br label %1476

1476:                                             ; preds = %1475, %1393
  br label %1477

1477:                                             ; preds = %1476, %1332
  %1478 = load ptr, ptr %6, align 8, !tbaa !5
  %1479 = load ptr, ptr %9, align 8, !tbaa !5
  %1480 = load ptr, ptr %10, align 8, !tbaa !5
  %1481 = load i32, ptr %27, align 4, !tbaa !9
  %1482 = load i32, ptr %28, align 4, !tbaa !9
  %1483 = load i32, ptr %29, align 4, !tbaa !9
  call void @libxsmm_configure_kernel_vregs_masks(ptr noundef %1478, ptr noundef %1479, ptr noundef %1480, i32 noundef %1481, i32 noundef %1482, i32 noundef %1483)
  %1484 = load i32, ptr %26, align 4, !tbaa !9
  %1485 = load ptr, ptr %9, align 8, !tbaa !5
  %1486 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1485, i32 0, i32 18
  %1487 = load i32, ptr %1486, align 4, !tbaa !46
  %1488 = sub i32 %1484, %1487
  store i32 %1488, ptr %26, align 4, !tbaa !9
  %1489 = load ptr, ptr %10, align 8, !tbaa !5
  %1490 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1489, i32 0, i32 0
  %1491 = load i32, ptr %1490, align 1, !tbaa !15
  %1492 = load ptr, ptr %10, align 8, !tbaa !5
  %1493 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1492, i32 0, i32 1
  %1494 = load i32, ptr %1493, align 1, !tbaa !47
  %1495 = load ptr, ptr %9, align 8, !tbaa !5
  %1496 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1495, i32 0, i32 120
  %1497 = load i32, ptr %1496, align 4, !tbaa !19
  %1498 = load i32, ptr %26, align 4, !tbaa !9
  call void @libxsmm_generator_configure_M_N_blocking(i32 noundef %1491, i32 noundef %1494, i32 noundef %1497, ptr noundef %12, ptr noundef %16, i32 noundef %1498)
  %1499 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_configure_loop_order(ptr noundef %1499, ptr noundef %11, ptr noundef %12, ptr noundef %16, ptr noundef %13, ptr noundef %17, ptr noundef %14, ptr noundef %19)
  %1500 = load i32, ptr %11, align 4, !tbaa !9
  %1501 = load ptr, ptr %9, align 8, !tbaa !5
  %1502 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1501, i32 0, i32 125
  store i32 %1500, ptr %1502, align 4, !tbaa !48
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %1503

1503:                                             ; preds = %2139, %1477
  %1504 = load i32, ptr %22, align 4, !tbaa !9
  %1505 = load i32, ptr %14, align 4, !tbaa !9
  %1506 = icmp ne i32 %1504, %1505
  br i1 %1506, label %1507, label %2140

1507:                                             ; preds = %1503
  store i32 0, ptr %23, align 4, !tbaa !9
  store i32 0, ptr %24, align 4, !tbaa !9
  br label %1508

1508:                                             ; preds = %1752, %1507
  %1509 = load i32, ptr %23, align 4, !tbaa !9
  %1510 = load i32, ptr %19, align 4, !tbaa !9
  %1511 = icmp ne i32 %1509, %1510
  br i1 %1511, label %1512, label %1753

1512:                                             ; preds = %1508
  %1513 = load i32, ptr %22, align 4, !tbaa !9
  %1514 = load i32, ptr %13, align 4, !tbaa !9
  %1515 = icmp ult i32 %1513, %1514
  br i1 %1515, label %1516, label %1518

1516:                                             ; preds = %1512
  %1517 = load i32, ptr %13, align 4, !tbaa !9
  br label %1522

1518:                                             ; preds = %1512
  %1519 = load i32, ptr %14, align 4, !tbaa !9
  %1520 = load i32, ptr %22, align 4, !tbaa !9
  %1521 = sub i32 %1519, %1520
  br label %1522

1522:                                             ; preds = %1518, %1516
  %1523 = phi i32 [ %1517, %1516 ], [ %1521, %1518 ]
  store i32 %1523, ptr %15, align 4, !tbaa !9
  %1524 = load i32, ptr %23, align 4, !tbaa !9
  %1525 = load i32, ptr %17, align 4, !tbaa !9
  %1526 = icmp ult i32 %1524, %1525
  br i1 %1526, label %1527, label %1529

1527:                                             ; preds = %1522
  %1528 = load i32, ptr %17, align 4, !tbaa !9
  br label %1533

1529:                                             ; preds = %1522
  %1530 = load i32, ptr %19, align 4, !tbaa !9
  %1531 = load i32, ptr %23, align 4, !tbaa !9
  %1532 = sub i32 %1530, %1531
  br label %1533

1533:                                             ; preds = %1529, %1527
  %1534 = phi i32 [ %1528, %1527 ], [ %1532, %1529 ]
  store i32 %1534, ptr %18, align 4, !tbaa !9
  %1535 = load i32, ptr %11, align 4, !tbaa !9
  %1536 = icmp eq i32 %1535, 1
  br i1 %1536, label %1537, label %1539

1537:                                             ; preds = %1533
  %1538 = load i32, ptr %15, align 4, !tbaa !9
  br label %1541

1539:                                             ; preds = %1533
  %1540 = load i32, ptr %18, align 4, !tbaa !9
  br label %1541

1541:                                             ; preds = %1539, %1537
  %1542 = phi i32 [ %1538, %1537 ], [ %1540, %1539 ]
  store i32 %1542, ptr %20, align 4, !tbaa !9
  %1543 = load i32, ptr %11, align 4, !tbaa !9
  %1544 = icmp eq i32 %1543, 0
  br i1 %1544, label %1545, label %1547

1545:                                             ; preds = %1541
  %1546 = load i32, ptr %15, align 4, !tbaa !9
  br label %1549

1547:                                             ; preds = %1541
  %1548 = load i32, ptr %18, align 4, !tbaa !9
  br label %1549

1549:                                             ; preds = %1547, %1545
  %1550 = phi i32 [ %1546, %1545 ], [ %1548, %1547 ]
  store i32 %1550, ptr %21, align 4, !tbaa !9
  %1551 = load ptr, ptr %6, align 8, !tbaa !5
  %1552 = load ptr, ptr %7, align 8, !tbaa !5
  %1553 = load ptr, ptr %8, align 8, !tbaa !5
  %1554 = load ptr, ptr %9, align 8, !tbaa !5
  %1555 = load ptr, ptr %10, align 8, !tbaa !5
  %1556 = load i32, ptr %21, align 4, !tbaa !9
  %1557 = load i32, ptr %20, align 4, !tbaa !9
  call void @libxsmm_generator_unary_binary_2d_microkernel(ptr noundef %1551, ptr noundef %1552, ptr noundef %1553, ptr noundef %1554, ptr noundef %1555, i32 noundef %1556, i32 noundef %1557)
  %1558 = load i32, ptr %18, align 4, !tbaa !9
  %1559 = load i32, ptr %23, align 4, !tbaa !9
  %1560 = add i32 %1559, %1558
  store i32 %1560, ptr %23, align 4, !tbaa !9
  %1561 = load i32, ptr %23, align 4, !tbaa !9
  %1562 = load i32, ptr %19, align 4, !tbaa !9
  %1563 = icmp ne i32 %1561, %1562
  br i1 %1563, label %1564, label %1752

1564:                                             ; preds = %1549
  store i32 1, ptr %24, align 4, !tbaa !9
  %1565 = load i32, ptr %11, align 4, !tbaa !9
  %1566 = icmp eq i32 %1565, 1
  %1567 = zext i1 %1566 to i64
  %1568 = select i1 %1566, i32 0, i32 1
  store i32 %1568, ptr %25, align 4, !tbaa !9
  %1569 = load ptr, ptr %6, align 8, !tbaa !5
  %1570 = load ptr, ptr %8, align 8, !tbaa !5
  %1571 = load ptr, ptr %9, align 8, !tbaa !5
  %1572 = load ptr, ptr %10, align 8, !tbaa !5
  %1573 = load ptr, ptr %8, align 8, !tbaa !5
  %1574 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1573, i32 0, i32 1
  %1575 = load i32, ptr %1574, align 4, !tbaa !27
  %1576 = load ptr, ptr %9, align 8, !tbaa !5
  %1577 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1576, i32 0, i32 10
  %1578 = load i32, ptr %1577, align 4, !tbaa !49
  %1579 = load i32, ptr %21, align 4, !tbaa !9
  %1580 = load i32, ptr %20, align 4, !tbaa !9
  %1581 = load i32, ptr %25, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %1569, ptr noundef %1570, ptr noundef %1571, ptr noundef %1572, i32 noundef %1575, i32 noundef %1578, i32 noundef %1579, i32 noundef %1580, i32 noundef %1581)
  %1582 = load ptr, ptr %6, align 8, !tbaa !5
  %1583 = load ptr, ptr %8, align 8, !tbaa !5
  %1584 = load ptr, ptr %9, align 8, !tbaa !5
  %1585 = load ptr, ptr %10, align 8, !tbaa !5
  %1586 = load ptr, ptr %8, align 8, !tbaa !5
  %1587 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1586, i32 0, i32 6
  %1588 = load i32, ptr %1587, align 4, !tbaa !29
  %1589 = load ptr, ptr %9, align 8, !tbaa !5
  %1590 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1589, i32 0, i32 10
  %1591 = load i32, ptr %1590, align 4, !tbaa !49
  %1592 = load i32, ptr %21, align 4, !tbaa !9
  %1593 = load i32, ptr %20, align 4, !tbaa !9
  %1594 = load i32, ptr %25, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %1582, ptr noundef %1583, ptr noundef %1584, ptr noundef %1585, i32 noundef %1588, i32 noundef %1591, i32 noundef %1592, i32 noundef %1593, i32 noundef %1594)
  %1595 = load ptr, ptr %10, align 8, !tbaa !5
  %1596 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1595, i32 0, i32 11
  %1597 = load i8, ptr %1596, align 1, !tbaa !11
  %1598 = zext i8 %1597 to i32
  %1599 = icmp eq i32 %1598, 1
  br i1 %1599, label %1600, label %1621

1600:                                             ; preds = %1564
  %1601 = load ptr, ptr %10, align 8, !tbaa !5
  %1602 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1601, i32 0, i32 10
  %1603 = load i16, ptr %1602, align 1, !tbaa !18
  %1604 = zext i16 %1603 to i32
  %1605 = icmp eq i32 %1604, 63
  br i1 %1605, label %1606, label %1620

1606:                                             ; preds = %1600
  %1607 = load ptr, ptr %6, align 8, !tbaa !5
  %1608 = load ptr, ptr %8, align 8, !tbaa !5
  %1609 = load ptr, ptr %9, align 8, !tbaa !5
  %1610 = load ptr, ptr %10, align 8, !tbaa !5
  %1611 = load ptr, ptr %8, align 8, !tbaa !5
  %1612 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1611, i32 0, i32 7
  %1613 = load i32, ptr %1612, align 4, !tbaa !36
  %1614 = load ptr, ptr %9, align 8, !tbaa !5
  %1615 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1614, i32 0, i32 10
  %1616 = load i32, ptr %1615, align 4, !tbaa !49
  %1617 = load i32, ptr %21, align 4, !tbaa !9
  %1618 = load i32, ptr %20, align 4, !tbaa !9
  %1619 = load i32, ptr %25, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %1607, ptr noundef %1608, ptr noundef %1609, ptr noundef %1610, i32 noundef %1613, i32 noundef %1616, i32 noundef %1617, i32 noundef %1618, i32 noundef %1619)
  br label %1620

1620:                                             ; preds = %1606, %1600
  br label %1621

1621:                                             ; preds = %1620, %1564
  %1622 = load ptr, ptr %10, align 8, !tbaa !5
  %1623 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1622, i32 0, i32 11
  %1624 = load i8, ptr %1623, align 1, !tbaa !11
  %1625 = zext i8 %1624 to i32
  %1626 = icmp eq i32 %1625, 2
  br i1 %1626, label %1633, label %1627

1627:                                             ; preds = %1621
  %1628 = load ptr, ptr %10, align 8, !tbaa !5
  %1629 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1628, i32 0, i32 11
  %1630 = load i8, ptr %1629, align 1, !tbaa !11
  %1631 = zext i8 %1630 to i32
  %1632 = icmp eq i32 %1631, 3
  br i1 %1632, label %1633, label %1647

1633:                                             ; preds = %1627, %1621
  %1634 = load ptr, ptr %6, align 8, !tbaa !5
  %1635 = load ptr, ptr %8, align 8, !tbaa !5
  %1636 = load ptr, ptr %9, align 8, !tbaa !5
  %1637 = load ptr, ptr %10, align 8, !tbaa !5
  %1638 = load ptr, ptr %8, align 8, !tbaa !5
  %1639 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1638, i32 0, i32 2
  %1640 = load i32, ptr %1639, align 4, !tbaa !33
  %1641 = load ptr, ptr %9, align 8, !tbaa !5
  %1642 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1641, i32 0, i32 10
  %1643 = load i32, ptr %1642, align 4, !tbaa !49
  %1644 = load i32, ptr %21, align 4, !tbaa !9
  %1645 = load i32, ptr %20, align 4, !tbaa !9
  %1646 = load i32, ptr %25, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %1634, ptr noundef %1635, ptr noundef %1636, ptr noundef %1637, i32 noundef %1640, i32 noundef %1643, i32 noundef %1644, i32 noundef %1645, i32 noundef %1646)
  br label %1647

1647:                                             ; preds = %1633, %1627
  %1648 = load ptr, ptr %10, align 8, !tbaa !5
  %1649 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1648, i32 0, i32 11
  %1650 = load i8, ptr %1649, align 1, !tbaa !11
  %1651 = zext i8 %1650 to i32
  %1652 = icmp eq i32 %1651, 3
  br i1 %1652, label %1653, label %1667

1653:                                             ; preds = %1647
  %1654 = load ptr, ptr %6, align 8, !tbaa !5
  %1655 = load ptr, ptr %8, align 8, !tbaa !5
  %1656 = load ptr, ptr %9, align 8, !tbaa !5
  %1657 = load ptr, ptr %10, align 8, !tbaa !5
  %1658 = load ptr, ptr %8, align 8, !tbaa !5
  %1659 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1658, i32 0, i32 3
  %1660 = load i32, ptr %1659, align 4, !tbaa !35
  %1661 = load ptr, ptr %9, align 8, !tbaa !5
  %1662 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1661, i32 0, i32 10
  %1663 = load i32, ptr %1662, align 4, !tbaa !49
  %1664 = load i32, ptr %21, align 4, !tbaa !9
  %1665 = load i32, ptr %20, align 4, !tbaa !9
  %1666 = load i32, ptr %25, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %1654, ptr noundef %1655, ptr noundef %1656, ptr noundef %1657, i32 noundef %1660, i32 noundef %1663, i32 noundef %1664, i32 noundef %1665, i32 noundef %1666)
  br label %1667

1667:                                             ; preds = %1653, %1647
  %1668 = load ptr, ptr %10, align 8, !tbaa !5
  %1669 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1668, i32 0, i32 11
  %1670 = load i8, ptr %1669, align 1, !tbaa !11
  %1671 = zext i8 %1670 to i32
  %1672 = icmp eq i32 %1671, 1
  br i1 %1672, label %1673, label %1751

1673:                                             ; preds = %1667
  %1674 = load ptr, ptr %10, align 8, !tbaa !5
  %1675 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1674, i32 0, i32 10
  %1676 = load i16, ptr %1675, align 1, !tbaa !18
  %1677 = zext i16 %1676 to i32
  %1678 = icmp eq i32 %1677, 5
  br i1 %1678, label %1709, label %1679

1679:                                             ; preds = %1673
  %1680 = load ptr, ptr %10, align 8, !tbaa !5
  %1681 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1680, i32 0, i32 10
  %1682 = load i16, ptr %1681, align 1, !tbaa !18
  %1683 = zext i16 %1682 to i32
  %1684 = icmp eq i32 %1683, 6
  br i1 %1684, label %1709, label %1685

1685:                                             ; preds = %1679
  %1686 = load ptr, ptr %10, align 8, !tbaa !5
  %1687 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1686, i32 0, i32 10
  %1688 = load i16, ptr %1687, align 1, !tbaa !18
  %1689 = zext i16 %1688 to i32
  %1690 = icmp eq i32 %1689, 34
  br i1 %1690, label %1709, label %1691

1691:                                             ; preds = %1685
  %1692 = load ptr, ptr %10, align 8, !tbaa !5
  %1693 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1692, i32 0, i32 10
  %1694 = load i16, ptr %1693, align 1, !tbaa !18
  %1695 = zext i16 %1694 to i32
  %1696 = icmp eq i32 %1695, 35
  br i1 %1696, label %1709, label %1697

1697:                                             ; preds = %1691
  %1698 = load ptr, ptr %10, align 8, !tbaa !5
  %1699 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1698, i32 0, i32 10
  %1700 = load i16, ptr %1699, align 1, !tbaa !18
  %1701 = zext i16 %1700 to i32
  %1702 = icmp eq i32 %1701, 36
  br i1 %1702, label %1709, label %1703

1703:                                             ; preds = %1697
  %1704 = load ptr, ptr %10, align 8, !tbaa !5
  %1705 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1704, i32 0, i32 10
  %1706 = load i16, ptr %1705, align 1, !tbaa !18
  %1707 = zext i16 %1706 to i32
  %1708 = icmp eq i32 %1707, 37
  br i1 %1708, label %1709, label %1723

1709:                                             ; preds = %1703, %1697, %1691, %1685, %1679, %1673
  %1710 = load ptr, ptr %6, align 8, !tbaa !5
  %1711 = load ptr, ptr %8, align 8, !tbaa !5
  %1712 = load ptr, ptr %9, align 8, !tbaa !5
  %1713 = load ptr, ptr %10, align 8, !tbaa !5
  %1714 = load ptr, ptr %8, align 8, !tbaa !5
  %1715 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1714, i32 0, i32 9
  %1716 = load i32, ptr %1715, align 4, !tbaa !37
  %1717 = load ptr, ptr %9, align 8, !tbaa !5
  %1718 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1717, i32 0, i32 10
  %1719 = load i32, ptr %1718, align 4, !tbaa !49
  %1720 = load i32, ptr %21, align 4, !tbaa !9
  %1721 = load i32, ptr %20, align 4, !tbaa !9
  %1722 = load i32, ptr %25, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %1710, ptr noundef %1711, ptr noundef %1712, ptr noundef %1713, i32 noundef %1716, i32 noundef %1719, i32 noundef %1720, i32 noundef %1721, i32 noundef %1722)
  br label %1750

1723:                                             ; preds = %1703
  %1724 = load ptr, ptr %10, align 8, !tbaa !5
  %1725 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1724, i32 0, i32 10
  %1726 = load i16, ptr %1725, align 1, !tbaa !18
  %1727 = zext i16 %1726 to i32
  %1728 = icmp eq i32 %1727, 25
  br i1 %1728, label %1735, label %1729

1729:                                             ; preds = %1723
  %1730 = load ptr, ptr %10, align 8, !tbaa !5
  %1731 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1730, i32 0, i32 10
  %1732 = load i16, ptr %1731, align 1, !tbaa !18
  %1733 = zext i16 %1732 to i32
  %1734 = icmp eq i32 %1733, 26
  br i1 %1734, label %1735, label %1749

1735:                                             ; preds = %1729, %1723
  %1736 = load ptr, ptr %6, align 8, !tbaa !5
  %1737 = load ptr, ptr %8, align 8, !tbaa !5
  %1738 = load ptr, ptr %9, align 8, !tbaa !5
  %1739 = load ptr, ptr %10, align 8, !tbaa !5
  %1740 = load ptr, ptr %8, align 8, !tbaa !5
  %1741 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1740, i32 0, i32 13
  %1742 = load i32, ptr %1741, align 4, !tbaa !41
  %1743 = load ptr, ptr %9, align 8, !tbaa !5
  %1744 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1743, i32 0, i32 10
  %1745 = load i32, ptr %1744, align 4, !tbaa !49
  %1746 = load i32, ptr %21, align 4, !tbaa !9
  %1747 = load i32, ptr %20, align 4, !tbaa !9
  %1748 = load i32, ptr %25, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %1736, ptr noundef %1737, ptr noundef %1738, ptr noundef %1739, i32 noundef %1742, i32 noundef %1745, i32 noundef %1746, i32 noundef %1747, i32 noundef %1748)
  br label %1749

1749:                                             ; preds = %1735, %1729
  br label %1750

1750:                                             ; preds = %1749, %1709
  br label %1751

1751:                                             ; preds = %1750, %1667
  br label %1752

1752:                                             ; preds = %1751, %1549
  br label %1508, !llvm.loop !50

1753:                                             ; preds = %1508
  %1754 = load i32, ptr %24, align 4, !tbaa !9
  %1755 = icmp eq i32 %1754, 1
  br i1 %1755, label %1756, label %1944

1756:                                             ; preds = %1753
  %1757 = load i32, ptr %11, align 4, !tbaa !9
  %1758 = icmp eq i32 %1757, 1
  %1759 = zext i1 %1758 to i64
  %1760 = select i1 %1758, i32 0, i32 1
  store i32 %1760, ptr %25, align 4, !tbaa !9
  %1761 = load ptr, ptr %6, align 8, !tbaa !5
  %1762 = load ptr, ptr %8, align 8, !tbaa !5
  %1763 = load ptr, ptr %9, align 8, !tbaa !5
  %1764 = load ptr, ptr %10, align 8, !tbaa !5
  %1765 = load ptr, ptr %8, align 8, !tbaa !5
  %1766 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1765, i32 0, i32 1
  %1767 = load i32, ptr %1766, align 4, !tbaa !27
  %1768 = load ptr, ptr %9, align 8, !tbaa !5
  %1769 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1768, i32 0, i32 11
  %1770 = load i32, ptr %1769, align 4, !tbaa !52
  %1771 = load i32, ptr %21, align 4, !tbaa !9
  %1772 = load i32, ptr %20, align 4, !tbaa !9
  %1773 = load i32, ptr %25, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %1761, ptr noundef %1762, ptr noundef %1763, ptr noundef %1764, i32 noundef %1767, i32 noundef %1770, i32 noundef %1771, i32 noundef %1772, i32 noundef %1773)
  %1774 = load ptr, ptr %6, align 8, !tbaa !5
  %1775 = load ptr, ptr %8, align 8, !tbaa !5
  %1776 = load ptr, ptr %9, align 8, !tbaa !5
  %1777 = load ptr, ptr %10, align 8, !tbaa !5
  %1778 = load ptr, ptr %8, align 8, !tbaa !5
  %1779 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1778, i32 0, i32 6
  %1780 = load i32, ptr %1779, align 4, !tbaa !29
  %1781 = load ptr, ptr %9, align 8, !tbaa !5
  %1782 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1781, i32 0, i32 11
  %1783 = load i32, ptr %1782, align 4, !tbaa !52
  %1784 = load i32, ptr %21, align 4, !tbaa !9
  %1785 = load i32, ptr %20, align 4, !tbaa !9
  %1786 = load i32, ptr %25, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %1774, ptr noundef %1775, ptr noundef %1776, ptr noundef %1777, i32 noundef %1780, i32 noundef %1783, i32 noundef %1784, i32 noundef %1785, i32 noundef %1786)
  %1787 = load ptr, ptr %10, align 8, !tbaa !5
  %1788 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1787, i32 0, i32 11
  %1789 = load i8, ptr %1788, align 1, !tbaa !11
  %1790 = zext i8 %1789 to i32
  %1791 = icmp eq i32 %1790, 1
  br i1 %1791, label %1792, label %1813

1792:                                             ; preds = %1756
  %1793 = load ptr, ptr %10, align 8, !tbaa !5
  %1794 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1793, i32 0, i32 10
  %1795 = load i16, ptr %1794, align 1, !tbaa !18
  %1796 = zext i16 %1795 to i32
  %1797 = icmp eq i32 %1796, 63
  br i1 %1797, label %1798, label %1812

1798:                                             ; preds = %1792
  %1799 = load ptr, ptr %6, align 8, !tbaa !5
  %1800 = load ptr, ptr %8, align 8, !tbaa !5
  %1801 = load ptr, ptr %9, align 8, !tbaa !5
  %1802 = load ptr, ptr %10, align 8, !tbaa !5
  %1803 = load ptr, ptr %8, align 8, !tbaa !5
  %1804 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1803, i32 0, i32 7
  %1805 = load i32, ptr %1804, align 4, !tbaa !36
  %1806 = load ptr, ptr %9, align 8, !tbaa !5
  %1807 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1806, i32 0, i32 11
  %1808 = load i32, ptr %1807, align 4, !tbaa !52
  %1809 = load i32, ptr %21, align 4, !tbaa !9
  %1810 = load i32, ptr %20, align 4, !tbaa !9
  %1811 = load i32, ptr %25, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %1799, ptr noundef %1800, ptr noundef %1801, ptr noundef %1802, i32 noundef %1805, i32 noundef %1808, i32 noundef %1809, i32 noundef %1810, i32 noundef %1811)
  br label %1812

1812:                                             ; preds = %1798, %1792
  br label %1813

1813:                                             ; preds = %1812, %1756
  %1814 = load ptr, ptr %10, align 8, !tbaa !5
  %1815 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1814, i32 0, i32 11
  %1816 = load i8, ptr %1815, align 1, !tbaa !11
  %1817 = zext i8 %1816 to i32
  %1818 = icmp eq i32 %1817, 2
  br i1 %1818, label %1825, label %1819

1819:                                             ; preds = %1813
  %1820 = load ptr, ptr %10, align 8, !tbaa !5
  %1821 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1820, i32 0, i32 11
  %1822 = load i8, ptr %1821, align 1, !tbaa !11
  %1823 = zext i8 %1822 to i32
  %1824 = icmp eq i32 %1823, 3
  br i1 %1824, label %1825, label %1839

1825:                                             ; preds = %1819, %1813
  %1826 = load ptr, ptr %6, align 8, !tbaa !5
  %1827 = load ptr, ptr %8, align 8, !tbaa !5
  %1828 = load ptr, ptr %9, align 8, !tbaa !5
  %1829 = load ptr, ptr %10, align 8, !tbaa !5
  %1830 = load ptr, ptr %8, align 8, !tbaa !5
  %1831 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1830, i32 0, i32 2
  %1832 = load i32, ptr %1831, align 4, !tbaa !33
  %1833 = load ptr, ptr %9, align 8, !tbaa !5
  %1834 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1833, i32 0, i32 11
  %1835 = load i32, ptr %1834, align 4, !tbaa !52
  %1836 = load i32, ptr %21, align 4, !tbaa !9
  %1837 = load i32, ptr %20, align 4, !tbaa !9
  %1838 = load i32, ptr %25, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %1826, ptr noundef %1827, ptr noundef %1828, ptr noundef %1829, i32 noundef %1832, i32 noundef %1835, i32 noundef %1836, i32 noundef %1837, i32 noundef %1838)
  br label %1839

1839:                                             ; preds = %1825, %1819
  %1840 = load ptr, ptr %10, align 8, !tbaa !5
  %1841 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1840, i32 0, i32 11
  %1842 = load i8, ptr %1841, align 1, !tbaa !11
  %1843 = zext i8 %1842 to i32
  %1844 = icmp eq i32 %1843, 3
  br i1 %1844, label %1845, label %1859

1845:                                             ; preds = %1839
  %1846 = load ptr, ptr %6, align 8, !tbaa !5
  %1847 = load ptr, ptr %8, align 8, !tbaa !5
  %1848 = load ptr, ptr %9, align 8, !tbaa !5
  %1849 = load ptr, ptr %10, align 8, !tbaa !5
  %1850 = load ptr, ptr %8, align 8, !tbaa !5
  %1851 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1850, i32 0, i32 3
  %1852 = load i32, ptr %1851, align 4, !tbaa !35
  %1853 = load ptr, ptr %9, align 8, !tbaa !5
  %1854 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1853, i32 0, i32 11
  %1855 = load i32, ptr %1854, align 4, !tbaa !52
  %1856 = load i32, ptr %21, align 4, !tbaa !9
  %1857 = load i32, ptr %20, align 4, !tbaa !9
  %1858 = load i32, ptr %25, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %1846, ptr noundef %1847, ptr noundef %1848, ptr noundef %1849, i32 noundef %1852, i32 noundef %1855, i32 noundef %1856, i32 noundef %1857, i32 noundef %1858)
  br label %1859

1859:                                             ; preds = %1845, %1839
  %1860 = load ptr, ptr %10, align 8, !tbaa !5
  %1861 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1860, i32 0, i32 11
  %1862 = load i8, ptr %1861, align 1, !tbaa !11
  %1863 = zext i8 %1862 to i32
  %1864 = icmp eq i32 %1863, 1
  br i1 %1864, label %1865, label %1943

1865:                                             ; preds = %1859
  %1866 = load ptr, ptr %10, align 8, !tbaa !5
  %1867 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1866, i32 0, i32 10
  %1868 = load i16, ptr %1867, align 1, !tbaa !18
  %1869 = zext i16 %1868 to i32
  %1870 = icmp eq i32 %1869, 5
  br i1 %1870, label %1901, label %1871

1871:                                             ; preds = %1865
  %1872 = load ptr, ptr %10, align 8, !tbaa !5
  %1873 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1872, i32 0, i32 10
  %1874 = load i16, ptr %1873, align 1, !tbaa !18
  %1875 = zext i16 %1874 to i32
  %1876 = icmp eq i32 %1875, 6
  br i1 %1876, label %1901, label %1877

1877:                                             ; preds = %1871
  %1878 = load ptr, ptr %10, align 8, !tbaa !5
  %1879 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1878, i32 0, i32 10
  %1880 = load i16, ptr %1879, align 1, !tbaa !18
  %1881 = zext i16 %1880 to i32
  %1882 = icmp eq i32 %1881, 34
  br i1 %1882, label %1901, label %1883

1883:                                             ; preds = %1877
  %1884 = load ptr, ptr %10, align 8, !tbaa !5
  %1885 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1884, i32 0, i32 10
  %1886 = load i16, ptr %1885, align 1, !tbaa !18
  %1887 = zext i16 %1886 to i32
  %1888 = icmp eq i32 %1887, 35
  br i1 %1888, label %1901, label %1889

1889:                                             ; preds = %1883
  %1890 = load ptr, ptr %10, align 8, !tbaa !5
  %1891 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1890, i32 0, i32 10
  %1892 = load i16, ptr %1891, align 1, !tbaa !18
  %1893 = zext i16 %1892 to i32
  %1894 = icmp eq i32 %1893, 36
  br i1 %1894, label %1901, label %1895

1895:                                             ; preds = %1889
  %1896 = load ptr, ptr %10, align 8, !tbaa !5
  %1897 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1896, i32 0, i32 10
  %1898 = load i16, ptr %1897, align 1, !tbaa !18
  %1899 = zext i16 %1898 to i32
  %1900 = icmp eq i32 %1899, 37
  br i1 %1900, label %1901, label %1915

1901:                                             ; preds = %1895, %1889, %1883, %1877, %1871, %1865
  %1902 = load ptr, ptr %6, align 8, !tbaa !5
  %1903 = load ptr, ptr %8, align 8, !tbaa !5
  %1904 = load ptr, ptr %9, align 8, !tbaa !5
  %1905 = load ptr, ptr %10, align 8, !tbaa !5
  %1906 = load ptr, ptr %8, align 8, !tbaa !5
  %1907 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1906, i32 0, i32 9
  %1908 = load i32, ptr %1907, align 4, !tbaa !37
  %1909 = load ptr, ptr %9, align 8, !tbaa !5
  %1910 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1909, i32 0, i32 11
  %1911 = load i32, ptr %1910, align 4, !tbaa !52
  %1912 = load i32, ptr %21, align 4, !tbaa !9
  %1913 = load i32, ptr %20, align 4, !tbaa !9
  %1914 = load i32, ptr %25, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %1902, ptr noundef %1903, ptr noundef %1904, ptr noundef %1905, i32 noundef %1908, i32 noundef %1911, i32 noundef %1912, i32 noundef %1913, i32 noundef %1914)
  br label %1942

1915:                                             ; preds = %1895
  %1916 = load ptr, ptr %10, align 8, !tbaa !5
  %1917 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1916, i32 0, i32 10
  %1918 = load i16, ptr %1917, align 1, !tbaa !18
  %1919 = zext i16 %1918 to i32
  %1920 = icmp eq i32 %1919, 25
  br i1 %1920, label %1927, label %1921

1921:                                             ; preds = %1915
  %1922 = load ptr, ptr %10, align 8, !tbaa !5
  %1923 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1922, i32 0, i32 10
  %1924 = load i16, ptr %1923, align 1, !tbaa !18
  %1925 = zext i16 %1924 to i32
  %1926 = icmp eq i32 %1925, 26
  br i1 %1926, label %1927, label %1941

1927:                                             ; preds = %1921, %1915
  %1928 = load ptr, ptr %6, align 8, !tbaa !5
  %1929 = load ptr, ptr %8, align 8, !tbaa !5
  %1930 = load ptr, ptr %9, align 8, !tbaa !5
  %1931 = load ptr, ptr %10, align 8, !tbaa !5
  %1932 = load ptr, ptr %8, align 8, !tbaa !5
  %1933 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1932, i32 0, i32 13
  %1934 = load i32, ptr %1933, align 4, !tbaa !41
  %1935 = load ptr, ptr %9, align 8, !tbaa !5
  %1936 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1935, i32 0, i32 11
  %1937 = load i32, ptr %1936, align 4, !tbaa !52
  %1938 = load i32, ptr %21, align 4, !tbaa !9
  %1939 = load i32, ptr %20, align 4, !tbaa !9
  %1940 = load i32, ptr %25, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %1928, ptr noundef %1929, ptr noundef %1930, ptr noundef %1931, i32 noundef %1934, i32 noundef %1937, i32 noundef %1938, i32 noundef %1939, i32 noundef %1940)
  br label %1941

1941:                                             ; preds = %1927, %1921
  br label %1942

1942:                                             ; preds = %1941, %1901
  br label %1943

1943:                                             ; preds = %1942, %1859
  br label %1944

1944:                                             ; preds = %1943, %1753
  %1945 = load i32, ptr %15, align 4, !tbaa !9
  %1946 = load i32, ptr %22, align 4, !tbaa !9
  %1947 = add i32 %1946, %1945
  store i32 %1947, ptr %22, align 4, !tbaa !9
  %1948 = load i32, ptr %22, align 4, !tbaa !9
  %1949 = load i32, ptr %14, align 4, !tbaa !9
  %1950 = icmp ne i32 %1948, %1949
  br i1 %1950, label %1951, label %2139

1951:                                             ; preds = %1944
  %1952 = load i32, ptr %11, align 4, !tbaa !9
  %1953 = icmp eq i32 %1952, 0
  %1954 = zext i1 %1953 to i64
  %1955 = select i1 %1953, i32 0, i32 1
  store i32 %1955, ptr %25, align 4, !tbaa !9
  %1956 = load ptr, ptr %6, align 8, !tbaa !5
  %1957 = load ptr, ptr %8, align 8, !tbaa !5
  %1958 = load ptr, ptr %9, align 8, !tbaa !5
  %1959 = load ptr, ptr %10, align 8, !tbaa !5
  %1960 = load ptr, ptr %8, align 8, !tbaa !5
  %1961 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1960, i32 0, i32 1
  %1962 = load i32, ptr %1961, align 4, !tbaa !27
  %1963 = load ptr, ptr %9, align 8, !tbaa !5
  %1964 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1963, i32 0, i32 10
  %1965 = load i32, ptr %1964, align 4, !tbaa !49
  %1966 = load i32, ptr %21, align 4, !tbaa !9
  %1967 = load i32, ptr %20, align 4, !tbaa !9
  %1968 = load i32, ptr %25, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %1956, ptr noundef %1957, ptr noundef %1958, ptr noundef %1959, i32 noundef %1962, i32 noundef %1965, i32 noundef %1966, i32 noundef %1967, i32 noundef %1968)
  %1969 = load ptr, ptr %6, align 8, !tbaa !5
  %1970 = load ptr, ptr %8, align 8, !tbaa !5
  %1971 = load ptr, ptr %9, align 8, !tbaa !5
  %1972 = load ptr, ptr %10, align 8, !tbaa !5
  %1973 = load ptr, ptr %8, align 8, !tbaa !5
  %1974 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1973, i32 0, i32 6
  %1975 = load i32, ptr %1974, align 4, !tbaa !29
  %1976 = load ptr, ptr %9, align 8, !tbaa !5
  %1977 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1976, i32 0, i32 10
  %1978 = load i32, ptr %1977, align 4, !tbaa !49
  %1979 = load i32, ptr %21, align 4, !tbaa !9
  %1980 = load i32, ptr %20, align 4, !tbaa !9
  %1981 = load i32, ptr %25, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %1969, ptr noundef %1970, ptr noundef %1971, ptr noundef %1972, i32 noundef %1975, i32 noundef %1978, i32 noundef %1979, i32 noundef %1980, i32 noundef %1981)
  %1982 = load ptr, ptr %10, align 8, !tbaa !5
  %1983 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1982, i32 0, i32 11
  %1984 = load i8, ptr %1983, align 1, !tbaa !11
  %1985 = zext i8 %1984 to i32
  %1986 = icmp eq i32 %1985, 1
  br i1 %1986, label %1987, label %2008

1987:                                             ; preds = %1951
  %1988 = load ptr, ptr %10, align 8, !tbaa !5
  %1989 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1988, i32 0, i32 10
  %1990 = load i16, ptr %1989, align 1, !tbaa !18
  %1991 = zext i16 %1990 to i32
  %1992 = icmp eq i32 %1991, 63
  br i1 %1992, label %1993, label %2007

1993:                                             ; preds = %1987
  %1994 = load ptr, ptr %6, align 8, !tbaa !5
  %1995 = load ptr, ptr %8, align 8, !tbaa !5
  %1996 = load ptr, ptr %9, align 8, !tbaa !5
  %1997 = load ptr, ptr %10, align 8, !tbaa !5
  %1998 = load ptr, ptr %8, align 8, !tbaa !5
  %1999 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1998, i32 0, i32 7
  %2000 = load i32, ptr %1999, align 4, !tbaa !36
  %2001 = load ptr, ptr %9, align 8, !tbaa !5
  %2002 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2001, i32 0, i32 10
  %2003 = load i32, ptr %2002, align 4, !tbaa !49
  %2004 = load i32, ptr %21, align 4, !tbaa !9
  %2005 = load i32, ptr %20, align 4, !tbaa !9
  %2006 = load i32, ptr %25, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %1994, ptr noundef %1995, ptr noundef %1996, ptr noundef %1997, i32 noundef %2000, i32 noundef %2003, i32 noundef %2004, i32 noundef %2005, i32 noundef %2006)
  br label %2007

2007:                                             ; preds = %1993, %1987
  br label %2008

2008:                                             ; preds = %2007, %1951
  %2009 = load ptr, ptr %10, align 8, !tbaa !5
  %2010 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %2009, i32 0, i32 11
  %2011 = load i8, ptr %2010, align 1, !tbaa !11
  %2012 = zext i8 %2011 to i32
  %2013 = icmp eq i32 %2012, 2
  br i1 %2013, label %2020, label %2014

2014:                                             ; preds = %2008
  %2015 = load ptr, ptr %10, align 8, !tbaa !5
  %2016 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %2015, i32 0, i32 11
  %2017 = load i8, ptr %2016, align 1, !tbaa !11
  %2018 = zext i8 %2017 to i32
  %2019 = icmp eq i32 %2018, 3
  br i1 %2019, label %2020, label %2034

2020:                                             ; preds = %2014, %2008
  %2021 = load ptr, ptr %6, align 8, !tbaa !5
  %2022 = load ptr, ptr %8, align 8, !tbaa !5
  %2023 = load ptr, ptr %9, align 8, !tbaa !5
  %2024 = load ptr, ptr %10, align 8, !tbaa !5
  %2025 = load ptr, ptr %8, align 8, !tbaa !5
  %2026 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2025, i32 0, i32 2
  %2027 = load i32, ptr %2026, align 4, !tbaa !33
  %2028 = load ptr, ptr %9, align 8, !tbaa !5
  %2029 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2028, i32 0, i32 10
  %2030 = load i32, ptr %2029, align 4, !tbaa !49
  %2031 = load i32, ptr %21, align 4, !tbaa !9
  %2032 = load i32, ptr %20, align 4, !tbaa !9
  %2033 = load i32, ptr %25, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %2021, ptr noundef %2022, ptr noundef %2023, ptr noundef %2024, i32 noundef %2027, i32 noundef %2030, i32 noundef %2031, i32 noundef %2032, i32 noundef %2033)
  br label %2034

2034:                                             ; preds = %2020, %2014
  %2035 = load ptr, ptr %10, align 8, !tbaa !5
  %2036 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %2035, i32 0, i32 11
  %2037 = load i8, ptr %2036, align 1, !tbaa !11
  %2038 = zext i8 %2037 to i32
  %2039 = icmp eq i32 %2038, 3
  br i1 %2039, label %2040, label %2054

2040:                                             ; preds = %2034
  %2041 = load ptr, ptr %6, align 8, !tbaa !5
  %2042 = load ptr, ptr %8, align 8, !tbaa !5
  %2043 = load ptr, ptr %9, align 8, !tbaa !5
  %2044 = load ptr, ptr %10, align 8, !tbaa !5
  %2045 = load ptr, ptr %8, align 8, !tbaa !5
  %2046 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2045, i32 0, i32 3
  %2047 = load i32, ptr %2046, align 4, !tbaa !35
  %2048 = load ptr, ptr %9, align 8, !tbaa !5
  %2049 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2048, i32 0, i32 10
  %2050 = load i32, ptr %2049, align 4, !tbaa !49
  %2051 = load i32, ptr %21, align 4, !tbaa !9
  %2052 = load i32, ptr %20, align 4, !tbaa !9
  %2053 = load i32, ptr %25, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %2041, ptr noundef %2042, ptr noundef %2043, ptr noundef %2044, i32 noundef %2047, i32 noundef %2050, i32 noundef %2051, i32 noundef %2052, i32 noundef %2053)
  br label %2054

2054:                                             ; preds = %2040, %2034
  %2055 = load ptr, ptr %10, align 8, !tbaa !5
  %2056 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %2055, i32 0, i32 11
  %2057 = load i8, ptr %2056, align 1, !tbaa !11
  %2058 = zext i8 %2057 to i32
  %2059 = icmp eq i32 %2058, 1
  br i1 %2059, label %2060, label %2138

2060:                                             ; preds = %2054
  %2061 = load ptr, ptr %10, align 8, !tbaa !5
  %2062 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %2061, i32 0, i32 10
  %2063 = load i16, ptr %2062, align 1, !tbaa !18
  %2064 = zext i16 %2063 to i32
  %2065 = icmp eq i32 %2064, 5
  br i1 %2065, label %2096, label %2066

2066:                                             ; preds = %2060
  %2067 = load ptr, ptr %10, align 8, !tbaa !5
  %2068 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %2067, i32 0, i32 10
  %2069 = load i16, ptr %2068, align 1, !tbaa !18
  %2070 = zext i16 %2069 to i32
  %2071 = icmp eq i32 %2070, 6
  br i1 %2071, label %2096, label %2072

2072:                                             ; preds = %2066
  %2073 = load ptr, ptr %10, align 8, !tbaa !5
  %2074 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %2073, i32 0, i32 10
  %2075 = load i16, ptr %2074, align 1, !tbaa !18
  %2076 = zext i16 %2075 to i32
  %2077 = icmp eq i32 %2076, 34
  br i1 %2077, label %2096, label %2078

2078:                                             ; preds = %2072
  %2079 = load ptr, ptr %10, align 8, !tbaa !5
  %2080 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %2079, i32 0, i32 10
  %2081 = load i16, ptr %2080, align 1, !tbaa !18
  %2082 = zext i16 %2081 to i32
  %2083 = icmp eq i32 %2082, 35
  br i1 %2083, label %2096, label %2084

2084:                                             ; preds = %2078
  %2085 = load ptr, ptr %10, align 8, !tbaa !5
  %2086 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %2085, i32 0, i32 10
  %2087 = load i16, ptr %2086, align 1, !tbaa !18
  %2088 = zext i16 %2087 to i32
  %2089 = icmp eq i32 %2088, 36
  br i1 %2089, label %2096, label %2090

2090:                                             ; preds = %2084
  %2091 = load ptr, ptr %10, align 8, !tbaa !5
  %2092 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %2091, i32 0, i32 10
  %2093 = load i16, ptr %2092, align 1, !tbaa !18
  %2094 = zext i16 %2093 to i32
  %2095 = icmp eq i32 %2094, 37
  br i1 %2095, label %2096, label %2110

2096:                                             ; preds = %2090, %2084, %2078, %2072, %2066, %2060
  %2097 = load ptr, ptr %6, align 8, !tbaa !5
  %2098 = load ptr, ptr %8, align 8, !tbaa !5
  %2099 = load ptr, ptr %9, align 8, !tbaa !5
  %2100 = load ptr, ptr %10, align 8, !tbaa !5
  %2101 = load ptr, ptr %8, align 8, !tbaa !5
  %2102 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2101, i32 0, i32 9
  %2103 = load i32, ptr %2102, align 4, !tbaa !37
  %2104 = load ptr, ptr %9, align 8, !tbaa !5
  %2105 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2104, i32 0, i32 10
  %2106 = load i32, ptr %2105, align 4, !tbaa !49
  %2107 = load i32, ptr %21, align 4, !tbaa !9
  %2108 = load i32, ptr %20, align 4, !tbaa !9
  %2109 = load i32, ptr %25, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %2097, ptr noundef %2098, ptr noundef %2099, ptr noundef %2100, i32 noundef %2103, i32 noundef %2106, i32 noundef %2107, i32 noundef %2108, i32 noundef %2109)
  br label %2137

2110:                                             ; preds = %2090
  %2111 = load ptr, ptr %10, align 8, !tbaa !5
  %2112 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %2111, i32 0, i32 10
  %2113 = load i16, ptr %2112, align 1, !tbaa !18
  %2114 = zext i16 %2113 to i32
  %2115 = icmp eq i32 %2114, 25
  br i1 %2115, label %2122, label %2116

2116:                                             ; preds = %2110
  %2117 = load ptr, ptr %10, align 8, !tbaa !5
  %2118 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %2117, i32 0, i32 10
  %2119 = load i16, ptr %2118, align 1, !tbaa !18
  %2120 = zext i16 %2119 to i32
  %2121 = icmp eq i32 %2120, 26
  br i1 %2121, label %2122, label %2136

2122:                                             ; preds = %2116, %2110
  %2123 = load ptr, ptr %6, align 8, !tbaa !5
  %2124 = load ptr, ptr %8, align 8, !tbaa !5
  %2125 = load ptr, ptr %9, align 8, !tbaa !5
  %2126 = load ptr, ptr %10, align 8, !tbaa !5
  %2127 = load ptr, ptr %8, align 8, !tbaa !5
  %2128 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2127, i32 0, i32 13
  %2129 = load i32, ptr %2128, align 4, !tbaa !41
  %2130 = load ptr, ptr %9, align 8, !tbaa !5
  %2131 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2130, i32 0, i32 10
  %2132 = load i32, ptr %2131, align 4, !tbaa !49
  %2133 = load i32, ptr %21, align 4, !tbaa !9
  %2134 = load i32, ptr %20, align 4, !tbaa !9
  %2135 = load i32, ptr %25, align 4, !tbaa !9
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %2123, ptr noundef %2124, ptr noundef %2125, ptr noundef %2126, i32 noundef %2129, i32 noundef %2132, i32 noundef %2133, i32 noundef %2134, i32 noundef %2135)
  br label %2136

2136:                                             ; preds = %2122, %2116
  br label %2137

2137:                                             ; preds = %2136, %2096
  br label %2138

2138:                                             ; preds = %2137, %2054
  br label %2139

2139:                                             ; preds = %2138, %1944
  br label %1503, !llvm.loop !53

2140:                                             ; preds = %1503
  %2141 = load ptr, ptr %6, align 8, !tbaa !5
  %2142 = load ptr, ptr %9, align 8, !tbaa !5
  %2143 = load ptr, ptr %10, align 8, !tbaa !5
  %2144 = load i32, ptr %27, align 4, !tbaa !9
  %2145 = load i32, ptr %28, align 4, !tbaa !9
  %2146 = load i32, ptr %29, align 4, !tbaa !9
  call void @libxsmm_finalize_kernel_vregs_masks(ptr noundef %2141, ptr noundef %2142, ptr noundef %2143, i32 noundef %2144, i32 noundef %2145, i32 noundef %2146)
  store i32 0, ptr %36, align 4
  br label %2147

2147:                                             ; preds = %2140, %661, %498, %445, %397, %231
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #3
  %2148 = load i32, ptr %36, align 4
  switch i32 %2148, label %2150 [
    i32 0, label %2149
    i32 1, label %2149
  ]

2149:                                             ; preds = %2147, %2147
  ret void

2150:                                             ; preds = %2147
  unreachable
}

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !7, i64 31}
!12 = !{!"libxsmm_meltw_descriptor", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !7, i64 24, !7, i64 25, !7, i64 26, !13, i64 27, !13, i64 29, !7, i64 31}
!13 = !{!"short", !7, i64 0}
!14 = !{!12, !13, i64 27}
!15 = !{!12, !10, i64 0}
!16 = !{!12, !10, i64 8}
!17 = !{!12, !10, i64 12}
!18 = !{!12, !13, i64 29}
!19 = !{!20, !10, i64 480}
!20 = !{!"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}
!21 = !{!20, !10, i64 496}
!22 = !{!20, !10, i64 492}
!23 = !{!24, !10, i64 28}
!24 = !{!"libxsmm_generated_code", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28}
!25 = !{!20, !10, i64 68}
!26 = !{!20, !10, i64 64}
!27 = !{!28, !10, i64 4}
!28 = !{!"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}
!29 = !{!28, !10, i64 24}
!30 = !{!28, !10, i64 96}
!31 = !{!28, !10, i64 100}
!32 = !{!28, !10, i64 140}
!33 = !{!28, !10, i64 8}
!34 = !{!28, !10, i64 60}
!35 = !{!28, !10, i64 12}
!36 = !{!28, !10, i64 28}
!37 = !{!28, !10, i64 36}
!38 = !{!28, !10, i64 40}
!39 = !{!28, !10, i64 44}
!40 = !{!28, !10, i64 48}
!41 = !{!28, !10, i64 52}
!42 = !{!28, !10, i64 56}
!43 = !{!28, !10, i64 136}
!44 = !{!20, !10, i64 56}
!45 = !{!28, !10, i64 0}
!46 = !{!20, !10, i64 72}
!47 = !{!12, !10, i64 4}
!48 = !{!20, !10, i64 500}
!49 = !{!20, !10, i64 40}
!50 = distinct !{!50, !51}
!51 = !{!"llvm.loop.mustprogress"}
!52 = !{!20, !10, i64 44}
!53 = distinct !{!53, !51}


; 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_generator_unary_binary_avx512_microkernel = external hidden unnamed_addr constant [50 x i8], align 1

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

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

declare i32 @libxsmm_generator_mateltwise_is_binary_cmp_op(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_unary_binary_avx512_microkernel(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4) local_unnamed_addr #0 {
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #3
  %13 = getelementptr inbounds i8, ptr %4, i64 31
  %14 = load i8, ptr %13, align 1, !tbaa !5
  switch i8 %14, label %.thread737 [
    i8 1, label %.thread723
    i8 2, label %.thread722.thread780
    i8 3, label %23
  ]

.thread723:                                       ; preds = %5
  %15 = getelementptr inbounds i8, ptr %4, i64 27
  %16 = load i16, ptr %15, align 1, !tbaa !11
  %17 = and i16 %16, 2
  %.not = icmp ne i16 %17, 0
  %18 = and i16 %16, 8
  %.not684 = icmp eq i16 %18, 0
  br i1 %.not684, label %.thread737, label %.thread740

.thread722.thread780:                             ; preds = %5
  %19 = getelementptr inbounds i8, ptr %4, i64 27
  %20 = load i16, ptr %19, align 1, !tbaa !11
  %21 = and i16 %20, 3
  %or.cond830 = icmp ne i16 %21, 0
  %22 = and i16 %20, 48
  %or.cond832 = icmp eq i16 %22, 0
  br i1 %or.cond832, label %.thread737, label %.thread740

23:                                               ; preds = %5
  %24 = getelementptr inbounds i8, ptr %4, i64 27
  %25 = load i16, ptr %24, align 1, !tbaa !11
  %26 = and i16 %25, 192
  %or.cond833 = icmp eq i16 %26, 0
  br i1 %or.cond833, label %27, label %.thread740

27:                                               ; preds = %23
  %28 = and i16 %25, 7
  %.ph = icmp ne i16 %28, 0
  %29 = and i16 %25, 256
  %30 = icmp ne i16 %29, 0
  br label %.thread737

.thread740:                                       ; preds = %23, %.thread722.thread780, %.thread723
  %31 = load i32, ptr %4, align 1, !tbaa !12
  %32 = getelementptr inbounds i8, ptr %4, i64 8
  br label %39

.thread737:                                       ; preds = %.thread722.thread780, %5, %.thread723, %27
  %33 = phi i1 [ %.ph, %27 ], [ %.not, %.thread723 ], [ false, %5 ], [ %or.cond830, %.thread722.thread780 ]
  %34 = phi i1 [ %30, %27 ], [ false, %.thread723 ], [ false, %5 ], [ false, %.thread722.thread780 ]
  %35 = load i32, ptr %4, align 1, !tbaa !12
  %36 = getelementptr inbounds i8, ptr %4, i64 8
  %37 = load i32, ptr %36, align 1, !tbaa !13
  %38 = icmp ule i32 %35, %37
  %or.cond = or i1 %38, %33
  %or.cond3 = or i1 %or.cond, %34
  br i1 %or.cond3, label %39, label %45

39:                                               ; preds = %.thread740, %.thread737
  %40 = phi ptr [ %32, %.thread740 ], [ %36, %.thread737 ]
  %41 = phi i32 [ %31, %.thread740 ], [ %35, %.thread737 ]
  %42 = getelementptr inbounds i8, ptr %4, i64 12
  %43 = load i32, ptr %42, align 1, !tbaa !14
  %44 = icmp ugt i32 %41, %43
  br i1 %44, label %45, label %50

45:                                               ; preds = %.thread737, %39
  %46 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !15
  %47 = icmp ugt i32 %46, 1
  %48 = load i32, ptr @libxsmm_verbosity, align 4
  %49 = select i1 %47, i32 %48, i32 1
  tail call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90007, ptr noundef nonnull @__func__.libxsmm_generator_unary_binary_avx512_microkernel, ptr noundef nonnull @.str, i32 noundef 4061, i32 noundef %49) #3
  br label %680

50:                                               ; preds = %39
  %51 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #3
  %52 = icmp eq i32 %51, 1
  br i1 %52, label %80, label %53

53:                                               ; preds = %50
  %54 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #3
  %55 = icmp eq i32 %54, 9
  br i1 %55, label %80, label %56

56:                                               ; preds = %53
  %57 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #3
  %58 = icmp eq i32 %57, 8
  br i1 %58, label %80, label %59

59:                                               ; preds = %56
  %60 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #3
  %61 = icmp eq i32 %60, 0
  br i1 %61, label %80, label %62

62:                                               ; preds = %59
  %63 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #3
  %64 = icmp eq i32 %63, 2
  br i1 %64, label %80, label %65

65:                                               ; preds = %62
  %66 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #3
  %67 = icmp eq i32 %66, 3
  br i1 %67, label %80, label %68

68:                                               ; preds = %65
  %69 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #3
  %70 = icmp eq i32 %69, 4
  br i1 %70, label %80, label %71

71:                                               ; preds = %68
  %72 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #3
  %73 = icmp eq i32 %72, 5
  br i1 %73, label %80, label %74

74:                                               ; preds = %71
  %75 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #3
  %76 = icmp eq i32 %75, 11
  br i1 %76, label %80, label %77

77:                                               ; preds = %74
  %78 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #3
  %79 = icmp eq i32 %78, 10
  br i1 %79, label %80, label %113

80:                                               ; preds = %77, %74, %71, %68, %65, %62, %59, %56, %53, %50
  %81 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #3
  %82 = icmp eq i32 %81, 1
  br i1 %82, label %172, label %83

83:                                               ; preds = %80
  %84 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #3
  %85 = icmp eq i32 %84, 9
  br i1 %85, label %172, label %86

86:                                               ; preds = %83
  %87 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #3
  %88 = icmp eq i32 %87, 8
  br i1 %88, label %172, label %89

89:                                               ; preds = %86
  %90 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #3
  %91 = icmp eq i32 %90, 0
  br i1 %91, label %172, label %92

92:                                               ; preds = %89
  %93 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #3
  %94 = icmp eq i32 %93, 2
  br i1 %94, label %172, label %95

95:                                               ; preds = %92
  %96 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #3
  %97 = icmp eq i32 %96, 3
  br i1 %97, label %172, label %98

98:                                               ; preds = %95
  %99 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #3
  %100 = icmp eq i32 %99, 4
  br i1 %100, label %172, label %101

101:                                              ; preds = %98
  %102 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #3
  %103 = icmp eq i32 %102, 5
  br i1 %103, label %172, label %104

104:                                              ; preds = %101
  %105 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #3
  %106 = icmp eq i32 %105, 11
  br i1 %106, label %172, label %107

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

110:                                              ; preds = %107
  %111 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #3
  %112 = icmp eq i32 %111, 10
  br i1 %112, label %172, label %113

113:                                              ; preds = %110, %77
  %114 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #3
  %115 = icmp eq i32 %114, 12
  br i1 %115, label %116, label %119

116:                                              ; preds = %113
  %117 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #3
  %118 = icmp eq i32 %117, 1
  br i1 %118, label %172, label %119

119:                                              ; preds = %116, %113
  %120 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #3
  %121 = icmp eq i32 %120, 10
  br i1 %121, label %122, label %125

122:                                              ; preds = %119
  %123 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #3
  %124 = icmp eq i32 %123, 1
  br i1 %124, label %172, label %125

125:                                              ; preds = %122, %119
  %126 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #3
  %127 = icmp eq i32 %126, 8
  br i1 %127, label %128, label %131

128:                                              ; preds = %125
  %129 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #3
  %130 = icmp eq i32 %129, 1
  br i1 %130, label %172, label %131

131:                                              ; preds = %128, %125
  %132 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #3
  %133 = icmp eq i32 %132, 2
  br i1 %133, label %134, label %137

134:                                              ; preds = %131
  %135 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #3
  %136 = icmp eq i32 %135, 12
  br i1 %136, label %172, label %137

137:                                              ; preds = %134, %131
  %138 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #3
  %139 = icmp eq i32 %138, 1
  br i1 %139, label %140, label %143

140:                                              ; preds = %137
  %141 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #3
  %142 = icmp eq i32 %141, 12
  br i1 %142, label %172, label %143

143:                                              ; preds = %140, %137
  %144 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #3
  %145 = icmp eq i32 %144, 2
  br i1 %145, label %146, label %149

146:                                              ; preds = %143
  %147 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #3
  %148 = icmp eq i32 %147, 10
  br i1 %148, label %172, label %149

149:                                              ; preds = %146, %143
  %150 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #3
  %151 = icmp eq i32 %150, 1
  br i1 %151, label %152, label %155

152:                                              ; preds = %149
  %153 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #3
  %154 = icmp eq i32 %153, 10
  br i1 %154, label %172, label %155

155:                                              ; preds = %152, %149
  %156 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #3
  %157 = icmp eq i32 %156, 2
  br i1 %157, label %158, label %161

158:                                              ; preds = %155
  %159 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #3
  %160 = icmp eq i32 %159, 8
  br i1 %160, label %172, label %161

161:                                              ; preds = %158, %155
  %162 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #3
  %163 = icmp eq i32 %162, 1
  br i1 %163, label %164, label %167

164:                                              ; preds = %161
  %165 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #3
  %166 = icmp eq i32 %165, 8
  br i1 %166, label %172, label %167

167:                                              ; preds = %164, %161
  %168 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !15
  %169 = icmp ugt i32 %168, 1
  %170 = load i32, ptr @libxsmm_verbosity, align 4
  %171 = select i1 %169, i32 %170, i32 1
  tail call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90033, ptr noundef nonnull @__func__.libxsmm_generator_unary_binary_avx512_microkernel, ptr noundef nonnull @.str, i32 noundef 4099, i32 noundef %171) #3
  br label %680

172:                                              ; preds = %80, %83, %86, %89, %92, %95, %98, %101, %104, %107, %110, %116, %122, %128, %134, %140, %146, %152, %158, %164
  %173 = load i8, ptr %13, align 1, !tbaa !5
  switch i8 %173, label %.thread743 [
    i8 1, label %174
    i8 2, label %202
  ]

174:                                              ; preds = %172
  %175 = getelementptr inbounds i8, ptr %4, i64 29
  %176 = load i16, ptr %175, align 1, !tbaa !16
  %177 = icmp eq i16 %176, 33
  br i1 %177, label %178, label %.thread743

178:                                              ; preds = %174
  %179 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #3
  %180 = icmp eq i32 %179, 8
  br i1 %180, label %187, label %181

181:                                              ; preds = %178
  %182 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #3
  %183 = icmp eq i32 %182, 1
  br i1 %183, label %187, label %184

184:                                              ; preds = %181
  %185 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #3
  %186 = icmp eq i32 %185, 9
  br i1 %186, label %187, label %197

187:                                              ; preds = %184, %181, %178
  %188 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #3
  %189 = icmp eq i32 %188, 11
  br i1 %189, label %190, label %197

190:                                              ; preds = %187
  %191 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 4) #3
  %192 = icmp eq i32 %191, 14
  br i1 %192, label %193, label %197

193:                                              ; preds = %190
  %194 = getelementptr inbounds i8, ptr %3, i64 480
  store i32 16, ptr %194, align 4, !tbaa !17
  %195 = getelementptr inbounds i8, ptr %3, i64 496
  store i32 16, ptr %195, align 4, !tbaa !19
  %196 = getelementptr inbounds i8, ptr %3, i64 492
  store i32 16, ptr %196, align 4, !tbaa !20
  br label %233

197:                                              ; preds = %190, %187, %184
  %198 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !15
  %199 = icmp ugt i32 %198, 1
  %200 = load i32, ptr @libxsmm_verbosity, align 4
  %201 = select i1 %199, i32 %200, i32 1
  tail call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90033, ptr noundef nonnull @__func__.libxsmm_generator_unary_binary_avx512_microkernel, ptr noundef nonnull @.str, i32 noundef 4115, i32 noundef %201) #3
  br label %680

202:                                              ; preds = %172
  %203 = getelementptr inbounds i8, ptr %4, i64 29
  %204 = load i16, ptr %203, align 1, !tbaa !16
  %205 = icmp eq i16 %204, 26
  br i1 %205, label %206, label %.thread743

206:                                              ; preds = %202
  %207 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #3
  %208 = icmp eq i32 %207, 8
  br i1 %208, label %215, label %209

209:                                              ; preds = %206
  %210 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #3
  %211 = icmp eq i32 %210, 1
  br i1 %211, label %215, label %212

212:                                              ; preds = %209
  %213 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #3
  %214 = icmp eq i32 %213, 9
  br i1 %214, label %215, label %228

215:                                              ; preds = %212, %209, %206
  %216 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #3
  %217 = icmp eq i32 %216, 11
  br i1 %217, label %218, label %228

218:                                              ; preds = %215
  %219 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 1) #3
  %220 = icmp eq i32 %219, 11
  br i1 %220, label %221, label %228

221:                                              ; preds = %218
  %222 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 4) #3
  %223 = icmp eq i32 %222, 14
  br i1 %223, label %224, label %228

224:                                              ; preds = %221
  %225 = getelementptr inbounds i8, ptr %3, i64 480
  store i32 16, ptr %225, align 4, !tbaa !17
  %226 = getelementptr inbounds i8, ptr %3, i64 496
  store i32 16, ptr %226, align 4, !tbaa !19
  %227 = getelementptr inbounds i8, ptr %3, i64 492
  store i32 16, ptr %227, align 4, !tbaa !20
  br label %233

228:                                              ; preds = %221, %218, %215, %212
  %229 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !15
  %230 = icmp ugt i32 %229, 1
  %231 = load i32, ptr @libxsmm_verbosity, align 4
  %232 = select i1 %230, i32 %231, i32 1
  tail call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90033, ptr noundef nonnull @__func__.libxsmm_generator_unary_binary_avx512_microkernel, ptr noundef nonnull @.str, i32 noundef 4128, i32 noundef %232) #3
  br label %680

.thread743:                                       ; preds = %172, %174, %202
  tail call void @libxsmm_generator_configure_avx512_vlens(ptr noundef nonnull %4, ptr noundef %3)
  br label %233

233:                                              ; preds = %224, %.thread743, %193
  %234 = getelementptr inbounds i8, ptr %0, i64 28
  %235 = load i32, ptr %234, align 4, !tbaa !21
  %236 = icmp ult i32 %235, 1005
  br i1 %236, label %.sink.split, label %237

237:                                              ; preds = %233
  %238 = icmp ult i32 %235, 1051
  br i1 %238, label %.sink.split, label %239

239:                                              ; preds = %237
  %240 = icmp ult i32 %235, 1101
  br i1 %240, label %.sink.split, label %247

.sink.split:                                      ; preds = %239, %237, %233
  %.sink839 = phi i32 [ 2, %233 ], [ 1, %237 ], [ 1, %239 ]
  %.0661.ph = phi i32 [ 16, %233 ], [ 16, %237 ], [ 32, %239 ]
  %241 = getelementptr inbounds i8, ptr %3, i64 480
  %242 = load i32, ptr %241, align 4, !tbaa !17
  %243 = lshr i32 %242, %.sink839
  store i32 %243, ptr %241, align 4, !tbaa !17
  %244 = getelementptr inbounds i8, ptr %3, i64 492
  %245 = load i32, ptr %244, align 4, !tbaa !20
  %246 = lshr i32 %245, %.sink839
  store i32 %246, ptr %244, align 4, !tbaa !20
  br label %247

247:                                              ; preds = %.sink.split, %239
  %.0661 = phi i32 [ 32, %239 ], [ %.0661.ph, %.sink.split ]
  %248 = load i8, ptr %13, align 1, !tbaa !5
  %249 = icmp eq i8 %248, 1
  br i1 %249, label %250, label %263

250:                                              ; preds = %247
  %251 = getelementptr inbounds i8, ptr %4, i64 27
  %252 = load i16, ptr %251, align 1, !tbaa !11
  %253 = and i16 %252, 1
  %.not689 = icmp eq i16 %253, 0
  br i1 %.not689, label %263, label %254

254:                                              ; preds = %250
  %255 = load i32, ptr %42, align 1, !tbaa !14
  %256 = add i32 %255, 15
  %257 = and i32 %256, -16
  %258 = getelementptr inbounds i8, ptr %3, i64 68
  store i32 %257, ptr %258, align 4, !tbaa !24
  %259 = load i32, ptr %40, align 1, !tbaa !13
  %260 = add i32 %259, 15
  %261 = and i32 %260, -16
  %262 = getelementptr inbounds i8, ptr %3, i64 64
  store i32 %261, ptr %262, align 4, !tbaa !25
  br label %263

263:                                              ; preds = %254, %250, %247
  %264 = tail call i32 @libxsmm_generator_mateltwise_is_binary_cmp_op(ptr noundef nonnull %4) #3
  %.not690 = icmp eq i32 %264, 0
  br i1 %.not690, label %274, label %265

265:                                              ; preds = %263
  %266 = getelementptr inbounds i8, ptr %4, i64 27
  %267 = load i16, ptr %266, align 1, !tbaa !11
  %268 = and i16 %267, 128
  %.not691 = icmp eq i16 %268, 0
  br i1 %.not691, label %274, label %269

269:                                              ; preds = %265
  %270 = load i32, ptr %42, align 1, !tbaa !14
  %271 = add i32 %270, 15
  %272 = and i32 %271, -16
  %273 = getelementptr inbounds i8, ptr %3, i64 68
  store i32 %272, ptr %273, align 4, !tbaa !24
  br label %274

274:                                              ; preds = %269, %265, %263
  %275 = getelementptr inbounds i8, ptr %4, i64 29
  %276 = load i16, ptr %275, align 1, !tbaa !16
  switch i16 %276, label %._crit_edge805 [
    i16 6, label %277
    i16 35, label %277
    i16 26, label %277
  ]

._crit_edge805:                                   ; preds = %274
  %.pre = load i8, ptr %13, align 1, !tbaa !5
  br label %295

277:                                              ; preds = %274, %274, %274
  %278 = load i8, ptr %13, align 1, !tbaa !5
  %279 = icmp eq i8 %278, 1
  br i1 %279, label %280, label %295

280:                                              ; preds = %277
  %281 = getelementptr inbounds i8, ptr %4, i64 27
  %282 = load i16, ptr %281, align 1, !tbaa !11
  %283 = and i16 %282, 1
  %284 = icmp eq i16 %283, 0
  br i1 %284, label %290, label %.thread

.thread:                                          ; preds = %280
  %285 = getelementptr inbounds i8, ptr %2, i64 4
  store i32 8, ptr %285, align 4, !tbaa !26
  %286 = getelementptr inbounds i8, ptr %2, i64 24
  store i32 9, ptr %286, align 4, !tbaa !28
  %287 = getelementptr inbounds i8, ptr %2, i64 96
  store i32 10, ptr %287, align 4, !tbaa !29
  %288 = getelementptr inbounds i8, ptr %2, i64 100
  store i32 11, ptr %288, align 4, !tbaa !30
  %289 = getelementptr inbounds i8, ptr %2, i64 140
  store i32 1, ptr %289, align 4, !tbaa !31
  br label %317

290:                                              ; preds = %280
  %291 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !15
  %292 = icmp ugt i32 %291, 1
  %293 = load i32, ptr @libxsmm_verbosity, align 4
  %294 = select i1 %292, i32 %293, i32 1
  tail call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90045, ptr noundef nonnull @__func__.libxsmm_generator_unary_binary_avx512_microkernel, ptr noundef nonnull @.str, i32 noundef 4161, i32 noundef %294) #3
  br label %680

295:                                              ; preds = %._crit_edge805, %277
  %296 = phi i8 [ %.pre, %._crit_edge805 ], [ %278, %277 ]
  %297 = getelementptr inbounds i8, ptr %2, i64 4
  store i32 8, ptr %297, align 4, !tbaa !26
  %298 = getelementptr inbounds i8, ptr %2, i64 24
  store i32 9, ptr %298, align 4, !tbaa !28
  %299 = getelementptr inbounds i8, ptr %2, i64 96
  store i32 10, ptr %299, align 4, !tbaa !29
  %300 = getelementptr inbounds i8, ptr %2, i64 100
  store i32 11, ptr %300, align 4, !tbaa !30
  %301 = getelementptr inbounds i8, ptr %2, i64 140
  store i32 1, ptr %301, align 4, !tbaa !31
  switch i8 %296, label %317 [
    i8 2, label %302
    i8 3, label %309
  ]

302:                                              ; preds = %295
  %303 = getelementptr inbounds i8, ptr %2, i64 8
  store i32 0, ptr %303, align 4, !tbaa !32
  %304 = getelementptr inbounds i8, ptr %4, i64 27
  %305 = load i16, ptr %304, align 1, !tbaa !11
  %306 = and i16 %305, 64
  %.not694 = icmp eq i16 %306, 0
  br i1 %.not694, label %.thread767, label %307

307:                                              ; preds = %302
  %308 = getelementptr inbounds i8, ptr %2, i64 60
  store i32 2, ptr %308, align 4, !tbaa !33
  br label %.thread767

309:                                              ; preds = %295
  %310 = getelementptr inbounds i8, ptr %2, i64 8
  store i32 0, ptr %310, align 4, !tbaa !32
  %311 = getelementptr inbounds i8, ptr %2, i64 12
  store i32 12, ptr %311, align 4, !tbaa !34
  %312 = getelementptr inbounds i8, ptr %4, i64 27
  %313 = load i16, ptr %312, align 1, !tbaa !11
  %314 = and i16 %313, 2048
  %.not693 = icmp eq i16 %314, 0
  br i1 %.not693, label %.thread769, label %315

315:                                              ; preds = %309
  %316 = getelementptr inbounds i8, ptr %2, i64 60
  store i32 2, ptr %316, align 4, !tbaa !33
  br label %.thread769

317:                                              ; preds = %.thread, %295
  %318 = phi ptr [ %286, %.thread ], [ %298, %295 ]
  %319 = phi ptr [ %285, %.thread ], [ %297, %295 ]
  %320 = phi i8 [ 1, %.thread ], [ %296, %295 ]
  switch i16 %276, label %326 [
    i16 63, label %.thread788
    i16 5, label %324
    i16 6, label %324
    i16 34, label %324
    i16 35, label %324
  ]

.thread788:                                       ; preds = %317
  %321 = getelementptr inbounds i8, ptr %2, i64 28
  store i32 0, ptr %321, align 4, !tbaa !35
  %322 = getelementptr inbounds i8, ptr %2, i64 44
  store <4 x i32> <i32 127, i32 127, i32 127, i32 127>, ptr %322, align 4, !tbaa !15
  %323 = getelementptr inbounds i8, ptr %2, i64 60
  store i32 127, ptr %323, align 4, !tbaa !33
  br label %.thread760

324:                                              ; preds = %317, %317, %317, %317
  %325 = getelementptr inbounds i8, ptr %2, i64 36
  store i32 0, ptr %325, align 4, !tbaa !36
  %.pre809 = and i16 %276, -2
  br label %.thread746

326:                                              ; preds = %317
  %327 = and i16 %276, -2
  %switch = icmp eq i16 %327, 36
  br i1 %switch, label %.thread749, label %.thread746

.thread749:                                       ; preds = %326
  %328 = getelementptr inbounds i8, ptr %2, i64 36
  store i32 0, ptr %328, align 4, !tbaa !36
  br label %.sink.split840

.thread746:                                       ; preds = %324, %326
  %.pre-phi = phi i16 [ %.pre809, %324 ], [ %327, %326 ]
  %switch703 = icmp eq i16 %.pre-phi, 34
  br i1 %switch703, label %.sink.split840, label %330

.sink.split840:                                   ; preds = %.thread746, %.thread749
  %329 = getelementptr inbounds i8, ptr %2, i64 40
  store i32 1, ptr %329, align 4, !tbaa !37
  br label %330

330:                                              ; preds = %.sink.split840, %.thread746
  switch i16 %276, label %335 [
    i16 33, label %331
    i16 64, label %331
    i16 65, label %331
  ]

331:                                              ; preds = %330, %330, %330
  %332 = getelementptr inbounds i8, ptr %2, i64 44
  store i32 0, ptr %332, align 4, !tbaa !38
  %333 = icmp eq i16 %276, 65
  %334 = getelementptr inbounds i8, ptr %2, i64 48
  br i1 %333, label %.thread763, label %.thread756

.thread756:                                       ; preds = %331
  store i32 127, ptr %334, align 4, !tbaa !39
  br label %345

.thread763:                                       ; preds = %331
  store <4 x i32> <i32 2, i32 127, i32 127, i32 127>, ptr %334, align 4, !tbaa !15
  br label %.thread760

335:                                              ; preds = %330
  %336 = getelementptr inbounds i8, ptr %2, i64 44
  store i32 127, ptr %336, align 4, !tbaa !38
  %337 = getelementptr inbounds i8, ptr %2, i64 48
  store i32 127, ptr %337, align 4, !tbaa !39
  %.off704 = add i16 %276, -25
  %switch705 = icmp ult i16 %.off704, 2
  br i1 %switch705, label %338, label %345

338:                                              ; preds = %335
  %339 = getelementptr inbounds i8, ptr %2, i64 52
  store i32 0, ptr %339, align 4, !tbaa !40
  %340 = getelementptr inbounds i8, ptr %2, i64 56
  store i32 1, ptr %340, align 4, !tbaa !41
  %341 = icmp eq i16 %276, 25
  %342 = getelementptr inbounds i8, ptr %2, i64 60
  br i1 %341, label %343, label %344

343:                                              ; preds = %338
  store i32 2, ptr %342, align 4, !tbaa !33
  br label %.thread760

344:                                              ; preds = %338
  store i32 127, ptr %342, align 4, !tbaa !33
  br label %.thread760

345:                                              ; preds = %335, %.thread756
  %346 = getelementptr inbounds i8, ptr %2, i64 52
  store i32 127, ptr %346, align 4, !tbaa !40
  %347 = getelementptr inbounds i8, ptr %2, i64 56
  store i32 127, ptr %347, align 4, !tbaa !41
  %348 = getelementptr inbounds i8, ptr %2, i64 60
  store i32 127, ptr %348, align 4, !tbaa !33
  %349 = and i16 %276, -2
  %switch707 = icmp eq i16 %349, 42
  br i1 %switch707, label %350, label %.thread760

.thread760:                                       ; preds = %.thread788, %344, %343, %.thread763, %345
  br label %350

350:                                              ; preds = %345, %.thread760
  %.sink = phi i32 [ 127, %.thread760 ], [ 0, %345 ]
  %351 = getelementptr inbounds i8, ptr %2, i64 136
  store i32 %.sink, ptr %351, align 4, !tbaa !42
  %352 = getelementptr inbounds i8, ptr %4, i64 27
  %353 = load i16, ptr %352, align 1, !tbaa !11
  %354 = and i16 %353, 4096
  %.not692 = icmp eq i16 %354, 0
  br i1 %.not692, label %357, label %355

355:                                              ; preds = %350
  %356 = getelementptr inbounds i8, ptr %2, i64 60
  store i32 2, ptr %356, align 4, !tbaa !33
  br label %357

357:                                              ; preds = %355, %350
  %cond = icmp eq i8 %320, 1
  br i1 %cond, label %358, label %533

358:                                              ; preds = %357
  %359 = getelementptr inbounds i8, ptr %3, i64 56
  %360 = load i32, ptr %359, align 4, !tbaa !43
  %361 = load i32, ptr %2, align 4, !tbaa !44
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %360, i32 noundef %361, i32 noundef 127, i32 noundef 0, i32 noundef 32, i32 noundef 8, i32 noundef 0) #3
  %362 = load i32, ptr %359, align 4, !tbaa !43
  %363 = load i32, ptr %2, align 4, !tbaa !44
  %364 = load i32, ptr %318, align 4, !tbaa !28
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %362, i32 noundef %363, i32 noundef 127, i32 noundef 0, i32 noundef 80, i32 noundef %364, i32 noundef 0) #3
  %365 = load i16, ptr %275, align 1, !tbaa !16
  switch i16 %365, label %487 [
    i16 63, label %366
    i16 5, label %371
    i16 6, label %376
    i16 36, label %381
    i16 37, label %387
    i16 34, label %397
    i16 35, label %407
    i16 33, label %417
    i16 64, label %424
    i16 65, label %430
    i16 25, label %438
    i16 26, label %453
    i16 42, label %463
    i16 43, label %475
  ]

366:                                              ; preds = %358
  %367 = load i32, ptr %359, align 4, !tbaa !43
  %368 = load i32, ptr %2, align 4, !tbaa !44
  %369 = getelementptr inbounds i8, ptr %2, i64 28
  %370 = load i32, ptr %369, align 4, !tbaa !35
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %367, i32 noundef %368, i32 noundef 127, i32 noundef 0, i32 noundef 88, i32 noundef %370, i32 noundef 0) #3
  br label %538

371:                                              ; preds = %358
  %372 = load i32, ptr %359, align 4, !tbaa !43
  %373 = load i32, ptr %2, align 4, !tbaa !44
  %374 = getelementptr inbounds i8, ptr %2, i64 36
  %375 = load i32, ptr %374, align 4, !tbaa !36
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %372, i32 noundef %373, i32 noundef 127, i32 noundef 0, i32 noundef 88, i32 noundef %375, i32 noundef 0) #3
  br label %538

376:                                              ; preds = %358
  %377 = load i32, ptr %359, align 4, !tbaa !43
  %378 = load i32, ptr %2, align 4, !tbaa !44
  %379 = getelementptr inbounds i8, ptr %2, i64 36
  %380 = load i32, ptr %379, align 4, !tbaa !36
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %377, i32 noundef %378, i32 noundef 127, i32 noundef 0, i32 noundef 40, i32 noundef %380, i32 noundef 0) #3
  br label %538

381:                                              ; preds = %358
  %382 = load i32, ptr %359, align 4, !tbaa !43
  %383 = load i32, ptr %2, align 4, !tbaa !44
  %384 = getelementptr inbounds i8, ptr %2, i64 40
  %385 = load i32, ptr %384, align 4, !tbaa !37
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %382, i32 noundef %383, i32 noundef 127, i32 noundef 0, i32 noundef 0, i32 noundef %385, i32 noundef 0) #3
  %386 = load i32, ptr %384, align 4, !tbaa !37
  br label %538

387:                                              ; preds = %358
  %388 = load i32, ptr %359, align 4, !tbaa !43
  %389 = load i32, ptr %2, align 4, !tbaa !44
  %390 = getelementptr inbounds i8, ptr %2, i64 36
  %391 = load i32, ptr %390, align 4, !tbaa !36
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %388, i32 noundef %389, i32 noundef 127, i32 noundef 0, i32 noundef 40, i32 noundef %391, i32 noundef 0) #3
  %392 = load i32, ptr %359, align 4, !tbaa !43
  %393 = load i32, ptr %2, align 4, !tbaa !44
  %394 = getelementptr inbounds i8, ptr %2, i64 40
  %395 = load i32, ptr %394, align 4, !tbaa !37
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %392, i32 noundef %393, i32 noundef 127, i32 noundef 0, i32 noundef 0, i32 noundef %395, i32 noundef 0) #3
  %396 = load i32, ptr %394, align 4, !tbaa !37
  br label %538

397:                                              ; preds = %358
  %398 = load i32, ptr %359, align 4, !tbaa !43
  %399 = load i32, ptr %2, align 4, !tbaa !44
  %400 = getelementptr inbounds i8, ptr %2, i64 40
  %401 = load i32, ptr %400, align 4, !tbaa !37
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %398, i32 noundef %399, i32 noundef 127, i32 noundef 0, i32 noundef 0, i32 noundef %401, i32 noundef 0) #3
  %402 = load i32, ptr %359, align 4, !tbaa !43
  %403 = load i32, ptr %2, align 4, !tbaa !44
  %404 = getelementptr inbounds i8, ptr %2, i64 36
  %405 = load i32, ptr %404, align 4, !tbaa !36
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %402, i32 noundef %403, i32 noundef 127, i32 noundef 0, i32 noundef 88, i32 noundef %405, i32 noundef 0) #3
  %406 = load i32, ptr %400, align 4, !tbaa !37
  br label %538

407:                                              ; preds = %358
  %408 = load i32, ptr %359, align 4, !tbaa !43
  %409 = load i32, ptr %2, align 4, !tbaa !44
  %410 = getelementptr inbounds i8, ptr %2, i64 36
  %411 = load i32, ptr %410, align 4, !tbaa !36
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %408, i32 noundef %409, i32 noundef 127, i32 noundef 0, i32 noundef 40, i32 noundef %411, i32 noundef 0) #3
  %412 = load i32, ptr %359, align 4, !tbaa !43
  %413 = load i32, ptr %2, align 4, !tbaa !44
  %414 = getelementptr inbounds i8, ptr %2, i64 40
  %415 = load i32, ptr %414, align 4, !tbaa !37
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %412, i32 noundef %413, i32 noundef 127, i32 noundef 0, i32 noundef 0, i32 noundef %415, i32 noundef 0) #3
  %416 = load i32, ptr %414, align 4, !tbaa !37
  br label %538

417:                                              ; preds = %358
  %418 = load i32, ptr %359, align 4, !tbaa !43
  %419 = load i32, ptr %2, align 4, !tbaa !44
  %420 = getelementptr inbounds i8, ptr %2, i64 44
  %421 = load i32, ptr %420, align 4, !tbaa !38
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %418, i32 noundef %419, i32 noundef 127, i32 noundef 0, i32 noundef 88, i32 noundef %421, i32 noundef 0) #3
  %422 = load i32, ptr %359, align 4, !tbaa !43
  %423 = load i32, ptr %420, align 4, !tbaa !38
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %422, i32 noundef %423, i32 noundef 127, i32 noundef 0, i32 noundef 0, i32 noundef %423, i32 noundef 0) #3
  br label %538

424:                                              ; preds = %358
  %425 = load i32, ptr %359, align 4, !tbaa !43
  %426 = load i32, ptr %2, align 4, !tbaa !44
  %427 = getelementptr inbounds i8, ptr %2, i64 44
  %428 = load i32, ptr %427, align 4, !tbaa !38
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %425, i32 noundef %426, i32 noundef 127, i32 noundef 0, i32 noundef 88, i32 noundef %428, i32 noundef 0) #3
  %429 = load i32, ptr %427, align 4, !tbaa !38
  br label %538

430:                                              ; preds = %358
  %431 = load i32, ptr %359, align 4, !tbaa !43
  %432 = load i32, ptr %2, align 4, !tbaa !44
  %433 = getelementptr inbounds i8, ptr %2, i64 44
  %434 = load i32, ptr %433, align 4, !tbaa !38
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %431, i32 noundef %432, i32 noundef 127, i32 noundef 0, i32 noundef 88, i32 noundef %434, i32 noundef 0) #3
  %435 = load i32, ptr %433, align 4, !tbaa !38
  %436 = getelementptr inbounds i8, ptr %2, i64 48
  %437 = load i32, ptr %436, align 4, !tbaa !39
  br label %538

438:                                              ; preds = %358
  %439 = load i32, ptr %359, align 4, !tbaa !43
  %440 = load i32, ptr %2, align 4, !tbaa !44
  %441 = getelementptr inbounds i8, ptr %2, i64 60
  %442 = load i32, ptr %441, align 4, !tbaa !33
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %439, i32 noundef %440, i32 noundef 127, i32 noundef 0, i32 noundef 8, i32 noundef %442, i32 noundef 0) #3
  %443 = load i32, ptr %359, align 4, !tbaa !43
  %444 = load i32, ptr %2, align 4, !tbaa !44
  %445 = getelementptr inbounds i8, ptr %2, i64 56
  %446 = load i32, ptr %445, align 4, !tbaa !41
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %443, i32 noundef %444, i32 noundef 127, i32 noundef 0, i32 noundef 0, i32 noundef %446, i32 noundef 0) #3
  %447 = load i32, ptr %359, align 4, !tbaa !43
  %448 = load i32, ptr %2, align 4, !tbaa !44
  %449 = getelementptr inbounds i8, ptr %2, i64 52
  %450 = load i32, ptr %449, align 4, !tbaa !40
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %447, i32 noundef %448, i32 noundef 127, i32 noundef 0, i32 noundef 88, i32 noundef %450, i32 noundef 0) #3
  %451 = load i32, ptr %441, align 4, !tbaa !33
  %452 = load i32, ptr %445, align 4, !tbaa !41
  br label %538

453:                                              ; preds = %358
  %454 = load i32, ptr %359, align 4, !tbaa !43
  %455 = load i32, ptr %2, align 4, !tbaa !44
  %456 = getelementptr inbounds i8, ptr %2, i64 52
  %457 = load i32, ptr %456, align 4, !tbaa !40
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %454, i32 noundef %455, i32 noundef 127, i32 noundef 0, i32 noundef 40, i32 noundef %457, i32 noundef 0) #3
  %458 = load i32, ptr %359, align 4, !tbaa !43
  %459 = load i32, ptr %2, align 4, !tbaa !44
  %460 = getelementptr inbounds i8, ptr %2, i64 56
  %461 = load i32, ptr %460, align 4, !tbaa !41
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %458, i32 noundef %459, i32 noundef 127, i32 noundef 0, i32 noundef 0, i32 noundef %461, i32 noundef 0) #3
  %462 = load i32, ptr %460, align 4, !tbaa !41
  br label %538

463:                                              ; preds = %358
  %464 = load i16, ptr %352, align 1, !tbaa !11
  %465 = and i16 %464, 1024
  %466 = icmp eq i16 %465, 0
  br i1 %466, label %467, label %472

467:                                              ; preds = %463
  %468 = load i32, ptr %359, align 4, !tbaa !43
  %469 = load i32, ptr %2, align 4, !tbaa !44
  %470 = getelementptr inbounds i8, ptr %2, i64 136
  %471 = load i32, ptr %470, align 4, !tbaa !42
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %468, i32 noundef %469, i32 noundef 127, i32 noundef 0, i32 noundef 40, i32 noundef %471, i32 noundef 0) #3
  br label %472

472:                                              ; preds = %467, %463
  %473 = getelementptr inbounds i8, ptr %2, i64 136
  %474 = load i32, ptr %473, align 4, !tbaa !42
  br label %538

475:                                              ; preds = %358
  %476 = load i16, ptr %352, align 1, !tbaa !11
  %477 = and i16 %476, 1024
  %478 = icmp eq i16 %477, 0
  br i1 %478, label %479, label %484

479:                                              ; preds = %475
  %480 = load i32, ptr %359, align 4, !tbaa !43
  %481 = load i32, ptr %2, align 4, !tbaa !44
  %482 = getelementptr inbounds i8, ptr %2, i64 136
  %483 = load i32, ptr %482, align 4, !tbaa !42
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %480, i32 noundef %481, i32 noundef 127, i32 noundef 0, i32 noundef 40, i32 noundef %483, i32 noundef 0) #3
  br label %484

484:                                              ; preds = %479, %475
  %485 = getelementptr inbounds i8, ptr %2, i64 136
  %486 = load i32, ptr %485, align 4, !tbaa !42
  br label %538

487:                                              ; preds = %358
  %488 = load i16, ptr %352, align 1, !tbaa !11
  %489 = and i16 %488, 4096
  %.not697 = icmp eq i16 %489, 0
  br i1 %.not697, label %538, label %490

490:                                              ; preds = %487
  %491 = load i32, ptr %359, align 4, !tbaa !43
  %492 = load i32, ptr %2, align 4, !tbaa !44
  %493 = getelementptr inbounds i8, ptr %2, i64 60
  %494 = load i32, ptr %493, align 4, !tbaa !33
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %491, i32 noundef %492, i32 noundef 127, i32 noundef 0, i32 noundef 8, i32 noundef %494, i32 noundef 0) #3
  %495 = load i32, ptr %493, align 4, !tbaa !33
  br label %538

.thread767:                                       ; preds = %307, %302
  %496 = getelementptr inbounds i8, ptr %3, i64 56
  %497 = load i32, ptr %496, align 4, !tbaa !43
  %498 = load i32, ptr %2, align 4, !tbaa !44
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %497, i32 noundef %498, i32 noundef 127, i32 noundef 0, i32 noundef 32, i32 noundef 8, i32 noundef 0) #3
  %499 = load i32, ptr %496, align 4, !tbaa !43
  %500 = load i32, ptr %2, align 4, !tbaa !44
  %501 = load i32, ptr %303, align 4, !tbaa !32
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %499, i32 noundef %500, i32 noundef 127, i32 noundef 0, i32 noundef 80, i32 noundef %501, i32 noundef 0) #3
  %502 = load i32, ptr %496, align 4, !tbaa !43
  %503 = load i32, ptr %2, align 4, !tbaa !44
  %504 = load i32, ptr %298, align 4, !tbaa !28
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %502, i32 noundef %503, i32 noundef 127, i32 noundef 0, i32 noundef 128, i32 noundef %504, i32 noundef 0) #3
  %505 = load i16, ptr %304, align 1, !tbaa !11
  %506 = and i16 %505, 64
  %.not696 = icmp eq i16 %506, 0
  br i1 %.not696, label %538, label %507

507:                                              ; preds = %.thread767
  %508 = load i32, ptr %496, align 4, !tbaa !43
  %509 = load i32, ptr %2, align 4, !tbaa !44
  %510 = getelementptr inbounds i8, ptr %2, i64 60
  %511 = load i32, ptr %510, align 4, !tbaa !33
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %508, i32 noundef %509, i32 noundef 127, i32 noundef 0, i32 noundef 8, i32 noundef %511, i32 noundef 0) #3
  %512 = load i32, ptr %510, align 4, !tbaa !33
  br label %538

.thread769:                                       ; preds = %309, %315
  %513 = getelementptr inbounds i8, ptr %3, i64 56
  %514 = load i32, ptr %513, align 4, !tbaa !43
  %515 = load i32, ptr %2, align 4, !tbaa !44
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %514, i32 noundef %515, i32 noundef 127, i32 noundef 0, i32 noundef 32, i32 noundef 8, i32 noundef 0) #3
  %516 = load i32, ptr %513, align 4, !tbaa !43
  %517 = load i32, ptr %2, align 4, !tbaa !44
  %518 = load i32, ptr %310, align 4, !tbaa !32
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %516, i32 noundef %517, i32 noundef 127, i32 noundef 0, i32 noundef 80, i32 noundef %518, i32 noundef 0) #3
  %519 = load i32, ptr %513, align 4, !tbaa !43
  %520 = load i32, ptr %2, align 4, !tbaa !44
  %521 = load i32, ptr %311, align 4, !tbaa !34
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %519, i32 noundef %520, i32 noundef 127, i32 noundef 0, i32 noundef 128, i32 noundef %521, i32 noundef 0) #3
  %522 = load i32, ptr %513, align 4, !tbaa !43
  %523 = load i32, ptr %2, align 4, !tbaa !44
  %524 = load i32, ptr %298, align 4, !tbaa !28
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %522, i32 noundef %523, i32 noundef 127, i32 noundef 0, i32 noundef 176, i32 noundef %524, i32 noundef 0) #3
  %525 = load i16, ptr %312, align 1, !tbaa !11
  %526 = and i16 %525, 2048
  %.not695 = icmp eq i16 %526, 0
  br i1 %.not695, label %538, label %527

527:                                              ; preds = %.thread769
  %528 = load i32, ptr %513, align 4, !tbaa !43
  %529 = load i32, ptr %2, align 4, !tbaa !44
  %530 = getelementptr inbounds i8, ptr %2, i64 60
  %531 = load i32, ptr %530, align 4, !tbaa !33
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef %528, i32 noundef %529, i32 noundef 127, i32 noundef 0, i32 noundef 8, i32 noundef %531, i32 noundef 0) #3
  %532 = load i32, ptr %530, align 4, !tbaa !33
  br label %538

533:                                              ; preds = %357
  %534 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !15
  %535 = icmp ugt i32 %534, 1
  %536 = load i32, ptr @libxsmm_verbosity, align 4
  %537 = select i1 %535, i32 %536, i32 1
  tail call void @libxsmm_handle_error(ptr noundef nonnull %0, i32 noundef 90000, ptr noundef nonnull @__func__.libxsmm_generator_unary_binary_avx512_microkernel, ptr noundef nonnull @.str, i32 noundef 4508, i32 noundef %537) #3
  br label %538

538:                                              ; preds = %507, %.thread767, %.thread769, %527, %533, %366, %376, %387, %407, %424, %438, %472, %487, %490, %484, %453, %430, %417, %397, %381, %371
  %539 = phi ptr [ %318, %366 ], [ %318, %371 ], [ %318, %376 ], [ %318, %381 ], [ %318, %387 ], [ %318, %397 ], [ %318, %407 ], [ %318, %417 ], [ %318, %424 ], [ %318, %430 ], [ %318, %438 ], [ %318, %453 ], [ %318, %472 ], [ %318, %484 ], [ %318, %490 ], [ %318, %487 ], [ %298, %507 ], [ %298, %.thread767 ], [ %298, %527 ], [ %298, %.thread769 ], [ %318, %533 ]
  %540 = phi ptr [ %319, %366 ], [ %319, %371 ], [ %319, %376 ], [ %319, %381 ], [ %319, %387 ], [ %319, %397 ], [ %319, %407 ], [ %319, %417 ], [ %319, %424 ], [ %319, %430 ], [ %319, %438 ], [ %319, %453 ], [ %319, %472 ], [ %319, %484 ], [ %319, %490 ], [ %319, %487 ], [ %297, %507 ], [ %297, %.thread767 ], [ %297, %527 ], [ %297, %.thread769 ], [ %319, %533 ]
  %.0660 = phi i32 [ 127, %366 ], [ 127, %371 ], [ 127, %376 ], [ 127, %381 ], [ 127, %387 ], [ 127, %397 ], [ 127, %407 ], [ 127, %417 ], [ %429, %424 ], [ %435, %430 ], [ %451, %438 ], [ 127, %453 ], [ %474, %472 ], [ %486, %484 ], [ %495, %490 ], [ 127, %487 ], [ %512, %507 ], [ 127, %.thread767 ], [ %532, %527 ], [ 127, %.thread769 ], [ 127, %533 ]
  %.0659 = phi i32 [ 127, %366 ], [ 127, %371 ], [ 127, %376 ], [ %386, %381 ], [ %396, %387 ], [ %406, %397 ], [ %416, %407 ], [ 127, %417 ], [ 127, %424 ], [ %437, %430 ], [ %452, %438 ], [ %462, %453 ], [ 127, %472 ], [ 127, %484 ], [ 127, %490 ], [ 127, %487 ], [ 127, %507 ], [ 127, %.thread767 ], [ 127, %527 ], [ 127, %.thread769 ], [ 127, %533 ]
  tail call void @libxsmm_configure_kernel_vregs_masks(ptr noundef nonnull %0, ptr noundef %3, ptr noundef nonnull %4, i32 noundef 11, i32 noundef %.0660, i32 noundef %.0659)
  %541 = getelementptr inbounds i8, ptr %3, i64 72
  %542 = load i32, ptr %541, align 4, !tbaa !45
  %543 = sub i32 %.0661, %542
  %544 = load i32, ptr %4, align 1, !tbaa !12
  %545 = getelementptr inbounds i8, ptr %4, i64 4
  %546 = load i32, ptr %545, align 1, !tbaa !46
  %547 = getelementptr inbounds i8, ptr %3, i64 480
  %548 = load i32, ptr %547, align 4, !tbaa !17
  call void @libxsmm_generator_configure_M_N_blocking(i32 noundef %544, i32 noundef %546, i32 noundef %548, ptr noundef nonnull %7, ptr noundef nonnull %10, i32 noundef %543)
  call void @libxsmm_generator_configure_loop_order(ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef nonnull %10, ptr noundef nonnull %8, ptr noundef nonnull %11, ptr noundef nonnull %9, ptr noundef nonnull %12)
  %549 = load i32, ptr %6, align 4, !tbaa !15
  %550 = getelementptr inbounds i8, ptr %3, i64 500
  store i32 %549, ptr %550, align 4, !tbaa !47
  %551 = load i32, ptr %9, align 4, !tbaa !15
  %.not698797 = icmp eq i32 %551, 0
  br i1 %.not698797, label %._crit_edge802, label %.preheader.lr.ph

.preheader.lr.ph:                                 ; preds = %538
  %552 = getelementptr inbounds i8, ptr %3, i64 40
  %553 = getelementptr inbounds i8, ptr %2, i64 28
  %554 = getelementptr inbounds i8, ptr %2, i64 8
  %555 = getelementptr inbounds i8, ptr %2, i64 12
  %556 = getelementptr inbounds i8, ptr %2, i64 52
  %557 = getelementptr inbounds i8, ptr %2, i64 36
  %558 = getelementptr inbounds i8, ptr %3, i64 44
  br label %.preheader

.preheader:                                       ; preds = %.preheader.lr.ph, %678
  %.0801 = phi i32 [ 0, %.preheader.lr.ph ], [ %.1.lcssa819, %678 ]
  %.0651800 = phi i32 [ 0, %.preheader.lr.ph ], [ %.1652.lcssa818, %678 ]
  %.0653799 = phi i32 [ 0, %.preheader.lr.ph ], [ %.1654.lcssa817, %678 ]
  %.0655798 = phi i32 [ 0, %.preheader.lr.ph ], [ %644, %678 ]
  %559 = load i32, ptr %12, align 4
  %.not699791 = icmp eq i32 %559, 0
  br i1 %.not699791, label %._crit_edge.thread, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader, %609
  %560 = phi i32 [ %610, %609 ], [ %559, %.preheader ]
  %.0656793 = phi i32 [ %575, %609 ], [ 0, %.preheader ]
  %.0657792 = phi i32 [ %.1658, %609 ], [ 0, %.preheader ]
  %561 = load i32, ptr %8, align 4
  %562 = icmp ult i32 %.0655798, %561
  %563 = load i32, ptr %9, align 4
  %564 = sub i32 %563, %.0655798
  %565 = select i1 %562, i32 %561, i32 %564
  %566 = load i32, ptr %11, align 4
  %567 = icmp ult i32 %.0656793, %566
  %568 = sub i32 %560, %.0656793
  %569 = select i1 %567, i32 %566, i32 %568
  %570 = load i32, ptr %6, align 4, !tbaa !15
  %571 = icmp eq i32 %570, 1
  %572 = select i1 %571, i32 %565, i32 %569
  %573 = icmp eq i32 %570, 0
  %574 = select i1 %573, i32 %565, i32 %569
  call void @libxsmm_generator_unary_binary_2d_microkernel(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef nonnull %4, i32 noundef %574, i32 noundef %572)
  %575 = add i32 %569, %.0656793
  %576 = load i32, ptr %12, align 4, !tbaa !15
  %.not701 = icmp eq i32 %575, %576
  br i1 %.not701, label %609, label %577

577:                                              ; preds = %.lr.ph
  %578 = load i32, ptr %6, align 4, !tbaa !15
  %579 = icmp ne i32 %578, 1
  %580 = zext i1 %579 to i32
  %581 = load i32, ptr %540, align 4, !tbaa !26
  %582 = load i32, ptr %552, align 4, !tbaa !48
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %0, ptr noundef %2, ptr noundef %3, ptr noundef nonnull %4, i32 noundef %581, i32 noundef %582, i32 noundef %574, i32 noundef %572, i32 noundef %580)
  %583 = load i32, ptr %539, align 4, !tbaa !28
  %584 = load i32, ptr %552, align 4, !tbaa !48
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %0, ptr noundef %2, ptr noundef %3, ptr noundef nonnull %4, i32 noundef %583, i32 noundef %584, i32 noundef %574, i32 noundef %572, i32 noundef %580)
  %585 = load i8, ptr %13, align 1, !tbaa !5
  %586 = icmp eq i8 %585, 1
  br i1 %586, label %587, label %593

587:                                              ; preds = %577
  %588 = load i16, ptr %275, align 1, !tbaa !16
  %589 = icmp eq i16 %588, 63
  br i1 %589, label %590, label %.thread770.thread

590:                                              ; preds = %587
  %591 = load i32, ptr %553, align 4, !tbaa !35
  %592 = load i32, ptr %552, align 4, !tbaa !48
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %0, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, i32 noundef %591, i32 noundef %592, i32 noundef %574, i32 noundef %572, i32 noundef %580)
  %.pre806 = load i8, ptr %13, align 1, !tbaa !5
  br label %593

593:                                              ; preds = %590, %577
  %594 = phi i8 [ %.pre806, %590 ], [ %585, %577 ]
  %595 = and i8 %594, -2
  %switch709 = icmp eq i8 %595, 2
  br i1 %switch709, label %596, label %.thread770

596:                                              ; preds = %593
  %597 = load i32, ptr %554, align 4, !tbaa !32
  %598 = load i32, ptr %552, align 4, !tbaa !48
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %0, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, i32 noundef %597, i32 noundef %598, i32 noundef %574, i32 noundef %572, i32 noundef %580)
  %.pr = load i8, ptr %13, align 1, !tbaa !5
  %599 = icmp eq i8 %.pr, 3
  br i1 %599, label %600, label %.thread770

600:                                              ; preds = %596
  %601 = load i32, ptr %555, align 4, !tbaa !34
  %602 = load i32, ptr %552, align 4, !tbaa !48
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %0, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, i32 noundef %601, i32 noundef %602, i32 noundef %574, i32 noundef %572, i32 noundef %580)
  %.pr771 = load i8, ptr %13, align 1, !tbaa !5
  br label %.thread770

.thread770:                                       ; preds = %593, %600, %596
  %603 = phi i8 [ %.pr771, %600 ], [ %.pr, %596 ], [ %594, %593 ]
  %604 = icmp eq i8 %603, 1
  br i1 %604, label %thread-pre-split, label %609

thread-pre-split:                                 ; preds = %.thread770
  %.pr812 = load i16, ptr %275, align 1, !tbaa !16
  br label %.thread770.thread

.thread770.thread:                                ; preds = %587, %thread-pre-split
  %605 = phi i16 [ %.pr812, %thread-pre-split ], [ %588, %587 ]
  switch i16 %605, label %609 [
    i16 5, label %.sink.split842
    i16 6, label %.sink.split842
    i16 34, label %.sink.split842
    i16 35, label %.sink.split842
    i16 36, label %.sink.split842
    i16 37, label %.sink.split842
    i16 25, label %606
    i16 26, label %606
  ]

606:                                              ; preds = %.thread770.thread, %.thread770.thread
  br label %.sink.split842

.sink.split842:                                   ; preds = %.thread770.thread, %.thread770.thread, %.thread770.thread, %.thread770.thread, %.thread770.thread, %.thread770.thread, %606
  %.sink845 = phi ptr [ %556, %606 ], [ %557, %.thread770.thread ], [ %557, %.thread770.thread ], [ %557, %.thread770.thread ], [ %557, %.thread770.thread ], [ %557, %.thread770.thread ], [ %557, %.thread770.thread ]
  %607 = load i32, ptr %.sink845, align 4, !tbaa !15
  %608 = load i32, ptr %552, align 4, !tbaa !48
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %0, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, i32 noundef %607, i32 noundef %608, i32 noundef %574, i32 noundef %572, i32 noundef %580)
  br label %609

609:                                              ; preds = %.sink.split842, %.thread770.thread, %.thread770, %.lr.ph
  %.1658 = phi i32 [ 1, %.thread770 ], [ %.0657792, %.lr.ph ], [ 1, %.thread770.thread ], [ 1, %.sink.split842 ]
  %610 = load i32, ptr %12, align 4
  %.not699 = icmp eq i32 %575, %610
  br i1 %.not699, label %._crit_edge, label %.lr.ph, !llvm.loop !49

._crit_edge:                                      ; preds = %609
  %611 = icmp eq i32 %.1658, 1
  br i1 %611, label %612, label %._crit_edge.thread

612:                                              ; preds = %._crit_edge
  %613 = load i32, ptr %6, align 4, !tbaa !15
  %614 = icmp ne i32 %613, 1
  %615 = zext i1 %614 to i32
  %616 = load i32, ptr %540, align 4, !tbaa !26
  %617 = load i32, ptr %558, align 4, !tbaa !51
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %0, ptr noundef %2, ptr noundef %3, ptr noundef nonnull %4, i32 noundef %616, i32 noundef %617, i32 noundef %574, i32 noundef %572, i32 noundef %615)
  %618 = load i32, ptr %539, align 4, !tbaa !28
  %619 = load i32, ptr %558, align 4, !tbaa !51
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %0, ptr noundef %2, ptr noundef %3, ptr noundef nonnull %4, i32 noundef %618, i32 noundef %619, i32 noundef %574, i32 noundef %572, i32 noundef %615)
  %620 = load i8, ptr %13, align 1, !tbaa !5
  %621 = icmp eq i8 %620, 1
  br i1 %621, label %622, label %628

622:                                              ; preds = %612
  %623 = load i16, ptr %275, align 1, !tbaa !16
  %624 = icmp eq i16 %623, 63
  br i1 %624, label %625, label %.thread773.thread

625:                                              ; preds = %622
  %626 = load i32, ptr %553, align 4, !tbaa !35
  %627 = load i32, ptr %558, align 4, !tbaa !51
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %0, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, i32 noundef %626, i32 noundef %627, i32 noundef %574, i32 noundef %572, i32 noundef %615)
  %.pre807 = load i8, ptr %13, align 1, !tbaa !5
  br label %628

628:                                              ; preds = %625, %612
  %629 = phi i8 [ %.pre807, %625 ], [ %620, %612 ]
  %630 = and i8 %629, -2
  %switch711 = icmp eq i8 %630, 2
  br i1 %switch711, label %631, label %.thread773

631:                                              ; preds = %628
  %632 = load i32, ptr %554, align 4, !tbaa !32
  %633 = load i32, ptr %558, align 4, !tbaa !51
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %0, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, i32 noundef %632, i32 noundef %633, i32 noundef %574, i32 noundef %572, i32 noundef %615)
  %.pr772 = load i8, ptr %13, align 1, !tbaa !5
  %634 = icmp eq i8 %.pr772, 3
  br i1 %634, label %635, label %.thread773

635:                                              ; preds = %631
  %636 = load i32, ptr %555, align 4, !tbaa !34
  %637 = load i32, ptr %558, align 4, !tbaa !51
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %0, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, i32 noundef %636, i32 noundef %637, i32 noundef %574, i32 noundef %572, i32 noundef %615)
  %.pr774 = load i8, ptr %13, align 1, !tbaa !5
  br label %.thread773

.thread773:                                       ; preds = %628, %635, %631
  %638 = phi i8 [ %.pr774, %635 ], [ %.pr772, %631 ], [ %629, %628 ]
  %639 = icmp eq i8 %638, 1
  br i1 %639, label %thread-pre-split822, label %._crit_edge.thread

thread-pre-split822:                              ; preds = %.thread773
  %.pr823 = load i16, ptr %275, align 1, !tbaa !16
  br label %.thread773.thread

.thread773.thread:                                ; preds = %622, %thread-pre-split822
  %640 = phi i16 [ %.pr823, %thread-pre-split822 ], [ %623, %622 ]
  switch i16 %640, label %._crit_edge.thread [
    i16 5, label %._crit_edge.thread.sink.split
    i16 6, label %._crit_edge.thread.sink.split
    i16 34, label %._crit_edge.thread.sink.split
    i16 35, label %._crit_edge.thread.sink.split
    i16 36, label %._crit_edge.thread.sink.split
    i16 37, label %._crit_edge.thread.sink.split
    i16 25, label %641
    i16 26, label %641
  ]

641:                                              ; preds = %.thread773.thread, %.thread773.thread
  br label %._crit_edge.thread.sink.split

._crit_edge.thread.sink.split:                    ; preds = %.thread773.thread, %.thread773.thread, %.thread773.thread, %.thread773.thread, %.thread773.thread, %.thread773.thread, %641
  %.sink848 = phi ptr [ %556, %641 ], [ %557, %.thread773.thread ], [ %557, %.thread773.thread ], [ %557, %.thread773.thread ], [ %557, %.thread773.thread ], [ %557, %.thread773.thread ], [ %557, %.thread773.thread ]
  %642 = load i32, ptr %.sink848, align 4, !tbaa !15
  %643 = load i32, ptr %558, align 4, !tbaa !51
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %0, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, i32 noundef %642, i32 noundef %643, i32 noundef %574, i32 noundef %572, i32 noundef %615)
  br label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %._crit_edge.thread.sink.split, %.preheader, %.thread773.thread, %.thread773, %._crit_edge
  %.1.lcssa819 = phi i32 [ %565, %.thread773.thread ], [ %565, %.thread773 ], [ %565, %._crit_edge ], [ %.0801, %.preheader ], [ %565, %._crit_edge.thread.sink.split ]
  %.1652.lcssa818 = phi i32 [ %572, %.thread773.thread ], [ %572, %.thread773 ], [ %572, %._crit_edge ], [ %.0651800, %.preheader ], [ %572, %._crit_edge.thread.sink.split ]
  %.1654.lcssa817 = phi i32 [ %574, %.thread773.thread ], [ %574, %.thread773 ], [ %574, %._crit_edge ], [ %.0653799, %.preheader ], [ %574, %._crit_edge.thread.sink.split ]
  %644 = add i32 %.1.lcssa819, %.0655798
  %645 = load i32, ptr %9, align 4, !tbaa !15
  %.not700 = icmp eq i32 %644, %645
  br i1 %.not700, label %678, label %646

646:                                              ; preds = %._crit_edge.thread
  %647 = load i32, ptr %6, align 4, !tbaa !15
  %648 = icmp ne i32 %647, 0
  %649 = zext i1 %648 to i32
  %650 = load i32, ptr %540, align 4, !tbaa !26
  %651 = load i32, ptr %552, align 4, !tbaa !48
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %0, ptr noundef %2, ptr noundef %3, ptr noundef nonnull %4, i32 noundef %650, i32 noundef %651, i32 noundef %.1654.lcssa817, i32 noundef %.1652.lcssa818, i32 noundef %649)
  %652 = load i32, ptr %539, align 4, !tbaa !28
  %653 = load i32, ptr %552, align 4, !tbaa !48
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %0, ptr noundef %2, ptr noundef %3, ptr noundef nonnull %4, i32 noundef %652, i32 noundef %653, i32 noundef %.1654.lcssa817, i32 noundef %.1652.lcssa818, i32 noundef %649)
  %654 = load i8, ptr %13, align 1, !tbaa !5
  %655 = icmp eq i8 %654, 1
  br i1 %655, label %656, label %662

656:                                              ; preds = %646
  %657 = load i16, ptr %275, align 1, !tbaa !16
  %658 = icmp eq i16 %657, 63
  br i1 %658, label %659, label %.thread776.thread

659:                                              ; preds = %656
  %660 = load i32, ptr %553, align 4, !tbaa !35
  %661 = load i32, ptr %552, align 4, !tbaa !48
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %0, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, i32 noundef %660, i32 noundef %661, i32 noundef %.1654.lcssa817, i32 noundef %.1652.lcssa818, i32 noundef %649)
  %.pre808 = load i8, ptr %13, align 1, !tbaa !5
  br label %662

662:                                              ; preds = %659, %646
  %663 = phi i8 [ %.pre808, %659 ], [ %654, %646 ]
  %664 = and i8 %663, -2
  %switch713 = icmp eq i8 %664, 2
  br i1 %switch713, label %665, label %.thread776

665:                                              ; preds = %662
  %666 = load i32, ptr %554, align 4, !tbaa !32
  %667 = load i32, ptr %552, align 4, !tbaa !48
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %0, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, i32 noundef %666, i32 noundef %667, i32 noundef %.1654.lcssa817, i32 noundef %.1652.lcssa818, i32 noundef %649)
  %.pr775 = load i8, ptr %13, align 1, !tbaa !5
  %668 = icmp eq i8 %.pr775, 3
  br i1 %668, label %669, label %.thread776

669:                                              ; preds = %665
  %670 = load i32, ptr %555, align 4, !tbaa !34
  %671 = load i32, ptr %552, align 4, !tbaa !48
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %0, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, i32 noundef %670, i32 noundef %671, i32 noundef %.1654.lcssa817, i32 noundef %.1652.lcssa818, i32 noundef %649)
  %.pr777 = load i8, ptr %13, align 1, !tbaa !5
  br label %.thread776

.thread776:                                       ; preds = %662, %669, %665
  %672 = phi i8 [ %.pr777, %669 ], [ %.pr775, %665 ], [ %663, %662 ]
  %673 = icmp eq i8 %672, 1
  br i1 %673, label %thread-pre-split826, label %678

thread-pre-split826:                              ; preds = %.thread776
  %.pr827 = load i16, ptr %275, align 1, !tbaa !16
  br label %.thread776.thread

.thread776.thread:                                ; preds = %656, %thread-pre-split826
  %674 = phi i16 [ %.pr827, %thread-pre-split826 ], [ %657, %656 ]
  switch i16 %674, label %678 [
    i16 5, label %.sink.split849
    i16 6, label %.sink.split849
    i16 34, label %.sink.split849
    i16 35, label %.sink.split849
    i16 36, label %.sink.split849
    i16 37, label %.sink.split849
    i16 25, label %675
    i16 26, label %675
  ]

675:                                              ; preds = %.thread776.thread, %.thread776.thread
  br label %.sink.split849

.sink.split849:                                   ; preds = %.thread776.thread, %.thread776.thread, %.thread776.thread, %.thread776.thread, %.thread776.thread, %.thread776.thread, %675
  %.sink852 = phi ptr [ %556, %675 ], [ %557, %.thread776.thread ], [ %557, %.thread776.thread ], [ %557, %.thread776.thread ], [ %557, %.thread776.thread ], [ %557, %.thread776.thread ], [ %557, %.thread776.thread ]
  %676 = load i32, ptr %.sink852, align 4, !tbaa !15
  %677 = load i32, ptr %552, align 4, !tbaa !48
  call void @libxsmm_generator_mateltwise_unary_binary_adjust_after_microkernel_addr_gp_reg(ptr noundef %0, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, i32 noundef %676, i32 noundef %677, i32 noundef %.1654.lcssa817, i32 noundef %.1652.lcssa818, i32 noundef %649)
  br label %678

678:                                              ; preds = %.sink.split849, %.thread776.thread, %.thread776, %._crit_edge.thread
  %679 = load i32, ptr %9, align 4, !tbaa !15
  %.not698 = icmp eq i32 %644, %679
  br i1 %.not698, label %._crit_edge802, label %.preheader, !llvm.loop !52

._crit_edge802:                                   ; preds = %678, %538
  call void @libxsmm_finalize_kernel_vregs_masks(ptr noundef %0, ptr noundef %3, ptr noundef nonnull %4, i32 noundef 11, i32 noundef %.0660, i32 noundef %.0659)
  br label %680

680:                                              ; preds = %._crit_edge802, %290, %228, %197, %167, %45
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #3
  ret void
}

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !8, i64 31}
!6 = !{!"libxsmm_meltw_descriptor", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !8, i64 24, !8, i64 25, !8, i64 26, !10, i64 27, !10, i64 29, !8, i64 31}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"short", !8, i64 0}
!11 = !{!6, !10, i64 27}
!12 = !{!6, !7, i64 0}
!13 = !{!6, !7, i64 8}
!14 = !{!6, !7, i64 12}
!15 = !{!7, !7, i64 0}
!16 = !{!6, !10, i64 29}
!17 = !{!18, !7, i64 480}
!18 = !{!"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}
!19 = !{!18, !7, i64 496}
!20 = !{!18, !7, i64 492}
!21 = !{!22, !7, i64 28}
!22 = !{!"libxsmm_generated_code", !23, i64 0, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28}
!23 = !{!"any pointer", !8, i64 0}
!24 = !{!18, !7, i64 68}
!25 = !{!18, !7, i64 64}
!26 = !{!27, !7, i64 4}
!27 = !{!"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}
!28 = !{!27, !7, i64 24}
!29 = !{!27, !7, i64 96}
!30 = !{!27, !7, i64 100}
!31 = !{!27, !7, i64 140}
!32 = !{!27, !7, i64 8}
!33 = !{!27, !7, i64 60}
!34 = !{!27, !7, i64 12}
!35 = !{!27, !7, i64 28}
!36 = !{!27, !7, i64 36}
!37 = !{!27, !7, i64 40}
!38 = !{!27, !7, i64 44}
!39 = !{!27, !7, i64 48}
!40 = !{!27, !7, i64 52}
!41 = !{!27, !7, i64 56}
!42 = !{!27, !7, i64 136}
!43 = !{!18, !7, i64 56}
!44 = !{!27, !7, i64 0}
!45 = !{!18, !7, i64 72}
!46 = !{!6, !7, i64 4}
!47 = !{!18, !7, i64 500}
!48 = !{!18, !7, i64 40}
!49 = distinct !{!49, !50}
!50 = !{!"llvm.loop.mustprogress"}
!51 = !{!18, !7, i64 44}
!52 = distinct !{!52, !50}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass