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

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

%struct.libxsmm_mateltwise_kernel_config_struct = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8 }
%struct.libxsmm_meltw_descriptor = type <{ i32, i32, i32, i32, i32, i32, i8, i8, i8, i16, i16, i8 }>
%struct.libxsmm_generated_code = type { ptr, i32, i32, i32, i32, i32, i32 }
%struct.libxsmm_mateltwise_gp_reg_mapping_struct = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }

; 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_x86_instruction_vec_compute_2reg_imm8(ptr noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef) #1

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_store_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 i8, align 1
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i8, align 1
  %33 = alloca i8, align 1
  %34 = alloca i8, align 1
  %35 = alloca i8, align 1
  %36 = alloca i32, align 4
  %37 = 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
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #3
  %38 = load i32, ptr %15, align 4, !tbaa !9
  %39 = load ptr, ptr %13, align 8, !tbaa !5
  %40 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %39, i32 0, i32 5
  %41 = load i32, ptr %40, align 4, !tbaa !11
  %42 = mul i32 %38, %41
  %43 = icmp eq i32 %42, 64
  br i1 %43, label %44, label %45

44:                                               ; preds = %10
  br label %54

45:                                               ; preds = %10
  %46 = load i32, ptr %15, align 4, !tbaa !9
  %47 = load ptr, ptr %13, align 8, !tbaa !5
  %48 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %47, i32 0, i32 5
  %49 = load i32, ptr %48, align 4, !tbaa !11
  %50 = mul i32 %46, %49
  %51 = icmp eq i32 %50, 32
  %52 = zext i1 %51 to i64
  %53 = select i1 %51, i32 121, i32 120
  br label %54

54:                                               ; preds = %45, %44
  %55 = phi i32 [ 122, %44 ], [ %53, %45 ]
  %56 = trunc i32 %55 to i8
  store i8 %56, ptr %25, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #3
  %57 = load ptr, ptr %14, align 8, !tbaa !5
  %58 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %57, i32 0, i32 11
  %59 = load i8, ptr %58, align 1, !tbaa !14
  %60 = zext i8 %59 to i32
  %61 = icmp eq i32 %60, 1
  br i1 %61, label %62, label %69

62:                                               ; preds = %54
  %63 = load ptr, ptr %14, align 8, !tbaa !5
  %64 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %63, i32 0, i32 9
  %65 = load i16, ptr %64, align 1, !tbaa !17
  %66 = zext i16 %65 to i32
  %67 = and i32 %66, 2
  %68 = icmp sgt i32 %67, 0
  br label %69

69:                                               ; preds = %62, %54
  %70 = phi i1 [ false, %54 ], [ %68, %62 ]
  %71 = zext i1 %70 to i64
  %72 = select i1 %70, i32 1, i32 0
  store i32 %72, ptr %26, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #3
  %73 = load ptr, ptr %14, align 8, !tbaa !5
  %74 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %73, i32 0, i32 11
  %75 = load i8, ptr %74, align 1, !tbaa !14
  %76 = zext i8 %75 to i32
  %77 = icmp eq i32 %76, 1
  br i1 %77, label %78, label %85

78:                                               ; preds = %69
  %79 = load ptr, ptr %14, align 8, !tbaa !5
  %80 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %79, i32 0, i32 9
  %81 = load i16, ptr %80, align 1, !tbaa !17
  %82 = zext i16 %81 to i32
  %83 = and i32 %82, 4
  %84 = icmp sgt i32 %83, 0
  br label %85

85:                                               ; preds = %78, %69
  %86 = phi i1 [ false, %69 ], [ %84, %78 ]
  %87 = zext i1 %86 to i64
  %88 = select i1 %86, i32 1, i32 0
  store i32 %88, ptr %27, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #3
  %89 = load ptr, ptr %14, align 8, !tbaa !5
  %90 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %89, i32 0, i32 11
  %91 = load i8, ptr %90, align 1, !tbaa !14
  %92 = zext i8 %91 to i32
  %93 = icmp eq i32 %92, 1
  br i1 %93, label %94, label %101

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

101:                                              ; preds = %94, %85
  %102 = phi i1 [ false, %85 ], [ %100, %94 ]
  %103 = zext i1 %102 to i64
  %104 = select i1 %102, i32 1, i32 0
  store i32 %104, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #3
  %105 = load ptr, ptr %14, align 8, !tbaa !5
  %106 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %105, i32 0, i32 9
  %107 = load i16, ptr %106, align 1, !tbaa !17
  %108 = zext i16 %107 to i32
  %109 = and i32 %108, 1024
  %110 = icmp sgt i32 %109, 0
  %111 = zext i1 %110 to i64
  %112 = select i1 %110, i32 1, i32 0
  store i32 %112, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #3
  %113 = load ptr, ptr %14, align 8, !tbaa !5
  %114 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %113, i32 0, i32 9
  %115 = load i16, ptr %114, align 1, !tbaa !17
  %116 = zext i16 %115 to i32
  %117 = and i32 %116, 16
  %118 = icmp sgt i32 %117, 0
  %119 = zext i1 %118 to i64
  %120 = select i1 %118, i32 1, i32 0
  store i32 %120, ptr %30, align 4, !tbaa !9
  %121 = load ptr, ptr %14, align 8, !tbaa !5
  %122 = call i32 @libxsmm_generator_mateltwise_is_binary_cmp_op(ptr noundef %121)
  %123 = icmp ugt i32 %122, 0
  br i1 %123, label %124, label %125

124:                                              ; preds = %101
  store i32 1, ptr %31, align 4
  br label %1459

125:                                              ; preds = %101
  %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 !18
  %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 !18
  %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 !20
  %154 = load i32, ptr %15, align 4, !tbaa !9
  %155 = urem i32 %153, %154
  store i32 %155, ptr %20, 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 !18
  %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 !20
  %166 = load i32, ptr %15, align 4, !tbaa !9
  %167 = urem i32 %165, %166
  store i32 %167, ptr %20, 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 ptr, ptr %14, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %171, i32 0, i32 11
  %173 = load i8, ptr %172, align 1, !tbaa !14
  %174 = zext i8 %173 to i32
  %175 = icmp eq i32 %174, 1
  br i1 %175, label %176, label %347

176:                                              ; preds = %170
  %177 = load ptr, ptr %14, align 8, !tbaa !5
  %178 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %177, i32 0, i32 10
  %179 = load i16, ptr %178, align 1, !tbaa !21
  %180 = zext i16 %179 to i32
  %181 = icmp eq i32 %180, 33
  br i1 %181, label %182, label %347

182:                                              ; preds = %176
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %183

183:                                              ; preds = %343, %182
  %184 = load i32, ptr %22, align 4, !tbaa !9
  %185 = load i32, ptr %18, align 4, !tbaa !9
  %186 = icmp ult i32 %184, %185
  br i1 %186, label %187, label %346

187:                                              ; preds = %183
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %188

188:                                              ; preds = %339, %187
  %189 = load i32, ptr %21, align 4, !tbaa !9
  %190 = load i32, ptr %17, align 4, !tbaa !9
  %191 = icmp ult i32 %189, %190
  br i1 %191, label %192, label %342

192:                                              ; preds = %188
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #3
  %193 = load ptr, ptr %11, align 8, !tbaa !5
  %194 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %193, i32 0, i32 6
  %195 = load i32, ptr %194, align 4, !tbaa !18
  %196 = icmp uge i32 %195, 1101
  %197 = zext i1 %196 to i64
  %198 = select i1 %196, i32 122, i32 121
  %199 = trunc i32 %198 to i8
  store i8 %199, ptr %32, align 1, !tbaa !13
  %200 = load i32, ptr %16, align 4, !tbaa !9
  %201 = load i32, ptr %22, align 4, !tbaa !9
  %202 = load i32, ptr %17, align 4, !tbaa !9
  %203 = mul i32 %201, %202
  %204 = add i32 %200, %203
  %205 = load i32, ptr %21, align 4, !tbaa !9
  %206 = add i32 %204, %205
  store i32 %206, ptr %24, align 4, !tbaa !9
  %207 = load i32, ptr %26, align 4, !tbaa !9
  %208 = icmp eq i32 %207, 1
  br i1 %208, label %209, label %215

209:                                              ; preds = %192
  %210 = load i32, ptr %16, align 4, !tbaa !9
  %211 = load i32, ptr %22, align 4, !tbaa !9
  %212 = load i32, ptr %17, align 4, !tbaa !9
  %213 = mul i32 %211, %212
  %214 = add i32 %210, %213
  store i32 %214, ptr %23, align 4, !tbaa !9
  br label %231

215:                                              ; preds = %192
  %216 = load i32, ptr %28, align 4, !tbaa !9
  %217 = icmp eq i32 %216, 1
  br i1 %217, label %218, label %220

218:                                              ; preds = %215
  %219 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %219, ptr %23, align 4, !tbaa !9
  br label %230

220:                                              ; preds = %215
  %221 = load i32, ptr %27, align 4, !tbaa !9
  %222 = icmp eq i32 %221, 1
  br i1 %222, label %223, label %227

223:                                              ; preds = %220
  %224 = load i32, ptr %16, align 4, !tbaa !9
  %225 = load i32, ptr %21, align 4, !tbaa !9
  %226 = add i32 %224, %225
  store i32 %226, ptr %23, align 4, !tbaa !9
  br label %229

227:                                              ; preds = %220
  %228 = load i32, ptr %24, align 4, !tbaa !9
  store i32 %228, ptr %23, align 4, !tbaa !9
  br label %229

229:                                              ; preds = %227, %223
  br label %230

230:                                              ; preds = %229, %218
  br label %231

231:                                              ; preds = %230, %209
  %232 = load ptr, ptr %11, align 8, !tbaa !5
  %233 = load ptr, ptr %11, align 8, !tbaa !5
  %234 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %233, i32 0, i32 6
  %235 = load i32, ptr %234, align 4, !tbaa !18
  %236 = load ptr, ptr %12, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %236, i32 0, i32 6
  %238 = load i32, ptr %237, align 4, !tbaa !22
  %239 = load i32, ptr %21, align 4, !tbaa !9
  %240 = load i32, ptr %15, align 4, !tbaa !9
  %241 = mul i32 %239, %240
  %242 = load i32, ptr %22, align 4, !tbaa !9
  %243 = load ptr, ptr %14, align 8, !tbaa !5
  %244 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %243, i32 0, i32 3
  %245 = load i32, ptr %244, align 1, !tbaa !24
  %246 = mul i32 %242, %245
  %247 = add i32 %241, %246
  %248 = load ptr, ptr %13, align 8, !tbaa !5
  %249 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %248, i32 0, i32 5
  %250 = load i32, ptr %249, align 4, !tbaa !11
  %251 = mul i32 %247, %250
  %252 = load i8, ptr %32, align 1, !tbaa !13
  %253 = load i32, ptr %23, align 4, !tbaa !9
  %254 = load i32, ptr %19, align 4, !tbaa !9
  %255 = icmp eq i32 %254, 1
  br i1 %255, label %256, label %263

256:                                              ; preds = %231
  %257 = load i32, ptr %21, align 4, !tbaa !9
  %258 = load i32, ptr %17, align 4, !tbaa !9
  %259 = sub i32 %258, 1
  %260 = icmp eq i32 %257, %259
  br i1 %260, label %261, label %263

261:                                              ; preds = %256
  %262 = load i32, ptr %20, align 4, !tbaa !9
  br label %264

263:                                              ; preds = %256, %231
  br label %264

264:                                              ; preds = %263, %261
  %265 = phi i32 [ %262, %261 ], [ 0, %263 ]
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %232, i32 noundef %235, i32 noundef 671491379, i32 noundef %238, i32 noundef 127, i32 noundef 0, i32 noundef %251, i8 noundef signext %252, i32 noundef %253, i32 noundef %265, i32 noundef 0, i32 noundef 1)
  %266 = load i32, ptr %26, align 4, !tbaa !9
  %267 = icmp eq i32 %266, 0
  br i1 %267, label %268, label %274

268:                                              ; preds = %264
  %269 = load i32, ptr %27, align 4, !tbaa !9
  %270 = icmp eq i32 %269, 0
  br i1 %270, label %271, label %274

271:                                              ; preds = %268
  %272 = load i32, ptr %28, align 4, !tbaa !9
  %273 = icmp eq i32 %272, 0
  br i1 %273, label %292, label %274

274:                                              ; preds = %271, %268, %264
  %275 = load i32, ptr %28, align 4, !tbaa !9
  %276 = icmp eq i32 %275, 1
  br i1 %276, label %277, label %283

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

280:                                              ; preds = %277
  %281 = load i32, ptr %21, align 4, !tbaa !9
  %282 = icmp eq i32 %281, 0
  br i1 %282, label %292, label %283

283:                                              ; preds = %280, %277, %274
  %284 = load i32, ptr %26, align 4, !tbaa !9
  %285 = icmp eq i32 %284, 1
  br i1 %285, label %286, label %289

286:                                              ; preds = %283
  %287 = load i32, ptr %21, align 4, !tbaa !9
  %288 = icmp eq i32 %287, 0
  br i1 %288, label %292, label %289

289:                                              ; preds = %286, %283
  %290 = load i32, ptr %27, align 4, !tbaa !9
  %291 = icmp eq i32 %290, 1
  br i1 %291, label %292, label %299

292:                                              ; preds = %289, %286, %280, %271
  %293 = load ptr, ptr %11, align 8, !tbaa !5
  %294 = load i8, ptr %32, align 1, !tbaa !13
  %295 = load i32, ptr %23, align 4, !tbaa !9
  %296 = load ptr, ptr %13, align 8, !tbaa !5
  %297 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %296, i32 0, i32 29
  %298 = load i32, ptr %297, align 4, !tbaa !25
  call void @libxsmm_x86_instruction_vec_compute_2reg_imm8(ptr noundef %293, i32 noundef 609031794, i8 noundef signext %294, i32 noundef %295, i32 noundef %298, i32 noundef 16)
  br label %299

299:                                              ; preds = %292, %289
  %300 = load ptr, ptr %11, align 8, !tbaa !5
  %301 = load ptr, ptr %11, align 8, !tbaa !5
  %302 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %301, i32 0, i32 6
  %303 = load i32, ptr %302, align 4, !tbaa !18
  %304 = load ptr, ptr %12, align 8, !tbaa !5
  %305 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %304, i32 0, i32 6
  %306 = load i32, ptr %305, align 4, !tbaa !22
  %307 = load ptr, ptr %12, align 8, !tbaa !5
  %308 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %307, i32 0, i32 11
  %309 = load i32, ptr %308, align 4, !tbaa !26
  %310 = load i32, ptr %21, align 4, !tbaa !9
  %311 = load i32, ptr %15, align 4, !tbaa !9
  %312 = mul i32 %310, %311
  %313 = load i32, ptr %22, align 4, !tbaa !9
  %314 = load ptr, ptr %14, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %314, i32 0, i32 3
  %316 = load i32, ptr %315, align 1, !tbaa !24
  %317 = mul i32 %313, %316
  %318 = add i32 %312, %317
  %319 = load ptr, ptr %13, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %319, i32 0, i32 5
  %321 = load i32, ptr %320, align 4, !tbaa !11
  %322 = mul i32 %318, %321
  %323 = load i8, ptr %32, align 1, !tbaa !13
  %324 = load ptr, ptr %13, align 8, !tbaa !5
  %325 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %324, i32 0, i32 29
  %326 = load i32, ptr %325, align 4, !tbaa !25
  %327 = load i32, ptr %19, align 4, !tbaa !9
  %328 = icmp eq i32 %327, 1
  br i1 %328, label %329, label %336

329:                                              ; preds = %299
  %330 = load i32, ptr %21, align 4, !tbaa !9
  %331 = load i32, ptr %17, align 4, !tbaa !9
  %332 = sub i32 %331, 1
  %333 = icmp eq i32 %330, %332
  br i1 %333, label %334, label %336

334:                                              ; preds = %329
  %335 = load i32, ptr %20, align 4, !tbaa !9
  br label %337

336:                                              ; preds = %329, %299
  br label %337

337:                                              ; preds = %336, %334
  %338 = phi i32 [ %335, %334 ], [ 0, %336 ]
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %300, i32 noundef %303, i32 noundef 671491379, i32 noundef %306, i32 noundef %309, i32 noundef 1, i32 noundef %322, i8 noundef signext %323, i32 noundef %326, i32 noundef %338, i32 noundef 0, i32 noundef 1)
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #3
  br label %339

339:                                              ; preds = %337
  %340 = load i32, ptr %21, align 4, !tbaa !9
  %341 = add i32 %340, 1
  store i32 %341, ptr %21, align 4, !tbaa !9
  br label %188, !llvm.loop !27

342:                                              ; preds = %188
  br label %343

343:                                              ; preds = %342
  %344 = load i32, ptr %22, align 4, !tbaa !9
  %345 = add i32 %344, 1
  store i32 %345, ptr %22, align 4, !tbaa !9
  br label %183, !llvm.loop !29

346:                                              ; preds = %183
  br label %1458

347:                                              ; preds = %176, %170
  %348 = load ptr, ptr %14, align 8, !tbaa !5
  %349 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %348, i32 0, i32 11
  %350 = load i8, ptr %349, align 1, !tbaa !14
  %351 = zext i8 %350 to i32
  %352 = icmp eq i32 %351, 1
  br i1 %352, label %353, label %755

353:                                              ; preds = %347
  %354 = load ptr, ptr %14, align 8, !tbaa !5
  %355 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %354, i32 0, i32 10
  %356 = load i16, ptr %355, align 1, !tbaa !21
  %357 = zext i16 %356 to i32
  %358 = icmp eq i32 %357, 64
  br i1 %358, label %365, label %359

359:                                              ; preds = %353
  %360 = load ptr, ptr %14, align 8, !tbaa !5
  %361 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %360, i32 0, i32 10
  %362 = load i16, ptr %361, align 1, !tbaa !21
  %363 = zext i16 %362 to i32
  %364 = icmp eq i32 %363, 65
  br i1 %364, label %365, label %755

365:                                              ; preds = %359, %353
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #3
  %366 = load i32, ptr %15, align 4, !tbaa !9
  %367 = load ptr, ptr %13, align 8, !tbaa !5
  %368 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %367, i32 0, i32 2
  %369 = load i32, ptr %368, align 4, !tbaa !30
  %370 = mul i32 %366, %369
  %371 = icmp eq i32 %370, 64
  br i1 %371, label %372, label %373

372:                                              ; preds = %365
  br label %382

373:                                              ; preds = %365
  %374 = load i32, ptr %15, align 4, !tbaa !9
  %375 = load ptr, ptr %13, align 8, !tbaa !5
  %376 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %375, i32 0, i32 2
  %377 = load i32, ptr %376, align 4, !tbaa !30
  %378 = mul i32 %374, %377
  %379 = icmp eq i32 %378, 32
  %380 = zext i1 %379 to i64
  %381 = select i1 %379, i32 121, i32 120
  br label %382

382:                                              ; preds = %373, %372
  %383 = phi i32 [ 122, %372 ], [ %381, %373 ]
  %384 = trunc i32 %383 to i8
  store i8 %384, ptr %33, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #3
  %385 = load i32, ptr %15, align 4, !tbaa !9
  %386 = load ptr, ptr %13, align 8, !tbaa !5
  %387 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %386, i32 0, i32 5
  %388 = load i32, ptr %387, align 4, !tbaa !11
  %389 = mul i32 %385, %388
  %390 = icmp eq i32 %389, 32
  %391 = zext i1 %390 to i64
  %392 = select i1 %390, i32 121, i32 120
  %393 = trunc i32 %392 to i8
  store i8 %393, ptr %34, align 1, !tbaa !13
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %394

394:                                              ; preds = %751, %382
  %395 = load i32, ptr %22, align 4, !tbaa !9
  %396 = load i32, ptr %18, align 4, !tbaa !9
  %397 = icmp ult i32 %395, %396
  br i1 %397, label %398, label %754

398:                                              ; preds = %394
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %399

399:                                              ; preds = %747, %398
  %400 = load i32, ptr %21, align 4, !tbaa !9
  %401 = load i32, ptr %17, align 4, !tbaa !9
  %402 = icmp ult i32 %400, %401
  br i1 %402, label %403, label %750

403:                                              ; preds = %399
  %404 = load i32, ptr %16, align 4, !tbaa !9
  %405 = load i32, ptr %22, align 4, !tbaa !9
  %406 = load i32, ptr %17, align 4, !tbaa !9
  %407 = mul i32 %405, %406
  %408 = add i32 %404, %407
  %409 = load i32, ptr %21, align 4, !tbaa !9
  %410 = add i32 %408, %409
  store i32 %410, ptr %23, align 4, !tbaa !9
  %411 = load i32, ptr %26, align 4, !tbaa !9
  %412 = icmp eq i32 %411, 1
  br i1 %412, label %413, label %419

413:                                              ; preds = %403
  %414 = load i32, ptr %16, align 4, !tbaa !9
  %415 = load i32, ptr %22, align 4, !tbaa !9
  %416 = load i32, ptr %17, align 4, !tbaa !9
  %417 = mul i32 %415, %416
  %418 = add i32 %414, %417
  store i32 %418, ptr %23, align 4, !tbaa !9
  br label %419

419:                                              ; preds = %413, %403
  %420 = load i32, ptr %28, align 4, !tbaa !9
  %421 = icmp eq i32 %420, 1
  br i1 %421, label %422, label %424

422:                                              ; preds = %419
  %423 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %423, ptr %23, align 4, !tbaa !9
  br label %424

424:                                              ; preds = %422, %419
  %425 = load i32, ptr %27, align 4, !tbaa !9
  %426 = icmp eq i32 %425, 1
  br i1 %426, label %427, label %431

427:                                              ; preds = %424
  %428 = load i32, ptr %16, align 4, !tbaa !9
  %429 = load i32, ptr %21, align 4, !tbaa !9
  %430 = add i32 %428, %429
  store i32 %430, ptr %23, align 4, !tbaa !9
  br label %431

431:                                              ; preds = %427, %424
  %432 = load ptr, ptr %11, align 8, !tbaa !5
  %433 = load i8, ptr %33, align 1, !tbaa !13
  %434 = load i32, ptr %23, align 4, !tbaa !9
  %435 = load ptr, ptr %13, align 8, !tbaa !5
  %436 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %435, i32 0, i32 86
  %437 = load i32, ptr %436, align 4, !tbaa !31
  %438 = load ptr, ptr %13, align 8, !tbaa !5
  %439 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %438, i32 0, i32 57
  %440 = load i32, ptr %439, align 4, !tbaa !32
  call void @libxsmm_x86_instruction_vec_compute_2reg_mask(ptr noundef %432, i32 noundef -528017809, i8 noundef signext %433, i32 noundef %434, i32 noundef %437, i32 noundef %440, i32 noundef 1)
  %441 = load ptr, ptr %11, align 8, !tbaa !5
  %442 = load i8, ptr %33, align 1, !tbaa !13
  %443 = load ptr, ptr %13, align 8, !tbaa !5
  %444 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %443, i32 0, i32 86
  %445 = load i32, ptr %444, align 4, !tbaa !31
  %446 = load i32, ptr %23, align 4, !tbaa !9
  %447 = load ptr, ptr %13, align 8, !tbaa !5
  %448 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %447, i32 0, i32 88
  %449 = load i32, ptr %448, align 4, !tbaa !33
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %441, i32 noundef 805574236, i8 noundef signext %442, i32 noundef %445, i32 noundef %446, i32 noundef %449)
  %450 = load ptr, ptr %14, align 8, !tbaa !5
  %451 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %450, i32 0, i32 10
  %452 = load i16, ptr %451, align 1, !tbaa !21
  %453 = zext i16 %452 to i32
  %454 = icmp eq i32 %453, 65
  br i1 %454, label %455, label %523

455:                                              ; preds = %431
  %456 = load ptr, ptr %11, align 8, !tbaa !5
  %457 = load i8, ptr %33, align 1, !tbaa !13
  %458 = load ptr, ptr %13, align 8, !tbaa !5
  %459 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %458, i32 0, i32 88
  %460 = load i32, ptr %459, align 4, !tbaa !33
  %461 = load ptr, ptr %13, align 8, !tbaa !5
  %462 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %461, i32 0, i32 87
  %463 = load i32, ptr %462, align 4, !tbaa !34
  %464 = load ptr, ptr %13, align 8, !tbaa !5
  %465 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %464, i32 0, i32 57
  %466 = load i32, ptr %465, align 4, !tbaa !32
  call void @libxsmm_x86_instruction_vec_compute_2reg_mask(ptr noundef %456, i32 noundef -528017809, i8 noundef signext %457, i32 noundef %460, i32 noundef %463, i32 noundef %466, i32 noundef 1)
  %467 = load ptr, ptr %11, align 8, !tbaa !5
  %468 = load i8, ptr %33, align 1, !tbaa !13
  %469 = load ptr, ptr %13, align 8, !tbaa !5
  %470 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %469, i32 0, i32 87
  %471 = load i32, ptr %470, align 4, !tbaa !34
  %472 = load ptr, ptr %13, align 8, !tbaa !5
  %473 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %472, i32 0, i32 88
  %474 = load i32, ptr %473, align 4, !tbaa !33
  %475 = load ptr, ptr %13, align 8, !tbaa !5
  %476 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %475, i32 0, i32 88
  %477 = load i32, ptr %476, align 4, !tbaa !33
  call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %467, i32 noundef 805574236, i8 noundef signext %468, i32 noundef %471, i32 noundef %474, i32 noundef %477)
  %478 = load ptr, ptr %11, align 8, !tbaa !5
  %479 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %478, i32 0, i32 6
  %480 = load i32, ptr %479, align 4, !tbaa !18
  %481 = icmp uge i32 %480, 1103
  br i1 %481, label %492, label %482

482:                                              ; preds = %455
  %483 = load ptr, ptr %11, align 8, !tbaa !5
  %484 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %483, i32 0, i32 6
  %485 = load i32, ptr %484, align 4, !tbaa !18
  %486 = icmp eq i32 %485, 1053
  br i1 %486, label %492, label %487

487:                                              ; preds = %482
  %488 = load ptr, ptr %11, align 8, !tbaa !5
  %489 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %488, i32 0, i32 6
  %490 = load i32, ptr %489, align 4, !tbaa !18
  %491 = icmp eq i32 %490, 1008
  br i1 %491, label %492, label %501

492:                                              ; preds = %487, %482, %455
  %493 = load ptr, ptr %11, align 8, !tbaa !5
  %494 = load i8, ptr %33, align 1, !tbaa !13
  %495 = load ptr, ptr %13, align 8, !tbaa !5
  %496 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %495, i32 0, i32 88
  %497 = load i32, ptr %496, align 4, !tbaa !33
  %498 = load ptr, ptr %13, align 8, !tbaa !5
  %499 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %498, i32 0, i32 88
  %500 = load i32, ptr %499, align 4, !tbaa !33
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %493, i32 noundef 537273970, i8 noundef signext %494, i32 noundef %497, i32 noundef %500)
  br label %522

501:                                              ; preds = %487
  %502 = load ptr, ptr %11, align 8, !tbaa !5
  %503 = load i8, ptr %33, align 1, !tbaa !13
  %504 = load ptr, ptr %13, align 8, !tbaa !5
  %505 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %504, i32 0, i32 88
  %506 = load i32, ptr %505, align 4, !tbaa !33
  %507 = load ptr, ptr %13, align 8, !tbaa !5
  %508 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %507, i32 0, i32 88
  %509 = load i32, ptr %508, align 4, !tbaa !33
  %510 = load ptr, ptr %13, align 8, !tbaa !5
  %511 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %510, i32 0, i32 24
  %512 = load i32, ptr %511, align 4, !tbaa !35
  %513 = load ptr, ptr %13, align 8, !tbaa !5
  %514 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %513, i32 0, i32 25
  %515 = load i32, ptr %514, align 4, !tbaa !36
  %516 = load ptr, ptr %13, align 8, !tbaa !5
  %517 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %516, i32 0, i32 21
  %518 = load i32, ptr %517, align 4, !tbaa !37
  %519 = load ptr, ptr %13, align 8, !tbaa !5
  %520 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %519, i32 0, i32 22
  %521 = load i32, ptr %520, align 4, !tbaa !38
  call void @libxsmm_generator_vcvtneps2bf16_avx512_preppedstack(ptr noundef %502, i8 noundef signext %503, i32 noundef %506, i32 noundef %509, i32 noundef %512, i32 noundef %515, i32 noundef %518, i32 noundef %521, i32 noundef 0)
  br label %522

522:                                              ; preds = %501, %492
  br label %569

523:                                              ; preds = %431
  %524 = load ptr, ptr %11, align 8, !tbaa !5
  %525 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %524, i32 0, i32 6
  %526 = load i32, ptr %525, align 4, !tbaa !18
  %527 = icmp uge i32 %526, 1103
  br i1 %527, label %538, label %528

528:                                              ; preds = %523
  %529 = load ptr, ptr %11, align 8, !tbaa !5
  %530 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %529, i32 0, i32 6
  %531 = load i32, ptr %530, align 4, !tbaa !18
  %532 = icmp eq i32 %531, 1053
  br i1 %532, label %538, label %533

533:                                              ; preds = %528
  %534 = load ptr, ptr %11, align 8, !tbaa !5
  %535 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %534, i32 0, i32 6
  %536 = load i32, ptr %535, align 4, !tbaa !18
  %537 = icmp eq i32 %536, 1008
  br i1 %537, label %538, label %547

538:                                              ; preds = %533, %528, %523
  %539 = load ptr, ptr %11, align 8, !tbaa !5
  %540 = load i8, ptr %33, align 1, !tbaa !13
  %541 = load ptr, ptr %13, align 8, !tbaa !5
  %542 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %541, i32 0, i32 88
  %543 = load i32, ptr %542, align 4, !tbaa !33
  %544 = load ptr, ptr %13, align 8, !tbaa !5
  %545 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %544, i32 0, i32 87
  %546 = load i32, ptr %545, align 4, !tbaa !34
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %539, i32 noundef 537273970, i8 noundef signext %540, i32 noundef %543, i32 noundef %546)
  br label %568

547:                                              ; preds = %533
  %548 = load ptr, ptr %11, align 8, !tbaa !5
  %549 = load i8, ptr %33, align 1, !tbaa !13
  %550 = load ptr, ptr %13, align 8, !tbaa !5
  %551 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %550, i32 0, i32 88
  %552 = load i32, ptr %551, align 4, !tbaa !33
  %553 = load ptr, ptr %13, align 8, !tbaa !5
  %554 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %553, i32 0, i32 87
  %555 = load i32, ptr %554, align 4, !tbaa !34
  %556 = load ptr, ptr %13, align 8, !tbaa !5
  %557 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %556, i32 0, i32 24
  %558 = load i32, ptr %557, align 4, !tbaa !35
  %559 = load ptr, ptr %13, align 8, !tbaa !5
  %560 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %559, i32 0, i32 25
  %561 = load i32, ptr %560, align 4, !tbaa !36
  %562 = load ptr, ptr %13, align 8, !tbaa !5
  %563 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %562, i32 0, i32 21
  %564 = load i32, ptr %563, align 4, !tbaa !37
  %565 = load ptr, ptr %13, align 8, !tbaa !5
  %566 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %565, i32 0, i32 22
  %567 = load i32, ptr %566, align 4, !tbaa !38
  call void @libxsmm_generator_vcvtneps2bf16_avx512_preppedstack(ptr noundef %548, i8 noundef signext %549, i32 noundef %552, i32 noundef %555, i32 noundef %558, i32 noundef %561, i32 noundef %564, i32 noundef %567, i32 noundef 0)
  br label %568

568:                                              ; preds = %547, %538
  br label %569

569:                                              ; preds = %568, %522
  %570 = load ptr, ptr %11, align 8, !tbaa !5
  %571 = load i8, ptr %33, align 1, !tbaa !13
  %572 = load ptr, ptr %13, align 8, !tbaa !5
  %573 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %572, i32 0, i32 86
  %574 = load i32, ptr %573, align 4, !tbaa !31
  %575 = load ptr, ptr %13, align 8, !tbaa !5
  %576 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %575, i32 0, i32 86
  %577 = load i32, ptr %576, align 4, !tbaa !31
  call void @libxsmm_x86_instruction_vec_compute_2reg_imm8(ptr noundef %570, i32 noundef 609031794, i8 noundef signext %571, i32 noundef %574, i32 noundef %577, i32 noundef 16)
  %578 = load ptr, ptr %11, align 8, !tbaa !5
  %579 = load ptr, ptr %11, align 8, !tbaa !5
  %580 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %579, i32 0, i32 6
  %581 = load i32, ptr %580, align 4, !tbaa !18
  %582 = load ptr, ptr %12, align 8, !tbaa !5
  %583 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %582, i32 0, i32 6
  %584 = load i32, ptr %583, align 4, !tbaa !22
  %585 = load i32, ptr %21, align 4, !tbaa !9
  %586 = load i32, ptr %15, align 4, !tbaa !9
  %587 = mul i32 %585, %586
  %588 = load i32, ptr %22, 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 3
  %591 = load i32, ptr %590, align 1, !tbaa !24
  %592 = mul i32 %588, %591
  %593 = add i32 %587, %592
  %594 = load ptr, ptr %13, align 8, !tbaa !5
  %595 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %594, i32 0, i32 5
  %596 = load i32, ptr %595, align 4, !tbaa !11
  %597 = mul i32 %593, %596
  %598 = load i8, ptr %33, align 1, !tbaa !13
  %599 = load ptr, ptr %13, align 8, !tbaa !5
  %600 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %599, i32 0, i32 86
  %601 = load i32, ptr %600, align 4, !tbaa !31
  %602 = load i32, ptr %19, align 4, !tbaa !9
  %603 = icmp eq i32 %602, 1
  br i1 %603, label %604, label %611

604:                                              ; preds = %569
  %605 = load i32, ptr %21, align 4, !tbaa !9
  %606 = load i32, ptr %17, align 4, !tbaa !9
  %607 = sub i32 %606, 1
  %608 = icmp eq i32 %605, %607
  br i1 %608, label %609, label %611

609:                                              ; preds = %604
  %610 = load i32, ptr %20, align 4, !tbaa !9
  br label %612

611:                                              ; preds = %604, %569
  br label %612

612:                                              ; preds = %611, %609
  %613 = phi i32 [ %610, %609 ], [ 0, %611 ]
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %578, i32 noundef %581, i32 noundef 671491379, i32 noundef %584, i32 noundef 127, i32 noundef 0, i32 noundef %597, i8 noundef signext %598, i32 noundef %601, i32 noundef %613, i32 noundef 0, i32 noundef 1)
  %614 = load ptr, ptr %14, align 8, !tbaa !5
  %615 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %614, i32 0, i32 10
  %616 = load i16, ptr %615, align 1, !tbaa !21
  %617 = zext i16 %616 to i32
  %618 = icmp eq i32 %617, 65
  br i1 %618, label %619, label %706

619:                                              ; preds = %612
  %620 = load ptr, ptr %11, align 8, !tbaa !5
  %621 = load i8, ptr %33, align 1, !tbaa !13
  %622 = load ptr, ptr %13, align 8, !tbaa !5
  %623 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %622, i32 0, i32 87
  %624 = load i32, ptr %623, align 4, !tbaa !34
  %625 = load ptr, ptr %13, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %625, i32 0, i32 87
  %627 = load i32, ptr %626, align 4, !tbaa !34
  call void @libxsmm_x86_instruction_vec_compute_2reg_imm8(ptr noundef %620, i32 noundef 609031794, i8 noundef signext %621, i32 noundef %624, i32 noundef %627, i32 noundef 16)
  %628 = load ptr, ptr %11, align 8, !tbaa !5
  %629 = load ptr, ptr %11, align 8, !tbaa !5
  %630 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %629, i32 0, i32 6
  %631 = load i32, ptr %630, align 4, !tbaa !18
  %632 = load ptr, ptr %12, align 8, !tbaa !5
  %633 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %632, i32 0, i32 6
  %634 = load i32, ptr %633, align 4, !tbaa !22
  %635 = load ptr, ptr %12, align 8, !tbaa !5
  %636 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %635, i32 0, i32 11
  %637 = load i32, ptr %636, align 4, !tbaa !26
  %638 = load i32, ptr %21, align 4, !tbaa !9
  %639 = load i32, ptr %15, align 4, !tbaa !9
  %640 = mul i32 %638, %639
  %641 = load i32, ptr %22, align 4, !tbaa !9
  %642 = load ptr, ptr %14, align 8, !tbaa !5
  %643 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %642, i32 0, i32 3
  %644 = load i32, ptr %643, align 1, !tbaa !24
  %645 = mul i32 %641, %644
  %646 = add i32 %640, %645
  %647 = load ptr, ptr %13, align 8, !tbaa !5
  %648 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %647, i32 0, i32 5
  %649 = load i32, ptr %648, align 4, !tbaa !11
  %650 = mul i32 %646, %649
  %651 = load i8, ptr %33, align 1, !tbaa !13
  %652 = load ptr, ptr %13, align 8, !tbaa !5
  %653 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %652, i32 0, i32 87
  %654 = load i32, ptr %653, align 4, !tbaa !34
  %655 = load i32, ptr %19, align 4, !tbaa !9
  %656 = icmp eq i32 %655, 1
  br i1 %656, label %657, label %664

657:                                              ; preds = %619
  %658 = load i32, ptr %21, align 4, !tbaa !9
  %659 = load i32, ptr %17, align 4, !tbaa !9
  %660 = sub i32 %659, 1
  %661 = icmp eq i32 %658, %660
  br i1 %661, label %662, label %664

662:                                              ; preds = %657
  %663 = load i32, ptr %20, align 4, !tbaa !9
  br label %665

664:                                              ; preds = %657, %619
  br label %665

665:                                              ; preds = %664, %662
  %666 = phi i32 [ %663, %662 ], [ 0, %664 ]
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %628, i32 noundef %631, i32 noundef 671491379, i32 noundef %634, i32 noundef %637, i32 noundef 1, i32 noundef %650, i8 noundef signext %651, i32 noundef %654, i32 noundef %666, i32 noundef 0, i32 noundef 1)
  %667 = load ptr, ptr %11, align 8, !tbaa !5
  %668 = load ptr, ptr %11, align 8, !tbaa !5
  %669 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %668, i32 0, i32 6
  %670 = load i32, ptr %669, align 4, !tbaa !18
  %671 = load ptr, ptr %12, align 8, !tbaa !5
  %672 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %671, i32 0, i32 6
  %673 = load i32, ptr %672, align 4, !tbaa !22
  %674 = load ptr, ptr %12, align 8, !tbaa !5
  %675 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %674, i32 0, i32 12
  %676 = load i32, ptr %675, align 4, !tbaa !39
  %677 = load i32, ptr %21, align 4, !tbaa !9
  %678 = load i32, ptr %15, align 4, !tbaa !9
  %679 = mul i32 %677, %678
  %680 = load i32, ptr %22, align 4, !tbaa !9
  %681 = load ptr, ptr %14, align 8, !tbaa !5
  %682 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %681, i32 0, i32 3
  %683 = load i32, ptr %682, align 1, !tbaa !24
  %684 = mul i32 %680, %683
  %685 = add i32 %679, %684
  %686 = load ptr, ptr %13, align 8, !tbaa !5
  %687 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %686, i32 0, i32 5
  %688 = load i32, ptr %687, align 4, !tbaa !11
  %689 = mul i32 %685, %688
  %690 = load i8, ptr %34, align 1, !tbaa !13
  %691 = load ptr, ptr %13, align 8, !tbaa !5
  %692 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %691, i32 0, i32 88
  %693 = load i32, ptr %692, align 4, !tbaa !33
  %694 = load i32, ptr %19, align 4, !tbaa !9
  %695 = icmp eq i32 %694, 1
  br i1 %695, label %696, label %703

696:                                              ; preds = %665
  %697 = load i32, ptr %21, align 4, !tbaa !9
  %698 = load i32, ptr %17, align 4, !tbaa !9
  %699 = sub i32 %698, 1
  %700 = icmp eq i32 %697, %699
  br i1 %700, label %701, label %703

701:                                              ; preds = %696
  %702 = load i32, ptr %20, align 4, !tbaa !9
  br label %704

703:                                              ; preds = %696, %665
  br label %704

704:                                              ; preds = %703, %701
  %705 = phi i32 [ %702, %701 ], [ 0, %703 ]
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %667, i32 noundef %670, i32 noundef -528017809, i32 noundef %673, i32 noundef %676, i32 noundef 1, i32 noundef %689, i8 noundef signext %690, i32 noundef %693, i32 noundef %705, i32 noundef 0, i32 noundef 1)
  br label %746

706:                                              ; preds = %612
  %707 = load ptr, ptr %11, align 8, !tbaa !5
  %708 = load ptr, ptr %11, align 8, !tbaa !5
  %709 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %708, i32 0, i32 6
  %710 = load i32, ptr %709, align 4, !tbaa !18
  %711 = load ptr, ptr %12, align 8, !tbaa !5
  %712 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %711, i32 0, i32 6
  %713 = load i32, ptr %712, align 4, !tbaa !22
  %714 = load ptr, ptr %12, align 8, !tbaa !5
  %715 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %714, i32 0, i32 11
  %716 = load i32, ptr %715, align 4, !tbaa !26
  %717 = load i32, ptr %21, align 4, !tbaa !9
  %718 = load i32, ptr %15, align 4, !tbaa !9
  %719 = mul i32 %717, %718
  %720 = load i32, ptr %22, align 4, !tbaa !9
  %721 = load ptr, ptr %14, align 8, !tbaa !5
  %722 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %721, i32 0, i32 3
  %723 = load i32, ptr %722, align 1, !tbaa !24
  %724 = mul i32 %720, %723
  %725 = add i32 %719, %724
  %726 = load ptr, ptr %13, align 8, !tbaa !5
  %727 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %726, i32 0, i32 5
  %728 = load i32, ptr %727, align 4, !tbaa !11
  %729 = mul i32 %725, %728
  %730 = load i8, ptr %34, align 1, !tbaa !13
  %731 = load ptr, ptr %13, align 8, !tbaa !5
  %732 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %731, i32 0, i32 87
  %733 = load i32, ptr %732, align 4, !tbaa !34
  %734 = load i32, ptr %19, align 4, !tbaa !9
  %735 = icmp eq i32 %734, 1
  br i1 %735, label %736, label %743

736:                                              ; preds = %706
  %737 = load i32, ptr %21, align 4, !tbaa !9
  %738 = load i32, ptr %17, align 4, !tbaa !9
  %739 = sub i32 %738, 1
  %740 = icmp eq i32 %737, %739
  br i1 %740, label %741, label %743

741:                                              ; preds = %736
  %742 = load i32, ptr %20, align 4, !tbaa !9
  br label %744

743:                                              ; preds = %736, %706
  br label %744

744:                                              ; preds = %743, %741
  %745 = phi i32 [ %742, %741 ], [ 0, %743 ]
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %707, i32 noundef %710, i32 noundef -528017809, i32 noundef %713, i32 noundef %716, i32 noundef 1, i32 noundef %729, i8 noundef signext %730, i32 noundef %733, i32 noundef %745, i32 noundef 0, i32 noundef 1)
  br label %746

746:                                              ; preds = %744, %704
  br label %747

747:                                              ; preds = %746
  %748 = load i32, ptr %21, align 4, !tbaa !9
  %749 = add i32 %748, 1
  store i32 %749, ptr %21, align 4, !tbaa !9
  br label %399, !llvm.loop !40

750:                                              ; preds = %399
  br label %751

751:                                              ; preds = %750
  %752 = load i32, ptr %22, align 4, !tbaa !9
  %753 = add i32 %752, 1
  store i32 %753, ptr %22, align 4, !tbaa !9
  br label %394, !llvm.loop !41

754:                                              ; preds = %394
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #3
  br label %1457

755:                                              ; preds = %359, %347
  %756 = load ptr, ptr %14, align 8, !tbaa !5
  %757 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %756, i32 0, i32 11
  %758 = load i8, ptr %757, align 1, !tbaa !14
  %759 = zext i8 %758 to i32
  %760 = icmp eq i32 %759, 2
  br i1 %760, label %761, label %845

761:                                              ; preds = %755
  %762 = load ptr, ptr %14, align 8, !tbaa !5
  %763 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %762, i32 0, i32 10
  %764 = load i16, ptr %763, align 1, !tbaa !21
  %765 = zext i16 %764 to i32
  %766 = icmp eq i32 %765, 26
  br i1 %766, label %767, label %845

767:                                              ; preds = %761
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %768

768:                                              ; preds = %841, %767
  %769 = load i32, ptr %22, align 4, !tbaa !9
  %770 = load i32, ptr %18, align 4, !tbaa !9
  %771 = icmp ult i32 %769, %770
  br i1 %771, label %772, label %844

772:                                              ; preds = %768
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %773

773:                                              ; preds = %837, %772
  %774 = load i32, ptr %21, align 4, !tbaa !9
  %775 = load i32, ptr %17, align 4, !tbaa !9
  %776 = icmp ult i32 %774, %775
  br i1 %776, label %777, label %840

777:                                              ; preds = %773
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #3
  %778 = load ptr, ptr %11, align 8, !tbaa !5
  %779 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %778, i32 0, i32 6
  %780 = load i32, ptr %779, align 4, !tbaa !18
  %781 = icmp uge i32 %780, 1101
  %782 = zext i1 %781 to i64
  %783 = select i1 %781, i32 122, i32 121
  %784 = trunc i32 %783 to i8
  store i8 %784, ptr %35, align 1, !tbaa !13
  %785 = load i32, ptr %16, align 4, !tbaa !9
  %786 = load i32, ptr %22, align 4, !tbaa !9
  %787 = load i32, ptr %17, align 4, !tbaa !9
  %788 = mul i32 %786, %787
  %789 = add i32 %785, %788
  %790 = load i32, ptr %21, align 4, !tbaa !9
  %791 = add i32 %789, %790
  store i32 %791, ptr %23, align 4, !tbaa !9
  %792 = load ptr, ptr %11, align 8, !tbaa !5
  %793 = load ptr, ptr %13, align 8, !tbaa !5
  %794 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %793, i32 0, i32 9
  %795 = load i32, ptr %794, align 4, !tbaa !42
  %796 = load ptr, ptr %12, align 8, !tbaa !5
  %797 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %796, i32 0, i32 6
  %798 = load i32, ptr %797, align 4, !tbaa !22
  %799 = load i32, ptr %21, align 4, !tbaa !9
  %800 = load i32, ptr %15, align 4, !tbaa !9
  %801 = mul i32 %799, %800
  %802 = load i32, ptr %22, align 4, !tbaa !9
  %803 = load ptr, ptr %14, align 8, !tbaa !5
  %804 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %803, i32 0, i32 3
  %805 = load i32, ptr %804, align 1, !tbaa !24
  %806 = mul i32 %802, %805
  %807 = add i32 %801, %806
  %808 = load ptr, ptr %13, align 8, !tbaa !5
  %809 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %808, i32 0, i32 5
  %810 = load i32, ptr %809, align 4, !tbaa !11
  %811 = mul i32 %807, %810
  %812 = load i8, ptr %35, align 1, !tbaa !13
  %813 = load i32, ptr %23, align 4, !tbaa !9
  %814 = load i32, ptr %19, align 4, !tbaa !9
  %815 = icmp eq i32 %814, 1
  br i1 %815, label %816, label %821

816:                                              ; preds = %777
  %817 = load i32, ptr %21, align 4, !tbaa !9
  %818 = load i32, ptr %17, align 4, !tbaa !9
  %819 = sub i32 %818, 1
  %820 = icmp eq i32 %817, %819
  br label %821

821:                                              ; preds = %816, %777
  %822 = phi i1 [ false, %777 ], [ %820, %816 ]
  %823 = zext i1 %822 to i64
  %824 = select i1 %822, i32 1, i32 0
  %825 = load i32, ptr %19, align 4, !tbaa !9
  %826 = icmp eq i32 %825, 1
  br i1 %826, label %827, label %834

827:                                              ; preds = %821
  %828 = load i32, ptr %21, align 4, !tbaa !9
  %829 = load i32, ptr %17, align 4, !tbaa !9
  %830 = sub i32 %829, 1
  %831 = icmp eq i32 %828, %830
  br i1 %831, label %832, label %834

832:                                              ; preds = %827
  %833 = load i32, ptr %20, align 4, !tbaa !9
  br label %835

834:                                              ; preds = %827, %821
  br label %835

835:                                              ; preds = %834, %832
  %836 = phi i32 [ %833, %832 ], [ 0, %834 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %792, i32 noundef %795, i32 noundef %798, i32 noundef 127, i32 noundef 0, i32 noundef %811, i8 noundef signext %812, i32 noundef %813, i32 noundef %824, i32 noundef %836, i32 noundef 1)
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #3
  br label %837

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

840:                                              ; preds = %773
  br label %841

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

844:                                              ; preds = %768
  br label %1456

845:                                              ; preds = %761, %755
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %846

846:                                              ; preds = %1452, %845
  %847 = load i32, ptr %22, align 4, !tbaa !9
  %848 = load i32, ptr %18, align 4, !tbaa !9
  %849 = icmp ult i32 %847, %848
  br i1 %849, label %850, label %1455

850:                                              ; preds = %846
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %851

851:                                              ; preds = %1448, %850
  %852 = load i32, ptr %21, align 4, !tbaa !9
  %853 = load i32, ptr %17, align 4, !tbaa !9
  %854 = icmp ult i32 %852, %853
  br i1 %854, label %855, label %1451

855:                                              ; preds = %851
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #3
  %856 = load ptr, ptr %13, align 8, !tbaa !5
  %857 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %856, i32 0, i32 9
  %858 = load i32, ptr %857, align 4, !tbaa !42
  store i32 %858, ptr %36, align 4, !tbaa !9
  %859 = load i32, ptr %16, align 4, !tbaa !9
  %860 = load i32, ptr %22, align 4, !tbaa !9
  %861 = load i32, ptr %17, align 4, !tbaa !9
  %862 = mul i32 %860, %861
  %863 = add i32 %859, %862
  %864 = load i32, ptr %21, align 4, !tbaa !9
  %865 = add i32 %863, %864
  store i32 %865, ptr %23, align 4, !tbaa !9
  %866 = load i32, ptr %16, align 4, !tbaa !9
  %867 = load i32, ptr %22, align 4, !tbaa !9
  %868 = load i32, ptr %17, align 4, !tbaa !9
  %869 = mul i32 %867, %868
  %870 = add i32 %866, %869
  %871 = load i32, ptr %21, align 4, !tbaa !9
  %872 = add i32 %870, %871
  store i32 %872, ptr %24, align 4, !tbaa !9
  %873 = load ptr, ptr %14, align 8, !tbaa !5
  %874 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %873, i32 0, i32 11
  %875 = load i8, ptr %874, align 1, !tbaa !14
  %876 = zext i8 %875 to i32
  %877 = icmp eq i32 %876, 1
  br i1 %877, label %878, label %888

878:                                              ; preds = %855
  %879 = load ptr, ptr %14, align 8, !tbaa !5
  %880 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %879, i32 0, i32 10
  %881 = load i16, ptr %880, align 1, !tbaa !21
  %882 = zext i16 %881 to i32
  %883 = icmp eq i32 %882, 2
  br i1 %883, label %884, label %888

884:                                              ; preds = %878
  %885 = load ptr, ptr %13, align 8, !tbaa !5
  %886 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %885, i32 0, i32 32
  %887 = load i32, ptr %886, align 4, !tbaa !45
  store i32 %887, ptr %23, align 4, !tbaa !9
  br label %910

888:                                              ; preds = %878, %855
  %889 = load i32, ptr %26, align 4, !tbaa !9
  %890 = icmp eq i32 %889, 1
  br i1 %890, label %891, label %897

891:                                              ; preds = %888
  %892 = load i32, ptr %16, align 4, !tbaa !9
  %893 = load i32, ptr %22, align 4, !tbaa !9
  %894 = load i32, ptr %17, align 4, !tbaa !9
  %895 = mul i32 %893, %894
  %896 = add i32 %892, %895
  store i32 %896, ptr %23, align 4, !tbaa !9
  br label %897

897:                                              ; preds = %891, %888
  %898 = load i32, ptr %28, align 4, !tbaa !9
  %899 = icmp eq i32 %898, 1
  br i1 %899, label %900, label %902

900:                                              ; preds = %897
  %901 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %901, ptr %23, align 4, !tbaa !9
  br label %902

902:                                              ; preds = %900, %897
  %903 = load i32, ptr %27, align 4, !tbaa !9
  %904 = icmp eq i32 %903, 1
  br i1 %904, label %905, label %909

905:                                              ; preds = %902
  %906 = load i32, ptr %16, align 4, !tbaa !9
  %907 = load i32, ptr %21, align 4, !tbaa !9
  %908 = add i32 %906, %907
  store i32 %908, ptr %23, align 4, !tbaa !9
  br label %909

909:                                              ; preds = %905, %902
  br label %910

910:                                              ; preds = %909, %884
  %911 = load i32, ptr %23, align 4, !tbaa !9
  %912 = load i32, ptr %24, align 4, !tbaa !9
  %913 = icmp eq i32 %911, %912
  br i1 %913, label %914, label %1299

914:                                              ; preds = %910
  %915 = load ptr, ptr %14, align 8, !tbaa !5
  %916 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %915, i32 noundef 4)
  %917 = icmp eq i32 1, %916
  br i1 %917, label %922, label %918

918:                                              ; preds = %914
  %919 = load ptr, ptr %14, align 8, !tbaa !5
  %920 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %919, i32 noundef 0)
  %921 = icmp eq i32 1, %920
  br i1 %921, label %922, label %968

922:                                              ; preds = %918, %914
  %923 = load ptr, ptr %14, align 8, !tbaa !5
  %924 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %923, i32 noundef 3)
  %925 = icmp eq i32 2, %924
  br i1 %925, label %926, label %968

926:                                              ; preds = %922
  %927 = load ptr, ptr %11, align 8, !tbaa !5
  %928 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %927, i32 0, i32 6
  %929 = load i32, ptr %928, align 4, !tbaa !18
  %930 = icmp uge i32 %929, 1103
  br i1 %930, label %941, label %931

931:                                              ; preds = %926
  %932 = load ptr, ptr %11, align 8, !tbaa !5
  %933 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %932, i32 0, i32 6
  %934 = load i32, ptr %933, align 4, !tbaa !18
  %935 = icmp eq i32 %934, 1053
  br i1 %935, label %941, label %936

936:                                              ; preds = %931
  %937 = load ptr, ptr %11, align 8, !tbaa !5
  %938 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %937, i32 0, i32 6
  %939 = load i32, ptr %938, align 4, !tbaa !18
  %940 = icmp eq i32 %939, 1008
  br i1 %940, label %941, label %948

941:                                              ; preds = %936, %931, %926
  %942 = load ptr, ptr %11, align 8, !tbaa !5
  %943 = load ptr, ptr %13, align 8, !tbaa !5
  %944 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %943, i32 0, i32 128
  %945 = load i8, ptr %944, align 4, !tbaa !46
  %946 = load i32, ptr %23, align 4, !tbaa !9
  %947 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %942, i32 noundef 537273970, i8 noundef signext %945, i32 noundef %946, i32 noundef %947)
  br label %967

948:                                              ; preds = %936
  %949 = load ptr, ptr %11, align 8, !tbaa !5
  %950 = load ptr, ptr %13, align 8, !tbaa !5
  %951 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %950, i32 0, i32 128
  %952 = load i8, ptr %951, align 4, !tbaa !46
  %953 = load i32, ptr %23, align 4, !tbaa !9
  %954 = load i32, ptr %23, align 4, !tbaa !9
  %955 = load ptr, ptr %13, align 8, !tbaa !5
  %956 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %955, i32 0, i32 24
  %957 = load i32, ptr %956, align 4, !tbaa !35
  %958 = load ptr, ptr %13, align 8, !tbaa !5
  %959 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %958, i32 0, i32 25
  %960 = load i32, ptr %959, align 4, !tbaa !36
  %961 = load ptr, ptr %13, align 8, !tbaa !5
  %962 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %961, i32 0, i32 21
  %963 = load i32, ptr %962, align 4, !tbaa !37
  %964 = load ptr, ptr %13, align 8, !tbaa !5
  %965 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %964, i32 0, i32 22
  %966 = load i32, ptr %965, align 4, !tbaa !38
  call void @libxsmm_generator_vcvtneps2bf16_avx512_preppedstack(ptr noundef %949, i8 noundef signext %952, i32 noundef %953, i32 noundef %954, i32 noundef %957, i32 noundef %960, i32 noundef %963, i32 noundef %966, i32 noundef 0)
  br label %967

967:                                              ; preds = %948, %941
  br label %1150

968:                                              ; preds = %922, %918
  %969 = load ptr, ptr %14, align 8, !tbaa !5
  %970 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %969, i32 noundef 4)
  %971 = icmp eq i32 1, %970
  br i1 %971, label %976, label %972

972:                                              ; preds = %968
  %973 = load ptr, ptr %14, align 8, !tbaa !5
  %974 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %973, i32 noundef 0)
  %975 = icmp eq i32 1, %974
  br i1 %975, label %976, label %1000

976:                                              ; preds = %972, %968
  %977 = load ptr, ptr %14, align 8, !tbaa !5
  %978 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %977, i32 noundef 3)
  %979 = icmp eq i32 3, %978
  br i1 %979, label %980, label %1000

980:                                              ; preds = %976
  %981 = load ptr, ptr %11, align 8, !tbaa !5
  %982 = load ptr, ptr %13, align 8, !tbaa !5
  %983 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %982, i32 0, i32 128
  %984 = load i8, ptr %983, align 4, !tbaa !46
  %985 = load i32, ptr %23, align 4, !tbaa !9
  %986 = load i32, ptr %23, align 4, !tbaa !9
  %987 = load ptr, ptr %11, align 8, !tbaa !5
  %988 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %987, i32 0, i32 6
  %989 = load i32, ptr %988, align 4, !tbaa !18
  %990 = icmp ult i32 %989, 1101
  %991 = zext i1 %990 to i64
  %992 = select i1 %990, i32 0, i32 1
  %993 = load ptr, ptr %11, align 8, !tbaa !5
  %994 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %993, i32 0, i32 6
  %995 = load i32, ptr %994, align 4, !tbaa !18
  %996 = icmp ult i32 %995, 1101
  %997 = zext i1 %996 to i64
  %998 = select i1 %996, i32 0, i32 1
  %999 = trunc i32 %998 to i8
  call void @libxsmm_x86_instruction_vec_compute_2reg_mask_sae_imm8(ptr noundef %981, i32 noundef 671954205, i8 noundef signext %984, i32 noundef %985, i32 noundef %986, i32 noundef 0, i32 noundef %992, i8 noundef zeroext %999, i32 noundef 0)
  br label %1149

1000:                                             ; preds = %976, %972
  %1001 = load ptr, ptr %14, align 8, !tbaa !5
  %1002 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1001, i32 noundef 4)
  %1003 = icmp eq i32 1, %1002
  br i1 %1003, label %1008, label %1004

1004:                                             ; preds = %1000
  %1005 = load ptr, ptr %14, align 8, !tbaa !5
  %1006 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1005, i32 noundef 0)
  %1007 = icmp eq i32 1, %1006
  br i1 %1007, label %1008, label %1107

1008:                                             ; preds = %1004, %1000
  %1009 = load ptr, ptr %14, align 8, !tbaa !5
  %1010 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1009, i32 noundef 3)
  %1011 = icmp eq i32 4, %1010
  br i1 %1011, label %1012, label %1107

1012:                                             ; preds = %1008
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #3
  %1013 = load ptr, ptr %14, align 8, !tbaa !5
  %1014 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1013, i32 0, i32 11
  %1015 = load i8, ptr %1014, align 1, !tbaa !14
  %1016 = zext i8 %1015 to i32
  %1017 = icmp eq i32 %1016, 1
  br i1 %1017, label %1018, label %1025

1018:                                             ; preds = %1012
  %1019 = load ptr, ptr %14, align 8, !tbaa !5
  %1020 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1019, i32 0, i32 9
  %1021 = load i16, ptr %1020, align 1, !tbaa !17
  %1022 = zext i16 %1021 to i32
  %1023 = and i32 %1022, 4096
  %1024 = icmp sgt i32 %1023, 0
  br i1 %1024, label %1053, label %1025

1025:                                             ; preds = %1018, %1012
  %1026 = load ptr, ptr %14, align 8, !tbaa !5
  %1027 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1026, i32 0, i32 11
  %1028 = load i8, ptr %1027, align 1, !tbaa !14
  %1029 = zext i8 %1028 to i32
  %1030 = icmp eq i32 %1029, 2
  br i1 %1030, label %1031, label %1038

1031:                                             ; preds = %1025
  %1032 = load ptr, ptr %14, align 8, !tbaa !5
  %1033 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1032, i32 0, i32 9
  %1034 = load i16, ptr %1033, align 1, !tbaa !17
  %1035 = zext i16 %1034 to i32
  %1036 = and i32 %1035, 64
  %1037 = icmp sgt i32 %1036, 0
  br i1 %1037, label %1053, label %1038

1038:                                             ; preds = %1031, %1025
  %1039 = load ptr, ptr %14, align 8, !tbaa !5
  %1040 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1039, i32 0, i32 11
  %1041 = load i8, ptr %1040, align 1, !tbaa !14
  %1042 = zext i8 %1041 to i32
  %1043 = icmp eq i32 %1042, 3
  br i1 %1043, label %1044, label %1051

1044:                                             ; preds = %1038
  %1045 = load ptr, ptr %14, align 8, !tbaa !5
  %1046 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1045, i32 0, i32 9
  %1047 = load i16, ptr %1046, align 1, !tbaa !17
  %1048 = zext i16 %1047 to i32
  %1049 = and i32 %1048, 2048
  %1050 = icmp sgt i32 %1049, 0
  br label %1051

1051:                                             ; preds = %1044, %1038
  %1052 = phi i1 [ false, %1038 ], [ %1050, %1044 ]
  br label %1053

1053:                                             ; preds = %1051, %1031, %1018
  %1054 = phi i1 [ true, %1031 ], [ true, %1018 ], [ %1052, %1051 ]
  %1055 = zext i1 %1054 to i32
  store i32 %1055, ptr %37, align 4, !tbaa !9
  %1056 = load i32, ptr %37, align 4, !tbaa !9
  %1057 = icmp eq i32 %1056, 1
  br i1 %1057, label %1058, label %1084

1058:                                             ; preds = %1053
  %1059 = load ptr, ptr %11, align 8, !tbaa !5
  %1060 = load ptr, ptr %13, align 8, !tbaa !5
  %1061 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1060, i32 0, i32 128
  %1062 = load i8, ptr %1061, align 4, !tbaa !46
  %1063 = load ptr, ptr %13, align 8, !tbaa !5
  %1064 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1063, i32 0, i32 103
  %1065 = load i32, ptr %1064, align 4, !tbaa !47
  %1066 = load ptr, ptr %13, align 8, !tbaa !5
  %1067 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1066, i32 0, i32 104
  %1068 = load i32, ptr %1067, align 4, !tbaa !48
  %1069 = load ptr, ptr %13, align 8, !tbaa !5
  %1070 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1069, i32 0, i32 105
  %1071 = load i32, ptr %1070, align 4, !tbaa !49
  %1072 = load ptr, ptr %13, align 8, !tbaa !5
  %1073 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1072, i32 0, i32 106
  %1074 = load i32, ptr %1073, align 4, !tbaa !50
  %1075 = load ptr, ptr %13, align 8, !tbaa !5
  %1076 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1075, i32 0, i32 115
  %1077 = load i32, ptr %1076, align 4, !tbaa !51
  %1078 = load ptr, ptr %13, align 8, !tbaa !5
  %1079 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1078, i32 0, i32 116
  %1080 = load i32, ptr %1079, align 4, !tbaa !52
  %1081 = load ptr, ptr %13, align 8, !tbaa !5
  %1082 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1081, i32 0, i32 117
  %1083 = load i32, ptr %1082, align 4, !tbaa !53
  call void @libxsmm_generator_xoshiro128pp_axv2_avx512(ptr noundef %1059, i8 noundef zeroext %1062, i32 noundef %1065, i32 noundef %1068, i32 noundef %1071, i32 noundef %1074, i32 noundef %1077, i32 noundef %1080, i32 noundef %1083)
  br label %1084

1084:                                             ; preds = %1058, %1053
  %1085 = load ptr, ptr %11, align 8, !tbaa !5
  %1086 = load ptr, ptr %13, align 8, !tbaa !5
  %1087 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1086, i32 0, i32 128
  %1088 = load i8, ptr %1087, align 4, !tbaa !46
  %1089 = load i32, ptr %23, align 4, !tbaa !9
  %1090 = load i32, ptr %23, align 4, !tbaa !9
  %1091 = load ptr, ptr %13, align 8, !tbaa !5
  %1092 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1091, i32 0, i32 24
  %1093 = load i32, ptr %1092, align 4, !tbaa !35
  %1094 = load ptr, ptr %13, align 8, !tbaa !5
  %1095 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1094, i32 0, i32 25
  %1096 = load i32, ptr %1095, align 4, !tbaa !36
  %1097 = load ptr, ptr %13, align 8, !tbaa !5
  %1098 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1097, i32 0, i32 21
  %1099 = load i32, ptr %1098, align 4, !tbaa !37
  %1100 = load ptr, ptr %13, align 8, !tbaa !5
  %1101 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1100, i32 0, i32 22
  %1102 = load i32, ptr %1101, align 4, !tbaa !38
  %1103 = load i32, ptr %37, align 4, !tbaa !9
  %1104 = load ptr, ptr %13, align 8, !tbaa !5
  %1105 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1104, i32 0, i32 117
  %1106 = load i32, ptr %1105, align 4, !tbaa !53
  call void @libxsmm_generator_vcvtneps2bf8_avx512_preppedstack(ptr noundef %1085, i8 noundef signext %1088, i32 noundef %1089, i32 noundef %1090, i32 noundef %1093, i32 noundef %1096, i32 noundef %1099, i32 noundef %1102, i32 noundef %1103, i32 noundef %1106)
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #3
  br label %1148

1107:                                             ; preds = %1008, %1004
  %1108 = load ptr, ptr %14, align 8, !tbaa !5
  %1109 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1108, i32 noundef 4)
  %1110 = icmp eq i32 1, %1109
  br i1 %1110, label %1115, label %1111

1111:                                             ; preds = %1107
  %1112 = load ptr, ptr %14, align 8, !tbaa !5
  %1113 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1112, i32 noundef 0)
  %1114 = icmp eq i32 1, %1113
  br i1 %1114, label %1115, label %1147

1115:                                             ; preds = %1111, %1107
  %1116 = load ptr, ptr %14, align 8, !tbaa !5
  %1117 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1116, i32 noundef 3)
  %1118 = icmp eq i32 5, %1117
  br i1 %1118, label %1119, label %1147

1119:                                             ; preds = %1115
  %1120 = load ptr, ptr %11, align 8, !tbaa !5
  %1121 = load ptr, ptr %13, align 8, !tbaa !5
  %1122 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1121, i32 0, i32 128
  %1123 = load i8, ptr %1122, align 4, !tbaa !46
  %1124 = load i32, ptr %23, align 4, !tbaa !9
  %1125 = load i32, ptr %23, align 4, !tbaa !9
  %1126 = load ptr, ptr %13, align 8, !tbaa !5
  %1127 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1126, i32 0, i32 24
  %1128 = load i32, ptr %1127, align 4, !tbaa !35
  %1129 = load ptr, ptr %13, align 8, !tbaa !5
  %1130 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1129, i32 0, i32 25
  %1131 = load i32, ptr %1130, align 4, !tbaa !36
  %1132 = load ptr, ptr %13, align 8, !tbaa !5
  %1133 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1132, i32 0, i32 26
  %1134 = load i32, ptr %1133, align 4, !tbaa !54
  %1135 = load ptr, ptr %13, align 8, !tbaa !5
  %1136 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1135, i32 0, i32 27
  %1137 = load i32, ptr %1136, align 4, !tbaa !55
  %1138 = load ptr, ptr %13, align 8, !tbaa !5
  %1139 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1138, i32 0, i32 21
  %1140 = load i32, ptr %1139, align 4, !tbaa !37
  %1141 = load ptr, ptr %13, align 8, !tbaa !5
  %1142 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1141, i32 0, i32 22
  %1143 = load i32, ptr %1142, align 4, !tbaa !38
  %1144 = load ptr, ptr %13, align 8, !tbaa !5
  %1145 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1144, i32 0, i32 23
  %1146 = load i32, ptr %1145, align 4, !tbaa !56
  call void @libxsmm_generator_vcvtf32_to_hf8_avx512_preppedstack(ptr noundef %1120, i8 noundef signext %1123, i32 noundef %1124, i32 noundef %1125, i32 noundef %1128, i32 noundef %1131, i32 noundef %1134, i32 noundef %1137, i32 noundef %1140, i32 noundef %1143, i32 noundef %1146)
  br label %1147

1147:                                             ; preds = %1119, %1115, %1111
  br label %1148

1148:                                             ; preds = %1147, %1084
  br label %1149

1149:                                             ; preds = %1148, %980
  br label %1150

1150:                                             ; preds = %1149, %967
  %1151 = load ptr, ptr %14, align 8, !tbaa !5
  %1152 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1151, i32 0, i32 11
  %1153 = load i8, ptr %1152, align 1, !tbaa !14
  %1154 = zext i8 %1153 to i32
  %1155 = icmp eq i32 %1154, 1
  br i1 %1155, label %1156, label %1298

1156:                                             ; preds = %1150
  %1157 = load ptr, ptr %14, align 8, !tbaa !5
  %1158 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1157, i32 0, i32 10
  %1159 = load i16, ptr %1158, align 1, !tbaa !21
  %1160 = zext i16 %1159 to i32
  %1161 = icmp eq i32 %1160, 42
  br i1 %1161, label %1162, label %1298

1162:                                             ; preds = %1156
  %1163 = load ptr, ptr %14, align 8, !tbaa !5
  %1164 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1163, i32 noundef 0)
  %1165 = icmp eq i32 1, %1164
  br i1 %1165, label %1170, label %1166

1166:                                             ; preds = %1162
  %1167 = load ptr, ptr %14, align 8, !tbaa !5
  %1168 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1167, i32 noundef 0)
  %1169 = icmp eq i32 2, %1168
  br i1 %1169, label %1170, label %1217

1170:                                             ; preds = %1166, %1162
  %1171 = load ptr, ptr %14, align 8, !tbaa !5
  %1172 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1171, i32 noundef 3)
  %1173 = icmp eq i32 12, %1172
  br i1 %1173, label %1174, label %1217

1174:                                             ; preds = %1170
  %1175 = load ptr, ptr %11, align 8, !tbaa !5
  %1176 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1175, i32 0, i32 6
  %1177 = load i32, ptr %1176, align 4, !tbaa !18
  %1178 = icmp ult i32 %1177, 1041
  br i1 %1178, label %1179, label %1202

1179:                                             ; preds = %1174
  %1180 = load ptr, ptr %11, align 8, !tbaa !5
  %1181 = load i32, ptr %23, align 4, !tbaa !9
  %1182 = load ptr, ptr %13, align 8, !tbaa !5
  %1183 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1182, i32 0, i32 118
  %1184 = load i32, ptr %1183, align 4, !tbaa !57
  %1185 = load ptr, ptr %13, align 8, !tbaa !5
  %1186 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1185, i32 0, i32 87
  %1187 = load i32, ptr %1186, align 4, !tbaa !34
  %1188 = load ptr, ptr %13, align 8, !tbaa !5
  %1189 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1188, i32 0, i32 88
  %1190 = load i32, ptr %1189, align 4, !tbaa !33
  %1191 = load i32, ptr %29, align 4, !tbaa !9
  %1192 = load i32, ptr %30, align 4, !tbaa !9
  call void @libxsmm_generator_vcvtneps2int_avx(ptr noundef %1180, i32 noundef 12, i32 noundef %1181, i32 noundef %1184, i32 noundef %1187, i32 noundef %1190, i32 noundef %1191, i32 noundef %1192)
  store i8 120, ptr %25, align 1, !tbaa !13
  store i32 8, ptr %15, align 4, !tbaa !9
  %1193 = load i32, ptr %19, align 4, !tbaa !9
  %1194 = icmp ugt i32 %1193, 0
  br i1 %1194, label %1195, label %1201

1195:                                             ; preds = %1179
  %1196 = load ptr, ptr %14, align 8, !tbaa !5
  %1197 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1196, i32 0, i32 0
  %1198 = load i32, ptr %1197, align 1, !tbaa !20
  %1199 = load i32, ptr %15, align 4, !tbaa !9
  %1200 = urem i32 %1198, %1199
  store i32 %1200, ptr %20, align 4, !tbaa !9
  br label %1201

1201:                                             ; preds = %1195, %1179
  br label %1216

1202:                                             ; preds = %1174
  %1203 = load ptr, ptr %11, align 8, !tbaa !5
  %1204 = load i32, ptr %23, align 4, !tbaa !9
  %1205 = load ptr, ptr %13, align 8, !tbaa !5
  %1206 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1205, i32 0, i32 118
  %1207 = load i32, ptr %1206, align 4, !tbaa !57
  %1208 = load i32, ptr %29, align 4, !tbaa !9
  %1209 = load i32, ptr %30, align 4, !tbaa !9
  call void @libxsmm_generator_vcvtneps2int_avx512(ptr noundef %1203, i32 noundef 12, i32 noundef %1204, i32 noundef %1207, i32 noundef %1208, i32 noundef %1209)
  store i8 120, ptr %25, align 1, !tbaa !13
  store i32 16, ptr %15, align 4, !tbaa !9
  %1210 = load ptr, ptr %11, align 8, !tbaa !5
  %1211 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1210, i32 0, i32 6
  %1212 = load i32, ptr %1211, align 4, !tbaa !18
  %1213 = icmp ult i32 %1212, 1101
  br i1 %1213, label %1214, label %1215

1214:                                             ; preds = %1202
  store i32 8, ptr %15, align 4, !tbaa !9
  br label %1215

1215:                                             ; preds = %1214, %1202
  br label %1216

1216:                                             ; preds = %1215, %1201
  br label %1217

1217:                                             ; preds = %1216, %1170, %1166
  %1218 = load ptr, ptr %14, align 8, !tbaa !5
  %1219 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1218, i32 noundef 0)
  %1220 = icmp eq i32 1, %1219
  br i1 %1220, label %1225, label %1221

1221:                                             ; preds = %1217
  %1222 = load ptr, ptr %14, align 8, !tbaa !5
  %1223 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1222, i32 noundef 0)
  %1224 = icmp eq i32 2, %1223
  br i1 %1224, label %1225, label %1271

1225:                                             ; preds = %1221, %1217
  %1226 = load ptr, ptr %14, align 8, !tbaa !5
  %1227 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1226, i32 noundef 3)
  %1228 = icmp eq i32 10, %1227
  br i1 %1228, label %1229, label %1271

1229:                                             ; preds = %1225
  %1230 = load ptr, ptr %11, align 8, !tbaa !5
  %1231 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1230, i32 0, i32 6
  %1232 = load i32, ptr %1231, align 4, !tbaa !18
  %1233 = icmp ult i32 %1232, 1101
  br i1 %1233, label %1234, label %1262

1234:                                             ; preds = %1229
  %1235 = load ptr, ptr %11, align 8, !tbaa !5
  %1236 = load i32, ptr %23, align 4, !tbaa !9
  %1237 = load ptr, ptr %13, align 8, !tbaa !5
  %1238 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1237, i32 0, i32 118
  %1239 = load i32, ptr %1238, align 4, !tbaa !57
  %1240 = load ptr, ptr %13, align 8, !tbaa !5
  %1241 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1240, i32 0, i32 87
  %1242 = load i32, ptr %1241, align 4, !tbaa !34
  %1243 = load ptr, ptr %13, align 8, !tbaa !5
  %1244 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1243, i32 0, i32 88
  %1245 = load i32, ptr %1244, align 4, !tbaa !33
  %1246 = load i32, ptr %29, align 4, !tbaa !9
  %1247 = load i32, ptr %30, align 4, !tbaa !9
  call void @libxsmm_generator_vcvtneps2int_avx(ptr noundef %1235, i32 noundef 10, i32 noundef %1236, i32 noundef %1239, i32 noundef %1242, i32 noundef %1245, i32 noundef %1246, i32 noundef %1247)
  store i8 120, ptr %25, align 1, !tbaa !13
  store i32 8, ptr %15, align 4, !tbaa !9
  %1248 = load i32, ptr %19, align 4, !tbaa !9
  %1249 = icmp ugt i32 %1248, 0
  br i1 %1249, label %1250, label %1261

1250:                                             ; preds = %1234
  %1251 = load ptr, ptr %11, align 8, !tbaa !5
  %1252 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1251, i32 0, i32 6
  %1253 = load i32, ptr %1252, align 4, !tbaa !18
  %1254 = icmp ult i32 %1253, 1041
  br i1 %1254, label %1255, label %1261

1255:                                             ; preds = %1250
  %1256 = load ptr, ptr %14, align 8, !tbaa !5
  %1257 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1256, i32 0, i32 0
  %1258 = load i32, ptr %1257, align 1, !tbaa !20
  %1259 = load i32, ptr %15, align 4, !tbaa !9
  %1260 = urem i32 %1258, %1259
  store i32 %1260, ptr %20, align 4, !tbaa !9
  br label %1261

1261:                                             ; preds = %1255, %1250, %1234
  br label %1270

1262:                                             ; preds = %1229
  %1263 = load ptr, ptr %11, align 8, !tbaa !5
  %1264 = load i32, ptr %23, align 4, !tbaa !9
  %1265 = load ptr, ptr %13, align 8, !tbaa !5
  %1266 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1265, i32 0, i32 118
  %1267 = load i32, ptr %1266, align 4, !tbaa !57
  %1268 = load i32, ptr %29, align 4, !tbaa !9
  %1269 = load i32, ptr %30, align 4, !tbaa !9
  call void @libxsmm_generator_vcvtneps2int_avx512(ptr noundef %1263, i32 noundef 10, i32 noundef %1264, i32 noundef %1267, i32 noundef %1268, i32 noundef %1269)
  store i8 121, ptr %25, align 1, !tbaa !13
  store i32 16, ptr %15, align 4, !tbaa !9
  br label %1270

1270:                                             ; preds = %1262, %1261
  br label %1271

1271:                                             ; preds = %1270, %1225, %1221
  %1272 = load ptr, ptr %14, align 8, !tbaa !5
  %1273 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1272, i32 noundef 0)
  %1274 = icmp eq i32 1, %1273
  br i1 %1274, label %1279, label %1275

1275:                                             ; preds = %1271
  %1276 = load ptr, ptr %14, align 8, !tbaa !5
  %1277 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1276, i32 noundef 0)
  %1278 = icmp eq i32 2, %1277
  br i1 %1278, label %1279, label %1297

1279:                                             ; preds = %1275, %1271
  %1280 = load ptr, ptr %14, align 8, !tbaa !5
  %1281 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1280, i32 noundef 3)
  %1282 = icmp eq i32 8, %1281
  br i1 %1282, label %1283, label %1297

1283:                                             ; preds = %1279
  %1284 = load ptr, ptr %11, align 8, !tbaa !5
  %1285 = load i32, ptr %23, align 4, !tbaa !9
  %1286 = load ptr, ptr %13, align 8, !tbaa !5
  %1287 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1286, i32 0, i32 118
  %1288 = load i32, ptr %1287, align 4, !tbaa !57
  %1289 = load i32, ptr %29, align 4, !tbaa !9
  %1290 = load i32, ptr %30, align 4, !tbaa !9
  call void @libxsmm_generator_vcvtneps2int_avx512(ptr noundef %1284, i32 noundef 8, i32 noundef %1285, i32 noundef %1288, i32 noundef %1289, i32 noundef %1290)
  store i8 122, ptr %25, align 1, !tbaa !13
  store i32 16, ptr %15, align 4, !tbaa !9
  %1291 = load ptr, ptr %11, align 8, !tbaa !5
  %1292 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1291, i32 0, i32 6
  %1293 = load i32, ptr %1292, align 4, !tbaa !18
  %1294 = icmp ult i32 %1293, 1101
  br i1 %1294, label %1295, label %1296

1295:                                             ; preds = %1283
  store i8 121, ptr %25, align 1, !tbaa !13
  store i32 8, ptr %15, align 4, !tbaa !9
  br label %1296

1296:                                             ; preds = %1295, %1283
  br label %1297

1297:                                             ; preds = %1296, %1279, %1275
  br label %1298

1298:                                             ; preds = %1297, %1156, %1150
  br label %1299

1299:                                             ; preds = %1298, %910
  %1300 = load ptr, ptr %14, align 8, !tbaa !5
  %1301 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1300, i32 noundef 3)
  %1302 = icmp eq i32 4, %1301
  br i1 %1302, label %1307, label %1303

1303:                                             ; preds = %1299
  %1304 = load ptr, ptr %14, align 8, !tbaa !5
  %1305 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1304, i32 noundef 3)
  %1306 = icmp eq i32 5, %1305
  br i1 %1306, label %1307, label %1325

1307:                                             ; preds = %1303, %1299
  %1308 = load ptr, ptr %14, align 8, !tbaa !5
  %1309 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1308, i32 noundef 4)
  %1310 = icmp eq i32 1, %1309
  br i1 %1310, label %1311, label %1325

1311:                                             ; preds = %1307
  %1312 = load ptr, ptr %11, align 8, !tbaa !5
  %1313 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1312, i32 0, i32 6
  %1314 = load i32, ptr %1313, align 4, !tbaa !18
  %1315 = icmp ult i32 %1314, 1101
  br i1 %1315, label %1316, label %1325

1316:                                             ; preds = %1311
  %1317 = load i32, ptr %19, align 4, !tbaa !9
  %1318 = icmp eq i32 %1317, 1
  br i1 %1318, label %1319, label %1324

1319:                                             ; preds = %1316
  %1320 = load i32, ptr %21, align 4, !tbaa !9
  %1321 = load i32, ptr %17, align 4, !tbaa !9
  %1322 = sub i32 %1321, 1
  %1323 = icmp eq i32 %1320, %1322
  br i1 %1323, label %1325, label %1324

1324:                                             ; preds = %1319, %1316
  store i32 545725200, ptr %36, align 4, !tbaa !9
  br label %1348

1325:                                             ; preds = %1319, %1311, %1307, %1303
  %1326 = load ptr, ptr %14, align 8, !tbaa !5
  %1327 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1326, i32 noundef 3)
  %1328 = icmp eq i32 2, %1327
  br i1 %1328, label %1329, label %1347

1329:                                             ; preds = %1325
  %1330 = load ptr, ptr %14, align 8, !tbaa !5
  %1331 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1330, i32 noundef 4)
  %1332 = icmp eq i32 1, %1331
  br i1 %1332, label %1333, label %1347

1333:                                             ; preds = %1329
  %1334 = load ptr, ptr %11, align 8, !tbaa !5
  %1335 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1334, i32 0, i32 6
  %1336 = load i32, ptr %1335, align 4, !tbaa !18
  %1337 = icmp ult i32 %1336, 1005
  br i1 %1337, label %1338, label %1347

1338:                                             ; preds = %1333
  %1339 = load i32, ptr %19, align 4, !tbaa !9
  %1340 = icmp eq i32 %1339, 1
  br i1 %1340, label %1341, label %1346

1341:                                             ; preds = %1338
  %1342 = load i32, ptr %21, align 4, !tbaa !9
  %1343 = load i32, ptr %17, align 4, !tbaa !9
  %1344 = sub i32 %1343, 1
  %1345 = icmp eq i32 %1342, %1344
  br i1 %1345, label %1347, label %1346

1346:                                             ; preds = %1341, %1338
  store i32 -1610149872, ptr %36, align 4, !tbaa !9
  br label %1347

1347:                                             ; preds = %1346, %1341, %1333, %1329, %1325
  br label %1348

1348:                                             ; preds = %1347, %1324
  %1349 = load ptr, ptr %11, align 8, !tbaa !5
  %1350 = load i32, ptr %36, align 4, !tbaa !9
  %1351 = load ptr, ptr %12, align 8, !tbaa !5
  %1352 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1351, i32 0, i32 6
  %1353 = load i32, ptr %1352, align 4, !tbaa !22
  %1354 = load i32, ptr %21, align 4, !tbaa !9
  %1355 = load i32, ptr %15, align 4, !tbaa !9
  %1356 = mul i32 %1354, %1355
  %1357 = load i32, ptr %22, align 4, !tbaa !9
  %1358 = load ptr, ptr %14, align 8, !tbaa !5
  %1359 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1358, i32 0, i32 3
  %1360 = load i32, ptr %1359, align 1, !tbaa !24
  %1361 = mul i32 %1357, %1360
  %1362 = add i32 %1356, %1361
  %1363 = load ptr, ptr %13, align 8, !tbaa !5
  %1364 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1363, i32 0, i32 5
  %1365 = load i32, ptr %1364, align 4, !tbaa !11
  %1366 = mul i32 %1362, %1365
  %1367 = load i8, ptr %25, align 1, !tbaa !13
  %1368 = load i32, ptr %23, align 4, !tbaa !9
  %1369 = load i32, ptr %19, align 4, !tbaa !9
  %1370 = icmp eq i32 %1369, 1
  br i1 %1370, label %1371, label %1376

1371:                                             ; preds = %1348
  %1372 = load i32, ptr %21, align 4, !tbaa !9
  %1373 = load i32, ptr %17, align 4, !tbaa !9
  %1374 = sub i32 %1373, 1
  %1375 = icmp eq i32 %1372, %1374
  br label %1376

1376:                                             ; preds = %1371, %1348
  %1377 = phi i1 [ false, %1348 ], [ %1375, %1371 ]
  %1378 = zext i1 %1377 to i64
  %1379 = select i1 %1377, i32 1, i32 0
  %1380 = load i32, ptr %19, align 4, !tbaa !9
  %1381 = icmp eq i32 %1380, 1
  br i1 %1381, label %1382, label %1389

1382:                                             ; preds = %1376
  %1383 = load i32, ptr %21, align 4, !tbaa !9
  %1384 = load i32, ptr %17, align 4, !tbaa !9
  %1385 = sub i32 %1384, 1
  %1386 = icmp eq i32 %1383, %1385
  br i1 %1386, label %1387, label %1389

1387:                                             ; preds = %1382
  %1388 = load i32, ptr %20, align 4, !tbaa !9
  br label %1390

1389:                                             ; preds = %1382, %1376
  br label %1390

1390:                                             ; preds = %1389, %1387
  %1391 = phi i32 [ %1388, %1387 ], [ 0, %1389 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %1349, i32 noundef %1350, i32 noundef %1353, i32 noundef 127, i32 noundef 0, i32 noundef %1366, i8 noundef signext %1367, i32 noundef %1368, i32 noundef %1379, i32 noundef %1391, i32 noundef 1)
  %1392 = load ptr, ptr %14, align 8, !tbaa !5
  %1393 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1392, i32 0, i32 11
  %1394 = load i8, ptr %1393, align 1, !tbaa !14
  %1395 = zext i8 %1394 to i32
  %1396 = icmp eq i32 %1395, 1
  br i1 %1396, label %1397, label %1447

1397:                                             ; preds = %1390
  %1398 = load ptr, ptr %14, align 8, !tbaa !5
  %1399 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1398, i32 0, i32 10
  %1400 = load i16, ptr %1399, align 1, !tbaa !21
  %1401 = zext i16 %1400 to i32
  %1402 = icmp eq i32 %1401, 63
  br i1 %1402, label %1403, label %1447

1403:                                             ; preds = %1397
  %1404 = load ptr, ptr %11, align 8, !tbaa !5
  %1405 = load i32, ptr %36, align 4, !tbaa !9
  %1406 = load ptr, ptr %12, align 8, !tbaa !5
  %1407 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1406, i32 0, i32 7
  %1408 = load i32, ptr %1407, align 4, !tbaa !58
  %1409 = load i32, ptr %21, align 4, !tbaa !9
  %1410 = load i32, ptr %15, align 4, !tbaa !9
  %1411 = mul i32 %1409, %1410
  %1412 = load i32, ptr %22, align 4, !tbaa !9
  %1413 = load ptr, ptr %14, align 8, !tbaa !5
  %1414 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1413, i32 0, i32 3
  %1415 = load i32, ptr %1414, align 1, !tbaa !24
  %1416 = mul i32 %1412, %1415
  %1417 = add i32 %1411, %1416
  %1418 = load ptr, ptr %13, align 8, !tbaa !5
  %1419 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1418, i32 0, i32 5
  %1420 = load i32, ptr %1419, align 4, !tbaa !11
  %1421 = mul i32 %1417, %1420
  %1422 = load i8, ptr %25, align 1, !tbaa !13
  %1423 = load i32, ptr %23, align 4, !tbaa !9
  %1424 = load i32, ptr %19, align 4, !tbaa !9
  %1425 = icmp eq i32 %1424, 1
  br i1 %1425, label %1426, label %1431

1426:                                             ; preds = %1403
  %1427 = load i32, ptr %21, align 4, !tbaa !9
  %1428 = load i32, ptr %17, align 4, !tbaa !9
  %1429 = sub i32 %1428, 1
  %1430 = icmp eq i32 %1427, %1429
  br label %1431

1431:                                             ; preds = %1426, %1403
  %1432 = phi i1 [ false, %1403 ], [ %1430, %1426 ]
  %1433 = zext i1 %1432 to i64
  %1434 = select i1 %1432, i32 1, i32 0
  %1435 = load i32, ptr %19, align 4, !tbaa !9
  %1436 = icmp eq i32 %1435, 1
  br i1 %1436, label %1437, label %1444

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

1442:                                             ; preds = %1437
  %1443 = load i32, ptr %20, align 4, !tbaa !9
  br label %1445

1444:                                             ; preds = %1437, %1431
  br label %1445

1445:                                             ; preds = %1444, %1442
  %1446 = phi i32 [ %1443, %1442 ], [ 0, %1444 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %1404, i32 noundef %1405, i32 noundef %1408, i32 noundef 127, i32 noundef 0, i32 noundef %1421, i8 noundef signext %1422, i32 noundef %1423, i32 noundef %1434, i32 noundef %1446, i32 noundef 1)
  br label %1447

1447:                                             ; preds = %1445, %1397, %1390
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #3
  br label %1448

1448:                                             ; preds = %1447
  %1449 = load i32, ptr %21, align 4, !tbaa !9
  %1450 = add i32 %1449, 1
  store i32 %1450, ptr %21, align 4, !tbaa !9
  br label %851, !llvm.loop !59

1451:                                             ; preds = %851
  br label %1452

1452:                                             ; preds = %1451
  %1453 = load i32, ptr %22, align 4, !tbaa !9
  %1454 = add i32 %1453, 1
  store i32 %1454, ptr %22, align 4, !tbaa !9
  br label %846, !llvm.loop !60

1455:                                             ; preds = %846
  br label %1456

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

1457:                                             ; preds = %1456, %754
  br label %1458

1458:                                             ; preds = %1457, %346
  store i32 0, ptr %31, align 4
  br label %1459

1459:                                             ; preds = %1458, %124
  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 1, 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
  %1460 = load i32, ptr %31, align 4
  switch i32 %1460, label %1462 [
    i32 0, label %1461
    i32 1, label %1461
  ]

1461:                                             ; preds = %1459, %1459
  ret void

1462:                                             ; preds = %1459
  unreachable
}

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

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

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

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

declare void @libxsmm_generator_xoshiro128pp_axv2_avx512(ptr noundef, i8 noundef zeroext, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #1

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

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

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

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

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

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

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


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

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_x86_instruction_vec_compute_2reg_imm8(ptr noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_store_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 %2, i64 20
  %12 = load i32, ptr %11, align 4, !tbaa !5
  %13 = mul i32 %12, %4
  %14 = icmp eq i32 %13, 64
  %15 = icmp eq i32 %13, 32
  %16 = select i1 %15, i8 121, i8 120
  %17 = select i1 %14, i8 122, i8 %16
  %18 = getelementptr inbounds i8, ptr %3, i64 31
  %19 = load i8, ptr %18, align 1, !tbaa !10
  %20 = icmp eq i8 %19, 1
  %21 = getelementptr inbounds i8, ptr %3, i64 27
  %22 = load i16, ptr %21, align 1, !tbaa !13
  br i1 %20, label %23, label %._crit_edge

23:                                               ; preds = %10
  %24 = and i16 %22, 2
  %25 = icmp ne i16 %24, 0
  %26 = and i16 %22, 4
  %27 = icmp ne i16 %26, 0
  %28 = and i16 %22, 8
  %29 = icmp ne i16 %28, 0
  br label %._crit_edge

._crit_edge:                                      ; preds = %10, %23
  %30 = phi i1 [ %27, %23 ], [ false, %10 ]
  %31 = phi i1 [ %25, %23 ], [ false, %10 ]
  %32 = phi i1 [ %29, %23 ], [ false, %10 ]
  %33 = getelementptr inbounds i8, ptr %3, i64 27
  %34 = zext i16 %22 to i32
  %35 = lshr i32 %34, 10
  %.lobit = and i32 %35, 1
  %36 = lshr i32 %34, 4
  %.lobit519 = and i32 %36, 1
  %37 = tail call i32 @libxsmm_generator_mateltwise_is_binary_cmp_op(ptr noundef nonnull %3) #2
  %.not = icmp eq i32 %37, 0
  br i1 %.not, label %38, label %.loopexit

38:                                               ; preds = %._crit_edge
  %.not520 = icmp eq i32 %8, 0
  br i1 %.not520, label %56, label %39

39:                                               ; preds = %38
  %40 = getelementptr inbounds i8, ptr %0, i64 28
  %41 = load i32, ptr %40, align 4, !tbaa !14
  %42 = add i32 %41, -1005
  %or.cond = icmp ult i32 %42, 46
  br i1 %or.cond, label %43, label %52

43:                                               ; preds = %39
  %44 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %45 = icmp eq i32 %44, 10
  br i1 %45, label %.sink.split, label %46

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

49:                                               ; preds = %46
  %50 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %51 = icmp eq i32 %50, 2
  br i1 %51, label %.sink.split, label %56

52:                                               ; preds = %39
  %53 = icmp ult i32 %41, 1005
  br i1 %53, label %.sink.split, label %56

.sink.split:                                      ; preds = %52, %43, %46, %49
  %54 = load i32, ptr %3, align 1, !tbaa !17
  %55 = urem i32 %54, %4
  br label %56

56:                                               ; preds = %.sink.split, %49, %52, %38
  %.0484 = phi i32 [ %9, %49 ], [ %9, %52 ], [ %9, %38 ], [ %55, %.sink.split ]
  %57 = load i8, ptr %18, align 1, !tbaa !10
  switch i8 %57, label %.thread547 [
    i8 1, label %58
    i8 2, label %231
  ]

58:                                               ; preds = %56
  %59 = getelementptr inbounds i8, ptr %3, i64 29
  %60 = load i16, ptr %59, align 1, !tbaa !18
  %61 = icmp eq i16 %60, 33
  br i1 %61, label %.preheader558, label %123

.preheader558:                                    ; preds = %58
  %.not593 = icmp eq i32 %7, 0
  br i1 %.not593, label %.loopexit, label %.preheader557.lr.ph

.preheader557.lr.ph:                              ; preds = %.preheader558
  %.not594 = icmp eq i32 %6, 0
  %62 = getelementptr inbounds i8, ptr %0, i64 28
  %63 = getelementptr inbounds i8, ptr %1, i64 24
  %64 = getelementptr inbounds i8, ptr %3, i64 12
  %65 = icmp eq i32 %8, 1
  %66 = add i32 %6, -1
  %67 = select i1 %31, i1 true, i1 %30
  %68 = select i1 %67, i1 true, i1 %32
  %69 = getelementptr inbounds i8, ptr %2, i64 116
  %70 = getelementptr inbounds i8, ptr %1, i64 44
  br i1 %.not594, label %.loopexit, label %.preheader557.us.preheader

.preheader557.us.preheader:                       ; preds = %.preheader557.lr.ph
  %71 = icmp eq i32 %66, 0
  %72 = and i1 %65, %71
  %73 = select i1 %72, i32 %.0484, i32 0
  %exitcond610.peel.not = icmp eq i32 %6, 1
  %.not620 = xor i1 %68, true
  %.not622 = xor i1 %68, true
  %brmerge623 = select i1 %.not622, i1 true, i1 %30
  br label %.preheader557.us

.preheader557.us:                                 ; preds = %.preheader557.us.preheader, %._crit_edge.us576
  %.0493575.us = phi i32 [ %122, %._crit_edge.us576 ], [ 0, %.preheader557.us.preheader ]
  %74 = mul i32 %.0493575.us, %6
  %75 = add i32 %74, %5
  %spec.select540.v.us = select i1 %30, i32 %5, i32 %75
  %76 = load i32, ptr %62, align 4, !tbaa !14
  %77 = icmp ugt i32 %76, 1100
  %78 = select i1 %77, i8 122, i8 121
  %.mux.us.peel = select i1 %32, i32 %5, i32 %spec.select540.v.us
  %.0497.us.peel = select i1 %31, i32 %75, i32 %.mux.us.peel
  %79 = load i32, ptr %63, align 4, !tbaa !19
  %80 = load i32, ptr %64, align 1, !tbaa !21
  %81 = mul i32 %80, %.0493575.us
  %82 = load i32, ptr %11, align 4, !tbaa !5
  %83 = mul i32 %81, %82
  tail call void @libxsmm_x86_instruction_vec_move(ptr noundef %0, i32 noundef %76, i32 noundef 671491379, i32 noundef %79, i32 noundef 127, i32 noundef 0, i32 noundef %83, i8 noundef signext %78, i32 noundef %.0497.us.peel, i32 noundef %73, i32 noundef 0, i32 noundef 1) #2
  %84 = icmp eq i32 %.0493575.us, 0
  %or.cond7.us.peel = and i1 %32, %84
  %or.cond621 = select i1 %.not620, i1 true, i1 %or.cond7.us.peel
  %brmerge = select i1 %or.cond621, i1 true, i1 %67
  br i1 %brmerge, label %85, label %87

85:                                               ; preds = %.preheader557.us
  %86 = load i32, ptr %69, align 4, !tbaa !22
  tail call void @libxsmm_x86_instruction_vec_compute_2reg_imm8(ptr noundef nonnull %0, i32 noundef 609031794, i8 noundef signext %78, i32 noundef %.0497.us.peel, i32 noundef %86, i32 noundef 16) #2
  br label %87

87:                                               ; preds = %.preheader557.us, %85
  %88 = load i32, ptr %62, align 4, !tbaa !14
  %89 = load i32, ptr %63, align 4, !tbaa !19
  %90 = load i32, ptr %70, align 4, !tbaa !23
  %91 = load i32, ptr %64, align 1, !tbaa !21
  %92 = mul i32 %91, %.0493575.us
  %93 = load i32, ptr %11, align 4, !tbaa !5
  %94 = mul i32 %92, %93
  %95 = load i32, ptr %69, align 4, !tbaa !22
  tail call void @libxsmm_x86_instruction_vec_move(ptr noundef nonnull %0, i32 noundef %88, i32 noundef 671491379, i32 noundef %89, i32 noundef %90, i32 noundef 1, i32 noundef %94, i8 noundef signext %78, i32 noundef %95, i32 noundef %73, i32 noundef 0, i32 noundef 1) #2
  br i1 %exitcond610.peel.not, label %._crit_edge.us576, label %.peel.next

.peel.next:                                       ; preds = %87, %111
  %.0489573.us = phi i32 [ %121, %111 ], [ 1, %87 ]
  %96 = load i32, ptr %62, align 4, !tbaa !14
  %97 = icmp ugt i32 %96, 1100
  %98 = select i1 %97, i8 122, i8 121
  %spec.select540.us = add i32 %.0489573.us, %spec.select540.v.us
  %.mux.us = select i1 %32, i32 %5, i32 %spec.select540.us
  %.0497.us = select i1 %31, i32 %75, i32 %.mux.us
  %99 = load i32, ptr %63, align 4, !tbaa !19
  %100 = mul i32 %.0489573.us, %4
  %101 = load i32, ptr %64, align 1, !tbaa !21
  %102 = mul i32 %101, %.0493575.us
  %103 = add i32 %102, %100
  %104 = load i32, ptr %11, align 4, !tbaa !5
  %105 = mul i32 %103, %104
  %106 = icmp eq i32 %.0489573.us, %66
  %107 = and i1 %65, %106
  %108 = select i1 %107, i32 %.0484, i32 0
  tail call void @libxsmm_x86_instruction_vec_move(ptr noundef nonnull %0, i32 noundef %96, i32 noundef 671491379, i32 noundef %99, i32 noundef 127, i32 noundef 0, i32 noundef %105, i8 noundef signext %98, i32 noundef %.0497.us, i32 noundef %108, i32 noundef 0, i32 noundef 1) #2
  br i1 %brmerge623, label %109, label %111

109:                                              ; preds = %.peel.next
  %110 = load i32, ptr %69, align 4, !tbaa !22
  tail call void @libxsmm_x86_instruction_vec_compute_2reg_imm8(ptr noundef nonnull %0, i32 noundef 609031794, i8 noundef signext %98, i32 noundef %.0497.us, i32 noundef %110, i32 noundef 16) #2
  br label %111

111:                                              ; preds = %.peel.next, %109
  %112 = load i32, ptr %62, align 4, !tbaa !14
  %113 = load i32, ptr %63, align 4, !tbaa !19
  %114 = load i32, ptr %70, align 4, !tbaa !23
  %115 = load i32, ptr %64, align 1, !tbaa !21
  %116 = mul i32 %115, %.0493575.us
  %117 = add i32 %116, %100
  %118 = load i32, ptr %11, align 4, !tbaa !5
  %119 = mul i32 %117, %118
  %120 = load i32, ptr %69, align 4, !tbaa !22
  tail call void @libxsmm_x86_instruction_vec_move(ptr noundef nonnull %0, i32 noundef %112, i32 noundef 671491379, i32 noundef %113, i32 noundef %114, i32 noundef 1, i32 noundef %119, i8 noundef signext %98, i32 noundef %120, i32 noundef %108, i32 noundef 0, i32 noundef 1) #2
  %121 = add nuw i32 %.0489573.us, 1
  %exitcond610.not = icmp eq i32 %121, %6
  br i1 %exitcond610.not, label %._crit_edge.us576, label %.peel.next, !llvm.loop !24

._crit_edge.us576:                                ; preds = %111, %87
  %122 = add nuw i32 %.0493575.us, 1
  %exitcond612.not = icmp eq i32 %122, %7
  br i1 %exitcond612.not, label %.loopexit, label %.preheader557.us, !llvm.loop !27

123:                                              ; preds = %58
  %124 = and i16 %60, -2
  %switch = icmp eq i16 %124, 64
  br i1 %switch, label %125, label %.thread547

125:                                              ; preds = %123
  %126 = getelementptr inbounds i8, ptr %2, i64 8
  %127 = load i32, ptr %126, align 4, !tbaa !28
  %128 = mul i32 %127, %4
  %129 = icmp eq i32 %128, 64
  %130 = icmp eq i32 %128, 32
  %131 = select i1 %130, i8 121, i8 120
  %132 = select i1 %129, i8 122, i8 %131
  %133 = load i32, ptr %11, align 4, !tbaa !5
  %134 = mul i32 %133, %4
  %135 = icmp eq i32 %134, 32
  %136 = select i1 %135, i8 121, i8 120
  %.not591 = icmp eq i32 %7, 0
  br i1 %.not591, label %.loopexit, label %.preheader560.lr.ph

.preheader560.lr.ph:                              ; preds = %125
  %.not592 = icmp eq i32 %6, 0
  %137 = getelementptr inbounds i8, ptr %2, i64 344
  %138 = getelementptr inbounds i8, ptr %2, i64 228
  %139 = getelementptr inbounds i8, ptr %2, i64 352
  %140 = getelementptr inbounds i8, ptr %0, i64 28
  %141 = getelementptr inbounds i8, ptr %2, i64 348
  %142 = getelementptr inbounds i8, ptr %2, i64 96
  %143 = getelementptr inbounds i8, ptr %2, i64 100
  %144 = getelementptr inbounds i8, ptr %2, i64 84
  %145 = getelementptr inbounds i8, ptr %2, i64 88
  %146 = getelementptr inbounds i8, ptr %1, i64 24
  %147 = getelementptr inbounds i8, ptr %3, i64 12
  %148 = icmp eq i32 %8, 1
  %149 = add i32 %6, -1
  %150 = getelementptr inbounds i8, ptr %1, i64 44
  %151 = getelementptr inbounds i8, ptr %1, i64 48
  br i1 %.not592, label %.loopexit, label %.preheader560.us

.preheader560.us:                                 ; preds = %.preheader560.lr.ph, %._crit_edge.us
  %.1494572.us = phi i32 [ %230, %._crit_edge.us ], [ 0, %.preheader560.lr.ph ]
  %152 = mul i32 %.1494572.us, %6
  %153 = add i32 %152, %5
  br label %154

154:                                              ; preds = %.preheader560.us, %219
  %.1490571.us = phi i32 [ 0, %.preheader560.us ], [ %229, %219 ]
  %155 = select i1 %31, i32 0, i32 %.1490571.us
  %spec.select523.us = add i32 %153, %155
  %.2499.us = select i1 %32, i32 %5, i32 %spec.select523.us
  %156 = add i32 %.1490571.us, %5
  %.3500.us = select i1 %30, i32 %156, i32 %.2499.us
  %157 = load i32, ptr %137, align 4, !tbaa !29
  %158 = load i32, ptr %138, align 4, !tbaa !30
  tail call void @libxsmm_x86_instruction_vec_compute_2reg_mask(ptr noundef %0, i32 noundef -528017809, i8 noundef signext %132, i32 noundef %.3500.us, i32 noundef %157, i32 noundef %158, i32 noundef 1) #2
  %159 = load i32, ptr %137, align 4, !tbaa !29
  %160 = load i32, ptr %139, align 4, !tbaa !31
  tail call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef 805574236, i8 noundef signext %132, i32 noundef %159, i32 noundef %.3500.us, i32 noundef %160) #2
  %161 = load i16, ptr %59, align 1, !tbaa !18
  %162 = icmp eq i16 %161, 65
  br i1 %162, label %176, label %163

163:                                              ; preds = %154
  %164 = load i32, ptr %140, align 4, !tbaa !14
  %.fr.us = freeze i32 %164
  %165 = icmp ugt i32 %.fr.us, 1102
  br i1 %165, label %173, label %switch.early.test541.us

switch.early.test541.us:                          ; preds = %163
  switch i32 %.fr.us, label %166 [
    i32 1053, label %173
    i32 1008, label %173
  ]

166:                                              ; preds = %switch.early.test541.us
  %167 = load i32, ptr %139, align 4, !tbaa !31
  %168 = load i32, ptr %141, align 4, !tbaa !32
  %169 = load i32, ptr %142, align 4, !tbaa !33
  %170 = load i32, ptr %143, align 4, !tbaa !34
  %171 = load i32, ptr %144, align 4, !tbaa !35
  %172 = load i32, ptr %145, align 4, !tbaa !36
  tail call void @libxsmm_generator_vcvtneps2bf16_avx512_preppedstack(ptr noundef nonnull %0, i8 noundef signext %132, i32 noundef %167, i32 noundef %168, i32 noundef %169, i32 noundef %170, i32 noundef %171, i32 noundef %172, i32 noundef 0) #2
  br label %192

173:                                              ; preds = %switch.early.test541.us, %switch.early.test541.us, %163
  %174 = load i32, ptr %139, align 4, !tbaa !31
  %175 = load i32, ptr %141, align 4, !tbaa !32
  tail call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef nonnull %0, i32 noundef 537273970, i8 noundef signext %132, i32 noundef %174, i32 noundef %175) #2
  br label %192

176:                                              ; preds = %154
  %177 = load i32, ptr %139, align 4, !tbaa !31
  %178 = load i32, ptr %141, align 4, !tbaa !32
  %179 = load i32, ptr %138, align 4, !tbaa !30
  tail call void @libxsmm_x86_instruction_vec_compute_2reg_mask(ptr noundef %0, i32 noundef -528017809, i8 noundef signext %132, i32 noundef %177, i32 noundef %178, i32 noundef %179, i32 noundef 1) #2
  %180 = load i32, ptr %141, align 4, !tbaa !32
  %181 = load i32, ptr %139, align 4, !tbaa !31
  tail call void @libxsmm_x86_instruction_vec_compute_3reg(ptr noundef %0, i32 noundef 805574236, i8 noundef signext %132, i32 noundef %180, i32 noundef %181, i32 noundef %181) #2
  %182 = load i32, ptr %140, align 4, !tbaa !14
  %.fr554.us = freeze i32 %182
  %183 = icmp ugt i32 %.fr554.us, 1102
  br i1 %183, label %190, label %switch.early.test.us

switch.early.test.us:                             ; preds = %176
  switch i32 %.fr554.us, label %184 [
    i32 1053, label %190
    i32 1008, label %190
  ]

184:                                              ; preds = %switch.early.test.us
  %185 = load i32, ptr %139, align 4, !tbaa !31
  %186 = load i32, ptr %142, align 4, !tbaa !33
  %187 = load i32, ptr %143, align 4, !tbaa !34
  %188 = load i32, ptr %144, align 4, !tbaa !35
  %189 = load i32, ptr %145, align 4, !tbaa !36
  tail call void @libxsmm_generator_vcvtneps2bf16_avx512_preppedstack(ptr noundef nonnull %0, i8 noundef signext %132, i32 noundef %185, i32 noundef %185, i32 noundef %186, i32 noundef %187, i32 noundef %188, i32 noundef %189, i32 noundef 0) #2
  br label %192

190:                                              ; preds = %switch.early.test.us, %switch.early.test.us, %176
  %191 = load i32, ptr %139, align 4, !tbaa !31
  tail call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef nonnull %0, i32 noundef 537273970, i8 noundef signext %132, i32 noundef %191, i32 noundef %191) #2
  br label %192

192:                                              ; preds = %190, %184, %173, %166
  %193 = load i32, ptr %137, align 4, !tbaa !29
  tail call void @libxsmm_x86_instruction_vec_compute_2reg_imm8(ptr noundef nonnull %0, i32 noundef 609031794, i8 noundef signext %132, i32 noundef %193, i32 noundef %193, i32 noundef 16) #2
  %194 = load i32, ptr %140, align 4, !tbaa !14
  %195 = load i32, ptr %146, align 4, !tbaa !19
  %196 = mul i32 %.1490571.us, %4
  %197 = load i32, ptr %147, align 1, !tbaa !21
  %198 = mul i32 %197, %.1494572.us
  %199 = add i32 %198, %196
  %200 = load i32, ptr %11, align 4, !tbaa !5
  %201 = mul i32 %199, %200
  %202 = load i32, ptr %137, align 4, !tbaa !29
  %203 = icmp eq i32 %.1490571.us, %149
  %204 = and i1 %148, %203
  %205 = select i1 %204, i32 %.0484, i32 0
  tail call void @libxsmm_x86_instruction_vec_move(ptr noundef nonnull %0, i32 noundef %194, i32 noundef 671491379, i32 noundef %195, i32 noundef 127, i32 noundef 0, i32 noundef %201, i8 noundef signext %132, i32 noundef %202, i32 noundef %205, i32 noundef 0, i32 noundef 1) #2
  %206 = load i16, ptr %59, align 1, !tbaa !18
  %207 = icmp eq i16 %206, 65
  br i1 %207, label %208, label %219

208:                                              ; preds = %192
  %209 = load i32, ptr %141, align 4, !tbaa !32
  tail call void @libxsmm_x86_instruction_vec_compute_2reg_imm8(ptr noundef nonnull %0, i32 noundef 609031794, i8 noundef signext %132, i32 noundef %209, i32 noundef %209, i32 noundef 16) #2
  %210 = load i32, ptr %140, align 4, !tbaa !14
  %211 = load i32, ptr %146, align 4, !tbaa !19
  %212 = load i32, ptr %150, align 4, !tbaa !23
  %213 = load i32, ptr %147, align 1, !tbaa !21
  %214 = mul i32 %213, %.1494572.us
  %215 = add i32 %214, %196
  %216 = load i32, ptr %11, align 4, !tbaa !5
  %217 = mul i32 %215, %216
  %218 = load i32, ptr %141, align 4, !tbaa !32
  tail call void @libxsmm_x86_instruction_vec_move(ptr noundef nonnull %0, i32 noundef %210, i32 noundef 671491379, i32 noundef %211, i32 noundef %212, i32 noundef 1, i32 noundef %217, i8 noundef signext %132, i32 noundef %218, i32 noundef %205, i32 noundef 0, i32 noundef 1) #2
  br label %219

219:                                              ; preds = %192, %208
  %.sink633 = phi ptr [ %151, %208 ], [ %150, %192 ]
  %.sink628 = phi ptr [ %139, %208 ], [ %141, %192 ]
  %220 = load i32, ptr %140, align 4, !tbaa !14
  %221 = load i32, ptr %146, align 4, !tbaa !19
  %222 = load i32, ptr %.sink633, align 4, !tbaa !37
  %223 = load i32, ptr %147, align 1, !tbaa !21
  %224 = mul i32 %223, %.1494572.us
  %225 = add i32 %224, %196
  %226 = load i32, ptr %11, align 4, !tbaa !5
  %227 = mul i32 %225, %226
  %228 = load i32, ptr %.sink628, align 4, !tbaa !37
  tail call void @libxsmm_x86_instruction_vec_move(ptr noundef nonnull %0, i32 noundef %220, i32 noundef -528017809, i32 noundef %221, i32 noundef %222, i32 noundef 1, i32 noundef %227, i8 noundef signext %136, i32 noundef %228, i32 noundef %205, i32 noundef 0, i32 noundef 1) #2
  %229 = add nuw i32 %.1490571.us, 1
  %exitcond608.not = icmp eq i32 %229, %6
  br i1 %exitcond608.not, label %._crit_edge.us, label %154, !llvm.loop !38

._crit_edge.us:                                   ; preds = %219
  %230 = add nuw i32 %.1494572.us, 1
  %exitcond609.not = icmp eq i32 %230, %7
  br i1 %exitcond609.not, label %.loopexit, label %.preheader560.us, !llvm.loop !39

231:                                              ; preds = %56
  %232 = getelementptr inbounds i8, ptr %3, i64 29
  %233 = load i16, ptr %232, align 1, !tbaa !18
  %234 = icmp eq i16 %233, 26
  br i1 %234, label %.preheader563, label %.thread547

.preheader563:                                    ; preds = %231
  %.not589 = icmp eq i32 %7, 0
  br i1 %.not589, label %.loopexit, label %.preheader562.lr.ph

.preheader562.lr.ph:                              ; preds = %.preheader563
  %.not590 = icmp eq i32 %6, 0
  %235 = getelementptr inbounds i8, ptr %0, i64 28
  %236 = getelementptr inbounds i8, ptr %2, i64 36
  %237 = getelementptr inbounds i8, ptr %1, i64 24
  %238 = getelementptr inbounds i8, ptr %3, i64 12
  %239 = add i32 %6, -1
  br i1 %.not590, label %.loopexit, label %.preheader562.lr.ph.split.us

.preheader562.lr.ph.split.us:                     ; preds = %.preheader562.lr.ph
  %240 = icmp eq i32 %8, 1
  br i1 %240, label %.preheader562.us.us, label %.preheader562.us

.preheader562.us.us:                              ; preds = %.preheader562.lr.ph.split.us, %._crit_edge.split.us569.us
  %.2495566.us.us = phi i32 [ %259, %._crit_edge.split.us569.us ], [ 0, %.preheader562.lr.ph.split.us ]
  %241 = mul i32 %.2495566.us.us, %6
  %242 = add i32 %241, %5
  br label %243

243:                                              ; preds = %.preheader562.us.us, %243
  %.2491565.us568.us = phi i32 [ 0, %.preheader562.us.us ], [ %258, %243 ]
  %244 = load i32, ptr %235, align 4, !tbaa !14
  %245 = icmp ugt i32 %244, 1100
  %246 = select i1 %245, i8 122, i8 121
  %247 = add i32 %242, %.2491565.us568.us
  %248 = load i32, ptr %236, align 4, !tbaa !40
  %249 = load i32, ptr %237, align 4, !tbaa !19
  %250 = mul i32 %.2491565.us568.us, %4
  %251 = load i32, ptr %238, align 1, !tbaa !21
  %252 = mul i32 %251, %.2495566.us.us
  %253 = add i32 %252, %250
  %254 = load i32, ptr %11, align 4, !tbaa !5
  %255 = mul i32 %253, %254
  %256 = icmp eq i32 %.2491565.us568.us, %239
  %257 = zext i1 %256 to i32
  %spec.select = select i1 %256, i32 %.0484, i32 0
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %0, i32 noundef %248, i32 noundef %249, i32 noundef 127, i32 noundef 0, i32 noundef %255, i8 noundef signext %246, i32 noundef %247, i32 noundef %257, i32 noundef %spec.select, i32 noundef 1) #2
  %258 = add nuw i32 %.2491565.us568.us, 1
  %exitcond606.not = icmp eq i32 %258, %6
  br i1 %exitcond606.not, label %._crit_edge.split.us569.us, label %243, !llvm.loop !41

._crit_edge.split.us569.us:                       ; preds = %243
  %259 = add nuw i32 %.2495566.us.us, 1
  %exitcond607.not = icmp eq i32 %259, %7
  br i1 %exitcond607.not, label %.loopexit, label %.preheader562.us.us, !llvm.loop !42

.preheader562.us:                                 ; preds = %.preheader562.lr.ph.split.us, %._crit_edge.split.us.us
  %.2495566.us = phi i32 [ %276, %._crit_edge.split.us.us ], [ 0, %.preheader562.lr.ph.split.us ]
  %260 = mul i32 %.2495566.us, %6
  %261 = add i32 %260, %5
  br label %262

262:                                              ; preds = %262, %.preheader562.us
  %.2491565.us.us = phi i32 [ 0, %.preheader562.us ], [ %275, %262 ]
  %263 = load i32, ptr %235, align 4, !tbaa !14
  %264 = icmp ugt i32 %263, 1100
  %265 = select i1 %264, i8 122, i8 121
  %266 = add i32 %261, %.2491565.us.us
  %267 = load i32, ptr %236, align 4, !tbaa !40
  %268 = load i32, ptr %237, align 4, !tbaa !19
  %269 = mul i32 %.2491565.us.us, %4
  %270 = load i32, ptr %238, align 1, !tbaa !21
  %271 = mul i32 %270, %.2495566.us
  %272 = add i32 %271, %269
  %273 = load i32, ptr %11, align 4, !tbaa !5
  %274 = mul i32 %272, %273
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %0, i32 noundef %267, i32 noundef %268, i32 noundef 127, i32 noundef 0, i32 noundef %274, i8 noundef signext %265, i32 noundef %266, i32 noundef 0, i32 noundef 0, i32 noundef 1) #2
  %275 = add nuw i32 %.2491565.us.us, 1
  %exitcond.not = icmp eq i32 %275, %6
  br i1 %exitcond.not, label %._crit_edge.split.us.us, label %262, !llvm.loop !41

._crit_edge.split.us.us:                          ; preds = %262
  %276 = add nuw i32 %.2495566.us, 1
  %exitcond605.not = icmp eq i32 %276, %7
  br i1 %exitcond605.not, label %.loopexit, label %.preheader562.us, !llvm.loop !42

.thread547:                                       ; preds = %56, %123, %231
  %.not595 = icmp eq i32 %7, 0
  br i1 %.not595, label %.loopexit, label %.preheader.lr.ph

.preheader.lr.ph:                                 ; preds = %.thread547
  %.not596 = icmp eq i32 %6, 0
  %277 = getelementptr inbounds i8, ptr %2, i64 36
  %278 = getelementptr inbounds i8, ptr %3, i64 29
  %279 = getelementptr inbounds i8, ptr %2, i64 128
  %280 = getelementptr inbounds i8, ptr %2, i64 512
  %281 = getelementptr inbounds i8, ptr %2, i64 96
  %282 = getelementptr inbounds i8, ptr %2, i64 100
  %283 = getelementptr inbounds i8, ptr %2, i64 104
  %284 = getelementptr inbounds i8, ptr %2, i64 108
  %285 = getelementptr inbounds i8, ptr %2, i64 84
  %286 = getelementptr inbounds i8, ptr %2, i64 88
  %287 = getelementptr inbounds i8, ptr %2, i64 92
  %288 = getelementptr inbounds i8, ptr %2, i64 412
  %289 = getelementptr inbounds i8, ptr %2, i64 416
  %290 = getelementptr inbounds i8, ptr %2, i64 420
  %291 = getelementptr inbounds i8, ptr %2, i64 424
  %292 = getelementptr inbounds i8, ptr %2, i64 460
  %293 = getelementptr inbounds i8, ptr %2, i64 464
  %294 = getelementptr inbounds i8, ptr %2, i64 468
  %295 = getelementptr inbounds i8, ptr %0, i64 28
  %296 = getelementptr inbounds i8, ptr %2, i64 472
  %297 = getelementptr inbounds i8, ptr %2, i64 348
  %298 = getelementptr inbounds i8, ptr %2, i64 352
  %299 = icmp eq i32 %8, 1
  %300 = add i32 %6, -1
  %301 = getelementptr inbounds i8, ptr %1, i64 24
  %302 = getelementptr inbounds i8, ptr %3, i64 12
  %303 = getelementptr inbounds i8, ptr %1, i64 28
  br i1 %.not596, label %.loopexit, label %.preheader.us

.preheader.us:                                    ; preds = %.preheader.lr.ph, %._crit_edge.us587
  %.0586.us = phi i32 [ %.4.us, %._crit_edge.us587 ], [ %4, %.preheader.lr.ph ]
  %.1485585.us = phi i32 [ %.5.us, %._crit_edge.us587 ], [ %.0484, %.preheader.lr.ph ]
  %.3496584.us = phi i32 [ %521, %._crit_edge.us587 ], [ 0, %.preheader.lr.ph ]
  %.0503583.us = phi i8 [ %.4507.us, %._crit_edge.us587 ], [ %17, %.preheader.lr.ph ]
  %304 = mul i32 %.3496584.us, %6
  %305 = add i32 %304, %5
  br label %306

306:                                              ; preds = %.preheader.us, %519
  %.1580.us = phi i32 [ %.0586.us, %.preheader.us ], [ %.4.us, %519 ]
  %.2486579.us = phi i32 [ %.1485585.us, %.preheader.us ], [ %.5.us, %519 ]
  %.3492578.us = phi i32 [ 0, %.preheader.us ], [ %520, %519 ]
  %.1504577.us = phi i8 [ %.0503583.us, %.preheader.us ], [ %.4507.us, %519 ]
  %307 = load i32, ptr %277, align 4, !tbaa !40
  %308 = add i32 %.3492578.us, %305
  %309 = load i8, ptr %18, align 1, !tbaa !10
  %310 = icmp eq i8 %309, 1
  br i1 %310, label %311, label %314

311:                                              ; preds = %306
  %312 = load i16, ptr %278, align 1, !tbaa !18
  %313 = icmp eq i16 %312, 2
  br i1 %313, label %316, label %314

314:                                              ; preds = %311, %306
  %spec.select529.us = select i1 %31, i32 %305, i32 %308
  %.5502.us = select i1 %32, i32 %5, i32 %spec.select529.us
  %315 = add i32 %.3492578.us, %5
  %spec.select544.us = select i1 %30, i32 %315, i32 %.5502.us
  br label %318

316:                                              ; preds = %311
  %317 = load i32, ptr %279, align 4, !tbaa !43
  br label %318

318:                                              ; preds = %316, %314
  %.6.us = phi i32 [ %317, %316 ], [ %spec.select544.us, %314 ]
  %319 = icmp eq i32 %.6.us, %308
  br i1 %319, label %320, label %472

320:                                              ; preds = %318
  %321 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %322 = icmp eq i32 %321, 1
  br i1 %322, label %326, label %323

323:                                              ; preds = %320
  %324 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %325 = icmp eq i32 %324, 1
  br i1 %325, label %326, label %329

326:                                              ; preds = %323, %320
  %327 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %328 = icmp eq i32 %327, 2
  br i1 %328, label %397, label %329

329:                                              ; preds = %326, %323
  %330 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %331 = icmp eq i32 %330, 1
  br i1 %331, label %335, label %332

332:                                              ; preds = %329
  %333 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %334 = icmp eq i32 %333, 1
  br i1 %334, label %335, label %338

335:                                              ; preds = %332, %329
  %336 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %337 = icmp eq i32 %336, 3
  br i1 %337, label %391, label %338

338:                                              ; preds = %335, %332
  %339 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %340 = icmp eq i32 %339, 1
  br i1 %340, label %344, label %341

341:                                              ; preds = %338
  %342 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %343 = icmp eq i32 %342, 1
  br i1 %343, label %344, label %347

344:                                              ; preds = %341, %338
  %345 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %346 = icmp eq i32 %345, 4
  br i1 %346, label %365, label %347

347:                                              ; preds = %344, %341
  %348 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %349 = icmp eq i32 %348, 1
  br i1 %349, label %353, label %350

350:                                              ; preds = %347
  %351 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %352 = icmp eq i32 %351, 1
  br i1 %352, label %353, label %408

353:                                              ; preds = %350, %347
  %354 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %355 = icmp eq i32 %354, 5
  br i1 %355, label %356, label %408

356:                                              ; preds = %353
  %357 = load i8, ptr %280, align 4, !tbaa !44
  %358 = load i32, ptr %281, align 4, !tbaa !33
  %359 = load i32, ptr %282, align 4, !tbaa !34
  %360 = load i32, ptr %283, align 4, !tbaa !45
  %361 = load i32, ptr %284, align 4, !tbaa !46
  %362 = load i32, ptr %285, align 4, !tbaa !35
  %363 = load i32, ptr %286, align 4, !tbaa !36
  %364 = load i32, ptr %287, align 4, !tbaa !47
  tail call void @libxsmm_generator_vcvtf32_to_hf8_avx512_preppedstack(ptr noundef %0, i8 noundef signext %357, i32 noundef %308, i32 noundef %308, i32 noundef %358, i32 noundef %359, i32 noundef %360, i32 noundef %361, i32 noundef %362, i32 noundef %363, i32 noundef %364) #2
  br label %408

365:                                              ; preds = %344
  %366 = load i8, ptr %18, align 1, !tbaa !10
  switch i8 %366, label %.thread553.us [
    i8 1, label %373
    i8 2, label %370
    i8 3, label %367
  ]

367:                                              ; preds = %365
  %368 = load i16, ptr %33, align 1, !tbaa !13
  %369 = and i16 %368, 2048
  %.not555.us = icmp eq i16 %369, 0
  br i1 %.not555.us, label %.thread553.us, label %.thread551.us

370:                                              ; preds = %365
  %371 = load i16, ptr %33, align 1, !tbaa !13
  %372 = and i16 %371, 64
  %.not522.us = icmp eq i16 %372, 0
  br i1 %.not522.us, label %.thread553.us, label %.thread551.us

373:                                              ; preds = %365
  %374 = load i16, ptr %33, align 1, !tbaa !13
  %375 = and i16 %374, 4096
  %.not521.us = icmp eq i16 %375, 0
  br i1 %.not521.us, label %.thread553.us, label %.thread551.us

.thread551.us:                                    ; preds = %373, %370, %367
  %376 = load i8, ptr %280, align 4, !tbaa !44
  %377 = load i32, ptr %288, align 4, !tbaa !48
  %378 = load i32, ptr %289, align 4, !tbaa !49
  %379 = load i32, ptr %290, align 4, !tbaa !50
  %380 = load i32, ptr %291, align 4, !tbaa !51
  %381 = load i32, ptr %292, align 4, !tbaa !52
  %382 = load i32, ptr %293, align 4, !tbaa !53
  %383 = load i32, ptr %294, align 4, !tbaa !54
  tail call void @libxsmm_generator_xoshiro128pp_axv2_avx512(ptr noundef %0, i8 noundef zeroext %376, i32 noundef %377, i32 noundef %378, i32 noundef %379, i32 noundef %380, i32 noundef %381, i32 noundef %382, i32 noundef %383) #2
  br label %.thread553.us

.thread553.us:                                    ; preds = %.thread551.us, %373, %370, %367, %365
  %384 = phi i32 [ 1, %.thread551.us ], [ 0, %367 ], [ 0, %370 ], [ 0, %373 ], [ 0, %365 ]
  %385 = load i8, ptr %280, align 4, !tbaa !44
  %386 = load i32, ptr %281, align 4, !tbaa !33
  %387 = load i32, ptr %282, align 4, !tbaa !34
  %388 = load i32, ptr %285, align 4, !tbaa !35
  %389 = load i32, ptr %286, align 4, !tbaa !36
  %390 = load i32, ptr %294, align 4, !tbaa !54
  tail call void @libxsmm_generator_vcvtneps2bf8_avx512_preppedstack(ptr noundef %0, i8 noundef signext %385, i32 noundef %308, i32 noundef %308, i32 noundef %386, i32 noundef %387, i32 noundef %388, i32 noundef %389, i32 noundef %384, i32 noundef %390) #2
  br label %408

391:                                              ; preds = %335
  %392 = load i8, ptr %280, align 4, !tbaa !44
  %393 = load i32, ptr %295, align 4, !tbaa !14
  %394 = icmp ugt i32 %393, 1100
  %395 = zext i1 %394 to i32
  %396 = zext i1 %394 to i8
  tail call void @libxsmm_x86_instruction_vec_compute_2reg_mask_sae_imm8(ptr noundef %0, i32 noundef 671954205, i8 noundef signext %392, i32 noundef %308, i32 noundef %308, i32 noundef 0, i32 noundef %395, i8 noundef zeroext %396, i32 noundef 0) #2
  br label %408

397:                                              ; preds = %326
  %398 = load i32, ptr %295, align 4, !tbaa !14
  %.fr556.us = freeze i32 %398
  %399 = icmp ugt i32 %.fr556.us, 1102
  br i1 %399, label %406, label %switch.early.test542.us

switch.early.test542.us:                          ; preds = %397
  switch i32 %.fr556.us, label %400 [
    i32 1053, label %406
    i32 1008, label %406
  ]

400:                                              ; preds = %switch.early.test542.us
  %401 = load i8, ptr %280, align 4, !tbaa !44
  %402 = load i32, ptr %281, align 4, !tbaa !33
  %403 = load i32, ptr %282, align 4, !tbaa !34
  %404 = load i32, ptr %285, align 4, !tbaa !35
  %405 = load i32, ptr %286, align 4, !tbaa !36
  tail call void @libxsmm_generator_vcvtneps2bf16_avx512_preppedstack(ptr noundef nonnull %0, i8 noundef signext %401, i32 noundef %308, i32 noundef %308, i32 noundef %402, i32 noundef %403, i32 noundef %404, i32 noundef %405, i32 noundef 0) #2
  br label %408

406:                                              ; preds = %switch.early.test542.us, %switch.early.test542.us, %397
  %407 = load i8, ptr %280, align 4, !tbaa !44
  tail call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef nonnull %0, i32 noundef 537273970, i8 noundef signext %407, i32 noundef %308, i32 noundef %308) #2
  br label %408

408:                                              ; preds = %406, %400, %391, %.thread553.us, %356, %353, %350
  %409 = load i8, ptr %18, align 1, !tbaa !10
  %410 = icmp eq i8 %409, 1
  br i1 %410, label %411, label %472

411:                                              ; preds = %408
  %412 = load i16, ptr %278, align 1, !tbaa !18
  %413 = icmp eq i16 %412, 42
  br i1 %413, label %414, label %472

414:                                              ; preds = %411
  %415 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %416 = icmp eq i32 %415, 1
  br i1 %416, label %420, label %417

417:                                              ; preds = %414
  %418 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %419 = icmp eq i32 %418, 2
  br i1 %419, label %420, label %436

420:                                              ; preds = %417, %414
  %421 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %422 = icmp eq i32 %421, 12
  br i1 %422, label %423, label %436

423:                                              ; preds = %420
  %424 = load i32, ptr %295, align 4, !tbaa !14
  %425 = icmp ult i32 %424, 1041
  %426 = load i32, ptr %296, align 4, !tbaa !55
  br i1 %425, label %430, label %427

427:                                              ; preds = %423
  tail call void @libxsmm_generator_vcvtneps2int_avx512(ptr noundef nonnull %0, i32 noundef 12, i32 noundef %308, i32 noundef %426, i32 noundef %.lobit, i32 noundef %.lobit519) #2
  %428 = load i32, ptr %295, align 4, !tbaa !14
  %429 = icmp ult i32 %428, 1101
  %spec.store.select.us = select i1 %429, i32 8, i32 16
  br label %436

430:                                              ; preds = %423
  %431 = load i32, ptr %297, align 4, !tbaa !32
  %432 = load i32, ptr %298, align 4, !tbaa !31
  tail call void @libxsmm_generator_vcvtneps2int_avx(ptr noundef nonnull %0, i32 noundef 12, i32 noundef %308, i32 noundef %426, i32 noundef %431, i32 noundef %432, i32 noundef %.lobit, i32 noundef %.lobit519) #2
  br i1 %.not520, label %436, label %433

433:                                              ; preds = %430
  %434 = load i32, ptr %3, align 1, !tbaa !17
  %435 = and i32 %434, 7
  br label %436

436:                                              ; preds = %433, %430, %427, %420, %417
  %.2505.us = phi i8 [ 120, %433 ], [ 120, %430 ], [ 120, %427 ], [ %.1504577.us, %420 ], [ %.1504577.us, %417 ]
  %.3487.us = phi i32 [ %435, %433 ], [ %.2486579.us, %430 ], [ %.2486579.us, %427 ], [ %.2486579.us, %420 ], [ %.2486579.us, %417 ]
  %.2.us = phi i32 [ 8, %433 ], [ 8, %430 ], [ %spec.store.select.us, %427 ], [ %.1580.us, %420 ], [ %.1580.us, %417 ]
  %437 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %438 = icmp eq i32 %437, 1
  br i1 %438, label %442, label %439

439:                                              ; preds = %436
  %440 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %441 = icmp eq i32 %440, 2
  br i1 %441, label %442, label %459

442:                                              ; preds = %439, %436
  %443 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %444 = icmp eq i32 %443, 10
  br i1 %444, label %445, label %459

445:                                              ; preds = %442
  %446 = load i32, ptr %295, align 4, !tbaa !14
  %447 = icmp ult i32 %446, 1101
  %448 = load i32, ptr %296, align 4, !tbaa !55
  br i1 %447, label %450, label %449

449:                                              ; preds = %445
  tail call void @libxsmm_generator_vcvtneps2int_avx512(ptr noundef nonnull %0, i32 noundef 10, i32 noundef %308, i32 noundef %448, i32 noundef %.lobit, i32 noundef %.lobit519) #2
  br label %459

450:                                              ; preds = %445
  %451 = load i32, ptr %297, align 4, !tbaa !32
  %452 = load i32, ptr %298, align 4, !tbaa !31
  tail call void @libxsmm_generator_vcvtneps2int_avx(ptr noundef nonnull %0, i32 noundef 10, i32 noundef %308, i32 noundef %448, i32 noundef %451, i32 noundef %452, i32 noundef %.lobit, i32 noundef %.lobit519) #2
  br i1 %.not520, label %459, label %453

453:                                              ; preds = %450
  %454 = load i32, ptr %295, align 4, !tbaa !14
  %455 = icmp ult i32 %454, 1041
  br i1 %455, label %456, label %459

456:                                              ; preds = %453
  %457 = load i32, ptr %3, align 1, !tbaa !17
  %458 = and i32 %457, 7
  br label %459

459:                                              ; preds = %456, %453, %450, %449, %442, %439
  %.3506.us = phi i8 [ 120, %456 ], [ 120, %453 ], [ 120, %450 ], [ 121, %449 ], [ %.2505.us, %442 ], [ %.2505.us, %439 ]
  %.4488.us = phi i32 [ %458, %456 ], [ %.3487.us, %453 ], [ %.3487.us, %450 ], [ %.3487.us, %449 ], [ %.3487.us, %442 ], [ %.3487.us, %439 ]
  %.3.us = phi i32 [ 8, %456 ], [ 8, %453 ], [ 8, %450 ], [ 16, %449 ], [ %.2.us, %442 ], [ %.2.us, %439 ]
  %460 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %461 = icmp eq i32 %460, 1
  br i1 %461, label %465, label %462

462:                                              ; preds = %459
  %463 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %464 = icmp eq i32 %463, 2
  br i1 %464, label %465, label %472

465:                                              ; preds = %462, %459
  %466 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %467 = icmp eq i32 %466, 8
  br i1 %467, label %468, label %472

468:                                              ; preds = %465
  %469 = load i32, ptr %296, align 4, !tbaa !55
  tail call void @libxsmm_generator_vcvtneps2int_avx512(ptr noundef %0, i32 noundef 8, i32 noundef %308, i32 noundef %469, i32 noundef %.lobit, i32 noundef %.lobit519) #2
  %470 = load i32, ptr %295, align 4, !tbaa !14
  %471 = icmp ult i32 %470, 1101
  %spec.select532.us = select i1 %471, i8 121, i8 122
  %spec.select533.us = select i1 %471, i32 8, i32 16
  br label %472

472:                                              ; preds = %468, %465, %462, %411, %408, %318
  %.4507.us = phi i8 [ %.3506.us, %465 ], [ %.3506.us, %462 ], [ %.1504577.us, %411 ], [ %.1504577.us, %408 ], [ %.1504577.us, %318 ], [ %spec.select532.us, %468 ]
  %.5.us = phi i32 [ %.4488.us, %465 ], [ %.4488.us, %462 ], [ %.2486579.us, %411 ], [ %.2486579.us, %408 ], [ %.2486579.us, %318 ], [ %.4488.us, %468 ]
  %.4.us = phi i32 [ %.3.us, %465 ], [ %.3.us, %462 ], [ %.1580.us, %411 ], [ %.1580.us, %408 ], [ %.1580.us, %318 ], [ %spec.select533.us, %468 ]
  %473 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %474 = icmp eq i32 %473, 4
  br i1 %474, label %478, label %475

475:                                              ; preds = %472
  %476 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %477 = icmp eq i32 %476, 5
  br i1 %477, label %478, label %485

478:                                              ; preds = %475, %472
  %479 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %480 = icmp eq i32 %479, 1
  br i1 %480, label %481, label %485

481:                                              ; preds = %478
  %482 = load i32, ptr %295, align 4, !tbaa !14
  %483 = icmp ugt i32 %482, 1100
  %484 = icmp eq i32 %.3492578.us, %300
  %or.cond535.us = and i1 %299, %484
  %or.cond588 = or i1 %483, %or.cond535.us
  br i1 %or.cond588, label %485, label %496

485:                                              ; preds = %481, %478, %475
  %486 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %487 = icmp eq i32 %486, 2
  br i1 %487, label %488, label %496

488:                                              ; preds = %485
  %489 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %490 = icmp eq i32 %489, 1
  br i1 %490, label %491, label %496

491:                                              ; preds = %488
  %492 = load i32, ptr %295, align 4, !tbaa !14
  %493 = icmp ult i32 %492, 1005
  br i1 %493, label %494, label %496

494:                                              ; preds = %491
  %495 = icmp eq i32 %.3492578.us, %300
  %or.cond537.us = and i1 %299, %495
  %spec.select543.us = select i1 %or.cond537.us, i32 %307, i32 -1610149872
  br label %496

496:                                              ; preds = %481, %494, %491, %488, %485
  %.0483.us = phi i32 [ %307, %491 ], [ %307, %488 ], [ %307, %485 ], [ %spec.select543.us, %494 ], [ 545725200, %481 ]
  %497 = load i32, ptr %301, align 4, !tbaa !19
  %498 = mul i32 %.4.us, %.3492578.us
  %499 = load i32, ptr %302, align 1, !tbaa !21
  %500 = mul i32 %499, %.3496584.us
  %501 = add i32 %500, %498
  %502 = load i32, ptr %11, align 4, !tbaa !5
  %503 = mul i32 %501, %502
  %504 = icmp eq i32 %.3492578.us, %300
  %505 = and i1 %299, %504
  %506 = zext i1 %505 to i32
  %spec.select538.us = select i1 %505, i32 %.5.us, i32 0
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %0, i32 noundef %.0483.us, i32 noundef %497, i32 noundef 127, i32 noundef 0, i32 noundef %503, i8 noundef signext %.4507.us, i32 noundef %.6.us, i32 noundef %506, i32 noundef %spec.select538.us, i32 noundef 1) #2
  %507 = load i8, ptr %18, align 1, !tbaa !10
  %508 = icmp eq i8 %507, 1
  br i1 %508, label %509, label %519

509:                                              ; preds = %496
  %510 = load i16, ptr %278, align 1, !tbaa !18
  %511 = icmp eq i16 %510, 63
  br i1 %511, label %512, label %519

512:                                              ; preds = %509
  %513 = load i32, ptr %303, align 4, !tbaa !56
  %514 = load i32, ptr %302, align 1, !tbaa !21
  %515 = mul i32 %514, %.3496584.us
  %516 = add i32 %515, %498
  %517 = load i32, ptr %11, align 4, !tbaa !5
  %518 = mul i32 %516, %517
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %0, i32 noundef %.0483.us, i32 noundef %513, i32 noundef 127, i32 noundef 0, i32 noundef %518, i8 noundef signext %.4507.us, i32 noundef %.6.us, i32 noundef %506, i32 noundef %spec.select538.us, i32 noundef 1) #2
  br label %519

519:                                              ; preds = %512, %509, %496
  %520 = add nuw i32 %.3492578.us, 1
  %exitcond613.not = icmp eq i32 %520, %6
  br i1 %exitcond613.not, label %._crit_edge.us587, label %306, !llvm.loop !57

._crit_edge.us587:                                ; preds = %519
  %521 = add nuw i32 %.3496584.us, 1
  %exitcond614.not = icmp eq i32 %521, %7
  br i1 %exitcond614.not, label %.loopexit, label %.preheader.us, !llvm.loop !58

.loopexit:                                        ; preds = %._crit_edge.split.us.us, %._crit_edge.split.us569.us, %._crit_edge.us, %._crit_edge.us576, %._crit_edge.us587, %.preheader.lr.ph, %.preheader562.lr.ph, %.preheader560.lr.ph, %.preheader557.lr.ph, %.preheader563, %125, %.preheader558, %.thread547, %._crit_edge
  ret void
}

declare void @libxsmm_x86_instruction_vec_compute_2reg_mask(ptr 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_3reg(ptr noundef, i32 noundef, i8 noundef signext, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

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

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

declare void @libxsmm_generator_xoshiro128pp_axv2_avx512(ptr noundef, i8 noundef zeroext, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

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

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

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

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

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

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

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


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