; 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 }

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

declare i32 @libxsmm_generator_mateltwise_is_binary_cmp_op(ptr noundef) #1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_compute_binary_2d_reg_block(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4, i32 noundef %5, i32 noundef %6, i32 noundef %7, i32 noundef %8, i32 noundef %9) #2 {
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i8, align 1
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  store ptr %0, ptr %11, align 8, !tbaa !5
  store ptr %1, ptr %12, align 8, !tbaa !5
  store ptr %2, ptr %13, align 8, !tbaa !5
  store ptr %3, ptr %14, align 8, !tbaa !5
  store i32 %4, ptr %15, align 4, !tbaa !9
  store i32 %5, ptr %16, align 4, !tbaa !9
  store i32 %6, ptr %17, align 4, !tbaa !9
  store i32 %7, ptr %18, align 4, !tbaa !9
  store i32 %8, ptr %19, align 4, !tbaa !9
  store i32 %9, ptr %20, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #3
  store i32 0, ptr %24, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #3
  %52 = load ptr, ptr %14, align 8, !tbaa !5
  %53 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %52, i32 0, i32 9
  %54 = load i16, ptr %53, align 1, !tbaa !11
  %55 = zext i16 %54 to i32
  %56 = and i32 %55, 2
  %57 = icmp sgt i32 %56, 0
  %58 = zext i1 %57 to i64
  %59 = select i1 %57, i32 1, i32 0
  store i32 %59, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #3
  %60 = load ptr, ptr %14, align 8, !tbaa !5
  %61 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %60, i32 0, i32 9
  %62 = load i16, ptr %61, align 1, !tbaa !11
  %63 = zext i16 %62 to i32
  %64 = and i32 %63, 8
  %65 = icmp sgt i32 %64, 0
  %66 = zext i1 %65 to i64
  %67 = select i1 %65, i32 1, i32 0
  store i32 %67, ptr %26, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #3
  %68 = load ptr, ptr %14, align 8, !tbaa !5
  %69 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %68, i32 0, i32 9
  %70 = load i16, ptr %69, align 1, !tbaa !11
  %71 = zext i16 %70 to i32
  %72 = and i32 %71, 32
  %73 = icmp sgt i32 %72, 0
  %74 = zext i1 %73 to i64
  %75 = select i1 %73, i32 1, i32 0
  store i32 %75, ptr %27, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #3
  %76 = load i32, ptr %25, align 4, !tbaa !9
  %77 = icmp eq i32 %76, 1
  br i1 %77, label %84, label %78

78:                                               ; preds = %10
  %79 = load i32, ptr %26, align 4, !tbaa !9
  %80 = icmp eq i32 %79, 1
  br i1 %80, label %84, label %81

81:                                               ; preds = %78
  %82 = load i32, ptr %27, align 4, !tbaa !9
  %83 = icmp eq i32 %82, 1
  br label %84

84:                                               ; preds = %81, %78, %10
  %85 = phi i1 [ true, %78 ], [ true, %10 ], [ %83, %81 ]
  %86 = zext i1 %85 to i64
  %87 = select i1 %85, i32 1, i32 0
  store i32 %87, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #3
  %88 = load ptr, ptr %13, align 8, !tbaa !5
  %89 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %88, i32 0, i32 3
  %90 = load i32, ptr %89, align 4, !tbaa !14
  %91 = icmp eq i32 %90, 4
  br i1 %91, label %92, label %99

92:                                               ; preds = %84
  %93 = load ptr, ptr %11, align 8, !tbaa !5
  %94 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %93, i32 0, i32 6
  %95 = load i32, ptr %94, align 4, !tbaa !16
  %96 = icmp ult i32 %95, 1101
  %97 = zext i1 %96 to i64
  %98 = select i1 %96, i32 537209368, i32 537209432
  br label %106

99:                                               ; preds = %84
  %100 = load ptr, ptr %13, align 8, !tbaa !5
  %101 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %100, i32 0, i32 3
  %102 = load i32, ptr %101, align 4, !tbaa !14
  %103 = icmp eq i32 %102, 2
  %104 = zext i1 %103 to i64
  %105 = select i1 %103, i32 537209209, i32 537208952
  br label %106

106:                                              ; preds = %99, %92
  %107 = phi i32 [ %98, %92 ], [ %105, %99 ]
  store i32 %107, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #3
  %108 = load i32, ptr %20, align 4, !tbaa !9
  store i32 %108, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #3
  store i32 0, ptr %31, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #3
  store i32 0, ptr %32, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #3
  %109 = load ptr, ptr %13, align 8, !tbaa !5
  %110 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %109, i32 0, i32 19
  %111 = load i32, ptr %110, align 4, !tbaa !18
  %112 = sub i32 8, %111
  store i32 %112, ptr %33, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #3
  store i32 -1610346095, ptr %34, align 4, !tbaa !9
  %113 = load ptr, ptr %13, align 8, !tbaa !5
  %114 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %113, i32 0, i32 3
  %115 = load i32, ptr %114, align 4, !tbaa !14
  %116 = icmp eq i32 %115, 8
  br i1 %116, label %117, label %125

117:                                              ; preds = %106
  %118 = load ptr, ptr %11, align 8, !tbaa !5
  %119 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %118, i32 0, i32 6
  %120 = load i32, ptr %119, align 4, !tbaa !16
  %121 = icmp ult i32 %120, 1051
  br i1 %121, label %122, label %123

122:                                              ; preds = %117
  store i32 1610948697, ptr %29, align 4, !tbaa !9
  br label %124

123:                                              ; preds = %117
  store i32 -528143527, ptr %29, align 4, !tbaa !9
  br label %124

124:                                              ; preds = %123, %122
  br label %125

125:                                              ; preds = %124, %106
  %126 = load i32, ptr %19, align 4, !tbaa !9
  %127 = icmp ugt i32 %126, 0
  br i1 %127, label %128, label %170

128:                                              ; preds = %125
  %129 = load ptr, ptr %11, align 8, !tbaa !5
  %130 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %129, i32 0, i32 6
  %131 = load i32, ptr %130, align 4, !tbaa !16
  %132 = icmp uge i32 %131, 1005
  br i1 %132, label %133, label %157

133:                                              ; preds = %128
  %134 = load ptr, ptr %11, align 8, !tbaa !5
  %135 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %134, i32 0, i32 6
  %136 = load i32, ptr %135, align 4, !tbaa !16
  %137 = icmp ult i32 %136, 1051
  br i1 %137, label %138, label %157

138:                                              ; preds = %133
  %139 = load ptr, ptr %14, align 8, !tbaa !5
  %140 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %139, i32 noundef 3)
  %141 = icmp eq i32 10, %140
  br i1 %141, label %150, label %142

142:                                              ; preds = %138
  %143 = load ptr, ptr %14, align 8, !tbaa !5
  %144 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %143, i32 noundef 3)
  %145 = icmp eq i32 3, %144
  br i1 %145, label %150, label %146

146:                                              ; preds = %142
  %147 = load ptr, ptr %14, align 8, !tbaa !5
  %148 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %147, i32 noundef 3)
  %149 = icmp eq i32 2, %148
  br i1 %149, label %150, label %156

150:                                              ; preds = %146, %142, %138
  %151 = load ptr, ptr %14, align 8, !tbaa !5
  %152 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %151, i32 0, i32 0
  %153 = load i32, ptr %152, align 1, !tbaa !19
  %154 = load i32, ptr %15, align 4, !tbaa !9
  %155 = urem i32 %153, %154
  store i32 %155, ptr %30, align 4, !tbaa !9
  br label %156

156:                                              ; preds = %150, %146
  br label %169

157:                                              ; preds = %133, %128
  %158 = load ptr, ptr %11, align 8, !tbaa !5
  %159 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %158, i32 0, i32 6
  %160 = load i32, ptr %159, align 4, !tbaa !16
  %161 = icmp ult i32 %160, 1005
  br i1 %161, label %162, label %168

162:                                              ; preds = %157
  %163 = load ptr, ptr %14, align 8, !tbaa !5
  %164 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %163, i32 0, i32 0
  %165 = load i32, ptr %164, align 1, !tbaa !19
  %166 = load i32, ptr %15, align 4, !tbaa !9
  %167 = urem i32 %165, %166
  store i32 %167, ptr %30, align 4, !tbaa !9
  br label %168

168:                                              ; preds = %162, %157
  br label %169

169:                                              ; preds = %168, %156
  br label %170

170:                                              ; preds = %169, %125
  %171 = load i32, ptr %19, align 4, !tbaa !9
  %172 = icmp ugt i32 %171, 0
  br i1 %172, label %173, label %215

173:                                              ; preds = %170
  %174 = load ptr, ptr %11, align 8, !tbaa !5
  %175 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %174, i32 0, i32 6
  %176 = load i32, ptr %175, align 4, !tbaa !16
  %177 = icmp uge i32 %176, 1005
  br i1 %177, label %178, label %202

178:                                              ; preds = %173
  %179 = load ptr, ptr %11, align 8, !tbaa !5
  %180 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %179, i32 0, i32 6
  %181 = load i32, ptr %180, align 4, !tbaa !16
  %182 = icmp ult i32 %181, 1051
  br i1 %182, label %183, label %202

183:                                              ; preds = %178
  %184 = load ptr, ptr %14, align 8, !tbaa !5
  %185 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %184, i32 noundef 1)
  %186 = icmp eq i32 10, %185
  br i1 %186, label %195, label %187

187:                                              ; preds = %183
  %188 = load ptr, ptr %14, align 8, !tbaa !5
  %189 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %188, i32 noundef 1)
  %190 = icmp eq i32 3, %189
  br i1 %190, label %195, label %191

191:                                              ; preds = %187
  %192 = load ptr, ptr %14, align 8, !tbaa !5
  %193 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %192, i32 noundef 1)
  %194 = icmp eq i32 2, %193
  br i1 %194, label %195, label %201

195:                                              ; preds = %191, %187, %183
  %196 = load ptr, ptr %14, align 8, !tbaa !5
  %197 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %196, i32 0, i32 0
  %198 = load i32, ptr %197, align 1, !tbaa !19
  %199 = load i32, ptr %15, align 4, !tbaa !9
  %200 = urem i32 %198, %199
  store i32 %200, ptr %20, align 4, !tbaa !9
  br label %201

201:                                              ; preds = %195, %191
  br label %214

202:                                              ; preds = %178, %173
  %203 = load ptr, ptr %11, align 8, !tbaa !5
  %204 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %203, i32 0, i32 6
  %205 = load i32, ptr %204, align 4, !tbaa !16
  %206 = icmp ult i32 %205, 1005
  br i1 %206, label %207, label %213

207:                                              ; preds = %202
  %208 = load ptr, ptr %14, align 8, !tbaa !5
  %209 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %208, i32 0, i32 0
  %210 = load i32, ptr %209, align 1, !tbaa !19
  %211 = load i32, ptr %15, align 4, !tbaa !9
  %212 = urem i32 %210, %211
  store i32 %212, ptr %20, align 4, !tbaa !9
  br label %213

213:                                              ; preds = %207, %202
  br label %214

214:                                              ; preds = %213, %201
  br label %215

215:                                              ; preds = %214, %170
  %216 = load ptr, ptr %11, align 8, !tbaa !5
  %217 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %216, i32 0, i32 6
  %218 = load i32, ptr %217, align 4, !tbaa !16
  %219 = icmp ult i32 %218, 1005
  br i1 %219, label %220, label %264

220:                                              ; preds = %215
  %221 = load ptr, ptr %14, align 8, !tbaa !5
  %222 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %221, i32 0, i32 10
  %223 = load i16, ptr %222, align 1, !tbaa !20
  %224 = zext i16 %223 to i32
  switch i32 %224, label %262 [
    i32 1, label %225
    i32 2, label %231
    i32 3, label %237
    i32 4, label %243
    i32 5, label %249
    i32 9, label %250
    i32 10, label %256
  ]

225:                                              ; preds = %220
  %226 = load ptr, ptr %14, align 8, !tbaa !5
  %227 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %226, i32 noundef 4)
  %228 = icmp eq i32 1, %227
  %229 = zext i1 %228 to i64
  %230 = select i1 %228, i32 -1610346408, i32 -1610280872
  store i32 %230, ptr %24, align 4, !tbaa !9
  br label %263

231:                                              ; preds = %220
  %232 = load ptr, ptr %14, align 8, !tbaa !5
  %233 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %232, i32 noundef 4)
  %234 = icmp eq i32 1, %233
  %235 = zext i1 %234 to i64
  %236 = select i1 %234, i32 -1610346407, i32 -1610280871
  store i32 %236, ptr %24, align 4, !tbaa !9
  br label %263

237:                                              ; preds = %220
  %238 = load ptr, ptr %14, align 8, !tbaa !5
  %239 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %238, i32 noundef 4)
  %240 = icmp eq i32 1, %239
  %241 = zext i1 %240 to i64
  %242 = select i1 %240, i32 -1610346404, i32 -1610280868
  store i32 %242, ptr %24, align 4, !tbaa !9
  br label %263

243:                                              ; preds = %220
  %244 = load ptr, ptr %14, align 8, !tbaa !5
  %245 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %244, i32 noundef 4)
  %246 = icmp eq i32 1, %245
  %247 = zext i1 %246 to i64
  %248 = select i1 %246, i32 -1610346402, i32 -1610280866
  store i32 %248, ptr %24, align 4, !tbaa !9
  br label %263

249:                                              ; preds = %220
  store i32 9999, ptr %24, align 4, !tbaa !9
  br label %263

250:                                              ; preds = %220
  %251 = load ptr, ptr %14, align 8, !tbaa !5
  %252 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %251, i32 noundef 4)
  %253 = icmp eq i32 1, %252
  %254 = zext i1 %253 to i64
  %255 = select i1 %253, i32 -1610346401, i32 -1610280865
  store i32 %255, ptr %24, align 4, !tbaa !9
  br label %263

256:                                              ; preds = %220
  %257 = load ptr, ptr %14, align 8, !tbaa !5
  %258 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %257, i32 noundef 4)
  %259 = icmp eq i32 1, %258
  %260 = zext i1 %259 to i64
  %261 = select i1 %259, i32 -1610346403, i32 -1610280867
  store i32 %261, ptr %24, align 4, !tbaa !9
  br label %263

262:                                              ; preds = %220
  br label %263

263:                                              ; preds = %262, %256, %250, %249, %243, %237, %231, %225
  br label %313

264:                                              ; preds = %215
  %265 = load ptr, ptr %14, align 8, !tbaa !5
  %266 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %265, i32 0, i32 10
  %267 = load i16, ptr %266, align 1, !tbaa !20
  %268 = zext i16 %267 to i32
  switch i32 %268, label %311 [
    i32 1, label %269
    i32 2, label %275
    i32 3, label %281
    i32 4, label %287
    i32 5, label %293
    i32 9, label %299
    i32 10, label %305
  ]

269:                                              ; preds = %264
  %270 = load ptr, ptr %14, align 8, !tbaa !5
  %271 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %270, i32 noundef 4)
  %272 = icmp eq i32 1, %271
  %273 = zext i1 %272 to i64
  %274 = select i1 %272, i32 805574232, i32 814028376
  store i32 %274, ptr %24, align 4, !tbaa !9
  br label %312

275:                                              ; preds = %264
  %276 = load ptr, ptr %14, align 8, !tbaa !5
  %277 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %276, i32 noundef 4)
  %278 = icmp eq i32 1, %277
  %279 = zext i1 %278 to i64
  %280 = select i1 %278, i32 805574233, i32 814028377
  store i32 %280, ptr %24, align 4, !tbaa !9
  br label %312

281:                                              ; preds = %264
  %282 = load ptr, ptr %14, align 8, !tbaa !5
  %283 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %282, i32 noundef 4)
  %284 = icmp eq i32 1, %283
  %285 = zext i1 %284 to i64
  %286 = select i1 %284, i32 805574236, i32 814028380
  store i32 %286, ptr %24, align 4, !tbaa !9
  br label %312

287:                                              ; preds = %264
  %288 = load ptr, ptr %14, align 8, !tbaa !5
  %289 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %288, i32 noundef 4)
  %290 = icmp eq i32 1, %289
  %291 = zext i1 %290 to i64
  %292 = select i1 %290, i32 805574238, i32 814028382
  store i32 %292, ptr %24, align 4, !tbaa !9
  br label %312

293:                                              ; preds = %264
  %294 = load ptr, ptr %14, align 8, !tbaa !5
  %295 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %294, i32 noundef 4)
  %296 = icmp eq i32 1, %295
  %297 = zext i1 %296 to i64
  %298 = select i1 %296, i32 805643944, i32 814032552
  store i32 %298, ptr %24, align 4, !tbaa !9
  br label %312

299:                                              ; preds = %264
  %300 = load ptr, ptr %14, align 8, !tbaa !5
  %301 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %300, i32 noundef 4)
  %302 = icmp eq i32 1, %301
  %303 = zext i1 %302 to i64
  %304 = select i1 %302, i32 805574239, i32 814028383
  store i32 %304, ptr %24, align 4, !tbaa !9
  br label %312

305:                                              ; preds = %264
  %306 = load ptr, ptr %14, align 8, !tbaa !5
  %307 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %306, i32 noundef 4)
  %308 = icmp eq i32 1, %307
  %309 = zext i1 %308 to i64
  %310 = select i1 %308, i32 805573981, i32 814028381
  store i32 %310, ptr %24, align 4, !tbaa !9
  br label %312

311:                                              ; preds = %264
  br label %312

312:                                              ; preds = %311, %305, %299, %293, %287, %281, %275, %269
  br label %313

313:                                              ; preds = %312, %263
  %314 = load ptr, ptr %14, align 8, !tbaa !5
  %315 = call i32 @libxsmm_generator_mateltwise_is_binary_cmp_op(ptr noundef %314)
  %316 = icmp ugt i32 %315, 0
  br i1 %316, label %317, label %336

317:                                              ; preds = %313
  %318 = load ptr, ptr %11, align 8, !tbaa !5
  %319 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %318, i32 0, i32 6
  %320 = load i32, ptr %319, align 4, !tbaa !16
  %321 = icmp ult i32 %320, 1005
  %322 = zext i1 %321 to i64
  %323 = select i1 %321, i32 -1609822014, i32 806098626
  store i32 %323, ptr %24, align 4, !tbaa !9
  %324 = load ptr, ptr %14, align 8, !tbaa !5
  %325 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %324, i32 0, i32 10
  %326 = load i16, ptr %325, align 1, !tbaa !20
  %327 = zext i16 %326 to i32
  switch i32 %327, label %334 [
    i32 27, label %328
    i32 28, label %329
    i32 29, label %330
    i32 30, label %331
    i32 31, label %332
    i32 32, label %333
  ]

328:                                              ; preds = %317
  store i32 6, ptr %31, align 4, !tbaa !9
  br label %335

329:                                              ; preds = %317
  store i32 5, ptr %31, align 4, !tbaa !9
  br label %335

330:                                              ; preds = %317
  store i32 1, ptr %31, align 4, !tbaa !9
  br label %335

331:                                              ; preds = %317
  store i32 2, ptr %31, align 4, !tbaa !9
  br label %335

332:                                              ; preds = %317
  store i32 0, ptr %31, align 4, !tbaa !9
  br label %335

333:                                              ; preds = %317
  store i32 4, ptr %31, align 4, !tbaa !9
  br label %335

334:                                              ; preds = %317
  br label %335

335:                                              ; preds = %334, %333, %332, %331, %330, %329, %328
  br label %336

336:                                              ; preds = %335, %313
  %337 = load ptr, ptr %14, align 8, !tbaa !5
  %338 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %337, i32 0, i32 10
  %339 = load i16, ptr %338, align 1, !tbaa !20
  %340 = zext i16 %339 to i32
  %341 = icmp eq i32 %340, 26
  br i1 %341, label %342, label %499

342:                                              ; preds = %336
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %343

343:                                              ; preds = %495, %342
  %344 = load i32, ptr %22, align 4, !tbaa !9
  %345 = load i32, ptr %18, align 4, !tbaa !9
  %346 = icmp ult i32 %344, %345
  br i1 %346, label %347, label %498

347:                                              ; preds = %343
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %348

348:                                              ; preds = %491, %347
  %349 = load i32, ptr %21, align 4, !tbaa !9
  %350 = load i32, ptr %17, align 4, !tbaa !9
  %351 = icmp ult i32 %349, %350
  br i1 %351, label %352, label %494

352:                                              ; preds = %348
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #3
  %353 = load ptr, ptr %11, align 8, !tbaa !5
  %354 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %353, i32 0, i32 6
  %355 = load i32, ptr %354, align 4, !tbaa !16
  %356 = icmp uge i32 %355, 1101
  %357 = zext i1 %356 to i64
  %358 = select i1 %356, i32 122, i32 121
  %359 = trunc i32 %358 to i8
  store i8 %359, ptr %35, align 1, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #3
  %360 = load i32, ptr %25, align 4, !tbaa !9
  %361 = icmp eq i32 %360, 1
  br i1 %361, label %362, label %363

362:                                              ; preds = %352
  br label %365

363:                                              ; preds = %352
  %364 = load i32, ptr %21, align 4, !tbaa !9
  br label %365

365:                                              ; preds = %363, %362
  %366 = phi i32 [ 0, %362 ], [ %364, %363 ]
  store i32 %366, ptr %36, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #3
  %367 = load i32, ptr %26, align 4, !tbaa !9
  %368 = icmp eq i32 %367, 1
  br i1 %368, label %369, label %370

369:                                              ; preds = %365
  br label %372

370:                                              ; preds = %365
  %371 = load i32, ptr %22, align 4, !tbaa !9
  br label %372

372:                                              ; preds = %370, %369
  %373 = phi i32 [ 0, %369 ], [ %371, %370 ]
  store i32 %373, ptr %37, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #3
  store i32 16, ptr %39, align 4, !tbaa !9
  %374 = load ptr, ptr %11, align 8, !tbaa !5
  %375 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %374, i32 0, i32 6
  %376 = load i32, ptr %375, align 4, !tbaa !16
  %377 = icmp ult i32 %376, 1101
  br i1 %377, label %378, label %381

378:                                              ; preds = %372
  %379 = load i32, ptr %39, align 4, !tbaa !9
  %380 = udiv i32 %379, 2
  store i32 %380, ptr %39, align 4, !tbaa !9
  br label %381

381:                                              ; preds = %378, %372
  %382 = load i32, ptr %27, align 4, !tbaa !9
  %383 = icmp eq i32 %382, 1
  br i1 %383, label %384, label %385

384:                                              ; preds = %381
  store i32 0, ptr %36, align 4, !tbaa !9
  store i32 0, ptr %37, align 4, !tbaa !9
  br label %385

385:                                              ; preds = %384, %381
  %386 = load i32, ptr %37, align 4, !tbaa !9
  %387 = load ptr, ptr %14, align 8, !tbaa !5
  %388 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %387, i32 0, i32 4
  %389 = load i32, ptr %388, align 1, !tbaa !22
  %390 = mul i32 %386, %389
  store i32 %390, ptr %38, align 4, !tbaa !9
  %391 = load i32, ptr %16, align 4, !tbaa !9
  %392 = load i32, ptr %22, align 4, !tbaa !9
  %393 = load i32, ptr %17, align 4, !tbaa !9
  %394 = mul i32 %392, %393
  %395 = add i32 %391, %394
  %396 = load i32, ptr %21, align 4, !tbaa !9
  %397 = add i32 %395, %396
  store i32 %397, ptr %23, align 4, !tbaa !9
  %398 = load i32, ptr %28, align 4, !tbaa !9
  %399 = icmp eq i32 %398, 0
  br i1 %399, label %418, label %400

400:                                              ; preds = %385
  %401 = load i32, ptr %26, align 4, !tbaa !9
  %402 = icmp eq i32 %401, 1
  br i1 %402, label %418, label %403

403:                                              ; preds = %400
  %404 = load i32, ptr %25, align 4, !tbaa !9
  %405 = icmp eq i32 %404, 1
  br i1 %405, label %406, label %409

406:                                              ; preds = %403
  %407 = load i32, ptr %21, align 4, !tbaa !9
  %408 = icmp eq i32 %407, 0
  br i1 %408, label %418, label %409

409:                                              ; preds = %406, %403
  %410 = load i32, ptr %27, align 4, !tbaa !9
  %411 = icmp eq i32 %410, 1
  br i1 %411, label %412, label %483

412:                                              ; preds = %409
  %413 = load i32, ptr %21, align 4, !tbaa !9
  %414 = icmp eq i32 %413, 0
  br i1 %414, label %415, label %483

415:                                              ; preds = %412
  %416 = load i32, ptr %22, align 4, !tbaa !9
  %417 = icmp eq i32 %416, 0
  br i1 %417, label %418, label %483

418:                                              ; preds = %415, %406, %400, %385
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #3
  %419 = load i32, ptr %28, align 4, !tbaa !9
  %420 = icmp eq i32 %419, 0
  br i1 %420, label %424, label %421

421:                                              ; preds = %418
  %422 = load i32, ptr %26, align 4, !tbaa !9
  %423 = icmp eq i32 %422, 1
  br i1 %423, label %424, label %425

424:                                              ; preds = %421, %418
  br label %427

425:                                              ; preds = %421
  %426 = load i32, ptr %29, align 4, !tbaa !9
  br label %427

427:                                              ; preds = %425, %424
  %428 = phi i32 [ 537208115, %424 ], [ %426, %425 ]
  store i32 %428, ptr %40, align 4, !tbaa !9
  %429 = load ptr, ptr %11, align 8, !tbaa !5
  %430 = load ptr, ptr %11, align 8, !tbaa !5
  %431 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %430, i32 0, i32 6
  %432 = load i32, ptr %431, align 4, !tbaa !16
  %433 = load i32, ptr %40, align 4, !tbaa !9
  %434 = load ptr, ptr %12, align 8, !tbaa !5
  %435 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %434, i32 0, i32 2
  %436 = load i32, ptr %435, align 4, !tbaa !23
  %437 = load i32, ptr %36, align 4, !tbaa !9
  %438 = load i32, ptr %39, align 4, !tbaa !9
  %439 = mul i32 %437, %438
  %440 = load i32, ptr %38, align 4, !tbaa !9
  %441 = add i32 %439, %440
  %442 = load ptr, ptr %13, align 8, !tbaa !5
  %443 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %442, i32 0, i32 3
  %444 = load i32, ptr %443, align 4, !tbaa !14
  %445 = mul i32 %441, %444
  %446 = load i8, ptr %35, align 1, !tbaa !21
  %447 = load ptr, ptr %13, align 8, !tbaa !5
  %448 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %447, i32 0, i32 29
  %449 = load i32, ptr %448, align 4, !tbaa !25
  %450 = load i32, ptr %19, align 4, !tbaa !9
  %451 = icmp eq i32 %450, 1
  br i1 %451, label %452, label %459

452:                                              ; preds = %427
  %453 = load i32, ptr %21, align 4, !tbaa !9
  %454 = load i32, ptr %17, align 4, !tbaa !9
  %455 = sub i32 %454, 1
  %456 = icmp eq i32 %453, %455
  br i1 %456, label %457, label %459

457:                                              ; preds = %452
  %458 = load i32, ptr %20, align 4, !tbaa !9
  br label %460

459:                                              ; preds = %452, %427
  br label %460

460:                                              ; preds = %459, %457
  %461 = phi i32 [ %458, %457 ], [ 0, %459 ]
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %429, i32 noundef %432, i32 noundef %433, i32 noundef %436, i32 noundef 127, i32 noundef 0, i32 noundef %445, i8 noundef signext %446, i32 noundef %449, i32 noundef %461, i32 noundef 0, i32 noundef 0)
  %462 = load i32, ptr %40, align 4, !tbaa !9
  %463 = load i32, ptr %29, align 4, !tbaa !9
  %464 = icmp eq i32 %462, %463
  br i1 %464, label %465, label %474

465:                                              ; preds = %460
  %466 = load ptr, ptr %11, align 8, !tbaa !5
  %467 = load i8, ptr %35, align 1, !tbaa !21
  %468 = load ptr, ptr %13, align 8, !tbaa !5
  %469 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %468, i32 0, i32 29
  %470 = load i32, ptr %469, align 4, !tbaa !25
  %471 = load ptr, ptr %13, align 8, !tbaa !5
  %472 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %471, i32 0, i32 29
  %473 = load i32, ptr %472, align 4, !tbaa !25
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %466, i32 noundef 537208115, i8 noundef signext %467, i32 noundef %470, i32 noundef %473)
  br label %474

474:                                              ; preds = %465, %460
  %475 = load ptr, ptr %11, align 8, !tbaa !5
  %476 = load i8, ptr %35, align 1, !tbaa !21
  %477 = load ptr, ptr %13, align 8, !tbaa !5
  %478 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %477, i32 0, i32 29
  %479 = load i32, ptr %478, align 4, !tbaa !25
  %480 = load ptr, ptr %13, align 8, !tbaa !5
  %481 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %480, i32 0, i32 29
  %482 = load i32, ptr %481, align 4, !tbaa !25
  call void @libxsmm_x86_instruction_vec_compute_2reg_imm8(ptr noundef %475, i32 noundef 611128946, i8 noundef signext %476, i32 noundef %479, i32 noundef %482, i32 noundef 16)
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #3
  br label %483

483:                                              ; preds = %474, %415, %412, %409
  %484 = load ptr, ptr %11, align 8, !tbaa !5
  %485 = load i8, ptr %35, align 1, !tbaa !21
  %486 = load i32, ptr %23, align 4, !tbaa !9
  %487 = load ptr, ptr %13, align 8, !tbaa !5
  %488 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %487, i32 0, i32 29
  %489 = load i32, ptr %488, align 4, !tbaa !25
  %490 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %484, i32 noundef 805639915, i8 noundef signext %485, i32 noundef %486, i32 noundef %489, i32 noundef %490)
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #3
  br label %491

491:                                              ; preds = %483
  %492 = load i32, ptr %21, align 4, !tbaa !9
  %493 = add i32 %492, 1
  store i32 %493, ptr %21, align 4, !tbaa !9
  br label %348, !llvm.loop !26

494:                                              ; preds = %348
  br label %495

495:                                              ; preds = %494
  %496 = load i32, ptr %22, align 4, !tbaa !9
  %497 = add i32 %496, 1
  store i32 %497, ptr %22, align 4, !tbaa !9
  br label %343, !llvm.loop !28

498:                                              ; preds = %343
  store i32 1, ptr %41, align 4
  br label %1893

499:                                              ; preds = %336
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %500

500:                                              ; preds = %1889, %499
  %501 = load i32, ptr %22, align 4, !tbaa !9
  %502 = load i32, ptr %18, align 4, !tbaa !9
  %503 = icmp ult i32 %501, %502
  br i1 %503, label %504, label %1892

504:                                              ; preds = %500
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %505

505:                                              ; preds = %1885, %504
  %506 = load i32, ptr %21, align 4, !tbaa !9
  %507 = load i32, ptr %17, align 4, !tbaa !9
  %508 = icmp ult i32 %506, %507
  br i1 %508, label %509, label %1888

509:                                              ; preds = %505
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #3
  %510 = load ptr, ptr %14, align 8, !tbaa !5
  %511 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %510, i32 noundef 4)
  %512 = icmp eq i32 2, %511
  %513 = zext i1 %512 to i64
  %514 = select i1 %512, i32 1, i32 0
  store i32 %514, ptr %42, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #3
  %515 = load i32, ptr %42, align 4, !tbaa !9
  %516 = icmp ugt i32 %515, 0
  br i1 %516, label %517, label %518

517:                                              ; preds = %509
  br label %524

518:                                              ; preds = %509
  %519 = load ptr, ptr %14, align 8, !tbaa !5
  %520 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %519, i32 noundef 4)
  %521 = icmp eq i32 1, %520
  %522 = zext i1 %521 to i64
  %523 = select i1 %521, i32 16, i32 8
  br label %524

524:                                              ; preds = %518, %517
  %525 = phi i32 [ 32, %517 ], [ %523, %518 ]
  store i32 %525, ptr %43, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #3
  %526 = load i32, ptr %28, align 4, !tbaa !9
  %527 = icmp eq i32 %526, 0
  br i1 %527, label %531, label %528

528:                                              ; preds = %524
  %529 = load i32, ptr %26, align 4, !tbaa !9
  %530 = icmp eq i32 %529, 1
  br i1 %530, label %531, label %535

531:                                              ; preds = %528, %524
  %532 = load ptr, ptr %13, align 8, !tbaa !5
  %533 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %532, i32 0, i32 7
  %534 = load i32, ptr %533, align 4, !tbaa !29
  br label %537

535:                                              ; preds = %528
  %536 = load i32, ptr %29, align 4, !tbaa !9
  br label %537

537:                                              ; preds = %535, %531
  %538 = phi i32 [ %534, %531 ], [ %536, %535 ]
  store i32 %538, ptr %44, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #3
  %539 = load i32, ptr %25, align 4, !tbaa !9
  %540 = icmp eq i32 %539, 1
  br i1 %540, label %541, label %542

541:                                              ; preds = %537
  br label %544

542:                                              ; preds = %537
  %543 = load i32, ptr %21, align 4, !tbaa !9
  br label %544

544:                                              ; preds = %542, %541
  %545 = phi i32 [ 0, %541 ], [ %543, %542 ]
  store i32 %545, ptr %45, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #3
  %546 = load i32, ptr %26, align 4, !tbaa !9
  %547 = icmp eq i32 %546, 1
  br i1 %547, label %548, label %549

548:                                              ; preds = %544
  br label %551

549:                                              ; preds = %544
  %550 = load i32, ptr %22, align 4, !tbaa !9
  br label %551

551:                                              ; preds = %549, %548
  %552 = phi i32 [ 0, %548 ], [ %550, %549 ]
  store i32 %552, ptr %46, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #3
  %553 = load i32, ptr %25, align 4, !tbaa !9
  %554 = icmp eq i32 %553, 1
  br i1 %554, label %555, label %556

555:                                              ; preds = %551
  br label %558

556:                                              ; preds = %551
  %557 = load i32, ptr %20, align 4, !tbaa !9
  br label %558

558:                                              ; preds = %556, %555
  %559 = phi i32 [ 0, %555 ], [ %557, %556 ]
  store i32 %559, ptr %47, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #3
  %560 = load ptr, ptr %11, align 8, !tbaa !5
  %561 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %560, i32 0, i32 6
  %562 = load i32, ptr %561, align 4, !tbaa !16
  %563 = icmp ult i32 %562, 1005
  br i1 %563, label %564, label %567

564:                                              ; preds = %558
  %565 = load i32, ptr %43, align 4, !tbaa !9
  %566 = udiv i32 %565, 4
  store i32 %566, ptr %43, align 4, !tbaa !9
  br label %576

567:                                              ; preds = %558
  %568 = load ptr, ptr %11, align 8, !tbaa !5
  %569 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %568, i32 0, i32 6
  %570 = load i32, ptr %569, align 4, !tbaa !16
  %571 = icmp ult i32 %570, 1101
  br i1 %571, label %572, label %575

572:                                              ; preds = %567
  %573 = load i32, ptr %43, align 4, !tbaa !9
  %574 = udiv i32 %573, 2
  store i32 %574, ptr %43, align 4, !tbaa !9
  br label %575

575:                                              ; preds = %572, %567
  br label %576

576:                                              ; preds = %575, %564
  %577 = load i32, ptr %27, align 4, !tbaa !9
  %578 = icmp eq i32 %577, 1
  br i1 %578, label %579, label %580

579:                                              ; preds = %576
  store i32 0, ptr %45, align 4, !tbaa !9
  store i32 0, ptr %46, align 4, !tbaa !9
  br label %580

580:                                              ; preds = %579, %576
  %581 = load i32, ptr %16, align 4, !tbaa !9
  %582 = load i32, ptr %22, align 4, !tbaa !9
  %583 = load i32, ptr %17, align 4, !tbaa !9
  %584 = mul i32 %582, %583
  %585 = add i32 %581, %584
  %586 = load i32, ptr %21, align 4, !tbaa !9
  %587 = add i32 %585, %586
  store i32 %587, ptr %23, align 4, !tbaa !9
  %588 = load i32, ptr %46, align 4, !tbaa !9
  %589 = load ptr, ptr %14, align 8, !tbaa !5
  %590 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %589, i32 0, i32 4
  %591 = load i32, ptr %590, align 1, !tbaa !22
  %592 = mul i32 %588, %591
  store i32 %592, ptr %48, align 4, !tbaa !9
  %593 = load ptr, ptr %11, align 8, !tbaa !5
  %594 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %593, i32 0, i32 6
  %595 = load i32, ptr %594, align 4, !tbaa !16
  %596 = icmp uge i32 %595, 1005
  br i1 %596, label %597, label %993

597:                                              ; preds = %580
  %598 = load i32, ptr %28, align 4, !tbaa !9
  %599 = icmp eq i32 %598, 0
  br i1 %599, label %618, label %600

600:                                              ; preds = %597
  %601 = load i32, ptr %26, align 4, !tbaa !9
  %602 = icmp eq i32 %601, 1
  br i1 %602, label %618, label %603

603:                                              ; preds = %600
  %604 = load i32, ptr %25, align 4, !tbaa !9
  %605 = icmp eq i32 %604, 1
  br i1 %605, label %606, label %609

606:                                              ; preds = %603
  %607 = load i32, ptr %21, align 4, !tbaa !9
  %608 = icmp eq i32 %607, 0
  br i1 %608, label %618, label %609

609:                                              ; preds = %606, %603
  %610 = load i32, ptr %27, align 4, !tbaa !9
  %611 = icmp eq i32 %610, 1
  br i1 %611, label %612, label %992

612:                                              ; preds = %609
  %613 = load i32, ptr %21, align 4, !tbaa !9
  %614 = icmp eq i32 %613, 0
  br i1 %614, label %615, label %992

615:                                              ; preds = %612
  %616 = load i32, ptr %22, align 4, !tbaa !9
  %617 = icmp eq i32 %616, 0
  br i1 %617, label %618, label %992

618:                                              ; preds = %615, %606, %600, %597
  %619 = load ptr, ptr %14, align 8, !tbaa !5
  %620 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %619, i32 noundef 1)
  %621 = icmp eq i32 2, %620
  br i1 %621, label %622, label %688

622:                                              ; preds = %618
  %623 = load ptr, ptr %11, align 8, !tbaa !5
  %624 = load i32, ptr %44, align 4, !tbaa !9
  %625 = load ptr, ptr %12, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %625, i32 0, i32 2
  %627 = load i32, ptr %626, align 4, !tbaa !23
  %628 = load i32, ptr %45, align 4, !tbaa !9
  %629 = load i32, ptr %43, align 4, !tbaa !9
  %630 = mul i32 %628, %629
  %631 = load i32, ptr %48, align 4, !tbaa !9
  %632 = add i32 %630, %631
  %633 = load ptr, ptr %13, align 8, !tbaa !5
  %634 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %633, i32 0, i32 3
  %635 = load i32, ptr %634, align 4, !tbaa !14
  %636 = mul i32 %632, %635
  %637 = load ptr, ptr %11, align 8, !tbaa !5
  %638 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %637, i32 0, i32 6
  %639 = load i32, ptr %638, align 4, !tbaa !16
  %640 = icmp uge i32 %639, 1101
  %641 = zext i1 %640 to i64
  %642 = select i1 %640, i32 121, i32 120
  %643 = trunc i32 %642 to i8
  %644 = load ptr, ptr %13, align 8, !tbaa !5
  %645 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %644, i32 0, i32 29
  %646 = load i32, ptr %645, align 4, !tbaa !25
  %647 = load i32, ptr %19, align 4, !tbaa !9
  %648 = icmp eq i32 %647, 1
  br i1 %648, label %649, label %658

649:                                              ; preds = %622
  %650 = load i32, ptr %45, align 4, !tbaa !9
  %651 = load i32, ptr %17, align 4, !tbaa !9
  %652 = sub i32 %651, 1
  %653 = icmp eq i32 %650, %652
  br i1 %653, label %654, label %658

654:                                              ; preds = %649
  %655 = load i32, ptr %44, align 4, !tbaa !9
  %656 = load i32, ptr %29, align 4, !tbaa !9
  %657 = icmp ne i32 %655, %656
  br label %658

658:                                              ; preds = %654, %649, %622
  %659 = phi i1 [ false, %649 ], [ false, %622 ], [ %657, %654 ]
  %660 = zext i1 %659 to i64
  %661 = select i1 %659, i32 1, i32 0
  %662 = load i32, ptr %19, align 4, !tbaa !9
  %663 = icmp eq i32 %662, 1
  br i1 %663, label %664, label %675

664:                                              ; preds = %658
  %665 = load i32, ptr %45, align 4, !tbaa !9
  %666 = load i32, ptr %17, align 4, !tbaa !9
  %667 = sub i32 %666, 1
  %668 = icmp eq i32 %665, %667
  br i1 %668, label %669, label %675

669:                                              ; preds = %664
  %670 = load i32, ptr %44, align 4, !tbaa !9
  %671 = load i32, ptr %29, align 4, !tbaa !9
  %672 = icmp ne i32 %670, %671
  br i1 %672, label %673, label %675

673:                                              ; preds = %669
  %674 = load i32, ptr %47, align 4, !tbaa !9
  br label %676

675:                                              ; preds = %669, %664, %658
  br label %676

676:                                              ; preds = %675, %673
  %677 = phi i32 [ %674, %673 ], [ 0, %675 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %623, i32 noundef %624, i32 noundef %627, i32 noundef 127, i32 noundef 0, i32 noundef %636, i8 noundef signext %643, i32 noundef %646, i32 noundef %661, i32 noundef %677, i32 noundef 0)
  %678 = load ptr, ptr %11, align 8, !tbaa !5
  %679 = load ptr, ptr %13, align 8, !tbaa !5
  %680 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %679, i32 0, i32 128
  %681 = load i8, ptr %680, align 4, !tbaa !30
  %682 = load ptr, ptr %13, align 8, !tbaa !5
  %683 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %682, i32 0, i32 29
  %684 = load i32, ptr %683, align 4, !tbaa !25
  %685 = load ptr, ptr %13, align 8, !tbaa !5
  %686 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %685, i32 0, i32 29
  %687 = load i32, ptr %686, align 4, !tbaa !25
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %678, i8 noundef signext %681, i32 noundef %684, i32 noundef %687)
  br label %991

688:                                              ; preds = %618
  %689 = load ptr, ptr %14, align 8, !tbaa !5
  %690 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %689, i32 noundef 1)
  %691 = icmp eq i32 3, %690
  br i1 %691, label %692, label %758

692:                                              ; preds = %688
  %693 = load ptr, ptr %11, align 8, !tbaa !5
  %694 = load i32, ptr %44, align 4, !tbaa !9
  %695 = load ptr, ptr %12, align 8, !tbaa !5
  %696 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %695, i32 0, i32 2
  %697 = load i32, ptr %696, align 4, !tbaa !23
  %698 = load i32, ptr %45, align 4, !tbaa !9
  %699 = load i32, ptr %43, align 4, !tbaa !9
  %700 = mul i32 %698, %699
  %701 = load i32, ptr %48, align 4, !tbaa !9
  %702 = add i32 %700, %701
  %703 = load ptr, ptr %13, align 8, !tbaa !5
  %704 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %703, i32 0, i32 3
  %705 = load i32, ptr %704, align 4, !tbaa !14
  %706 = mul i32 %702, %705
  %707 = load ptr, ptr %11, align 8, !tbaa !5
  %708 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %707, i32 0, i32 6
  %709 = load i32, ptr %708, align 4, !tbaa !16
  %710 = icmp uge i32 %709, 1101
  %711 = zext i1 %710 to i64
  %712 = select i1 %710, i32 121, i32 120
  %713 = trunc i32 %712 to i8
  %714 = load ptr, ptr %13, align 8, !tbaa !5
  %715 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %714, i32 0, i32 29
  %716 = load i32, ptr %715, align 4, !tbaa !25
  %717 = load i32, ptr %19, align 4, !tbaa !9
  %718 = icmp eq i32 %717, 1
  br i1 %718, label %719, label %728

719:                                              ; preds = %692
  %720 = load i32, ptr %45, align 4, !tbaa !9
  %721 = load i32, ptr %17, align 4, !tbaa !9
  %722 = sub i32 %721, 1
  %723 = icmp eq i32 %720, %722
  br i1 %723, label %724, label %728

724:                                              ; preds = %719
  %725 = load i32, ptr %44, align 4, !tbaa !9
  %726 = load i32, ptr %29, align 4, !tbaa !9
  %727 = icmp ne i32 %725, %726
  br label %728

728:                                              ; preds = %724, %719, %692
  %729 = phi i1 [ false, %719 ], [ false, %692 ], [ %727, %724 ]
  %730 = zext i1 %729 to i64
  %731 = select i1 %729, i32 1, i32 0
  %732 = load i32, ptr %19, align 4, !tbaa !9
  %733 = icmp eq i32 %732, 1
  br i1 %733, label %734, label %745

734:                                              ; preds = %728
  %735 = load i32, ptr %45, align 4, !tbaa !9
  %736 = load i32, ptr %17, align 4, !tbaa !9
  %737 = sub i32 %736, 1
  %738 = icmp eq i32 %735, %737
  br i1 %738, label %739, label %745

739:                                              ; preds = %734
  %740 = load i32, ptr %44, align 4, !tbaa !9
  %741 = load i32, ptr %29, align 4, !tbaa !9
  %742 = icmp ne i32 %740, %741
  br i1 %742, label %743, label %745

743:                                              ; preds = %739
  %744 = load i32, ptr %47, align 4, !tbaa !9
  br label %746

745:                                              ; preds = %739, %734, %728
  br label %746

746:                                              ; preds = %745, %743
  %747 = phi i32 [ %744, %743 ], [ 0, %745 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %693, i32 noundef %694, i32 noundef %697, i32 noundef 127, i32 noundef 0, i32 noundef %706, i8 noundef signext %713, i32 noundef %716, i32 noundef %731, i32 noundef %747, i32 noundef 0)
  %748 = load ptr, ptr %11, align 8, !tbaa !5
  %749 = load ptr, ptr %13, align 8, !tbaa !5
  %750 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %749, i32 0, i32 128
  %751 = load i8, ptr %750, align 4, !tbaa !30
  %752 = load ptr, ptr %13, align 8, !tbaa !5
  %753 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %752, i32 0, i32 29
  %754 = load i32, ptr %753, align 4, !tbaa !25
  %755 = load ptr, ptr %13, align 8, !tbaa !5
  %756 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %755, i32 0, i32 29
  %757 = load i32, ptr %756, align 4, !tbaa !25
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %748, i32 noundef 537208083, i8 noundef signext %751, i32 noundef %754, i32 noundef %757)
  br label %990

758:                                              ; preds = %688
  %759 = load ptr, ptr %14, align 8, !tbaa !5
  %760 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %759, i32 noundef 1)
  %761 = icmp eq i32 4, %760
  br i1 %761, label %762, label %841

762:                                              ; preds = %758
  %763 = load ptr, ptr %11, align 8, !tbaa !5
  %764 = load ptr, ptr %11, align 8, !tbaa !5
  %765 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %764, i32 0, i32 6
  %766 = load i32, ptr %765, align 4, !tbaa !16
  %767 = icmp ult i32 %766, 1101
  br i1 %767, label %768, label %781

768:                                              ; preds = %762
  %769 = load i32, ptr %19, align 4, !tbaa !9
  %770 = icmp eq i32 %769, 1
  br i1 %770, label %771, label %780

771:                                              ; preds = %768
  %772 = load i32, ptr %45, align 4, !tbaa !9
  %773 = load i32, ptr %17, align 4, !tbaa !9
  %774 = sub i32 %773, 1
  %775 = icmp eq i32 %772, %774
  br i1 %775, label %776, label %780

776:                                              ; preds = %771
  %777 = load i32, ptr %44, align 4, !tbaa !9
  %778 = load i32, ptr %29, align 4, !tbaa !9
  %779 = icmp ne i32 %777, %778
  br i1 %779, label %781, label %780

780:                                              ; preds = %776, %771, %768
  br label %783

781:                                              ; preds = %776, %762
  %782 = load i32, ptr %44, align 4, !tbaa !9
  br label %783

783:                                              ; preds = %781, %780
  %784 = phi i32 [ 545725200, %780 ], [ %782, %781 ]
  %785 = load ptr, ptr %12, align 8, !tbaa !5
  %786 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %785, i32 0, i32 2
  %787 = load i32, ptr %786, align 4, !tbaa !23
  %788 = load i32, ptr %45, align 4, !tbaa !9
  %789 = load i32, ptr %43, align 4, !tbaa !9
  %790 = mul i32 %788, %789
  %791 = load i32, ptr %48, align 4, !tbaa !9
  %792 = add i32 %790, %791
  %793 = load ptr, ptr %13, align 8, !tbaa !5
  %794 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %793, i32 0, i32 3
  %795 = load i32, ptr %794, align 4, !tbaa !14
  %796 = mul i32 %792, %795
  %797 = load ptr, ptr %13, align 8, !tbaa !5
  %798 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %797, i32 0, i32 29
  %799 = load i32, ptr %798, align 4, !tbaa !25
  %800 = load i32, ptr %19, align 4, !tbaa !9
  %801 = icmp eq i32 %800, 1
  br i1 %801, label %802, label %811

802:                                              ; preds = %783
  %803 = load i32, ptr %45, align 4, !tbaa !9
  %804 = load i32, ptr %17, align 4, !tbaa !9
  %805 = sub i32 %804, 1
  %806 = icmp eq i32 %803, %805
  br i1 %806, label %807, label %811

807:                                              ; preds = %802
  %808 = load i32, ptr %44, align 4, !tbaa !9
  %809 = load i32, ptr %29, align 4, !tbaa !9
  %810 = icmp ne i32 %808, %809
  br label %811

811:                                              ; preds = %807, %802, %783
  %812 = phi i1 [ false, %802 ], [ false, %783 ], [ %810, %807 ]
  %813 = zext i1 %812 to i64
  %814 = select i1 %812, i32 1, i32 0
  %815 = load i32, ptr %19, align 4, !tbaa !9
  %816 = icmp eq i32 %815, 1
  br i1 %816, label %817, label %828

817:                                              ; preds = %811
  %818 = load i32, ptr %45, align 4, !tbaa !9
  %819 = load i32, ptr %17, align 4, !tbaa !9
  %820 = sub i32 %819, 1
  %821 = icmp eq i32 %818, %820
  br i1 %821, label %822, label %828

822:                                              ; preds = %817
  %823 = load i32, ptr %44, align 4, !tbaa !9
  %824 = load i32, ptr %29, align 4, !tbaa !9
  %825 = icmp ne i32 %823, %824
  br i1 %825, label %826, label %828

826:                                              ; preds = %822
  %827 = load i32, ptr %47, align 4, !tbaa !9
  br label %829

828:                                              ; preds = %822, %817, %811
  br label %829

829:                                              ; preds = %828, %826
  %830 = phi i32 [ %827, %826 ], [ 0, %828 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %763, i32 noundef %784, i32 noundef %787, i32 noundef 127, i32 noundef 0, i32 noundef %796, i8 noundef signext 120, i32 noundef %799, i32 noundef %814, i32 noundef %830, i32 noundef 0)
  %831 = load ptr, ptr %11, align 8, !tbaa !5
  %832 = load ptr, ptr %13, align 8, !tbaa !5
  %833 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %832, i32 0, i32 128
  %834 = load i8, ptr %833, align 4, !tbaa !30
  %835 = load ptr, ptr %13, align 8, !tbaa !5
  %836 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %835, i32 0, i32 29
  %837 = load i32, ptr %836, align 4, !tbaa !25
  %838 = load ptr, ptr %13, align 8, !tbaa !5
  %839 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %838, i32 0, i32 29
  %840 = load i32, ptr %839, align 4, !tbaa !25
  call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %831, i8 noundef signext %834, i32 noundef %837, i32 noundef %840)
  br label %989

841:                                              ; preds = %758
  %842 = load ptr, ptr %14, align 8, !tbaa !5
  %843 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %842, i32 noundef 1)
  %844 = icmp eq i32 5, %843
  br i1 %844, label %845, label %936

845:                                              ; preds = %841
  %846 = load ptr, ptr %11, align 8, !tbaa !5
  %847 = load ptr, ptr %11, align 8, !tbaa !5
  %848 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %847, i32 0, i32 6
  %849 = load i32, ptr %848, align 4, !tbaa !16
  %850 = icmp ult i32 %849, 1101
  br i1 %850, label %851, label %864

851:                                              ; preds = %845
  %852 = load i32, ptr %19, align 4, !tbaa !9
  %853 = icmp eq i32 %852, 1
  br i1 %853, label %854, label %863

854:                                              ; preds = %851
  %855 = load i32, ptr %45, align 4, !tbaa !9
  %856 = load i32, ptr %17, align 4, !tbaa !9
  %857 = sub i32 %856, 1
  %858 = icmp eq i32 %855, %857
  br i1 %858, label %859, label %863

859:                                              ; preds = %854
  %860 = load i32, ptr %44, align 4, !tbaa !9
  %861 = load i32, ptr %29, align 4, !tbaa !9
  %862 = icmp ne i32 %860, %861
  br i1 %862, label %864, label %863

863:                                              ; preds = %859, %854, %851
  br label %866

864:                                              ; preds = %859, %845
  %865 = load i32, ptr %44, align 4, !tbaa !9
  br label %866

866:                                              ; preds = %864, %863
  %867 = phi i32 [ 545725200, %863 ], [ %865, %864 ]
  %868 = load ptr, ptr %12, align 8, !tbaa !5
  %869 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %868, i32 0, i32 2
  %870 = load i32, ptr %869, align 4, !tbaa !23
  %871 = load i32, ptr %45, align 4, !tbaa !9
  %872 = load i32, ptr %43, align 4, !tbaa !9
  %873 = mul i32 %871, %872
  %874 = load i32, ptr %48, align 4, !tbaa !9
  %875 = add i32 %873, %874
  %876 = load ptr, ptr %13, align 8, !tbaa !5
  %877 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %876, i32 0, i32 3
  %878 = load i32, ptr %877, align 4, !tbaa !14
  %879 = mul i32 %875, %878
  %880 = load ptr, ptr %13, align 8, !tbaa !5
  %881 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %880, i32 0, i32 29
  %882 = load i32, ptr %881, align 4, !tbaa !25
  %883 = load i32, ptr %19, align 4, !tbaa !9
  %884 = icmp eq i32 %883, 1
  br i1 %884, label %885, label %894

885:                                              ; preds = %866
  %886 = load i32, ptr %45, align 4, !tbaa !9
  %887 = load i32, ptr %17, align 4, !tbaa !9
  %888 = sub i32 %887, 1
  %889 = icmp eq i32 %886, %888
  br i1 %889, label %890, label %894

890:                                              ; preds = %885
  %891 = load i32, ptr %44, align 4, !tbaa !9
  %892 = load i32, ptr %29, align 4, !tbaa !9
  %893 = icmp ne i32 %891, %892
  br label %894

894:                                              ; preds = %890, %885, %866
  %895 = phi i1 [ false, %885 ], [ false, %866 ], [ %893, %890 ]
  %896 = zext i1 %895 to i64
  %897 = select i1 %895, i32 1, i32 0
  %898 = load i32, ptr %19, align 4, !tbaa !9
  %899 = icmp eq i32 %898, 1
  br i1 %899, label %900, label %911

900:                                              ; preds = %894
  %901 = load i32, ptr %45, align 4, !tbaa !9
  %902 = load i32, ptr %17, align 4, !tbaa !9
  %903 = sub i32 %902, 1
  %904 = icmp eq i32 %901, %903
  br i1 %904, label %905, label %911

905:                                              ; preds = %900
  %906 = load i32, ptr %44, align 4, !tbaa !9
  %907 = load i32, ptr %29, align 4, !tbaa !9
  %908 = icmp ne i32 %906, %907
  br i1 %908, label %909, label %911

909:                                              ; preds = %905
  %910 = load i32, ptr %47, align 4, !tbaa !9
  br label %912

911:                                              ; preds = %905, %900, %894
  br label %912

912:                                              ; preds = %911, %909
  %913 = phi i32 [ %910, %909 ], [ 0, %911 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %846, i32 noundef %867, i32 noundef %870, i32 noundef 127, i32 noundef 0, i32 noundef %879, i8 noundef signext 120, i32 noundef %882, i32 noundef %897, i32 noundef %913, i32 noundef 0)
  %914 = load ptr, ptr %11, align 8, !tbaa !5
  %915 = load ptr, ptr %13, align 8, !tbaa !5
  %916 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %915, i32 0, i32 128
  %917 = load i8, ptr %916, align 4, !tbaa !30
  %918 = load ptr, ptr %13, align 8, !tbaa !5
  %919 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %918, i32 0, i32 29
  %920 = load i32, ptr %919, align 4, !tbaa !25
  %921 = load ptr, ptr %13, align 8, !tbaa !5
  %922 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %921, i32 0, i32 29
  %923 = load i32, ptr %922, align 4, !tbaa !25
  %924 = load ptr, ptr %13, align 8, !tbaa !5
  %925 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %924, i32 0, i32 24
  %926 = load i32, ptr %925, align 4, !tbaa !31
  %927 = load ptr, ptr %13, align 8, !tbaa !5
  %928 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %927, i32 0, i32 25
  %929 = load i32, ptr %928, align 4, !tbaa !32
  %930 = load ptr, ptr %13, align 8, !tbaa !5
  %931 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %930, i32 0, i32 21
  %932 = load i32, ptr %931, align 4, !tbaa !33
  %933 = load ptr, ptr %13, align 8, !tbaa !5
  %934 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %933, i32 0, i32 22
  %935 = load i32, ptr %934, align 4, !tbaa !34
  call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %914, i8 noundef signext %917, i32 noundef %920, i32 noundef %923, i32 noundef %926, i32 noundef %929, i32 noundef %932, i32 noundef %935)
  br label %988

936:                                              ; preds = %841
  %937 = load ptr, ptr %11, align 8, !tbaa !5
  %938 = load i32, ptr %44, align 4, !tbaa !9
  %939 = load ptr, ptr %12, align 8, !tbaa !5
  %940 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %939, i32 0, i32 2
  %941 = load i32, ptr %940, align 4, !tbaa !23
  %942 = load i32, ptr %45, align 4, !tbaa !9
  %943 = load i32, ptr %43, align 4, !tbaa !9
  %944 = mul i32 %942, %943
  %945 = load i32, ptr %48, align 4, !tbaa !9
  %946 = add i32 %944, %945
  %947 = load ptr, ptr %13, align 8, !tbaa !5
  %948 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %947, i32 0, i32 3
  %949 = load i32, ptr %948, align 4, !tbaa !14
  %950 = mul i32 %946, %949
  %951 = load ptr, ptr %13, align 8, !tbaa !5
  %952 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %951, i32 0, i32 128
  %953 = load i8, ptr %952, align 4, !tbaa !30
  %954 = load ptr, ptr %13, align 8, !tbaa !5
  %955 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %954, i32 0, i32 29
  %956 = load i32, ptr %955, align 4, !tbaa !25
  %957 = load i32, ptr %19, align 4, !tbaa !9
  %958 = icmp eq i32 %957, 1
  br i1 %958, label %959, label %968

959:                                              ; preds = %936
  %960 = load i32, ptr %45, align 4, !tbaa !9
  %961 = load i32, ptr %17, align 4, !tbaa !9
  %962 = sub i32 %961, 1
  %963 = icmp eq i32 %960, %962
  br i1 %963, label %964, label %968

964:                                              ; preds = %959
  %965 = load i32, ptr %44, align 4, !tbaa !9
  %966 = load i32, ptr %29, align 4, !tbaa !9
  %967 = icmp ne i32 %965, %966
  br label %968

968:                                              ; preds = %964, %959, %936
  %969 = phi i1 [ false, %959 ], [ false, %936 ], [ %967, %964 ]
  %970 = zext i1 %969 to i64
  %971 = select i1 %969, i32 1, i32 0
  %972 = load i32, ptr %19, align 4, !tbaa !9
  %973 = icmp eq i32 %972, 1
  br i1 %973, label %974, label %985

974:                                              ; preds = %968
  %975 = load i32, ptr %45, align 4, !tbaa !9
  %976 = load i32, ptr %17, align 4, !tbaa !9
  %977 = sub i32 %976, 1
  %978 = icmp eq i32 %975, %977
  br i1 %978, label %979, label %985

979:                                              ; preds = %974
  %980 = load i32, ptr %44, align 4, !tbaa !9
  %981 = load i32, ptr %29, align 4, !tbaa !9
  %982 = icmp ne i32 %980, %981
  br i1 %982, label %983, label %985

983:                                              ; preds = %979
  %984 = load i32, ptr %47, align 4, !tbaa !9
  br label %986

985:                                              ; preds = %979, %974, %968
  br label %986

986:                                              ; preds = %985, %983
  %987 = phi i32 [ %984, %983 ], [ 0, %985 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %937, i32 noundef %938, i32 noundef %941, i32 noundef 127, i32 noundef 0, i32 noundef %950, i8 noundef signext %953, i32 noundef %956, i32 noundef %971, i32 noundef %987, i32 noundef 0)
  br label %988

988:                                              ; preds = %986, %912
  br label %989

989:                                              ; preds = %988, %829
  br label %990

990:                                              ; preds = %989, %746
  br label %991

991:                                              ; preds = %990, %676
  br label %992

992:                                              ; preds = %991, %615, %612, %609
  br label %1234

993:                                              ; preds = %580
  %994 = load i32, ptr %28, align 4, !tbaa !9
  %995 = icmp eq i32 %994, 0
  br i1 %995, label %999, label %996

996:                                              ; preds = %993
  %997 = load i32, ptr %26, align 4, !tbaa !9
  %998 = icmp eq i32 %997, 1
  br i1 %998, label %999, label %1103

999:                                              ; preds = %996, %993
  %1000 = load ptr, ptr %14, align 8, !tbaa !5
  %1001 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1000, i32 noundef 1)
  %1002 = icmp eq i32 2, %1001
  br i1 %1002, label %1003, label %1056

1003:                                             ; preds = %999
  %1004 = load ptr, ptr %11, align 8, !tbaa !5
  %1005 = load ptr, ptr %13, align 8, !tbaa !5
  %1006 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1005, i32 0, i32 7
  %1007 = load i32, ptr %1006, align 4, !tbaa !29
  %1008 = load ptr, ptr %12, align 8, !tbaa !5
  %1009 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1008, i32 0, i32 2
  %1010 = load i32, ptr %1009, align 4, !tbaa !23
  %1011 = load i32, ptr %45, align 4, !tbaa !9
  %1012 = load i32, ptr %43, align 4, !tbaa !9
  %1013 = mul i32 %1011, %1012
  %1014 = load i32, ptr %48, align 4, !tbaa !9
  %1015 = add i32 %1013, %1014
  %1016 = load ptr, ptr %13, align 8, !tbaa !5
  %1017 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1016, i32 0, i32 3
  %1018 = load i32, ptr %1017, align 4, !tbaa !14
  %1019 = mul i32 %1015, %1018
  %1020 = load ptr, ptr %13, align 8, !tbaa !5
  %1021 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1020, i32 0, i32 29
  %1022 = load i32, ptr %1021, align 4, !tbaa !25
  %1023 = load i32, ptr %19, align 4, !tbaa !9
  %1024 = icmp eq i32 %1023, 1
  br i1 %1024, label %1025, label %1030

1025:                                             ; preds = %1003
  %1026 = load i32, ptr %45, align 4, !tbaa !9
  %1027 = load i32, ptr %17, align 4, !tbaa !9
  %1028 = sub i32 %1027, 1
  %1029 = icmp eq i32 %1026, %1028
  br label %1030

1030:                                             ; preds = %1025, %1003
  %1031 = phi i1 [ false, %1003 ], [ %1029, %1025 ]
  %1032 = zext i1 %1031 to i64
  %1033 = select i1 %1031, i32 1, i32 0
  %1034 = load i32, ptr %19, align 4, !tbaa !9
  %1035 = icmp eq i32 %1034, 1
  br i1 %1035, label %1036, label %1043

1036:                                             ; preds = %1030
  %1037 = load i32, ptr %45, align 4, !tbaa !9
  %1038 = load i32, ptr %17, align 4, !tbaa !9
  %1039 = sub i32 %1038, 1
  %1040 = icmp eq i32 %1037, %1039
  br i1 %1040, label %1041, label %1043

1041:                                             ; preds = %1036
  %1042 = load i32, ptr %47, align 4, !tbaa !9
  br label %1044

1043:                                             ; preds = %1036, %1030
  br label %1044

1044:                                             ; preds = %1043, %1041
  %1045 = phi i32 [ %1042, %1041 ], [ 0, %1043 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %1004, i32 noundef %1007, i32 noundef %1010, i32 noundef 127, i32 noundef 0, i32 noundef %1019, i8 noundef signext 120, i32 noundef %1022, i32 noundef %1033, i32 noundef %1045, i32 noundef 0)
  %1046 = load ptr, ptr %11, align 8, !tbaa !5
  %1047 = load ptr, ptr %13, align 8, !tbaa !5
  %1048 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1047, i32 0, i32 128
  %1049 = load i8, ptr %1048, align 4, !tbaa !30
  %1050 = load ptr, ptr %13, align 8, !tbaa !5
  %1051 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1050, i32 0, i32 29
  %1052 = load i32, ptr %1051, align 4, !tbaa !25
  %1053 = load ptr, ptr %13, align 8, !tbaa !5
  %1054 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1053, i32 0, i32 29
  %1055 = load i32, ptr %1054, align 4, !tbaa !25
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %1046, i8 noundef signext %1049, i32 noundef %1052, i32 noundef %1055)
  br label %1102

1056:                                             ; preds = %999
  %1057 = load ptr, ptr %11, align 8, !tbaa !5
  %1058 = load ptr, ptr %13, align 8, !tbaa !5
  %1059 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1058, i32 0, i32 7
  %1060 = load i32, ptr %1059, align 4, !tbaa !29
  %1061 = load ptr, ptr %12, align 8, !tbaa !5
  %1062 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1061, i32 0, i32 2
  %1063 = load i32, ptr %1062, align 4, !tbaa !23
  %1064 = load i32, ptr %45, align 4, !tbaa !9
  %1065 = load i32, ptr %43, align 4, !tbaa !9
  %1066 = mul i32 %1064, %1065
  %1067 = load i32, ptr %48, align 4, !tbaa !9
  %1068 = add i32 %1066, %1067
  %1069 = load ptr, ptr %13, align 8, !tbaa !5
  %1070 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1069, i32 0, i32 3
  %1071 = load i32, ptr %1070, align 4, !tbaa !14
  %1072 = mul i32 %1068, %1071
  %1073 = load ptr, ptr %13, align 8, !tbaa !5
  %1074 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1073, i32 0, i32 128
  %1075 = load i8, ptr %1074, align 4, !tbaa !30
  %1076 = load ptr, ptr %13, align 8, !tbaa !5
  %1077 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1076, i32 0, i32 29
  %1078 = load i32, ptr %1077, align 4, !tbaa !25
  %1079 = load i32, ptr %19, align 4, !tbaa !9
  %1080 = icmp eq i32 %1079, 1
  br i1 %1080, label %1081, label %1086

1081:                                             ; preds = %1056
  %1082 = load i32, ptr %45, align 4, !tbaa !9
  %1083 = load i32, ptr %17, align 4, !tbaa !9
  %1084 = sub i32 %1083, 1
  %1085 = icmp eq i32 %1082, %1084
  br label %1086

1086:                                             ; preds = %1081, %1056
  %1087 = phi i1 [ false, %1056 ], [ %1085, %1081 ]
  %1088 = zext i1 %1087 to i64
  %1089 = select i1 %1087, i32 1, i32 0
  %1090 = load i32, ptr %19, align 4, !tbaa !9
  %1091 = icmp eq i32 %1090, 1
  br i1 %1091, label %1092, label %1099

1092:                                             ; preds = %1086
  %1093 = load i32, ptr %45, align 4, !tbaa !9
  %1094 = load i32, ptr %17, align 4, !tbaa !9
  %1095 = sub i32 %1094, 1
  %1096 = icmp eq i32 %1093, %1095
  br i1 %1096, label %1097, label %1099

1097:                                             ; preds = %1092
  %1098 = load i32, ptr %47, align 4, !tbaa !9
  br label %1100

1099:                                             ; preds = %1092, %1086
  br label %1100

1100:                                             ; preds = %1099, %1097
  %1101 = phi i32 [ %1098, %1097 ], [ 0, %1099 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %1057, i32 noundef %1060, i32 noundef %1063, i32 noundef 127, i32 noundef 0, i32 noundef %1072, i8 noundef signext %1075, i32 noundef %1078, i32 noundef %1089, i32 noundef %1101, i32 noundef 0)
  br label %1102

1102:                                             ; preds = %1100, %1044
  br label %1233

1103:                                             ; preds = %996
  %1104 = load i32, ptr %25, align 4, !tbaa !9
  %1105 = icmp eq i32 %1104, 1
  br i1 %1105, label %1106, label %1109

1106:                                             ; preds = %1103
  %1107 = load i32, ptr %21, align 4, !tbaa !9
  %1108 = icmp eq i32 %1107, 0
  br i1 %1108, label %1118, label %1109

1109:                                             ; preds = %1106, %1103
  %1110 = load i32, ptr %27, align 4, !tbaa !9
  %1111 = icmp eq i32 %1110, 1
  br i1 %1111, label %1112, label %1232

1112:                                             ; preds = %1109
  %1113 = load i32, ptr %21, align 4, !tbaa !9
  %1114 = icmp eq i32 %1113, 0
  br i1 %1114, label %1115, label %1232

1115:                                             ; preds = %1112
  %1116 = load i32, ptr %22, align 4, !tbaa !9
  %1117 = icmp eq i32 %1116, 0
  br i1 %1117, label %1118, label %1232

1118:                                             ; preds = %1115, %1106
  %1119 = load ptr, ptr %14, align 8, !tbaa !5
  %1120 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1119, i32 noundef 1)
  %1121 = icmp eq i32 0, %1120
  br i1 %1121, label %1122, label %1152

1122:                                             ; preds = %1118
  %1123 = load ptr, ptr %11, align 8, !tbaa !5
  %1124 = load ptr, ptr %12, align 8, !tbaa !5
  %1125 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1124, i32 0, i32 2
  %1126 = load i32, ptr %1125, align 4, !tbaa !23
  %1127 = load i32, ptr %45, align 4, !tbaa !9
  %1128 = load i32, ptr %43, align 4, !tbaa !9
  %1129 = mul i32 %1127, %1128
  %1130 = load i32, ptr %48, align 4, !tbaa !9
  %1131 = add i32 %1129, %1130
  %1132 = load ptr, ptr %13, align 8, !tbaa !5
  %1133 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1132, i32 0, i32 3
  %1134 = load i32, ptr %1133, align 4, !tbaa !14
  %1135 = mul i32 %1131, %1134
  %1136 = load ptr, ptr %13, align 8, !tbaa !5
  %1137 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1136, i32 0, i32 128
  %1138 = load i8, ptr %1137, align 4, !tbaa !30
  %1139 = load ptr, ptr %13, align 8, !tbaa !5
  %1140 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1139, i32 0, i32 29
  %1141 = load i32, ptr %1140, align 4, !tbaa !25
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %1123, i32 noundef -1610149872, i32 noundef %1126, i32 noundef 127, i32 noundef 0, i32 noundef %1135, i8 noundef signext %1138, i32 noundef %1141, i32 noundef 0, i32 noundef 0, i32 noundef 0)
  %1142 = load ptr, ptr %11, align 8, !tbaa !5
  %1143 = load ptr, ptr %13, align 8, !tbaa !5
  %1144 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1143, i32 0, i32 128
  %1145 = load i8, ptr %1144, align 4, !tbaa !30
  %1146 = load ptr, ptr %13, align 8, !tbaa !5
  %1147 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1146, i32 0, i32 29
  %1148 = load i32, ptr %1147, align 4, !tbaa !25
  %1149 = load ptr, ptr %13, align 8, !tbaa !5
  %1150 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1149, i32 0, i32 29
  %1151 = load i32, ptr %1150, align 4, !tbaa !25
  call void @libxsmm_x86_instruction_vec_compute_2reg_imm8(ptr noundef %1142, i32 noundef -1609756474, i8 noundef signext %1145, i32 noundef %1148, i32 noundef %1151, i32 noundef 0)
  br label %1231

1152:                                             ; preds = %1118
  %1153 = load ptr, ptr %14, align 8, !tbaa !5
  %1154 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1153, i32 noundef 1)
  %1155 = icmp eq i32 1, %1154
  br i1 %1155, label %1156, label %1186

1156:                                             ; preds = %1152
  %1157 = load ptr, ptr %11, align 8, !tbaa !5
  %1158 = load ptr, ptr %12, align 8, !tbaa !5
  %1159 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1158, i32 0, i32 2
  %1160 = load i32, ptr %1159, align 4, !tbaa !23
  %1161 = load i32, ptr %45, align 4, !tbaa !9
  %1162 = load i32, ptr %43, align 4, !tbaa !9
  %1163 = mul i32 %1161, %1162
  %1164 = load i32, ptr %48, align 4, !tbaa !9
  %1165 = add i32 %1163, %1164
  %1166 = load ptr, ptr %13, align 8, !tbaa !5
  %1167 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1166, i32 0, i32 3
  %1168 = load i32, ptr %1167, align 4, !tbaa !14
  %1169 = mul i32 %1165, %1168
  %1170 = load ptr, ptr %13, align 8, !tbaa !5
  %1171 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1170, i32 0, i32 128
  %1172 = load i8, ptr %1171, align 4, !tbaa !30
  %1173 = load ptr, ptr %13, align 8, !tbaa !5
  %1174 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1173, i32 0, i32 29
  %1175 = load i32, ptr %1174, align 4, !tbaa !25
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %1157, i32 noundef -1610215408, i32 noundef %1160, i32 noundef 127, i32 noundef 0, i32 noundef %1169, i8 noundef signext %1172, i32 noundef %1175, i32 noundef 0, i32 noundef 0, i32 noundef 0)
  %1176 = load ptr, ptr %11, align 8, !tbaa !5
  %1177 = load ptr, ptr %13, align 8, !tbaa !5
  %1178 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1177, i32 0, i32 128
  %1179 = load i8, ptr %1178, align 4, !tbaa !30
  %1180 = load ptr, ptr %13, align 8, !tbaa !5
  %1181 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1180, i32 0, i32 29
  %1182 = load i32, ptr %1181, align 4, !tbaa !25
  %1183 = load ptr, ptr %13, align 8, !tbaa !5
  %1184 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1183, i32 0, i32 29
  %1185 = load i32, ptr %1184, align 4, !tbaa !25
  call void @libxsmm_x86_instruction_vec_compute_2reg_imm8(ptr noundef %1176, i32 noundef -1609822010, i8 noundef signext %1179, i32 noundef %1182, i32 noundef %1185, i32 noundef 0)
  br label %1230

1186:                                             ; preds = %1152
  %1187 = load ptr, ptr %11, align 8, !tbaa !5
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %1187, i32 noundef 1)
  %1188 = load ptr, ptr %11, align 8, !tbaa !5
  %1189 = load ptr, ptr %12, align 8, !tbaa !5
  %1190 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1189, i32 0, i32 2
  %1191 = load i32, ptr %1190, align 4, !tbaa !23
  %1192 = load i32, ptr %45, align 4, !tbaa !9
  %1193 = load i32, ptr %43, align 4, !tbaa !9
  %1194 = mul i32 %1192, %1193
  %1195 = load i32, ptr %48, align 4, !tbaa !9
  %1196 = add i32 %1194, %1195
  %1197 = load ptr, ptr %13, align 8, !tbaa !5
  %1198 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1197, i32 0, i32 3
  %1199 = load i32, ptr %1198, align 4, !tbaa !14
  %1200 = mul i32 %1196, %1199
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1188, i32 noundef -1610334069, i32 noundef %1191, i32 noundef 127, i32 noundef 0, i32 noundef %1200, i32 noundef 1, i32 noundef 0)
  %1201 = load ptr, ptr %11, align 8, !tbaa !5
  %1202 = load ptr, ptr %13, align 8, !tbaa !5
  %1203 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1202, i32 0, i32 29
  %1204 = load i32, ptr %1203, align 4, !tbaa !25
  call void @libxsmm_x86_instruction_vec_compute_2reg_imm8(ptr noundef %1201, i32 noundef -1609756476, i8 noundef signext 120, i32 noundef 1, i32 noundef %1204, i32 noundef 0)
  %1205 = load ptr, ptr %11, align 8, !tbaa !5
  %1206 = load ptr, ptr %13, align 8, !tbaa !5
  %1207 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1206, i32 0, i32 29
  %1208 = load i32, ptr %1207, align 4, !tbaa !25
  call void @libxsmm_x86_instruction_vec_compute_2reg_imm8(ptr noundef %1205, i32 noundef -1609756476, i8 noundef signext 120, i32 noundef 1, i32 noundef %1208, i32 noundef 1)
  %1209 = load ptr, ptr %11, align 8, !tbaa !5
  %1210 = load ptr, ptr %13, align 8, !tbaa !5
  %1211 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1210, i32 0, i32 128
  %1212 = load i8, ptr %1211, align 4, !tbaa !30
  %1213 = load ptr, ptr %13, align 8, !tbaa !5
  %1214 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1213, i32 0, i32 29
  %1215 = load i32, ptr %1214, align 4, !tbaa !25
  %1216 = load ptr, ptr %13, align 8, !tbaa !5
  %1217 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1216, i32 0, i32 29
  %1218 = load i32, ptr %1217, align 4, !tbaa !25
  call void @libxsmm_x86_instruction_vec_compute_2reg_imm8(ptr noundef %1209, i32 noundef -1609822010, i8 noundef signext %1212, i32 noundef %1215, i32 noundef %1218, i32 noundef 0)
  %1219 = load ptr, ptr %11, align 8, !tbaa !5
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %1219, i32 noundef 1)
  %1220 = load ptr, ptr %11, align 8, !tbaa !5
  %1221 = load ptr, ptr %13, align 8, !tbaa !5
  %1222 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1221, i32 0, i32 128
  %1223 = load i8, ptr %1222, align 4, !tbaa !30
  %1224 = load ptr, ptr %13, align 8, !tbaa !5
  %1225 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1224, i32 0, i32 29
  %1226 = load i32, ptr %1225, align 4, !tbaa !25
  %1227 = load ptr, ptr %13, align 8, !tbaa !5
  %1228 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1227, i32 0, i32 29
  %1229 = load i32, ptr %1228, align 4, !tbaa !25
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %1220, i8 noundef signext %1223, i32 noundef %1226, i32 noundef %1229)
  br label %1230

1230:                                             ; preds = %1186, %1156
  br label %1231

1231:                                             ; preds = %1230, %1122
  br label %1232

1232:                                             ; preds = %1231, %1115, %1112, %1109
  br label %1233

1233:                                             ; preds = %1232, %1102
  br label %1234

1234:                                             ; preds = %1233, %992
  %1235 = load ptr, ptr %14, align 8, !tbaa !5
  %1236 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1235, i32 0, i32 10
  %1237 = load i16, ptr %1236, align 1, !tbaa !20
  %1238 = zext i16 %1237 to i32
  %1239 = icmp eq i32 %1238, 5
  br i1 %1239, label %1240, label %1761

1240:                                             ; preds = %1234
  %1241 = load ptr, ptr %11, align 8, !tbaa !5
  %1242 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1241, i32 0, i32 6
  %1243 = load i32, ptr %1242, align 4, !tbaa !16
  %1244 = icmp uge i32 %1243, 1006
  br i1 %1244, label %1245, label %1620

1245:                                             ; preds = %1240
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #3
  %1246 = load ptr, ptr %13, align 8, !tbaa !5
  %1247 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1246, i32 0, i32 9
  %1248 = load i32, ptr %1247, align 4, !tbaa !35
  store i32 %1248, ptr %49, align 4, !tbaa !9
  %1249 = load i32, ptr %49, align 4, !tbaa !9
  %1250 = icmp eq i32 %1249, 537138731
  br i1 %1250, label %1251, label %1252

1251:                                             ; preds = %1245
  br label %1254

1252:                                             ; preds = %1245
  %1253 = load i32, ptr %49, align 4, !tbaa !9
  br label %1254

1254:                                             ; preds = %1252, %1251
  %1255 = phi i32 [ 537138704, %1251 ], [ %1253, %1252 ]
  store i32 %1255, ptr %49, align 4, !tbaa !9
  %1256 = load i32, ptr %49, align 4, !tbaa !9
  %1257 = icmp eq i32 %1256, 545592875
  br i1 %1257, label %1258, label %1259

1258:                                             ; preds = %1254
  br label %1261

1259:                                             ; preds = %1254
  %1260 = load i32, ptr %49, align 4, !tbaa !9
  br label %1261

1261:                                             ; preds = %1259, %1258
  %1262 = phi i32 [ 545592848, %1258 ], [ %1260, %1259 ]
  store i32 %1262, ptr %49, align 4, !tbaa !9
  %1263 = load ptr, ptr %14, align 8, !tbaa !5
  %1264 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1263, i32 noundef 3)
  %1265 = icmp eq i32 2, %1264
  br i1 %1265, label %1266, label %1328

1266:                                             ; preds = %1261
  %1267 = load ptr, ptr %11, align 8, !tbaa !5
  %1268 = load i32, ptr %49, align 4, !tbaa !9
  %1269 = load ptr, ptr %12, align 8, !tbaa !5
  %1270 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1269, i32 0, i32 6
  %1271 = load i32, ptr %1270, align 4, !tbaa !36
  %1272 = load i32, ptr %21, align 4, !tbaa !9
  %1273 = load i32, ptr %43, align 4, !tbaa !9
  %1274 = mul i32 %1272, %1273
  %1275 = load i32, ptr %22, align 4, !tbaa !9
  %1276 = load ptr, ptr %14, align 8, !tbaa !5
  %1277 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1276, i32 0, i32 3
  %1278 = load i32, ptr %1277, align 1, !tbaa !37
  %1279 = mul i32 %1275, %1278
  %1280 = add i32 %1274, %1279
  %1281 = load ptr, ptr %13, align 8, !tbaa !5
  %1282 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1281, i32 0, i32 5
  %1283 = load i32, ptr %1282, align 4, !tbaa !38
  %1284 = mul i32 %1280, %1283
  %1285 = load ptr, ptr %11, align 8, !tbaa !5
  %1286 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1285, i32 0, i32 6
  %1287 = load i32, ptr %1286, align 4, !tbaa !16
  %1288 = icmp uge i32 %1287, 1101
  %1289 = zext i1 %1288 to i64
  %1290 = select i1 %1288, i32 121, i32 120
  %1291 = trunc i32 %1290 to i8
  %1292 = load ptr, ptr %13, align 8, !tbaa !5
  %1293 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1292, i32 0, i32 30
  %1294 = load i32, ptr %1293, align 4, !tbaa !39
  %1295 = load i32, ptr %19, align 4, !tbaa !9
  %1296 = icmp eq i32 %1295, 1
  br i1 %1296, label %1297, label %1302

1297:                                             ; preds = %1266
  %1298 = load i32, ptr %21, align 4, !tbaa !9
  %1299 = load i32, ptr %17, align 4, !tbaa !9
  %1300 = sub i32 %1299, 1
  %1301 = icmp eq i32 %1298, %1300
  br label %1302

1302:                                             ; preds = %1297, %1266
  %1303 = phi i1 [ false, %1266 ], [ %1301, %1297 ]
  %1304 = zext i1 %1303 to i64
  %1305 = select i1 %1303, i32 1, i32 0
  %1306 = load i32, ptr %19, align 4, !tbaa !9
  %1307 = icmp eq i32 %1306, 1
  br i1 %1307, label %1308, label %1315

1308:                                             ; preds = %1302
  %1309 = load i32, ptr %21, align 4, !tbaa !9
  %1310 = load i32, ptr %17, align 4, !tbaa !9
  %1311 = sub i32 %1310, 1
  %1312 = icmp eq i32 %1309, %1311
  br i1 %1312, label %1313, label %1315

1313:                                             ; preds = %1308
  %1314 = load i32, ptr %30, align 4, !tbaa !9
  br label %1316

1315:                                             ; preds = %1308, %1302
  br label %1316

1316:                                             ; preds = %1315, %1313
  %1317 = phi i32 [ %1314, %1313 ], [ 0, %1315 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %1267, i32 noundef %1268, i32 noundef %1271, i32 noundef 127, i32 noundef 0, i32 noundef %1284, i8 noundef signext %1291, i32 noundef %1294, i32 noundef %1305, i32 noundef %1317, i32 noundef 0)
  %1318 = load ptr, ptr %11, align 8, !tbaa !5
  %1319 = load ptr, ptr %13, align 8, !tbaa !5
  %1320 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1319, i32 0, i32 128
  %1321 = load i8, ptr %1320, align 4, !tbaa !30
  %1322 = load ptr, ptr %13, align 8, !tbaa !5
  %1323 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1322, i32 0, i32 30
  %1324 = load i32, ptr %1323, align 4, !tbaa !39
  %1325 = load ptr, ptr %13, align 8, !tbaa !5
  %1326 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1325, i32 0, i32 30
  %1327 = load i32, ptr %1326, align 4, !tbaa !39
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %1318, i8 noundef signext %1321, i32 noundef %1324, i32 noundef %1327)
  br label %1607

1328:                                             ; preds = %1261
  %1329 = load ptr, ptr %14, align 8, !tbaa !5
  %1330 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1329, i32 noundef 3)
  %1331 = icmp eq i32 3, %1330
  br i1 %1331, label %1332, label %1394

1332:                                             ; preds = %1328
  %1333 = load ptr, ptr %11, align 8, !tbaa !5
  %1334 = load i32, ptr %49, align 4, !tbaa !9
  %1335 = load ptr, ptr %12, align 8, !tbaa !5
  %1336 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1335, i32 0, i32 6
  %1337 = load i32, ptr %1336, align 4, !tbaa !36
  %1338 = load i32, ptr %21, align 4, !tbaa !9
  %1339 = load i32, ptr %43, align 4, !tbaa !9
  %1340 = mul i32 %1338, %1339
  %1341 = load i32, ptr %22, align 4, !tbaa !9
  %1342 = load ptr, ptr %14, align 8, !tbaa !5
  %1343 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1342, i32 0, i32 3
  %1344 = load i32, ptr %1343, align 1, !tbaa !37
  %1345 = mul i32 %1341, %1344
  %1346 = add i32 %1340, %1345
  %1347 = load ptr, ptr %13, align 8, !tbaa !5
  %1348 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1347, i32 0, i32 5
  %1349 = load i32, ptr %1348, align 4, !tbaa !38
  %1350 = mul i32 %1346, %1349
  %1351 = load ptr, ptr %11, align 8, !tbaa !5
  %1352 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1351, i32 0, i32 6
  %1353 = load i32, ptr %1352, align 4, !tbaa !16
  %1354 = icmp uge i32 %1353, 1101
  %1355 = zext i1 %1354 to i64
  %1356 = select i1 %1354, i32 121, i32 120
  %1357 = trunc i32 %1356 to i8
  %1358 = load ptr, ptr %13, align 8, !tbaa !5
  %1359 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1358, i32 0, i32 30
  %1360 = load i32, ptr %1359, align 4, !tbaa !39
  %1361 = load i32, ptr %19, align 4, !tbaa !9
  %1362 = icmp eq i32 %1361, 1
  br i1 %1362, label %1363, label %1368

1363:                                             ; preds = %1332
  %1364 = load i32, ptr %21, align 4, !tbaa !9
  %1365 = load i32, ptr %17, align 4, !tbaa !9
  %1366 = sub i32 %1365, 1
  %1367 = icmp eq i32 %1364, %1366
  br label %1368

1368:                                             ; preds = %1363, %1332
  %1369 = phi i1 [ false, %1332 ], [ %1367, %1363 ]
  %1370 = zext i1 %1369 to i64
  %1371 = select i1 %1369, i32 1, i32 0
  %1372 = load i32, ptr %19, align 4, !tbaa !9
  %1373 = icmp eq i32 %1372, 1
  br i1 %1373, label %1374, label %1381

1374:                                             ; preds = %1368
  %1375 = load i32, ptr %21, align 4, !tbaa !9
  %1376 = load i32, ptr %17, align 4, !tbaa !9
  %1377 = sub i32 %1376, 1
  %1378 = icmp eq i32 %1375, %1377
  br i1 %1378, label %1379, label %1381

1379:                                             ; preds = %1374
  %1380 = load i32, ptr %30, align 4, !tbaa !9
  br label %1382

1381:                                             ; preds = %1374, %1368
  br label %1382

1382:                                             ; preds = %1381, %1379
  %1383 = phi i32 [ %1380, %1379 ], [ 0, %1381 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %1333, i32 noundef %1334, i32 noundef %1337, i32 noundef 127, i32 noundef 0, i32 noundef %1350, i8 noundef signext %1357, i32 noundef %1360, i32 noundef %1371, i32 noundef %1383, i32 noundef 0)
  %1384 = load ptr, ptr %11, align 8, !tbaa !5
  %1385 = load ptr, ptr %13, align 8, !tbaa !5
  %1386 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1385, i32 0, i32 128
  %1387 = load i8, ptr %1386, align 4, !tbaa !30
  %1388 = load ptr, ptr %13, align 8, !tbaa !5
  %1389 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1388, i32 0, i32 30
  %1390 = load i32, ptr %1389, align 4, !tbaa !39
  %1391 = load ptr, ptr %13, align 8, !tbaa !5
  %1392 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1391, i32 0, i32 30
  %1393 = load i32, ptr %1392, align 4, !tbaa !39
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %1384, i32 noundef 537208083, i8 noundef signext %1387, i32 noundef %1390, i32 noundef %1393)
  br label %1606

1394:                                             ; preds = %1328
  %1395 = load ptr, ptr %14, align 8, !tbaa !5
  %1396 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1395, i32 noundef 3)
  %1397 = icmp eq i32 4, %1396
  br i1 %1397, label %1398, label %1469

1398:                                             ; preds = %1394
  %1399 = load ptr, ptr %11, align 8, !tbaa !5
  %1400 = load ptr, ptr %11, align 8, !tbaa !5
  %1401 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1400, i32 0, i32 6
  %1402 = load i32, ptr %1401, align 4, !tbaa !16
  %1403 = icmp ult i32 %1402, 1101
  br i1 %1403, label %1404, label %1413

1404:                                             ; preds = %1398
  %1405 = load i32, ptr %19, align 4, !tbaa !9
  %1406 = icmp eq i32 %1405, 1
  br i1 %1406, label %1407, label %1412

1407:                                             ; preds = %1404
  %1408 = load i32, ptr %45, align 4, !tbaa !9
  %1409 = load i32, ptr %17, align 4, !tbaa !9
  %1410 = sub i32 %1409, 1
  %1411 = icmp eq i32 %1408, %1410
  br i1 %1411, label %1413, label %1412

1412:                                             ; preds = %1407, %1404
  br label %1415

1413:                                             ; preds = %1407, %1398
  %1414 = load i32, ptr %49, align 4, !tbaa !9
  br label %1415

1415:                                             ; preds = %1413, %1412
  %1416 = phi i32 [ 545725200, %1412 ], [ %1414, %1413 ]
  %1417 = load ptr, ptr %12, align 8, !tbaa !5
  %1418 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1417, i32 0, i32 6
  %1419 = load i32, ptr %1418, align 4, !tbaa !36
  %1420 = load i32, ptr %21, align 4, !tbaa !9
  %1421 = load i32, ptr %43, align 4, !tbaa !9
  %1422 = mul i32 %1420, %1421
  %1423 = load i32, ptr %22, align 4, !tbaa !9
  %1424 = load ptr, ptr %14, align 8, !tbaa !5
  %1425 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1424, i32 0, i32 3
  %1426 = load i32, ptr %1425, align 1, !tbaa !37
  %1427 = mul i32 %1423, %1426
  %1428 = add i32 %1422, %1427
  %1429 = load ptr, ptr %13, align 8, !tbaa !5
  %1430 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1429, i32 0, i32 5
  %1431 = load i32, ptr %1430, align 4, !tbaa !38
  %1432 = mul i32 %1428, %1431
  %1433 = load ptr, ptr %13, align 8, !tbaa !5
  %1434 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1433, i32 0, i32 30
  %1435 = load i32, ptr %1434, align 4, !tbaa !39
  %1436 = load i32, ptr %19, align 4, !tbaa !9
  %1437 = icmp eq i32 %1436, 1
  br i1 %1437, label %1438, label %1443

1438:                                             ; preds = %1415
  %1439 = load i32, ptr %21, align 4, !tbaa !9
  %1440 = load i32, ptr %17, align 4, !tbaa !9
  %1441 = sub i32 %1440, 1
  %1442 = icmp eq i32 %1439, %1441
  br label %1443

1443:                                             ; preds = %1438, %1415
  %1444 = phi i1 [ false, %1415 ], [ %1442, %1438 ]
  %1445 = zext i1 %1444 to i64
  %1446 = select i1 %1444, i32 1, i32 0
  %1447 = load i32, ptr %19, align 4, !tbaa !9
  %1448 = icmp eq i32 %1447, 1
  br i1 %1448, label %1449, label %1456

1449:                                             ; preds = %1443
  %1450 = load i32, ptr %21, align 4, !tbaa !9
  %1451 = load i32, ptr %17, align 4, !tbaa !9
  %1452 = sub i32 %1451, 1
  %1453 = icmp eq i32 %1450, %1452
  br i1 %1453, label %1454, label %1456

1454:                                             ; preds = %1449
  %1455 = load i32, ptr %30, align 4, !tbaa !9
  br label %1457

1456:                                             ; preds = %1449, %1443
  br label %1457

1457:                                             ; preds = %1456, %1454
  %1458 = phi i32 [ %1455, %1454 ], [ 0, %1456 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %1399, i32 noundef %1416, i32 noundef %1419, i32 noundef 127, i32 noundef 0, i32 noundef %1432, i8 noundef signext 120, i32 noundef %1435, i32 noundef %1446, i32 noundef %1458, i32 noundef 0)
  %1459 = load ptr, ptr %11, align 8, !tbaa !5
  %1460 = load ptr, ptr %13, align 8, !tbaa !5
  %1461 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1460, i32 0, i32 128
  %1462 = load i8, ptr %1461, align 4, !tbaa !30
  %1463 = load ptr, ptr %13, align 8, !tbaa !5
  %1464 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1463, i32 0, i32 30
  %1465 = load i32, ptr %1464, align 4, !tbaa !39
  %1466 = load ptr, ptr %13, align 8, !tbaa !5
  %1467 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1466, i32 0, i32 30
  %1468 = load i32, ptr %1467, align 4, !tbaa !39
  call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %1459, i8 noundef signext %1462, i32 noundef %1465, i32 noundef %1468)
  br label %1605

1469:                                             ; preds = %1394
  %1470 = load ptr, ptr %14, align 8, !tbaa !5
  %1471 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1470, i32 noundef 3)
  %1472 = icmp eq i32 5, %1471
  br i1 %1472, label %1473, label %1556

1473:                                             ; preds = %1469
  %1474 = load ptr, ptr %11, align 8, !tbaa !5
  %1475 = load ptr, ptr %11, align 8, !tbaa !5
  %1476 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1475, i32 0, i32 6
  %1477 = load i32, ptr %1476, align 4, !tbaa !16
  %1478 = icmp ult i32 %1477, 1101
  br i1 %1478, label %1479, label %1488

1479:                                             ; preds = %1473
  %1480 = load i32, ptr %19, align 4, !tbaa !9
  %1481 = icmp eq i32 %1480, 1
  br i1 %1481, label %1482, label %1487

1482:                                             ; preds = %1479
  %1483 = load i32, ptr %45, align 4, !tbaa !9
  %1484 = load i32, ptr %17, align 4, !tbaa !9
  %1485 = sub i32 %1484, 1
  %1486 = icmp eq i32 %1483, %1485
  br i1 %1486, label %1488, label %1487

1487:                                             ; preds = %1482, %1479
  br label %1490

1488:                                             ; preds = %1482, %1473
  %1489 = load i32, ptr %49, align 4, !tbaa !9
  br label %1490

1490:                                             ; preds = %1488, %1487
  %1491 = phi i32 [ 545725200, %1487 ], [ %1489, %1488 ]
  %1492 = load ptr, ptr %12, align 8, !tbaa !5
  %1493 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1492, i32 0, i32 6
  %1494 = load i32, ptr %1493, align 4, !tbaa !36
  %1495 = load i32, ptr %21, align 4, !tbaa !9
  %1496 = load i32, ptr %43, align 4, !tbaa !9
  %1497 = mul i32 %1495, %1496
  %1498 = load i32, ptr %22, align 4, !tbaa !9
  %1499 = load ptr, ptr %14, align 8, !tbaa !5
  %1500 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1499, i32 0, i32 3
  %1501 = load i32, ptr %1500, align 1, !tbaa !37
  %1502 = mul i32 %1498, %1501
  %1503 = add i32 %1497, %1502
  %1504 = load ptr, ptr %13, align 8, !tbaa !5
  %1505 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1504, i32 0, i32 5
  %1506 = load i32, ptr %1505, align 4, !tbaa !38
  %1507 = mul i32 %1503, %1506
  %1508 = load ptr, ptr %13, align 8, !tbaa !5
  %1509 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1508, i32 0, i32 30
  %1510 = load i32, ptr %1509, align 4, !tbaa !39
  %1511 = load i32, ptr %19, align 4, !tbaa !9
  %1512 = icmp eq i32 %1511, 1
  br i1 %1512, label %1513, label %1518

1513:                                             ; preds = %1490
  %1514 = load i32, ptr %21, align 4, !tbaa !9
  %1515 = load i32, ptr %17, align 4, !tbaa !9
  %1516 = sub i32 %1515, 1
  %1517 = icmp eq i32 %1514, %1516
  br label %1518

1518:                                             ; preds = %1513, %1490
  %1519 = phi i1 [ false, %1490 ], [ %1517, %1513 ]
  %1520 = zext i1 %1519 to i64
  %1521 = select i1 %1519, i32 1, i32 0
  %1522 = load i32, ptr %19, align 4, !tbaa !9
  %1523 = icmp eq i32 %1522, 1
  br i1 %1523, label %1524, label %1531

1524:                                             ; preds = %1518
  %1525 = load i32, ptr %21, align 4, !tbaa !9
  %1526 = load i32, ptr %17, align 4, !tbaa !9
  %1527 = sub i32 %1526, 1
  %1528 = icmp eq i32 %1525, %1527
  br i1 %1528, label %1529, label %1531

1529:                                             ; preds = %1524
  %1530 = load i32, ptr %30, align 4, !tbaa !9
  br label %1532

1531:                                             ; preds = %1524, %1518
  br label %1532

1532:                                             ; preds = %1531, %1529
  %1533 = phi i32 [ %1530, %1529 ], [ 0, %1531 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %1474, i32 noundef %1491, i32 noundef %1494, i32 noundef 127, i32 noundef 0, i32 noundef %1507, i8 noundef signext 120, i32 noundef %1510, i32 noundef %1521, i32 noundef %1533, i32 noundef 0)
  %1534 = load ptr, ptr %11, align 8, !tbaa !5
  %1535 = load ptr, ptr %13, align 8, !tbaa !5
  %1536 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1535, i32 0, i32 128
  %1537 = load i8, ptr %1536, align 4, !tbaa !30
  %1538 = load ptr, ptr %13, align 8, !tbaa !5
  %1539 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1538, i32 0, i32 30
  %1540 = load i32, ptr %1539, align 4, !tbaa !39
  %1541 = load ptr, ptr %13, align 8, !tbaa !5
  %1542 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1541, i32 0, i32 30
  %1543 = load i32, ptr %1542, align 4, !tbaa !39
  %1544 = load ptr, ptr %13, align 8, !tbaa !5
  %1545 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1544, i32 0, i32 24
  %1546 = load i32, ptr %1545, align 4, !tbaa !31
  %1547 = load ptr, ptr %13, align 8, !tbaa !5
  %1548 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1547, i32 0, i32 25
  %1549 = load i32, ptr %1548, align 4, !tbaa !32
  %1550 = load ptr, ptr %13, align 8, !tbaa !5
  %1551 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1550, i32 0, i32 21
  %1552 = load i32, ptr %1551, align 4, !tbaa !33
  %1553 = load ptr, ptr %13, align 8, !tbaa !5
  %1554 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1553, i32 0, i32 22
  %1555 = load i32, ptr %1554, align 4, !tbaa !34
  call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %1534, i8 noundef signext %1537, i32 noundef %1540, i32 noundef %1543, i32 noundef %1546, i32 noundef %1549, i32 noundef %1552, i32 noundef %1555)
  br label %1604

1556:                                             ; preds = %1469
  %1557 = load ptr, ptr %11, align 8, !tbaa !5
  %1558 = load i32, ptr %49, align 4, !tbaa !9
  %1559 = load ptr, ptr %12, align 8, !tbaa !5
  %1560 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1559, i32 0, i32 6
  %1561 = load i32, ptr %1560, align 4, !tbaa !36
  %1562 = load i32, ptr %21, align 4, !tbaa !9
  %1563 = load i32, ptr %43, align 4, !tbaa !9
  %1564 = mul i32 %1562, %1563
  %1565 = load i32, ptr %22, align 4, !tbaa !9
  %1566 = load ptr, ptr %14, align 8, !tbaa !5
  %1567 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1566, i32 0, i32 3
  %1568 = load i32, ptr %1567, align 1, !tbaa !37
  %1569 = mul i32 %1565, %1568
  %1570 = add i32 %1564, %1569
  %1571 = load ptr, ptr %13, align 8, !tbaa !5
  %1572 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1571, i32 0, i32 5
  %1573 = load i32, ptr %1572, align 4, !tbaa !38
  %1574 = mul i32 %1570, %1573
  %1575 = load ptr, ptr %13, align 8, !tbaa !5
  %1576 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1575, i32 0, i32 128
  %1577 = load i8, ptr %1576, align 4, !tbaa !30
  %1578 = load ptr, ptr %13, align 8, !tbaa !5
  %1579 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1578, i32 0, i32 30
  %1580 = load i32, ptr %1579, align 4, !tbaa !39
  %1581 = load i32, ptr %19, align 4, !tbaa !9
  %1582 = icmp eq i32 %1581, 1
  br i1 %1582, label %1583, label %1588

1583:                                             ; preds = %1556
  %1584 = load i32, ptr %21, align 4, !tbaa !9
  %1585 = load i32, ptr %17, align 4, !tbaa !9
  %1586 = sub i32 %1585, 1
  %1587 = icmp eq i32 %1584, %1586
  br label %1588

1588:                                             ; preds = %1583, %1556
  %1589 = phi i1 [ false, %1556 ], [ %1587, %1583 ]
  %1590 = zext i1 %1589 to i64
  %1591 = select i1 %1589, i32 1, i32 0
  %1592 = load i32, ptr %19, align 4, !tbaa !9
  %1593 = icmp eq i32 %1592, 1
  br i1 %1593, label %1594, label %1601

1594:                                             ; preds = %1588
  %1595 = load i32, ptr %21, align 4, !tbaa !9
  %1596 = load i32, ptr %17, align 4, !tbaa !9
  %1597 = sub i32 %1596, 1
  %1598 = icmp eq i32 %1595, %1597
  br i1 %1598, label %1599, label %1601

1599:                                             ; preds = %1594
  %1600 = load i32, ptr %30, align 4, !tbaa !9
  br label %1602

1601:                                             ; preds = %1594, %1588
  br label %1602

1602:                                             ; preds = %1601, %1599
  %1603 = phi i32 [ %1600, %1599 ], [ 0, %1601 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %1557, i32 noundef %1558, i32 noundef %1561, i32 noundef 127, i32 noundef 0, i32 noundef %1574, i8 noundef signext %1577, i32 noundef %1580, i32 noundef %1591, i32 noundef %1603, i32 noundef 0)
  br label %1604

1604:                                             ; preds = %1602, %1532
  br label %1605

1605:                                             ; preds = %1604, %1457
  br label %1606

1606:                                             ; preds = %1605, %1382
  br label %1607

1607:                                             ; preds = %1606, %1316
  %1608 = load ptr, ptr %11, align 8, !tbaa !5
  %1609 = load i32, ptr %24, align 4, !tbaa !9
  %1610 = load ptr, ptr %13, align 8, !tbaa !5
  %1611 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1610, i32 0, i32 128
  %1612 = load i8, ptr %1611, align 4, !tbaa !30
  %1613 = load ptr, ptr %13, align 8, !tbaa !5
  %1614 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1613, i32 0, i32 30
  %1615 = load i32, ptr %1614, align 4, !tbaa !39
  %1616 = load ptr, ptr %13, align 8, !tbaa !5
  %1617 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1616, i32 0, i32 29
  %1618 = load i32, ptr %1617, align 4, !tbaa !25
  %1619 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %1608, i32 noundef %1609, i8 noundef signext %1612, i32 noundef %1615, i32 noundef %1618, i32 noundef %1619)
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #3
  br label %1760

1620:                                             ; preds = %1240
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #3
  %1621 = load ptr, ptr %14, align 8, !tbaa !5
  %1622 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1621, i32 noundef 4)
  %1623 = icmp eq i32 0, %1622
  %1624 = zext i1 %1623 to i64
  %1625 = select i1 %1623, i32 -1610280871, i32 -1610346407
  store i32 %1625, ptr %50, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #3
  %1626 = load ptr, ptr %14, align 8, !tbaa !5
  %1627 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1626, i32 noundef 4)
  %1628 = icmp eq i32 0, %1627
  %1629 = zext i1 %1628 to i64
  %1630 = select i1 %1628, i32 -1610280872, i32 -1610346408
  store i32 %1630, ptr %51, align 4, !tbaa !9
  %1631 = load ptr, ptr %14, align 8, !tbaa !5
  %1632 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1631, i32 noundef 3)
  %1633 = icmp eq i32 2, %1632
  br i1 %1633, label %1634, label %1691

1634:                                             ; preds = %1620
  %1635 = load ptr, ptr %11, align 8, !tbaa !5
  %1636 = load ptr, ptr %13, align 8, !tbaa !5
  %1637 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1636, i32 0, i32 9
  %1638 = load i32, ptr %1637, align 4, !tbaa !35
  %1639 = load ptr, ptr %12, align 8, !tbaa !5
  %1640 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1639, i32 0, i32 6
  %1641 = load i32, ptr %1640, align 4, !tbaa !36
  %1642 = load i32, ptr %21, align 4, !tbaa !9
  %1643 = load i32, ptr %43, align 4, !tbaa !9
  %1644 = mul i32 %1642, %1643
  %1645 = load i32, ptr %22, align 4, !tbaa !9
  %1646 = load ptr, ptr %14, align 8, !tbaa !5
  %1647 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1646, i32 0, i32 3
  %1648 = load i32, ptr %1647, align 1, !tbaa !37
  %1649 = mul i32 %1645, %1648
  %1650 = add i32 %1644, %1649
  %1651 = load ptr, ptr %13, align 8, !tbaa !5
  %1652 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1651, i32 0, i32 5
  %1653 = load i32, ptr %1652, align 4, !tbaa !38
  %1654 = mul i32 %1650, %1653
  %1655 = load ptr, ptr %13, align 8, !tbaa !5
  %1656 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1655, i32 0, i32 30
  %1657 = load i32, ptr %1656, align 4, !tbaa !39
  %1658 = load i32, ptr %19, align 4, !tbaa !9
  %1659 = icmp eq i32 %1658, 1
  br i1 %1659, label %1660, label %1665

1660:                                             ; preds = %1634
  %1661 = load i32, ptr %45, align 4, !tbaa !9
  %1662 = load i32, ptr %17, align 4, !tbaa !9
  %1663 = sub i32 %1662, 1
  %1664 = icmp eq i32 %1661, %1663
  br label %1665

1665:                                             ; preds = %1660, %1634
  %1666 = phi i1 [ false, %1634 ], [ %1664, %1660 ]
  %1667 = zext i1 %1666 to i64
  %1668 = select i1 %1666, i32 1, i32 0
  %1669 = load i32, ptr %19, align 4, !tbaa !9
  %1670 = icmp eq i32 %1669, 1
  br i1 %1670, label %1671, label %1678

1671:                                             ; preds = %1665
  %1672 = load i32, ptr %45, align 4, !tbaa !9
  %1673 = load i32, ptr %17, align 4, !tbaa !9
  %1674 = sub i32 %1673, 1
  %1675 = icmp eq i32 %1672, %1674
  br i1 %1675, label %1676, label %1678

1676:                                             ; preds = %1671
  %1677 = load i32, ptr %30, align 4, !tbaa !9
  br label %1679

1678:                                             ; preds = %1671, %1665
  br label %1679

1679:                                             ; preds = %1678, %1676
  %1680 = phi i32 [ %1677, %1676 ], [ 0, %1678 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %1635, i32 noundef %1638, i32 noundef %1641, i32 noundef 127, i32 noundef 0, i32 noundef %1654, i8 noundef signext 120, i32 noundef %1657, i32 noundef %1668, i32 noundef %1680, i32 noundef 0)
  %1681 = load ptr, ptr %11, align 8, !tbaa !5
  %1682 = load ptr, ptr %13, align 8, !tbaa !5
  %1683 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1682, i32 0, i32 128
  %1684 = load i8, ptr %1683, align 4, !tbaa !30
  %1685 = load ptr, ptr %13, align 8, !tbaa !5
  %1686 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1685, i32 0, i32 30
  %1687 = load i32, ptr %1686, align 4, !tbaa !39
  %1688 = load ptr, ptr %13, align 8, !tbaa !5
  %1689 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1688, i32 0, i32 30
  %1690 = load i32, ptr %1689, align 4, !tbaa !39
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %1681, i8 noundef signext %1684, i32 noundef %1687, i32 noundef %1690)
  br label %1741

1691:                                             ; preds = %1620
  %1692 = load ptr, ptr %11, align 8, !tbaa !5
  %1693 = load ptr, ptr %13, align 8, !tbaa !5
  %1694 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1693, i32 0, i32 9
  %1695 = load i32, ptr %1694, align 4, !tbaa !35
  %1696 = load ptr, ptr %12, align 8, !tbaa !5
  %1697 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1696, i32 0, i32 6
  %1698 = load i32, ptr %1697, align 4, !tbaa !36
  %1699 = load i32, ptr %21, align 4, !tbaa !9
  %1700 = load i32, ptr %43, align 4, !tbaa !9
  %1701 = mul i32 %1699, %1700
  %1702 = load i32, ptr %22, align 4, !tbaa !9
  %1703 = load ptr, ptr %14, align 8, !tbaa !5
  %1704 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1703, i32 0, i32 3
  %1705 = load i32, ptr %1704, align 1, !tbaa !37
  %1706 = mul i32 %1702, %1705
  %1707 = add i32 %1701, %1706
  %1708 = load ptr, ptr %13, align 8, !tbaa !5
  %1709 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1708, i32 0, i32 5
  %1710 = load i32, ptr %1709, align 4, !tbaa !38
  %1711 = mul i32 %1707, %1710
  %1712 = load ptr, ptr %13, align 8, !tbaa !5
  %1713 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1712, i32 0, i32 128
  %1714 = load i8, ptr %1713, align 4, !tbaa !30
  %1715 = load ptr, ptr %13, align 8, !tbaa !5
  %1716 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1715, i32 0, i32 30
  %1717 = load i32, ptr %1716, align 4, !tbaa !39
  %1718 = load i32, ptr %19, align 4, !tbaa !9
  %1719 = icmp eq i32 %1718, 1
  br i1 %1719, label %1720, label %1725

1720:                                             ; preds = %1691
  %1721 = load i32, ptr %45, align 4, !tbaa !9
  %1722 = load i32, ptr %17, align 4, !tbaa !9
  %1723 = sub i32 %1722, 1
  %1724 = icmp eq i32 %1721, %1723
  br label %1725

1725:                                             ; preds = %1720, %1691
  %1726 = phi i1 [ false, %1691 ], [ %1724, %1720 ]
  %1727 = zext i1 %1726 to i64
  %1728 = select i1 %1726, i32 1, i32 0
  %1729 = load i32, ptr %19, align 4, !tbaa !9
  %1730 = icmp eq i32 %1729, 1
  br i1 %1730, label %1731, label %1738

1731:                                             ; preds = %1725
  %1732 = load i32, ptr %45, align 4, !tbaa !9
  %1733 = load i32, ptr %17, align 4, !tbaa !9
  %1734 = sub i32 %1733, 1
  %1735 = icmp eq i32 %1732, %1734
  br i1 %1735, label %1736, label %1738

1736:                                             ; preds = %1731
  %1737 = load i32, ptr %30, align 4, !tbaa !9
  br label %1739

1738:                                             ; preds = %1731, %1725
  br label %1739

1739:                                             ; preds = %1738, %1736
  %1740 = phi i32 [ %1737, %1736 ], [ 0, %1738 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %1692, i32 noundef %1695, i32 noundef %1698, i32 noundef 127, i32 noundef 0, i32 noundef %1711, i8 noundef signext %1714, i32 noundef %1717, i32 noundef %1728, i32 noundef %1740, i32 noundef 0)
  br label %1741

1741:                                             ; preds = %1739, %1679
  %1742 = load ptr, ptr %11, align 8, !tbaa !5
  %1743 = load i32, ptr %50, align 4, !tbaa !9
  %1744 = load ptr, ptr %13, align 8, !tbaa !5
  %1745 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1744, i32 0, i32 128
  %1746 = load i8, ptr %1745, align 4, !tbaa !30
  %1747 = load ptr, ptr %13, align 8, !tbaa !5
  %1748 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1747, i32 0, i32 29
  %1749 = load i32, ptr %1748, align 4, !tbaa !25
  %1750 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %1742, i32 noundef %1743, i8 noundef signext %1746, i32 noundef %1749, i32 noundef %1750)
  %1751 = load ptr, ptr %11, align 8, !tbaa !5
  %1752 = load i32, ptr %51, align 4, !tbaa !9
  %1753 = load ptr, ptr %13, align 8, !tbaa !5
  %1754 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1753, i32 0, i32 128
  %1755 = load i8, ptr %1754, align 4, !tbaa !30
  %1756 = load ptr, ptr %13, align 8, !tbaa !5
  %1757 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1756, i32 0, i32 30
  %1758 = load i32, ptr %1757, align 4, !tbaa !39
  %1759 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %1751, i32 noundef %1752, i8 noundef signext %1755, i32 noundef %1758, i32 noundef %1759)
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #3
  br label %1760

1760:                                             ; preds = %1741, %1607
  br label %1884

1761:                                             ; preds = %1234
  %1762 = load ptr, ptr %14, align 8, !tbaa !5
  %1763 = call i32 @libxsmm_generator_mateltwise_is_binary_cmp_op(ptr noundef %1762)
  %1764 = icmp ugt i32 %1763, 0
  br i1 %1764, label %1765, label %1872

1765:                                             ; preds = %1761
  %1766 = load ptr, ptr %11, align 8, !tbaa !5
  %1767 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1766, i32 0, i32 6
  %1768 = load i32, ptr %1767, align 4, !tbaa !16
  %1769 = icmp ult i32 %1768, 1051
  br i1 %1769, label %1770, label %1826

1770:                                             ; preds = %1765
  %1771 = load ptr, ptr %13, align 8, !tbaa !5
  %1772 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1771, i32 0, i32 30
  %1773 = load i32, ptr %1772, align 4, !tbaa !39
  store i32 %1773, ptr %32, align 4, !tbaa !9
  %1774 = load ptr, ptr %11, align 8, !tbaa !5
  %1775 = load i32, ptr %24, align 4, !tbaa !9
  %1776 = load ptr, ptr %13, align 8, !tbaa !5
  %1777 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1776, i32 0, i32 128
  %1778 = load i8, ptr %1777, align 4, !tbaa !30
  %1779 = load ptr, ptr %13, align 8, !tbaa !5
  %1780 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1779, i32 0, i32 29
  %1781 = load i32, ptr %1780, align 4, !tbaa !25
  %1782 = load i32, ptr %23, align 4, !tbaa !9
  %1783 = load i32, ptr %32, align 4, !tbaa !9
  %1784 = load i32, ptr %31, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg_imm8(ptr noundef %1774, i32 noundef %1775, i8 noundef signext %1778, i32 noundef %1781, i32 noundef %1782, i32 noundef %1783, i32 noundef %1784)
  %1785 = load ptr, ptr %14, align 8, !tbaa !5
  %1786 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1785, i32 0, i32 9
  %1787 = load i16, ptr %1786, align 1, !tbaa !11
  %1788 = zext i16 %1787 to i32
  %1789 = and i32 %1788, 128
  %1790 = icmp sgt i32 %1789, 0
  br i1 %1790, label %1791, label %1825

1791:                                             ; preds = %1770
  %1792 = load ptr, ptr %11, align 8, !tbaa !5
  %1793 = load ptr, ptr %12, align 8, !tbaa !5
  %1794 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1793, i32 0, i32 35
  %1795 = load i32, ptr %1794, align 4, !tbaa !40
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %1792, i32 noundef %1795)
  %1796 = load ptr, ptr %11, align 8, !tbaa !5
  %1797 = load ptr, ptr %13, align 8, !tbaa !5
  %1798 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1797, i32 0, i32 128
  %1799 = load i8, ptr %1798, align 4, !tbaa !30
  %1800 = load i32, ptr %32, align 4, !tbaa !9
  %1801 = load ptr, ptr %12, align 8, !tbaa !5
  %1802 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1801, i32 0, i32 35
  %1803 = load i32, ptr %1802, align 4, !tbaa !40
  call void @libxsmm_x86_instruction_vec_compute_3reg_imm8(ptr noundef %1796, i32 noundef 1610879056, i8 noundef signext %1799, i32 noundef %1800, i32 noundef 255, i32 noundef %1803, i32 noundef 0)
  %1804 = load ptr, ptr %11, align 8, !tbaa !5
  %1805 = load ptr, ptr %12, align 8, !tbaa !5
  %1806 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1805, i32 0, i32 6
  %1807 = load i32, ptr %1806, align 4, !tbaa !36
  %1808 = load i32, ptr %21, align 4, !tbaa !9
  %1809 = load i32, ptr %43, align 4, !tbaa !9
  %1810 = mul i32 %1808, %1809
  %1811 = load i32, ptr %22, align 4, !tbaa !9
  %1812 = load ptr, ptr %13, align 8, !tbaa !5
  %1813 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1812, i32 0, i32 17
  %1814 = load i32, ptr %1813, align 4, !tbaa !41
  %1815 = mul i32 %1811, %1814
  %1816 = add i32 %1810, %1815
  %1817 = udiv i32 %1816, 8
  %1818 = load ptr, ptr %12, align 8, !tbaa !5
  %1819 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1818, i32 0, i32 35
  %1820 = load i32, ptr %1819, align 4, !tbaa !40
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1804, i32 noundef -1610350454, i32 noundef %1807, i32 noundef 127, i32 noundef 0, i32 noundef %1817, i32 noundef %1820, i32 noundef 1)
  %1821 = load ptr, ptr %11, align 8, !tbaa !5
  %1822 = load ptr, ptr %12, align 8, !tbaa !5
  %1823 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1822, i32 0, i32 35
  %1824 = load i32, ptr %1823, align 4, !tbaa !40
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %1821, i32 noundef %1824)
  br label %1825

1825:                                             ; preds = %1791, %1770
  br label %1871

1826:                                             ; preds = %1765
  %1827 = load ptr, ptr %11, align 8, !tbaa !5
  %1828 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1827, i32 0, i32 6
  %1829 = load i32, ptr %1828, align 4, !tbaa !16
  %1830 = icmp ule i32 %1829, 1053
  br i1 %1830, label %1831, label %1832

1831:                                             ; preds = %1826
  store i32 -1610280559, ptr %34, align 4, !tbaa !9
  br label %1832

1832:                                             ; preds = %1831, %1826
  %1833 = load ptr, ptr %13, align 8, !tbaa !5
  %1834 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1833, i32 0, i32 19
  %1835 = load i32, ptr %1834, align 4, !tbaa !18
  %1836 = load i32, ptr %22, align 4, !tbaa !9
  %1837 = load i32, ptr %17, align 4, !tbaa !9
  %1838 = mul i32 %1836, %1837
  %1839 = load i32, ptr %21, align 4, !tbaa !9
  %1840 = add i32 %1838, %1839
  %1841 = load i32, ptr %33, align 4, !tbaa !9
  %1842 = urem i32 %1840, %1841
  %1843 = add i32 %1835, %1842
  store i32 %1843, ptr %32, align 4, !tbaa !9
  %1844 = load ptr, ptr %11, align 8, !tbaa !5
  %1845 = load i32, ptr %24, align 4, !tbaa !9
  %1846 = load ptr, ptr %13, align 8, !tbaa !5
  %1847 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1846, i32 0, i32 128
  %1848 = load i8, ptr %1847, align 4, !tbaa !30
  %1849 = load ptr, ptr %13, align 8, !tbaa !5
  %1850 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1849, i32 0, i32 29
  %1851 = load i32, ptr %1850, align 4, !tbaa !25
  %1852 = load i32, ptr %23, align 4, !tbaa !9
  %1853 = load i32, ptr %32, align 4, !tbaa !9
  %1854 = load i32, ptr %31, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg_imm8(ptr noundef %1844, i32 noundef %1845, i8 noundef signext %1848, i32 noundef %1851, i32 noundef %1852, i32 noundef %1853, i32 noundef %1854)
  %1855 = load ptr, ptr %11, align 8, !tbaa !5
  %1856 = load i32, ptr %34, align 4, !tbaa !9
  %1857 = load ptr, ptr %12, align 8, !tbaa !5
  %1858 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1857, i32 0, i32 6
  %1859 = load i32, ptr %1858, align 4, !tbaa !36
  %1860 = load i32, ptr %21, align 4, !tbaa !9
  %1861 = load i32, ptr %43, align 4, !tbaa !9
  %1862 = mul i32 %1860, %1861
  %1863 = load i32, ptr %22, align 4, !tbaa !9
  %1864 = load ptr, ptr %13, align 8, !tbaa !5
  %1865 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1864, i32 0, i32 17
  %1866 = load i32, ptr %1865, align 4, !tbaa !41
  %1867 = mul i32 %1863, %1866
  %1868 = add i32 %1862, %1867
  %1869 = udiv i32 %1868, 8
  %1870 = load i32, ptr %32, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_mask_move_mem(ptr noundef %1855, i32 noundef %1856, i32 noundef %1859, i32 noundef 127, i32 noundef 0, i32 noundef %1869, i32 noundef %1870)
  br label %1871

1871:                                             ; preds = %1832, %1825
  br label %1883

1872:                                             ; preds = %1761
  %1873 = load ptr, ptr %11, align 8, !tbaa !5
  %1874 = load i32, ptr %24, align 4, !tbaa !9
  %1875 = load ptr, ptr %13, align 8, !tbaa !5
  %1876 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1875, i32 0, i32 128
  %1877 = load i8, ptr %1876, align 4, !tbaa !30
  %1878 = load ptr, ptr %13, align 8, !tbaa !5
  %1879 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1878, i32 0, i32 29
  %1880 = load i32, ptr %1879, align 4, !tbaa !25
  %1881 = load i32, ptr %23, align 4, !tbaa !9
  %1882 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %1873, i32 noundef %1874, i8 noundef signext %1877, i32 noundef %1880, i32 noundef %1881, i32 noundef %1882)
  br label %1883

1883:                                             ; preds = %1872, %1871
  br label %1884

1884:                                             ; preds = %1883, %1760
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #3
  br label %1885

1885:                                             ; preds = %1884
  %1886 = load i32, ptr %21, align 4, !tbaa !9
  %1887 = add i32 %1886, 1
  store i32 %1887, ptr %21, align 4, !tbaa !9
  br label %505, !llvm.loop !42

1888:                                             ; preds = %505
  br label %1889

1889:                                             ; preds = %1888
  %1890 = load i32, ptr %22, align 4, !tbaa !9
  %1891 = add i32 %1890, 1
  store i32 %1891, ptr %22, align 4, !tbaa !9
  br label %500, !llvm.loop !43

1892:                                             ; preds = %500
  store i32 0, ptr %41, align 4
  br label %1893

1893:                                             ; preds = %1892, %498
  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
  %1894 = load i32, ptr %41, align 4
  switch i32 %1894, label %1896 [
    i32 0, label %1895
    i32 1, label %1895
  ]

1895:                                             ; preds = %1893, %1893
  ret void

1896:                                             ; preds = %1893
  unreachable
}

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

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

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


; 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"

@switch.table.libxsmm_compute_binary_2d_reg_block = private unnamed_addr constant [6 x i32] [i32 6, i32 5, i32 1, i32 2, i32 6, i32 4], align 4

declare i32 @libxsmm_generator_mateltwise_is_binary_cmp_op(ptr noundef) local_unnamed_addr #0

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

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

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

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

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

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

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

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

declare void @libxsmm_x86_instruction_push_reg(ptr noundef, i32 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 #0

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_compute_binary_2d_reg_block(ptr noundef %0, ptr nocapture noundef readonly %1, ptr noundef readonly %2, ptr noundef %3, i32 noundef %4, i32 noundef %5, i32 noundef %6, i32 noundef %7, i32 noundef %8, i32 noundef %9) local_unnamed_addr #1 {
  %11 = getelementptr inbounds i8, ptr %3, i64 27
  %12 = load i16, ptr %11, align 1, !tbaa !5
  %13 = zext i16 %12 to i32
  %14 = and i32 %13, 2
  %15 = icmp ne i32 %14, 0
  %16 = and i32 %13, 8
  %17 = icmp ne i32 %16, 0
  %18 = and i32 %13, 32
  %19 = icmp ne i32 %18, 0
  %20 = and i32 %13, 42
  %spec.select681.not = icmp eq i32 %20, 0
  %21 = getelementptr inbounds i8, ptr %2, i64 12
  %22 = load i32, ptr %21, align 4, !tbaa !11
  %23 = icmp eq i32 %22, 4
  br i1 %23, label %.thread, label %30

.thread:                                          ; preds = %10
  %24 = getelementptr inbounds i8, ptr %0, i64 28
  %25 = load i32, ptr %24, align 4, !tbaa !13
  %26 = icmp ult i32 %25, 1101
  %27 = select i1 %26, i32 537209368, i32 537209432
  %28 = getelementptr inbounds i8, ptr %2, i64 76
  %29 = load i32, ptr %28, align 4, !tbaa !16
  br label %40

30:                                               ; preds = %10
  %31 = icmp eq i32 %22, 2
  %32 = select i1 %31, i32 537209209, i32 537208952
  %33 = getelementptr inbounds i8, ptr %2, i64 76
  %34 = load i32, ptr %33, align 4, !tbaa !16
  %35 = icmp eq i32 %22, 8
  br i1 %35, label %36, label %40

36:                                               ; preds = %30
  %37 = getelementptr inbounds i8, ptr %0, i64 28
  %38 = load i32, ptr %37, align 4, !tbaa !13
  %39 = icmp ult i32 %38, 1051
  %. = select i1 %39, i32 1610948697, i32 -528143527
  br label %40

40:                                               ; preds = %.thread, %36, %30
  %.pn = phi i32 [ %34, %30 ], [ %34, %36 ], [ %29, %.thread ]
  %41 = phi ptr [ %33, %30 ], [ %33, %36 ], [ %28, %.thread ]
  %.0656 = phi i32 [ %32, %30 ], [ %., %36 ], [ %27, %.thread ]
  %42 = sub i32 8, %.pn
  %.not = icmp eq i32 %8, 0
  br i1 %.not, label %76, label %43

43:                                               ; preds = %40
  %44 = getelementptr inbounds i8, ptr %0, i64 28
  %45 = load i32, ptr %44, align 4, !tbaa !13
  %46 = add i32 %45, -1005
  %or.cond = icmp ult i32 %46, 46
  br i1 %or.cond, label %47, label %56

47:                                               ; preds = %43
  %48 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %49 = icmp eq i32 %48, 10
  br i1 %49, label %thread-pre-split.sink.split, label %50

50:                                               ; preds = %47
  %51 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %52 = icmp eq i32 %51, 3
  br i1 %52, label %thread-pre-split.sink.split, label %53

53:                                               ; preds = %50
  %54 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %55 = icmp eq i32 %54, 2
  br i1 %55, label %thread-pre-split.sink.split, label %thread-pre-split

56:                                               ; preds = %43
  %57 = icmp ult i32 %45, 1005
  br i1 %57, label %thread-pre-split.sink.split, label %60

thread-pre-split.sink.split:                      ; preds = %56, %47, %50, %53
  %58 = load i32, ptr %3, align 1, !tbaa !17
  %59 = urem i32 %58, %4
  br label %thread-pre-split

thread-pre-split:                                 ; preds = %thread-pre-split.sink.split, %53
  %.0657.ph.ph = phi i32 [ %9, %53 ], [ %59, %thread-pre-split.sink.split ]
  %.pr = load i32, ptr %44, align 4, !tbaa !13
  br label %60

60:                                               ; preds = %thread-pre-split, %56
  %61 = phi i32 [ %.pr, %thread-pre-split ], [ %45, %56 ]
  %.0657.ph = phi i32 [ %.0657.ph.ph, %thread-pre-split ], [ %9, %56 ]
  %62 = add i32 %61, -1005
  %or.cond682 = icmp ult i32 %62, 46
  br i1 %or.cond682, label %63, label %72

63:                                               ; preds = %60
  %64 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 1) #2
  %65 = icmp eq i32 %64, 10
  br i1 %65, label %.sink.split, label %66

66:                                               ; preds = %63
  %67 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 1) #2
  %68 = icmp eq i32 %67, 3
  br i1 %68, label %.sink.split, label %69

69:                                               ; preds = %66
  %70 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 1) #2
  %71 = icmp eq i32 %70, 2
  br i1 %71, label %.sink.split, label %76

72:                                               ; preds = %60
  %73 = icmp ult i32 %61, 1005
  br i1 %73, label %.sink.split, label %76

.sink.split:                                      ; preds = %72, %63, %66, %69
  %74 = load i32, ptr %3, align 1, !tbaa !17
  %75 = urem i32 %74, %4
  br label %76

76:                                               ; preds = %.sink.split, %40, %69, %72
  %.0657736 = phi i32 [ %.0657.ph, %69 ], [ %.0657.ph, %72 ], [ %9, %40 ], [ %.0657.ph, %.sink.split ]
  %.0 = phi i32 [ %9, %69 ], [ %9, %72 ], [ %9, %40 ], [ %75, %.sink.split ]
  %77 = getelementptr inbounds i8, ptr %0, i64 28
  %78 = load i32, ptr %77, align 4, !tbaa !13
  %79 = icmp ult i32 %78, 1005
  %80 = getelementptr inbounds i8, ptr %3, i64 29
  %81 = load i16, ptr %80, align 1, !tbaa !18
  br i1 %79, label %82, label %108

82:                                               ; preds = %76
  switch i16 %81, label %137 [
    i16 1, label %83
    i16 2, label %87
    i16 3, label %91
    i16 4, label %95
    i16 5, label %99
    i16 9, label %100
    i16 10, label %104
  ]

83:                                               ; preds = %82
  %84 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %85 = icmp eq i32 %84, 1
  %86 = select i1 %85, i32 -1610346408, i32 -1610280872
  br label %137

87:                                               ; preds = %82
  %88 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %89 = icmp eq i32 %88, 1
  %90 = select i1 %89, i32 -1610346407, i32 -1610280871
  br label %137

91:                                               ; preds = %82
  %92 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %93 = icmp eq i32 %92, 1
  %94 = select i1 %93, i32 -1610346404, i32 -1610280868
  br label %137

95:                                               ; preds = %82
  %96 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %97 = icmp eq i32 %96, 1
  %98 = select i1 %97, i32 -1610346402, i32 -1610280866
  br label %137

99:                                               ; preds = %82
  br label %137

100:                                              ; preds = %82
  %101 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %102 = icmp eq i32 %101, 1
  %103 = select i1 %102, i32 -1610346401, i32 -1610280865
  br label %137

104:                                              ; preds = %82
  %105 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %106 = icmp eq i32 %105, 1
  %107 = select i1 %106, i32 -1610346403, i32 -1610280867
  br label %137

108:                                              ; preds = %76
  switch i16 %81, label %137 [
    i16 1, label %109
    i16 2, label %113
    i16 3, label %117
    i16 4, label %121
    i16 5, label %125
    i16 9, label %129
    i16 10, label %133
  ]

109:                                              ; preds = %108
  %110 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %111 = icmp eq i32 %110, 1
  %112 = select i1 %111, i32 805574232, i32 814028376
  br label %137

113:                                              ; preds = %108
  %114 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %115 = icmp eq i32 %114, 1
  %116 = select i1 %115, i32 805574233, i32 814028377
  br label %137

117:                                              ; preds = %108
  %118 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %119 = icmp eq i32 %118, 1
  %120 = select i1 %119, i32 805574236, i32 814028380
  br label %137

121:                                              ; preds = %108
  %122 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %123 = icmp eq i32 %122, 1
  %124 = select i1 %123, i32 805574238, i32 814028382
  br label %137

125:                                              ; preds = %108
  %126 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %127 = icmp eq i32 %126, 1
  %128 = select i1 %127, i32 805643944, i32 814032552
  br label %137

129:                                              ; preds = %108
  %130 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %131 = icmp eq i32 %130, 1
  %132 = select i1 %131, i32 805574239, i32 814028383
  br label %137

133:                                              ; preds = %108
  %134 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %135 = icmp eq i32 %134, 1
  %136 = select i1 %135, i32 805573981, i32 814028381
  br label %137

137:                                              ; preds = %109, %113, %117, %121, %125, %129, %133, %108, %83, %87, %91, %95, %99, %100, %104, %82
  %.0653 = phi i32 [ 0, %82 ], [ %107, %104 ], [ %103, %100 ], [ 9999, %99 ], [ %98, %95 ], [ %94, %91 ], [ %90, %87 ], [ %86, %83 ], [ 0, %108 ], [ %136, %133 ], [ %132, %129 ], [ %128, %125 ], [ %124, %121 ], [ %120, %117 ], [ %116, %113 ], [ %112, %109 ]
  %138 = tail call i32 @libxsmm_generator_mateltwise_is_binary_cmp_op(ptr noundef nonnull %3) #2
  %.not671 = icmp eq i32 %138, 0
  br i1 %.not671, label %._crit_edge, label %139

._crit_edge:                                      ; preds = %137
  %.phi.trans.insert = getelementptr inbounds i8, ptr %3, i64 29
  %.pre = load i16, ptr %.phi.trans.insert, align 1, !tbaa !18
  br label %147

139:                                              ; preds = %137
  %140 = load i32, ptr %77, align 4, !tbaa !13
  %141 = icmp ult i32 %140, 1005
  %142 = select i1 %141, i32 -1609822014, i32 806098626
  %143 = getelementptr inbounds i8, ptr %3, i64 29
  %144 = load i16, ptr %143, align 1, !tbaa !18
  %switch.tableidx = add i16 %144, -27
  %145 = icmp ult i16 %switch.tableidx, 6
  br i1 %145, label %switch.hole_check, label %147

switch.hole_check:                                ; preds = %139
  %switch.maskindex = trunc nuw i16 %switch.tableidx to i8
  %switch.shifted = lshr i8 47, %switch.maskindex
  %switch.lobit = trunc i8 %switch.shifted to i1
  br i1 %switch.lobit, label %switch.lookup, label %147

switch.lookup:                                    ; preds = %switch.hole_check
  %146 = zext nneg i16 %switch.tableidx to i64
  %switch.gep = getelementptr inbounds [6 x i32], ptr @switch.table.libxsmm_compute_binary_2d_reg_block, i64 0, i64 %146
  %switch.load = load i32, ptr %switch.gep, align 4
  br label %.preheader749

147:                                              ; preds = %switch.hole_check, %139, %._crit_edge
  %148 = phi i16 [ %.pre, %._crit_edge ], [ %144, %139 ], [ %144, %switch.hole_check ]
  %.1654 = phi i32 [ %.0653, %._crit_edge ], [ %142, %139 ], [ %142, %switch.hole_check ]
  %149 = icmp eq i16 %148, 26
  br i1 %149, label %.preheader747, label %.preheader749

.preheader749:                                    ; preds = %switch.lookup, %147
  %.1654780 = phi i32 [ %142, %switch.lookup ], [ %.1654, %147 ]
  %.0659779 = phi i32 [ %switch.load, %switch.lookup ], [ 0, %147 ]
  %150 = getelementptr inbounds i8, ptr %3, i64 29
  %.not762 = icmp eq i32 %7, 0
  br i1 %.not762, label %.loopexit, label %.preheader748.lr.ph

.preheader748.lr.ph:                              ; preds = %.preheader749
  %.not763 = icmp eq i32 %6, 0
  %or.cond13 = or i1 %17, %spec.select681.not
  %151 = getelementptr inbounds i8, ptr %2, i64 28
  %152 = select i1 %15, i32 0, i32 %.0
  %153 = and i32 %13, 34
  %.not737 = icmp eq i32 %153, 0
  %154 = and i32 %13, 40
  %.not738 = icmp eq i32 %154, 0
  %155 = getelementptr inbounds i8, ptr %3, i64 16
  %156 = getelementptr inbounds i8, ptr %1, i64 8
  %157 = getelementptr inbounds i8, ptr %2, i64 116
  %158 = getelementptr inbounds i8, ptr %2, i64 512
  %159 = icmp eq i32 %8, 1
  %160 = add i32 %6, -1
  %161 = icmp ne i32 %8, 1
  %162 = getelementptr inbounds i8, ptr %2, i64 96
  %163 = getelementptr inbounds i8, ptr %2, i64 100
  %164 = getelementptr inbounds i8, ptr %2, i64 84
  %165 = getelementptr inbounds i8, ptr %2, i64 88
  %166 = getelementptr inbounds i8, ptr %1, i64 24
  %167 = getelementptr inbounds i8, ptr %2, i64 68
  %168 = getelementptr inbounds i8, ptr %2, i64 120
  %169 = getelementptr inbounds i8, ptr %1, i64 140
  %170 = getelementptr inbounds i8, ptr %2, i64 36
  %171 = getelementptr inbounds i8, ptr %3, i64 12
  %172 = getelementptr inbounds i8, ptr %2, i64 20
  br i1 %.not763, label %.loopexit, label %.preheader748.us

.preheader748.us:                                 ; preds = %.preheader748.lr.ph, %._crit_edge.us
  %.1650756.us = phi i32 [ %559, %._crit_edge.us ], [ 0, %.preheader748.lr.ph ]
  %.0662755.us = phi i32 [ %.3.us, %._crit_edge.us ], [ -1610346095, %.preheader748.lr.ph ]
  %spec.select686.us = select i1 %.not738, i32 %.1650756.us, i32 0
  %173 = mul i32 %.1650756.us, %6
  %174 = add i32 %173, %5
  br label %175

175:                                              ; preds = %.preheader748.us, %557
  %.1752.us = phi i32 [ 0, %.preheader748.us ], [ %558, %557 ]
  %.1663751.us = phi i32 [ %.0662755.us, %.preheader748.us ], [ %.3.us, %557 ]
  %176 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %177 = icmp eq i32 %176, 2
  br i1 %177, label %182, label %178

178:                                              ; preds = %175
  %179 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 4) #2
  %180 = icmp eq i32 %179, 1
  %181 = select i1 %180, i32 16, i32 8
  br label %182

182:                                              ; preds = %178, %175
  %183 = phi i32 [ %181, %178 ], [ 32, %175 ]
  br i1 %or.cond13, label %184, label %186

184:                                              ; preds = %182
  %185 = load i32, ptr %151, align 4, !tbaa !19
  br label %186

186:                                              ; preds = %184, %182
  %187 = phi i32 [ %185, %184 ], [ %.0656, %182 ]
  %188 = load i32, ptr %77, align 4, !tbaa !13
  %189 = icmp ult i32 %188, 1005
  %190 = lshr exact i32 %183, 2
  %191 = icmp ult i32 %188, 1101
  %192 = zext i1 %191 to i32
  %spec.select684.us = lshr exact i32 %183, %192
  %.0655.us = select i1 %189, i32 %190, i32 %spec.select684.us
  %spec.select685.us = select i1 %.not737, i32 %.1752.us, i32 0
  %193 = add i32 %174, %.1752.us
  %194 = load i32, ptr %155, align 1, !tbaa !20
  %195 = mul i32 %194, %spec.select686.us
  %196 = icmp ugt i32 %188, 1004
  br i1 %196, label %263, label %197

197:                                              ; preds = %186
  br i1 %or.cond13, label %241, label %198

198:                                              ; preds = %197
  %199 = icmp eq i32 %.1752.us, 0
  %or.cond25.us = and i1 %15, %199
  br i1 %or.cond25.us, label %203, label %200

200:                                              ; preds = %198
  %201 = or i32 %.1752.us, %.1650756.us
  %202 = icmp eq i32 %201, 0
  %or.cond29.us = and i1 %19, %202
  br i1 %or.cond29.us, label %203, label %368

203:                                              ; preds = %200, %198
  %204 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 1) #2
  %205 = icmp eq i32 %204, 0
  br i1 %205, label %231, label %206

206:                                              ; preds = %203
  %207 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 1) #2
  %208 = icmp eq i32 %207, 1
  br i1 %208, label %221, label %209

209:                                              ; preds = %206
  tail call void @libxsmm_x86_instruction_push_reg(ptr noundef nonnull %0, i32 noundef 1) #2
  %210 = load i32, ptr %156, align 4, !tbaa !21
  %211 = mul i32 %190, %spec.select685.us
  %212 = add i32 %195, %211
  %213 = load i32, ptr %21, align 4, !tbaa !11
  %214 = mul i32 %213, %212
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef -1610334069, i32 noundef %210, i32 noundef 127, i32 noundef 0, i32 noundef %214, i32 noundef 1, i32 noundef 0) #2
  %215 = load i32, ptr %157, align 4, !tbaa !23
  tail call void @libxsmm_x86_instruction_vec_compute_2reg_imm8(ptr noundef nonnull %0, i32 noundef -1609756476, i8 noundef signext 120, i32 noundef 1, i32 noundef %215, i32 noundef 0) #2
  %216 = load i32, ptr %157, align 4, !tbaa !23
  tail call void @libxsmm_x86_instruction_vec_compute_2reg_imm8(ptr noundef nonnull %0, i32 noundef -1609756476, i8 noundef signext 120, i32 noundef 1, i32 noundef %216, i32 noundef 1) #2
  %217 = load i8, ptr %158, align 4, !tbaa !24
  %218 = load i32, ptr %157, align 4, !tbaa !23
  tail call void @libxsmm_x86_instruction_vec_compute_2reg_imm8(ptr noundef nonnull %0, i32 noundef -1609822010, i8 noundef signext %217, i32 noundef %218, i32 noundef %218, i32 noundef 0) #2
  tail call void @libxsmm_x86_instruction_pop_reg(ptr noundef nonnull %0, i32 noundef 1) #2
  %219 = load i8, ptr %158, align 4, !tbaa !24
  %220 = load i32, ptr %157, align 4, !tbaa !23
  tail call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef nonnull %0, i8 noundef signext %219, i32 noundef %220, i32 noundef %220) #2
  br label %368

221:                                              ; preds = %206
  %222 = load i32, ptr %156, align 4, !tbaa !21
  %223 = mul i32 %190, %spec.select685.us
  %224 = add i32 %195, %223
  %225 = load i32, ptr %21, align 4, !tbaa !11
  %226 = mul i32 %225, %224
  %227 = load i8, ptr %158, align 4, !tbaa !24
  %228 = load i32, ptr %157, align 4, !tbaa !23
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef nonnull %0, i32 noundef -1610215408, i32 noundef %222, i32 noundef 127, i32 noundef 0, i32 noundef %226, i8 noundef signext %227, i32 noundef %228, i32 noundef 0, i32 noundef 0, i32 noundef 0) #2
  %229 = load i8, ptr %158, align 4, !tbaa !24
  %230 = load i32, ptr %157, align 4, !tbaa !23
  tail call void @libxsmm_x86_instruction_vec_compute_2reg_imm8(ptr noundef nonnull %0, i32 noundef -1609822010, i8 noundef signext %229, i32 noundef %230, i32 noundef %230, i32 noundef 0) #2
  br label %368

231:                                              ; preds = %203
  %232 = load i32, ptr %156, align 4, !tbaa !21
  %233 = mul i32 %190, %spec.select685.us
  %234 = add i32 %195, %233
  %235 = load i32, ptr %21, align 4, !tbaa !11
  %236 = mul i32 %235, %234
  %237 = load i8, ptr %158, align 4, !tbaa !24
  %238 = load i32, ptr %157, align 4, !tbaa !23
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef nonnull %0, i32 noundef -1610149872, i32 noundef %232, i32 noundef 127, i32 noundef 0, i32 noundef %236, i8 noundef signext %237, i32 noundef %238, i32 noundef 0, i32 noundef 0, i32 noundef 0) #2
  %239 = load i8, ptr %158, align 4, !tbaa !24
  %240 = load i32, ptr %157, align 4, !tbaa !23
  tail call void @libxsmm_x86_instruction_vec_compute_2reg_imm8(ptr noundef nonnull %0, i32 noundef -1609756474, i8 noundef signext %239, i32 noundef %240, i32 noundef %240, i32 noundef 0) #2
  br label %368

241:                                              ; preds = %197
  %242 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 1) #2
  %243 = icmp eq i32 %242, 2
  %244 = load i32, ptr %151, align 4, !tbaa !19
  %245 = load i32, ptr %156, align 4, !tbaa !21
  %246 = mul i32 %190, %spec.select685.us
  %247 = add i32 %195, %246
  %248 = load i32, ptr %21, align 4, !tbaa !11
  %249 = mul i32 %248, %247
  br i1 %243, label %256, label %250

250:                                              ; preds = %241
  %251 = load i8, ptr %158, align 4, !tbaa !24
  %252 = load i32, ptr %157, align 4, !tbaa !23
  %253 = icmp eq i32 %spec.select685.us, %160
  %254 = and i1 %159, %253
  %255 = zext i1 %254 to i32
  %spec.select715.us = select i1 %254, i32 %152, i32 0
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef nonnull %0, i32 noundef %244, i32 noundef %245, i32 noundef 127, i32 noundef 0, i32 noundef %249, i8 noundef signext %251, i32 noundef %252, i32 noundef %255, i32 noundef %spec.select715.us, i32 noundef 0) #2
  br label %368

256:                                              ; preds = %241
  %257 = load i32, ptr %157, align 4, !tbaa !23
  %258 = icmp eq i32 %spec.select685.us, %160
  %259 = and i1 %159, %258
  %260 = zext i1 %259 to i32
  %spec.select714.us = select i1 %259, i32 %152, i32 0
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef nonnull %0, i32 noundef %244, i32 noundef %245, i32 noundef 127, i32 noundef 0, i32 noundef %249, i8 noundef signext 120, i32 noundef %257, i32 noundef %260, i32 noundef %spec.select714.us, i32 noundef 0) #2
  %261 = load i8, ptr %158, align 4, !tbaa !24
  %262 = load i32, ptr %157, align 4, !tbaa !23
  tail call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef nonnull %0, i8 noundef signext %261, i32 noundef %262, i32 noundef %262) #2
  br label %368

263:                                              ; preds = %186
  %264 = icmp eq i32 %.1752.us, 0
  %or.cond17.us = and i1 %15, %264
  %or.cond687.us = select i1 %or.cond13, i1 true, i1 %or.cond17.us
  br i1 %or.cond687.us, label %268, label %265

265:                                              ; preds = %263
  %266 = or i32 %.1752.us, %.1650756.us
  %267 = icmp eq i32 %266, 0
  %or.cond21.us = and i1 %19, %267
  br i1 %or.cond21.us, label %268, label %368

268:                                              ; preds = %265, %263
  %269 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 1) #2
  %270 = icmp eq i32 %269, 2
  br i1 %270, label %352, label %271

271:                                              ; preds = %268
  %272 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 1) #2
  %273 = icmp eq i32 %272, 3
  br i1 %273, label %336, label %274

274:                                              ; preds = %271
  %275 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 1) #2
  %276 = icmp eq i32 %275, 4
  br i1 %276, label %316, label %277

277:                                              ; preds = %274
  %278 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 1) #2
  %279 = icmp eq i32 %278, 5
  br i1 %279, label %292, label %280

280:                                              ; preds = %277
  %281 = load i32, ptr %156, align 4, !tbaa !21
  %282 = mul i32 %spec.select684.us, %spec.select685.us
  %283 = add i32 %282, %195
  %284 = load i32, ptr %21, align 4, !tbaa !11
  %285 = mul i32 %284, %283
  %286 = load i8, ptr %158, align 4, !tbaa !24
  %287 = load i32, ptr %157, align 4, !tbaa !23
  %288 = icmp eq i32 %spec.select685.us, %160
  %or.cond711.us = select i1 %159, i1 %288, i1 false
  %289 = icmp ne i32 %187, %.0656
  %spec.select732.us = select i1 %or.cond711.us, i1 %289, i1 false
  %290 = zext i1 %spec.select732.us to i32
  %.not672.us = icmp eq i32 %187, %.0656
  %spec.select34.us = select i1 %.not672.us, i32 0, i32 %152
  %291 = select i1 %or.cond711.us, i32 %spec.select34.us, i32 0
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef nonnull %0, i32 noundef %187, i32 noundef %281, i32 noundef 127, i32 noundef 0, i32 noundef %285, i8 noundef signext %286, i32 noundef %287, i32 noundef %290, i32 noundef %291, i32 noundef 0) #2
  br label %368

292:                                              ; preds = %277
  %293 = load i32, ptr %77, align 4, !tbaa !13
  %294 = icmp ult i32 %293, 1101
  br i1 %294, label %295, label %297

295:                                              ; preds = %292
  %296 = icmp ne i32 %spec.select685.us, %160
  %or.cond704.not741.us = select i1 %161, i1 true, i1 %296
  %.not673.us = icmp eq i32 %187, %.0656
  %or.cond705.us = select i1 %or.cond704.not741.us, i1 true, i1 %.not673.us
  br i1 %or.cond705.us, label %298, label %297

297:                                              ; preds = %295, %292
  br label %298

298:                                              ; preds = %297, %295
  %299 = phi i32 [ %187, %297 ], [ 545725200, %295 ]
  %300 = load i32, ptr %156, align 4, !tbaa !21
  %301 = mul i32 %spec.select684.us, %spec.select685.us
  %302 = add i32 %301, %195
  %303 = load i32, ptr %21, align 4, !tbaa !11
  %304 = mul i32 %303, %302
  %305 = load i32, ptr %157, align 4, !tbaa !23
  %306 = icmp eq i32 %spec.select685.us, %160
  %or.cond707.us = select i1 %159, i1 %306, i1 false
  %307 = icmp ne i32 %187, %.0656
  %spec.select731.us = select i1 %or.cond707.us, i1 %307, i1 false
  %308 = zext i1 %spec.select731.us to i32
  %.not674.us = icmp eq i32 %187, %.0656
  %spec.select33.us = select i1 %.not674.us, i32 0, i32 %152
  %309 = select i1 %or.cond707.us, i32 %spec.select33.us, i32 0
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef nonnull %0, i32 noundef %299, i32 noundef %300, i32 noundef 127, i32 noundef 0, i32 noundef %304, i8 noundef signext 120, i32 noundef %305, i32 noundef %308, i32 noundef %309, i32 noundef 0) #2
  %310 = load i8, ptr %158, align 4, !tbaa !24
  %311 = load i32, ptr %157, align 4, !tbaa !23
  %312 = load i32, ptr %162, align 4, !tbaa !25
  %313 = load i32, ptr %163, align 4, !tbaa !26
  %314 = load i32, ptr %164, align 4, !tbaa !27
  %315 = load i32, ptr %165, align 4, !tbaa !28
  tail call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef nonnull %0, i8 noundef signext %310, i32 noundef %311, i32 noundef %311, i32 noundef %312, i32 noundef %313, i32 noundef %314, i32 noundef %315) #2
  br label %368

316:                                              ; preds = %274
  %317 = load i32, ptr %77, align 4, !tbaa !13
  %318 = icmp ult i32 %317, 1101
  br i1 %318, label %319, label %321

319:                                              ; preds = %316
  %320 = icmp ne i32 %spec.select685.us, %160
  %or.cond697.not744.us = select i1 %161, i1 true, i1 %320
  %.not675.us = icmp eq i32 %187, %.0656
  %or.cond698.us = select i1 %or.cond697.not744.us, i1 true, i1 %.not675.us
  br i1 %or.cond698.us, label %322, label %321

321:                                              ; preds = %319, %316
  br label %322

322:                                              ; preds = %321, %319
  %323 = phi i32 [ %187, %321 ], [ 545725200, %319 ]
  %324 = load i32, ptr %156, align 4, !tbaa !21
  %325 = mul i32 %spec.select684.us, %spec.select685.us
  %326 = add i32 %325, %195
  %327 = load i32, ptr %21, align 4, !tbaa !11
  %328 = mul i32 %327, %326
  %329 = load i32, ptr %157, align 4, !tbaa !23
  %330 = icmp eq i32 %spec.select685.us, %160
  %or.cond700.us = select i1 %159, i1 %330, i1 false
  %331 = icmp ne i32 %187, %.0656
  %spec.select730.us = select i1 %or.cond700.us, i1 %331, i1 false
  %332 = zext i1 %spec.select730.us to i32
  %.not676.us = icmp eq i32 %187, %.0656
  %spec.select32.us = select i1 %.not676.us, i32 0, i32 %152
  %333 = select i1 %or.cond700.us, i32 %spec.select32.us, i32 0
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef nonnull %0, i32 noundef %323, i32 noundef %324, i32 noundef 127, i32 noundef 0, i32 noundef %328, i8 noundef signext 120, i32 noundef %329, i32 noundef %332, i32 noundef %333, i32 noundef 0) #2
  %334 = load i8, ptr %158, align 4, !tbaa !24
  %335 = load i32, ptr %157, align 4, !tbaa !23
  tail call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef nonnull %0, i8 noundef signext %334, i32 noundef %335, i32 noundef %335) #2
  br label %368

336:                                              ; preds = %271
  %337 = load i32, ptr %156, align 4, !tbaa !21
  %338 = mul i32 %spec.select684.us, %spec.select685.us
  %339 = add i32 %338, %195
  %340 = load i32, ptr %21, align 4, !tbaa !11
  %341 = mul i32 %340, %339
  %342 = load i32, ptr %77, align 4, !tbaa !13
  %343 = icmp ugt i32 %342, 1100
  %344 = select i1 %343, i8 121, i8 120
  %345 = load i32, ptr %157, align 4, !tbaa !23
  %346 = icmp eq i32 %spec.select685.us, %160
  %or.cond693.us = select i1 %159, i1 %346, i1 false
  %347 = icmp ne i32 %187, %.0656
  %spec.select729.us = select i1 %or.cond693.us, i1 %347, i1 false
  %348 = zext i1 %spec.select729.us to i32
  %.not677.us = icmp eq i32 %187, %.0656
  %spec.select31.us = select i1 %.not677.us, i32 0, i32 %152
  %349 = select i1 %or.cond693.us, i32 %spec.select31.us, i32 0
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef nonnull %0, i32 noundef %187, i32 noundef %337, i32 noundef 127, i32 noundef 0, i32 noundef %341, i8 noundef signext %344, i32 noundef %345, i32 noundef %348, i32 noundef %349, i32 noundef 0) #2
  %350 = load i8, ptr %158, align 4, !tbaa !24
  %351 = load i32, ptr %157, align 4, !tbaa !23
  tail call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef nonnull %0, i32 noundef 537208083, i8 noundef signext %350, i32 noundef %351, i32 noundef %351) #2
  br label %368

352:                                              ; preds = %268
  %353 = load i32, ptr %156, align 4, !tbaa !21
  %354 = mul i32 %spec.select684.us, %spec.select685.us
  %355 = add i32 %354, %195
  %356 = load i32, ptr %21, align 4, !tbaa !11
  %357 = mul i32 %356, %355
  %358 = load i32, ptr %77, align 4, !tbaa !13
  %359 = icmp ugt i32 %358, 1100
  %360 = select i1 %359, i8 121, i8 120
  %361 = load i32, ptr %157, align 4, !tbaa !23
  %362 = icmp eq i32 %spec.select685.us, %160
  %or.cond689.us = select i1 %159, i1 %362, i1 false
  %363 = icmp ne i32 %187, %.0656
  %spec.select728.us = select i1 %or.cond689.us, i1 %363, i1 false
  %364 = zext i1 %spec.select728.us to i32
  %.not678.us = icmp eq i32 %187, %.0656
  %spec.select30.us = select i1 %.not678.us, i32 0, i32 %152
  %365 = select i1 %or.cond689.us, i32 %spec.select30.us, i32 0
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef nonnull %0, i32 noundef %187, i32 noundef %353, i32 noundef 127, i32 noundef 0, i32 noundef %357, i8 noundef signext %360, i32 noundef %361, i32 noundef %364, i32 noundef %365, i32 noundef 0) #2
  %366 = load i8, ptr %158, align 4, !tbaa !24
  %367 = load i32, ptr %157, align 4, !tbaa !23
  tail call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef nonnull %0, i8 noundef signext %366, i32 noundef %367, i32 noundef %367) #2
  br label %368

368:                                              ; preds = %352, %336, %322, %298, %280, %265, %256, %250, %231, %221, %209, %200
  %369 = load i16, ptr %150, align 1, !tbaa !18
  %370 = icmp eq i16 %369, 5
  br i1 %370, label %411, label %371

371:                                              ; preds = %368
  %372 = tail call i32 @libxsmm_generator_mateltwise_is_binary_cmp_op(ptr noundef nonnull %3) #2
  %.not679.us = icmp eq i32 %372, 0
  br i1 %.not679.us, label %408, label %373

373:                                              ; preds = %371
  %374 = load i32, ptr %77, align 4, !tbaa !13
  %375 = icmp ult i32 %374, 1051
  br i1 %375, label %390, label %376

376:                                              ; preds = %373
  %377 = icmp ult i32 %374, 1054
  %spec.select727.us = select i1 %377, i32 -1610280559, i32 %.1663751.us
  %378 = load i32, ptr %41, align 4, !tbaa !16
  %379 = add i32 %.1752.us, %173
  %380 = urem i32 %379, %42
  %381 = add i32 %380, %378
  %382 = load i8, ptr %158, align 4, !tbaa !24
  %383 = load i32, ptr %157, align 4, !tbaa !23
  tail call void @libxsmm_x86_instruction_vec_compute_3reg_imm8(ptr noundef nonnull %0, i32 noundef %.1654780, i8 noundef signext %382, i32 noundef %383, i32 noundef %193, i32 noundef %381, i32 noundef %.0659779) #2
  %384 = load i32, ptr %166, align 4, !tbaa !29
  %385 = mul i32 %.0655.us, %.1752.us
  %386 = load i32, ptr %167, align 4, !tbaa !30
  %387 = mul i32 %386, %.1650756.us
  %388 = add i32 %387, %385
  %389 = lshr i32 %388, 3
  tail call void @libxsmm_x86_instruction_mask_move_mem(ptr noundef nonnull %0, i32 noundef %spec.select727.us, i32 noundef %384, i32 noundef 127, i32 noundef 0, i32 noundef %389, i32 noundef %381) #2
  br label %557

390:                                              ; preds = %373
  %391 = load i32, ptr %168, align 4, !tbaa !31
  %392 = load i8, ptr %158, align 4, !tbaa !24
  %393 = load i32, ptr %157, align 4, !tbaa !23
  tail call void @libxsmm_x86_instruction_vec_compute_3reg_imm8(ptr noundef nonnull %0, i32 noundef %.1654780, i8 noundef signext %392, i32 noundef %393, i32 noundef %193, i32 noundef %391, i32 noundef %.0659779) #2
  %394 = load i16, ptr %11, align 1, !tbaa !5
  %395 = and i16 %394, 128
  %.not680.us = icmp eq i16 %395, 0
  br i1 %.not680.us, label %557, label %396

396:                                              ; preds = %390
  %397 = load i32, ptr %169, align 4, !tbaa !32
  tail call void @libxsmm_x86_instruction_push_reg(ptr noundef nonnull %0, i32 noundef %397) #2
  %398 = load i8, ptr %158, align 4, !tbaa !24
  %399 = load i32, ptr %169, align 4, !tbaa !32
  tail call void @libxsmm_x86_instruction_vec_compute_3reg_imm8(ptr noundef nonnull %0, i32 noundef 1610879056, i8 noundef signext %398, i32 noundef %391, i32 noundef 255, i32 noundef %399, i32 noundef 0) #2
  %400 = load i32, ptr %166, align 4, !tbaa !29
  %401 = mul i32 %.0655.us, %.1752.us
  %402 = load i32, ptr %167, align 4, !tbaa !30
  %403 = mul i32 %402, %.1650756.us
  %404 = add i32 %403, %401
  %405 = lshr i32 %404, 3
  %406 = load i32, ptr %169, align 4, !tbaa !32
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef -1610350454, i32 noundef %400, i32 noundef 127, i32 noundef 0, i32 noundef %405, i32 noundef %406, i32 noundef 1) #2
  %407 = load i32, ptr %169, align 4, !tbaa !32
  tail call void @libxsmm_x86_instruction_pop_reg(ptr noundef nonnull %0, i32 noundef %407) #2
  br label %557

408:                                              ; preds = %371
  %409 = load i8, ptr %158, align 4, !tbaa !24
  %410 = load i32, ptr %157, align 4, !tbaa !23
  tail call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef nonnull %0, i32 noundef %.1654780, i8 noundef signext %409, i32 noundef %410, i32 noundef %193, i32 noundef %193) #2
  br label %557

411:                                              ; preds = %368
  %412 = load i32, ptr %77, align 4, !tbaa !13
  %413 = icmp ugt i32 %412, 1005
  br i1 %413, label %449, label %414

414:                                              ; preds = %411
  %415 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %416 = icmp eq i32 %415, 0
  %417 = select i1 %416, i32 -1610280871, i32 -1610346407
  %418 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %419 = icmp eq i32 %418, 0
  %420 = select i1 %419, i32 -1610280872, i32 -1610346408
  %421 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %422 = icmp eq i32 %421, 2
  %423 = load i32, ptr %170, align 4, !tbaa !33
  %424 = load i32, ptr %166, align 4, !tbaa !29
  %425 = mul i32 %.0655.us, %.1752.us
  %426 = load i32, ptr %171, align 1, !tbaa !34
  %427 = mul i32 %426, %.1650756.us
  %428 = add i32 %427, %425
  %429 = load i32, ptr %172, align 4, !tbaa !35
  %430 = mul i32 %428, %429
  br i1 %422, label %437, label %431

431:                                              ; preds = %414
  %432 = load i8, ptr %158, align 4, !tbaa !24
  %433 = load i32, ptr %168, align 4, !tbaa !31
  %434 = icmp eq i32 %spec.select685.us, %160
  %435 = and i1 %159, %434
  %436 = zext i1 %435 to i32
  %spec.select726.us = select i1 %435, i32 %.0657736, i32 0
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef nonnull %0, i32 noundef %423, i32 noundef %424, i32 noundef 127, i32 noundef 0, i32 noundef %430, i8 noundef signext %432, i32 noundef %433, i32 noundef %436, i32 noundef %spec.select726.us, i32 noundef 0) #2
  br label %444

437:                                              ; preds = %414
  %438 = load i32, ptr %168, align 4, !tbaa !31
  %439 = icmp eq i32 %spec.select685.us, %160
  %440 = and i1 %159, %439
  %441 = zext i1 %440 to i32
  %spec.select725.us = select i1 %440, i32 %.0657736, i32 0
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef nonnull %0, i32 noundef %423, i32 noundef %424, i32 noundef 127, i32 noundef 0, i32 noundef %430, i8 noundef signext 120, i32 noundef %438, i32 noundef %441, i32 noundef %spec.select725.us, i32 noundef 0) #2
  %442 = load i8, ptr %158, align 4, !tbaa !24
  %443 = load i32, ptr %168, align 4, !tbaa !31
  tail call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef nonnull %0, i8 noundef signext %442, i32 noundef %443, i32 noundef %443) #2
  br label %444

444:                                              ; preds = %437, %431
  %445 = load i8, ptr %158, align 4, !tbaa !24
  %446 = load i32, ptr %157, align 4, !tbaa !23
  tail call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef nonnull %0, i32 noundef %417, i8 noundef signext %445, i32 noundef %446, i32 noundef %193) #2
  %447 = load i8, ptr %158, align 4, !tbaa !24
  %448 = load i32, ptr %168, align 4, !tbaa !31
  tail call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef nonnull %0, i32 noundef %420, i8 noundef signext %447, i32 noundef %448, i32 noundef %193) #2
  br label %557

449:                                              ; preds = %411
  %450 = load i32, ptr %170, align 4, !tbaa !33
  %451 = icmp eq i32 %450, 537138731
  %452 = select i1 %451, i32 537138704, i32 %450
  %453 = icmp eq i32 %452, 545592875
  %454 = select i1 %453, i32 545592848, i32 %452
  %455 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %456 = icmp eq i32 %455, 2
  br i1 %456, label %536, label %457

457:                                              ; preds = %449
  %458 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %459 = icmp eq i32 %458, 3
  br i1 %459, label %519, label %460

460:                                              ; preds = %457
  %461 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %462 = icmp eq i32 %461, 4
  br i1 %462, label %501, label %463

463:                                              ; preds = %460
  %464 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %465 = icmp eq i32 %464, 5
  br i1 %465, label %479, label %466

466:                                              ; preds = %463
  %467 = load i32, ptr %166, align 4, !tbaa !29
  %468 = mul i32 %.0655.us, %.1752.us
  %469 = load i32, ptr %171, align 1, !tbaa !34
  %470 = mul i32 %469, %.1650756.us
  %471 = add i32 %470, %468
  %472 = load i32, ptr %172, align 4, !tbaa !35
  %473 = mul i32 %471, %472
  %474 = load i8, ptr %158, align 4, !tbaa !24
  %475 = load i32, ptr %168, align 4, !tbaa !31
  %476 = icmp eq i32 %.1752.us, %160
  %477 = and i1 %159, %476
  %478 = zext i1 %477 to i32
  %spec.select724.us = select i1 %477, i32 %.0657736, i32 0
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef nonnull %0, i32 noundef %454, i32 noundef %467, i32 noundef 127, i32 noundef 0, i32 noundef %473, i8 noundef signext %474, i32 noundef %475, i32 noundef %478, i32 noundef %spec.select724.us, i32 noundef 0) #2
  br label %553

479:                                              ; preds = %463
  %480 = load i32, ptr %77, align 4, !tbaa !13
  %481 = icmp ugt i32 %480, 1100
  %482 = icmp eq i32 %spec.select685.us, %160
  %or.cond722.us = select i1 %159, i1 %482, i1 false
  %or.cond760 = select i1 %481, i1 true, i1 %or.cond722.us
  %483 = select i1 %or.cond760, i32 %454, i32 545725200
  %484 = load i32, ptr %166, align 4, !tbaa !29
  %485 = mul i32 %.0655.us, %.1752.us
  %486 = load i32, ptr %171, align 1, !tbaa !34
  %487 = mul i32 %486, %.1650756.us
  %488 = add i32 %487, %485
  %489 = load i32, ptr %172, align 4, !tbaa !35
  %490 = mul i32 %488, %489
  %491 = load i32, ptr %168, align 4, !tbaa !31
  %492 = icmp eq i32 %.1752.us, %160
  %493 = and i1 %159, %492
  %494 = zext i1 %493 to i32
  %spec.select723.us = select i1 %493, i32 %.0657736, i32 0
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef nonnull %0, i32 noundef %483, i32 noundef %484, i32 noundef 127, i32 noundef 0, i32 noundef %490, i8 noundef signext 120, i32 noundef %491, i32 noundef %494, i32 noundef %spec.select723.us, i32 noundef 0) #2
  %495 = load i8, ptr %158, align 4, !tbaa !24
  %496 = load i32, ptr %168, align 4, !tbaa !31
  %497 = load i32, ptr %162, align 4, !tbaa !25
  %498 = load i32, ptr %163, align 4, !tbaa !26
  %499 = load i32, ptr %164, align 4, !tbaa !27
  %500 = load i32, ptr %165, align 4, !tbaa !28
  tail call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef nonnull %0, i8 noundef signext %495, i32 noundef %496, i32 noundef %496, i32 noundef %497, i32 noundef %498, i32 noundef %499, i32 noundef %500) #2
  br label %553

501:                                              ; preds = %460
  %502 = load i32, ptr %77, align 4, !tbaa !13
  %503 = icmp ugt i32 %502, 1100
  %504 = icmp eq i32 %spec.select685.us, %160
  %or.cond719.us = select i1 %159, i1 %504, i1 false
  %or.cond761 = select i1 %503, i1 true, i1 %or.cond719.us
  %505 = select i1 %or.cond761, i32 %454, i32 545725200
  %506 = load i32, ptr %166, align 4, !tbaa !29
  %507 = mul i32 %.0655.us, %.1752.us
  %508 = load i32, ptr %171, align 1, !tbaa !34
  %509 = mul i32 %508, %.1650756.us
  %510 = add i32 %509, %507
  %511 = load i32, ptr %172, align 4, !tbaa !35
  %512 = mul i32 %510, %511
  %513 = load i32, ptr %168, align 4, !tbaa !31
  %514 = icmp eq i32 %.1752.us, %160
  %515 = and i1 %159, %514
  %516 = zext i1 %515 to i32
  %spec.select720.us = select i1 %515, i32 %.0657736, i32 0
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef nonnull %0, i32 noundef %505, i32 noundef %506, i32 noundef 127, i32 noundef 0, i32 noundef %512, i8 noundef signext 120, i32 noundef %513, i32 noundef %516, i32 noundef %spec.select720.us, i32 noundef 0) #2
  %517 = load i8, ptr %158, align 4, !tbaa !24
  %518 = load i32, ptr %168, align 4, !tbaa !31
  tail call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef nonnull %0, i8 noundef signext %517, i32 noundef %518, i32 noundef %518) #2
  br label %553

519:                                              ; preds = %457
  %520 = load i32, ptr %166, align 4, !tbaa !29
  %521 = mul i32 %.0655.us, %.1752.us
  %522 = load i32, ptr %171, align 1, !tbaa !34
  %523 = mul i32 %522, %.1650756.us
  %524 = add i32 %523, %521
  %525 = load i32, ptr %172, align 4, !tbaa !35
  %526 = mul i32 %524, %525
  %527 = load i32, ptr %77, align 4, !tbaa !13
  %528 = icmp ugt i32 %527, 1100
  %529 = select i1 %528, i8 121, i8 120
  %530 = load i32, ptr %168, align 4, !tbaa !31
  %531 = icmp eq i32 %.1752.us, %160
  %532 = and i1 %159, %531
  %533 = zext i1 %532 to i32
  %spec.select717.us = select i1 %532, i32 %.0657736, i32 0
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef nonnull %0, i32 noundef %454, i32 noundef %520, i32 noundef 127, i32 noundef 0, i32 noundef %526, i8 noundef signext %529, i32 noundef %530, i32 noundef %533, i32 noundef %spec.select717.us, i32 noundef 0) #2
  %534 = load i8, ptr %158, align 4, !tbaa !24
  %535 = load i32, ptr %168, align 4, !tbaa !31
  tail call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef nonnull %0, i32 noundef 537208083, i8 noundef signext %534, i32 noundef %535, i32 noundef %535) #2
  br label %553

536:                                              ; preds = %449
  %537 = load i32, ptr %166, align 4, !tbaa !29
  %538 = mul i32 %.0655.us, %.1752.us
  %539 = load i32, ptr %171, align 1, !tbaa !34
  %540 = mul i32 %539, %.1650756.us
  %541 = add i32 %540, %538
  %542 = load i32, ptr %172, align 4, !tbaa !35
  %543 = mul i32 %541, %542
  %544 = load i32, ptr %77, align 4, !tbaa !13
  %545 = icmp ugt i32 %544, 1100
  %546 = select i1 %545, i8 121, i8 120
  %547 = load i32, ptr %168, align 4, !tbaa !31
  %548 = icmp eq i32 %.1752.us, %160
  %549 = and i1 %159, %548
  %550 = zext i1 %549 to i32
  %spec.select716.us = select i1 %549, i32 %.0657736, i32 0
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef nonnull %0, i32 noundef %454, i32 noundef %537, i32 noundef 127, i32 noundef 0, i32 noundef %543, i8 noundef signext %546, i32 noundef %547, i32 noundef %550, i32 noundef %spec.select716.us, i32 noundef 0) #2
  %551 = load i8, ptr %158, align 4, !tbaa !24
  %552 = load i32, ptr %168, align 4, !tbaa !31
  tail call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef nonnull %0, i8 noundef signext %551, i32 noundef %552, i32 noundef %552) #2
  br label %553

553:                                              ; preds = %536, %519, %501, %479, %466
  %554 = load i8, ptr %158, align 4, !tbaa !24
  %555 = load i32, ptr %168, align 4, !tbaa !31
  %556 = load i32, ptr %157, align 4, !tbaa !23
  tail call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef nonnull %0, i32 noundef %.1654780, i8 noundef signext %554, i32 noundef %555, i32 noundef %556, i32 noundef %193) #2
  br label %557

557:                                              ; preds = %553, %444, %408, %396, %390, %376
  %.3.us = phi i32 [ %.1663751.us, %553 ], [ %.1663751.us, %444 ], [ %.1663751.us, %396 ], [ %.1663751.us, %390 ], [ %spec.select727.us, %376 ], [ %.1663751.us, %408 ]
  %558 = add nuw i32 %.1752.us, 1
  %exitcond.not = icmp eq i32 %558, %6
  br i1 %exitcond.not, label %._crit_edge.us, label %175, !llvm.loop !36

._crit_edge.us:                                   ; preds = %557
  %559 = add nuw i32 %.1650756.us, 1
  %exitcond769.not = icmp eq i32 %559, %7
  br i1 %exitcond769.not, label %.loopexit, label %.preheader748.us, !llvm.loop !38

.preheader747:                                    ; preds = %147
  %.not764 = icmp eq i32 %7, 0
  br i1 %.not764, label %.loopexit, label %.preheader.lr.ph

.preheader.lr.ph:                                 ; preds = %.preheader747
  %.not765 = icmp eq i32 %6, 0
  %560 = and i32 %13, 34
  %.not745 = icmp eq i32 %560, 0
  %561 = and i32 %13, 40
  %.not746 = icmp eq i32 %561, 0
  %562 = getelementptr inbounds i8, ptr %3, i64 16
  %or.cond3 = or i1 %17, %spec.select681.not
  %563 = getelementptr inbounds i8, ptr %1, i64 8
  %564 = getelementptr inbounds i8, ptr %2, i64 116
  %565 = icmp eq i32 %8, 1
  %566 = add i32 %6, -1
  br i1 %.not765, label %.loopexit, label %.preheader.us.preheader

.preheader.us.preheader:                          ; preds = %.preheader.lr.ph
  %567 = icmp eq i32 %566, 0
  %568 = and i1 %565, %567
  %569 = select i1 %568, i32 %.0, i32 0
  %exitcond770.peel.not = icmp eq i32 %6, 1
  %brmerge = select i1 %or.cond3, i1 true, i1 %15
  %.mux = select i1 %or.cond3, i32 537208115, i32 %.0656
  br label %.preheader.us

.preheader.us:                                    ; preds = %.preheader.us.preheader, %._crit_edge.us759
  %.0649758.us = phi i32 [ %613, %._crit_edge.us759 ], [ 0, %.preheader.us.preheader ]
  %.0660.us = select i1 %.not746, i32 %.0649758.us, i32 0
  %570 = mul i32 %.0649758.us, %6
  %571 = add i32 %570, %5
  %572 = load i32, ptr %77, align 4, !tbaa !13
  %573 = icmp ugt i32 %572, 1100
  %574 = select i1 %573, i8 122, i8 121
  %575 = load i32, ptr %562, align 1, !tbaa !20
  %576 = mul i32 %575, %.0660.us
  br i1 %brmerge, label %579, label %577

577:                                              ; preds = %.preheader.us
  %578 = icmp eq i32 %.0649758.us, 0
  %or.cond9.us.peel = and i1 %19, %578
  br i1 %or.cond9.us.peel, label %579, label %590

579:                                              ; preds = %.preheader.us, %577
  %580 = phi i32 [ %.0656, %577 ], [ %.mux, %.preheader.us ]
  %581 = load i32, ptr %563, align 4, !tbaa !21
  %582 = load i32, ptr %21, align 4, !tbaa !11
  %583 = mul i32 %582, %576
  %584 = load i32, ptr %564, align 4, !tbaa !23
  tail call void @libxsmm_x86_instruction_vec_move(ptr noundef nonnull %0, i32 noundef %572, i32 noundef %580, i32 noundef %581, i32 noundef 127, i32 noundef 0, i32 noundef %583, i8 noundef signext %574, i32 noundef %584, i32 noundef %569, i32 noundef 0, i32 noundef 0) #2
  %585 = icmp eq i32 %580, %.0656
  br i1 %585, label %586, label %588

586:                                              ; preds = %579
  %587 = load i32, ptr %564, align 4, !tbaa !23
  tail call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef nonnull %0, i32 noundef 537208115, i8 noundef signext %574, i32 noundef %587, i32 noundef %587) #2
  br label %588

588:                                              ; preds = %586, %579
  %589 = load i32, ptr %564, align 4, !tbaa !23
  tail call void @libxsmm_x86_instruction_vec_compute_2reg_imm8(ptr noundef nonnull %0, i32 noundef 611128946, i8 noundef signext %574, i32 noundef %589, i32 noundef %589, i32 noundef 16) #2
  br label %590

590:                                              ; preds = %588, %577
  %591 = load i32, ptr %564, align 4, !tbaa !23
  tail call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef nonnull %0, i32 noundef 805639915, i8 noundef signext %574, i32 noundef %571, i32 noundef %591, i32 noundef %571) #2
  br i1 %exitcond770.peel.not, label %._crit_edge.us759, label %.peel.next

.peel.next:                                       ; preds = %590, %610
  %.0648757.us = phi i32 [ %612, %610 ], [ 1, %590 ]
  %592 = load i32, ptr %77, align 4, !tbaa !13
  %593 = icmp ugt i32 %592, 1100
  %594 = select i1 %593, i8 122, i8 121
  %595 = add i32 %571, %.0648757.us
  br i1 %or.cond3, label %596, label %610

596:                                              ; preds = %.peel.next
  %597 = load i32, ptr %562, align 1, !tbaa !20
  %598 = mul i32 %597, %.0660.us
  %.0661.us = select i1 %.not745, i32 %.0648757.us, i32 0
  %599 = icmp ult i32 %592, 1101
  %600 = load i32, ptr %563, align 4, !tbaa !21
  %601 = select i1 %599, i32 3, i32 4
  %602 = shl i32 %.0661.us, %601
  %603 = add i32 %602, %598
  %604 = load i32, ptr %21, align 4, !tbaa !11
  %605 = mul i32 %604, %603
  %606 = load i32, ptr %564, align 4, !tbaa !23
  %607 = icmp eq i32 %.0648757.us, %566
  %608 = and i1 %565, %607
  %609 = select i1 %608, i32 %.0, i32 0
  tail call void @libxsmm_x86_instruction_vec_move(ptr noundef nonnull %0, i32 noundef %592, i32 noundef 537208115, i32 noundef %600, i32 noundef 127, i32 noundef 0, i32 noundef %605, i8 noundef signext %594, i32 noundef %606, i32 noundef %609, i32 noundef 0, i32 noundef 0) #2
  %.pre775 = load i32, ptr %564, align 4, !tbaa !23
  tail call void @libxsmm_x86_instruction_vec_compute_2reg_imm8(ptr noundef nonnull %0, i32 noundef 611128946, i8 noundef signext %594, i32 noundef %.pre775, i32 noundef %.pre775, i32 noundef 16) #2
  br label %610

610:                                              ; preds = %.peel.next, %596
  %611 = load i32, ptr %564, align 4, !tbaa !23
  tail call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef nonnull %0, i32 noundef 805639915, i8 noundef signext %594, i32 noundef %595, i32 noundef %611, i32 noundef %595) #2
  %612 = add nuw i32 %.0648757.us, 1
  %exitcond770.not = icmp eq i32 %612, %6
  br i1 %exitcond770.not, label %._crit_edge.us759, label %.peel.next, !llvm.loop !39

._crit_edge.us759:                                ; preds = %610, %590
  %613 = add nuw i32 %.0649758.us, 1
  %exitcond772.not = icmp eq i32 %613, %7
  br i1 %exitcond772.not, label %.loopexit, label %.preheader.us, !llvm.loop !41

.loopexit:                                        ; preds = %._crit_edge.us, %._crit_edge.us759, %.preheader.lr.ph, %.preheader748.lr.ph, %.preheader749, %.preheader747
  ret void
}

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !10, i64 27}
!6 = !{!"libxsmm_meltw_descriptor", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !8, i64 24, !8, i64 25, !8, i64 26, !10, i64 27, !10, i64 29, !8, i64 31}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"short", !8, i64 0}
!11 = !{!12, !7, i64 12}
!12 = !{!"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}
!13 = !{!14, !7, i64 28}
!14 = !{!"libxsmm_generated_code", !15, i64 0, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28}
!15 = !{!"any pointer", !8, i64 0}
!16 = !{!12, !7, i64 76}
!17 = !{!6, !7, i64 0}
!18 = !{!6, !10, i64 29}
!19 = !{!12, !7, i64 28}
!20 = !{!6, !7, i64 16}
!21 = !{!22, !7, i64 8}
!22 = !{!"libxsmm_mateltwise_gp_reg_mapping_struct", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !7, i64 64, !7, i64 68, !7, i64 72, !7, i64 76, !7, i64 80, !7, i64 84, !7, i64 88, !7, i64 92, !7, i64 96, !7, i64 100, !7, i64 104, !7, i64 108, !7, i64 112, !7, i64 116, !7, i64 120, !7, i64 124, !7, i64 128, !7, i64 132, !7, i64 136, !7, i64 140, !7, i64 144}
!23 = !{!12, !7, i64 116}
!24 = !{!12, !8, i64 512}
!25 = !{!12, !7, i64 96}
!26 = !{!12, !7, i64 100}
!27 = !{!12, !7, i64 84}
!28 = !{!12, !7, i64 88}
!29 = !{!22, !7, i64 24}
!30 = !{!12, !7, i64 68}
!31 = !{!12, !7, i64 120}
!32 = !{!22, !7, i64 140}
!33 = !{!12, !7, i64 36}
!34 = !{!6, !7, i64 12}
!35 = !{!12, !7, i64 20}
!36 = distinct !{!36, !37}
!37 = !{!"llvm.loop.mustprogress"}
!38 = distinct !{!38, !37}
!39 = distinct !{!39, !37, !40}
!40 = !{!"llvm.loop.peeled.count", i32 1}
!41 = distinct !{!41, !37}


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