; 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

; 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

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

48:                                               ; preds = %10
  br label %58

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

58:                                               ; preds = %49, %48
  %59 = phi i32 [ 122, %48 ], [ %57, %49 ]
  %60 = trunc i32 %59 to i8
  store i8 %60, ptr %24, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #3
  %61 = load ptr, ptr %14, align 8, !tbaa !5
  %62 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %61, i32 0, i32 11
  %63 = load i8, ptr %62, align 1, !tbaa !14
  %64 = zext i8 %63 to i32
  %65 = icmp eq i32 %64, 1
  br i1 %65, label %66, label %73

66:                                               ; preds = %58
  %67 = load ptr, ptr %14, align 8, !tbaa !5
  %68 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %67, i32 0, i32 9
  %69 = load i16, ptr %68, align 1, !tbaa !17
  %70 = zext i16 %69 to i32
  %71 = and i32 %70, 2
  %72 = icmp sgt i32 %71, 0
  br i1 %72, label %101, label %73

73:                                               ; preds = %66, %58
  %74 = load ptr, ptr %14, align 8, !tbaa !5
  %75 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %74, i32 0, i32 11
  %76 = load i8, ptr %75, align 1, !tbaa !14
  %77 = zext i8 %76 to i32
  %78 = icmp eq i32 %77, 2
  br i1 %78, label %79, label %86

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

86:                                               ; preds = %79, %73
  %87 = load ptr, ptr %14, align 8, !tbaa !5
  %88 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %87, i32 0, i32 11
  %89 = load i8, ptr %88, align 1, !tbaa !14
  %90 = zext i8 %89 to i32
  %91 = icmp eq i32 %90, 3
  br i1 %91, label %92, label %99

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

99:                                               ; preds = %92, %86
  %100 = phi i1 [ false, %86 ], [ %98, %92 ]
  br label %101

101:                                              ; preds = %99, %79, %66
  %102 = phi i1 [ true, %79 ], [ true, %66 ], [ %100, %99 ]
  %103 = zext i1 %102 to i64
  %104 = select i1 %102, i32 1, i32 0
  store i32 %104, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #3
  %105 = load ptr, ptr %14, align 8, !tbaa !5
  %106 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %105, i32 0, i32 11
  %107 = load i8, ptr %106, align 1, !tbaa !14
  %108 = zext i8 %107 to i32
  %109 = icmp eq i32 %108, 1
  br i1 %109, label %110, label %117

110:                                              ; preds = %101
  %111 = load ptr, ptr %14, align 8, !tbaa !5
  %112 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %111, i32 0, i32 9
  %113 = load i16, ptr %112, align 1, !tbaa !17
  %114 = zext i16 %113 to i32
  %115 = and i32 %114, 4
  %116 = icmp sgt i32 %115, 0
  br i1 %116, label %145, label %117

117:                                              ; preds = %110, %101
  %118 = load ptr, ptr %14, align 8, !tbaa !5
  %119 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %118, i32 0, i32 11
  %120 = load i8, ptr %119, align 1, !tbaa !14
  %121 = zext i8 %120 to i32
  %122 = icmp eq i32 %121, 2
  br i1 %122, label %123, label %130

123:                                              ; preds = %117
  %124 = load ptr, ptr %14, align 8, !tbaa !5
  %125 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %124, i32 0, i32 9
  %126 = load i16, ptr %125, align 1, !tbaa !17
  %127 = zext i16 %126 to i32
  %128 = and i32 %127, 4
  %129 = icmp sgt i32 %128, 0
  br i1 %129, label %145, label %130

130:                                              ; preds = %123, %117
  %131 = load ptr, ptr %14, align 8, !tbaa !5
  %132 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %131, i32 0, i32 11
  %133 = load i8, ptr %132, align 1, !tbaa !14
  %134 = zext i8 %133 to i32
  %135 = icmp eq i32 %134, 3
  br i1 %135, label %136, label %143

136:                                              ; preds = %130
  %137 = load ptr, ptr %14, align 8, !tbaa !5
  %138 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %137, i32 0, i32 9
  %139 = load i16, ptr %138, align 1, !tbaa !17
  %140 = zext i16 %139 to i32
  %141 = and i32 %140, 8
  %142 = icmp sgt i32 %141, 0
  br label %143

143:                                              ; preds = %136, %130
  %144 = phi i1 [ false, %130 ], [ %142, %136 ]
  br label %145

145:                                              ; preds = %143, %123, %110
  %146 = phi i1 [ true, %123 ], [ true, %110 ], [ %144, %143 ]
  %147 = zext i1 %146 to i64
  %148 = select i1 %146, i32 1, i32 0
  store i32 %148, ptr %26, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #3
  %149 = load ptr, ptr %14, align 8, !tbaa !5
  %150 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %149, i32 0, i32 11
  %151 = load i8, ptr %150, align 1, !tbaa !14
  %152 = zext i8 %151 to i32
  %153 = icmp eq i32 %152, 1
  br i1 %153, label %154, label %161

154:                                              ; preds = %145
  %155 = load ptr, ptr %14, align 8, !tbaa !5
  %156 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %155, i32 0, i32 9
  %157 = load i16, ptr %156, align 1, !tbaa !17
  %158 = zext i16 %157 to i32
  %159 = and i32 %158, 8
  %160 = icmp sgt i32 %159, 0
  br i1 %160, label %189, label %161

161:                                              ; preds = %154, %145
  %162 = load ptr, ptr %14, align 8, !tbaa !5
  %163 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %162, i32 0, i32 11
  %164 = load i8, ptr %163, align 1, !tbaa !14
  %165 = zext i8 %164 to i32
  %166 = icmp eq i32 %165, 2
  br i1 %166, label %167, label %174

167:                                              ; preds = %161
  %168 = load ptr, ptr %14, align 8, !tbaa !5
  %169 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %168, i32 0, i32 9
  %170 = load i16, ptr %169, align 1, !tbaa !17
  %171 = zext i16 %170 to i32
  %172 = and i32 %171, 16
  %173 = icmp sgt i32 %172, 0
  br i1 %173, label %189, label %174

174:                                              ; preds = %167, %161
  %175 = load ptr, ptr %14, align 8, !tbaa !5
  %176 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %175, i32 0, i32 11
  %177 = load i8, ptr %176, align 1, !tbaa !14
  %178 = zext i8 %177 to i32
  %179 = icmp eq i32 %178, 3
  br i1 %179, label %180, label %187

180:                                              ; preds = %174
  %181 = load ptr, ptr %14, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %181, i32 0, i32 9
  %183 = load i16, ptr %182, align 1, !tbaa !17
  %184 = zext i16 %183 to i32
  %185 = and i32 %184, 64
  %186 = icmp sgt i32 %185, 0
  br label %187

187:                                              ; preds = %180, %174
  %188 = phi i1 [ false, %174 ], [ %186, %180 ]
  br label %189

189:                                              ; preds = %187, %167, %154
  %190 = phi i1 [ true, %167 ], [ true, %154 ], [ %188, %187 ]
  %191 = zext i1 %190 to i64
  %192 = select i1 %190, i32 1, i32 0
  store i32 %192, ptr %27, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #3
  %193 = load i32, ptr %25, align 4, !tbaa !9
  %194 = icmp eq i32 %193, 1
  br i1 %194, label %201, label %195

195:                                              ; preds = %189
  %196 = load i32, ptr %26, align 4, !tbaa !9
  %197 = icmp eq i32 %196, 1
  br i1 %197, label %201, label %198

198:                                              ; preds = %195
  %199 = load i32, ptr %27, align 4, !tbaa !9
  %200 = icmp eq i32 %199, 1
  br label %201

201:                                              ; preds = %198, %195, %189
  %202 = phi i1 [ true, %195 ], [ true, %189 ], [ %200, %198 ]
  %203 = zext i1 %202 to i64
  %204 = select i1 %202, i32 1, i32 0
  store i32 %204, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #3
  %205 = load ptr, ptr %13, align 8, !tbaa !5
  %206 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %205, i32 0, i32 2
  %207 = load i32, ptr %206, align 4, !tbaa !11
  %208 = icmp eq i32 %207, 4
  br i1 %208, label %209, label %216

209:                                              ; preds = %201
  %210 = load ptr, ptr %11, align 8, !tbaa !5
  %211 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %210, i32 0, i32 6
  %212 = load i32, ptr %211, align 4, !tbaa !18
  %213 = icmp ult i32 %212, 1101
  %214 = zext i1 %213 to i64
  %215 = select i1 %213, i32 537209368, i32 537209432
  br label %223

216:                                              ; preds = %201
  %217 = load ptr, ptr %13, align 8, !tbaa !5
  %218 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %217, i32 0, i32 2
  %219 = load i32, ptr %218, align 4, !tbaa !11
  %220 = icmp eq i32 %219, 2
  %221 = zext i1 %220 to i64
  %222 = select i1 %220, i32 537209209, i32 537208952
  br label %223

223:                                              ; preds = %216, %209
  %224 = phi i32 [ %215, %209 ], [ %222, %216 ]
  store i32 %224, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #3
  %225 = load ptr, ptr %14, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %225, i32 0, i32 9
  %227 = load i16, ptr %226, align 1, !tbaa !17
  %228 = zext i16 %227 to i32
  %229 = and i32 %228, 1024
  %230 = icmp sgt i32 %229, 0
  %231 = zext i1 %230 to i64
  %232 = select i1 %230, i32 1, i32 0
  store i32 %232, ptr %30, align 4, !tbaa !9
  %233 = load ptr, ptr %13, align 8, !tbaa !5
  %234 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %233, i32 0, i32 2
  %235 = load i32, ptr %234, align 4, !tbaa !11
  %236 = icmp eq i32 %235, 8
  br i1 %236, label %237, label %245

237:                                              ; preds = %223
  %238 = load ptr, ptr %11, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %238, i32 0, i32 6
  %240 = load i32, ptr %239, align 4, !tbaa !18
  %241 = icmp ult i32 %240, 1051
  br i1 %241, label %242, label %243

242:                                              ; preds = %237
  store i32 1610948697, ptr %29, align 4, !tbaa !9
  br label %244

243:                                              ; preds = %237
  store i32 -528143527, ptr %29, align 4, !tbaa !9
  br label %244

244:                                              ; preds = %243, %242
  br label %245

245:                                              ; preds = %244, %223
  %246 = load i32, ptr %19, align 4, !tbaa !9
  %247 = icmp ugt i32 %246, 0
  br i1 %247, label %248, label %290

248:                                              ; preds = %245
  %249 = load ptr, ptr %11, align 8, !tbaa !5
  %250 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %249, i32 0, i32 6
  %251 = load i32, ptr %250, align 4, !tbaa !18
  %252 = icmp uge i32 %251, 1005
  br i1 %252, label %253, label %277

253:                                              ; preds = %248
  %254 = load ptr, ptr %11, align 8, !tbaa !5
  %255 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %254, i32 0, i32 6
  %256 = load i32, ptr %255, align 4, !tbaa !18
  %257 = icmp ult i32 %256, 1051
  br i1 %257, label %258, label %277

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

262:                                              ; preds = %258
  %263 = load ptr, ptr %14, align 8, !tbaa !5
  %264 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %263, i32 noundef 0)
  %265 = icmp eq i32 3, %264
  br i1 %265, label %270, label %266

266:                                              ; preds = %262
  %267 = load ptr, ptr %14, align 8, !tbaa !5
  %268 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %267, i32 noundef 0)
  %269 = icmp eq i32 2, %268
  br i1 %269, label %270, label %276

270:                                              ; preds = %266, %262, %258
  %271 = load ptr, ptr %14, align 8, !tbaa !5
  %272 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %271, i32 0, i32 0
  %273 = load i32, ptr %272, align 1, !tbaa !20
  %274 = load i32, ptr %15, align 4, !tbaa !9
  %275 = urem i32 %273, %274
  store i32 %275, ptr %20, align 4, !tbaa !9
  br label %276

276:                                              ; preds = %270, %266
  br label %289

277:                                              ; preds = %253, %248
  %278 = load ptr, ptr %11, align 8, !tbaa !5
  %279 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %278, i32 0, i32 6
  %280 = load i32, ptr %279, align 4, !tbaa !18
  %281 = icmp ult i32 %280, 1005
  br i1 %281, label %282, label %288

282:                                              ; preds = %277
  %283 = load ptr, ptr %14, align 8, !tbaa !5
  %284 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %283, i32 0, i32 0
  %285 = load i32, ptr %284, align 1, !tbaa !20
  %286 = load i32, ptr %15, align 4, !tbaa !9
  %287 = urem i32 %285, %286
  store i32 %287, ptr %20, align 4, !tbaa !9
  br label %288

288:                                              ; preds = %282, %277
  br label %289

289:                                              ; preds = %288, %276
  br label %290

290:                                              ; preds = %289, %245
  %291 = load ptr, ptr %14, align 8, !tbaa !5
  %292 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %291, i32 0, i32 11
  %293 = load i8, ptr %292, align 1, !tbaa !14
  %294 = zext i8 %293 to i32
  %295 = icmp eq i32 %294, 1
  br i1 %295, label %296, label %303

296:                                              ; preds = %290
  %297 = load ptr, ptr %14, align 8, !tbaa !5
  %298 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %297, i32 0, i32 10
  %299 = load i16, ptr %298, align 1, !tbaa !21
  %300 = zext i16 %299 to i32
  %301 = icmp eq i32 %300, 2
  br i1 %301, label %302, label %303

302:                                              ; preds = %296
  store i32 1, ptr %31, align 4
  br label %1707

303:                                              ; preds = %296, %290
  %304 = load ptr, ptr %14, align 8, !tbaa !5
  %305 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %304, i32 0, i32 11
  %306 = load i8, ptr %305, align 1, !tbaa !14
  %307 = zext i8 %306 to i32
  %308 = icmp eq i32 %307, 2
  br i1 %308, label %309, label %535

309:                                              ; preds = %303
  %310 = load ptr, ptr %14, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %310, i32 0, i32 10
  %312 = load i16, ptr %311, align 1, !tbaa !21
  %313 = zext i16 %312 to i32
  %314 = icmp eq i32 %313, 26
  br i1 %314, label %315, label %535

315:                                              ; preds = %309
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %316

316:                                              ; preds = %531, %315
  %317 = load i32, ptr %22, align 4, !tbaa !9
  %318 = load i32, ptr %18, align 4, !tbaa !9
  %319 = icmp ult i32 %317, %318
  br i1 %319, label %320, label %534

320:                                              ; preds = %316
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %321

321:                                              ; preds = %527, %320
  %322 = load i32, ptr %21, align 4, !tbaa !9
  %323 = load i32, ptr %17, align 4, !tbaa !9
  %324 = icmp ult i32 %322, %323
  br i1 %324, label %325, label %530

325:                                              ; preds = %321
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #3
  %326 = load ptr, ptr %11, align 8, !tbaa !5
  %327 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %326, i32 0, i32 6
  %328 = load i32, ptr %327, align 4, !tbaa !18
  %329 = icmp uge i32 %328, 1101
  %330 = zext i1 %329 to i64
  %331 = select i1 %329, i32 122, i32 121
  %332 = trunc i32 %331 to i8
  store i8 %332, ptr %32, align 1, !tbaa !13
  %333 = load i32, ptr %16, align 4, !tbaa !9
  %334 = load i32, ptr %22, align 4, !tbaa !9
  %335 = load i32, ptr %17, align 4, !tbaa !9
  %336 = mul i32 %334, %335
  %337 = add i32 %333, %336
  %338 = load i32, ptr %21, align 4, !tbaa !9
  %339 = add i32 %337, %338
  store i32 %339, ptr %23, align 4, !tbaa !9
  %340 = load i32, ptr %28, align 4, !tbaa !9
  %341 = icmp eq i32 %340, 0
  br i1 %341, label %342, label %377

342:                                              ; preds = %325
  %343 = load ptr, ptr %11, align 8, !tbaa !5
  %344 = load ptr, ptr %11, align 8, !tbaa !5
  %345 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %344, i32 0, i32 6
  %346 = load i32, ptr %345, align 4, !tbaa !18
  %347 = load ptr, ptr %12, align 8, !tbaa !5
  %348 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %347, i32 0, i32 1
  %349 = load i32, ptr %348, align 4, !tbaa !22
  %350 = load i32, ptr %21, align 4, !tbaa !9
  %351 = load i32, ptr %15, align 4, !tbaa !9
  %352 = mul i32 %350, %351
  %353 = load i32, ptr %22, align 4, !tbaa !9
  %354 = load ptr, ptr %14, align 8, !tbaa !5
  %355 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %354, i32 0, i32 2
  %356 = load i32, ptr %355, align 1, !tbaa !24
  %357 = mul i32 %353, %356
  %358 = add i32 %352, %357
  %359 = load ptr, ptr %13, align 8, !tbaa !5
  %360 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %359, i32 0, i32 2
  %361 = load i32, ptr %360, align 4, !tbaa !11
  %362 = mul i32 %358, %361
  %363 = load i8, ptr %32, align 1, !tbaa !13
  %364 = load i32, ptr %23, align 4, !tbaa !9
  %365 = load i32, ptr %19, align 4, !tbaa !9
  %366 = icmp eq i32 %365, 1
  br i1 %366, label %367, label %374

367:                                              ; preds = %342
  %368 = load i32, ptr %21, align 4, !tbaa !9
  %369 = load i32, ptr %17, align 4, !tbaa !9
  %370 = sub i32 %369, 1
  %371 = icmp eq i32 %368, %370
  br i1 %371, label %372, label %374

372:                                              ; preds = %367
  %373 = load i32, ptr %20, align 4, !tbaa !9
  br label %375

374:                                              ; preds = %367, %342
  br label %375

375:                                              ; preds = %374, %372
  %376 = phi i32 [ %373, %372 ], [ 0, %374 ]
  call void @libxsmm_x86_instruction_vec_move(ptr noundef %343, i32 noundef %346, i32 noundef 537208115, i32 noundef %349, i32 noundef 127, i32 noundef 0, i32 noundef %362, i8 noundef signext %363, i32 noundef %364, i32 noundef %376, i32 noundef 0, i32 noundef 0)
  br label %526

377:                                              ; preds = %325
  %378 = load i32, ptr %25, align 4, !tbaa !9
  %379 = icmp eq i32 %378, 1
  br i1 %379, label %383, label %380

380:                                              ; preds = %377
  %381 = load i32, ptr %27, align 4, !tbaa !9
  %382 = icmp eq i32 %381, 1
  br i1 %382, label %383, label %466

383:                                              ; preds = %380, %377
  %384 = load i32, ptr %21, align 4, !tbaa !9
  %385 = icmp eq i32 %384, 0
  br i1 %385, label %386, label %449

386:                                              ; preds = %383
  %387 = load i32, ptr %25, align 4, !tbaa !9
  %388 = icmp eq i32 %387, 1
  br i1 %388, label %395, label %389

389:                                              ; preds = %386
  %390 = load i32, ptr %27, align 4, !tbaa !9
  %391 = icmp eq i32 %390, 1
  br i1 %391, label %392, label %423

392:                                              ; preds = %389
  %393 = load i32, ptr %22, align 4, !tbaa !9
  %394 = icmp eq i32 %393, 0
  br i1 %394, label %395, label %423

395:                                              ; preds = %392, %386
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #3
  %396 = load ptr, ptr %11, align 8, !tbaa !5
  %397 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %396, i32 0, i32 6
  %398 = load i32, ptr %397, align 4, !tbaa !18
  %399 = icmp uge i32 %398, 1101
  %400 = zext i1 %399 to i64
  %401 = select i1 %399, i32 122, i32 121
  %402 = trunc i32 %401 to i8
  store i8 %402, ptr %33, align 1, !tbaa !13
  %403 = load ptr, ptr %11, align 8, !tbaa !5
  %404 = load i32, ptr %29, align 4, !tbaa !9
  %405 = load ptr, ptr %12, align 8, !tbaa !5
  %406 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %405, i32 0, i32 1
  %407 = load i32, ptr %406, align 4, !tbaa !22
  %408 = load i32, ptr %22, align 4, !tbaa !9
  %409 = load ptr, ptr %14, align 8, !tbaa !5
  %410 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %409, i32 0, i32 2
  %411 = load i32, ptr %410, align 1, !tbaa !24
  %412 = mul i32 %408, %411
  %413 = load ptr, ptr %13, align 8, !tbaa !5
  %414 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %413, i32 0, i32 2
  %415 = load i32, ptr %414, align 4, !tbaa !11
  %416 = mul i32 %412, %415
  %417 = load i8, ptr %24, align 1, !tbaa !13
  %418 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %403, i32 noundef %404, i32 noundef %407, i32 noundef 127, i32 noundef 0, i32 noundef %416, i8 noundef signext %417, i32 noundef %418, i32 noundef 0, i32 noundef 0, i32 noundef 0)
  %419 = load ptr, ptr %11, align 8, !tbaa !5
  %420 = load i8, ptr %33, align 1, !tbaa !13
  %421 = load i32, ptr %23, align 4, !tbaa !9
  %422 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %419, i32 noundef 537208115, i8 noundef signext %420, i32 noundef %421, i32 noundef %422)
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #3
  br label %448

423:                                              ; preds = %392, %389
  %424 = load i32, ptr %27, align 4, !tbaa !9
  %425 = icmp eq i32 %424, 1
  br i1 %425, label %426, label %447

426:                                              ; preds = %423
  %427 = load i32, ptr %22, align 4, !tbaa !9
  %428 = icmp ugt i32 %427, 0
  br i1 %428, label %429, label %447

429:                                              ; preds = %426
  %430 = load ptr, ptr %14, align 8, !tbaa !5
  %431 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %430, i32 0, i32 11
  %432 = load i8, ptr %431, align 1, !tbaa !14
  %433 = zext i8 %432 to i32
  %434 = icmp eq i32 %433, 2
  br i1 %434, label %435, label %447

435:                                              ; preds = %429
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #3
  %436 = load ptr, ptr %11, align 8, !tbaa !5
  %437 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %436, i32 0, i32 6
  %438 = load i32, ptr %437, align 4, !tbaa !18
  %439 = icmp uge i32 %438, 1101
  %440 = zext i1 %439 to i64
  %441 = select i1 %439, i32 122, i32 121
  %442 = trunc i32 %441 to i8
  store i8 %442, ptr %34, align 1, !tbaa !13
  %443 = load ptr, ptr %11, align 8, !tbaa !5
  %444 = load i8, ptr %34, align 1, !tbaa !13
  %445 = load i32, ptr %16, align 4, !tbaa !9
  %446 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %443, i32 noundef 537138704, i8 noundef signext %444, i32 noundef %445, i32 noundef %446)
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #3
  br label %447

447:                                              ; preds = %435, %429, %426, %423
  br label %448

448:                                              ; preds = %447, %395
  br label %465

449:                                              ; preds = %383
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #3
  %450 = load ptr, ptr %11, align 8, !tbaa !5
  %451 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %450, i32 0, i32 6
  %452 = load i32, ptr %451, align 4, !tbaa !18
  %453 = icmp uge i32 %452, 1101
  %454 = zext i1 %453 to i64
  %455 = select i1 %453, i32 122, i32 121
  %456 = trunc i32 %455 to i8
  store i8 %456, ptr %35, align 1, !tbaa !13
  %457 = load ptr, ptr %11, align 8, !tbaa !5
  %458 = load i8, ptr %35, align 1, !tbaa !13
  %459 = load i32, ptr %16, align 4, !tbaa !9
  %460 = load i32, ptr %22, align 4, !tbaa !9
  %461 = load i32, ptr %17, align 4, !tbaa !9
  %462 = mul i32 %460, %461
  %463 = add i32 %459, %462
  %464 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %457, i32 noundef 537138704, i8 noundef signext %458, i32 noundef %463, i32 noundef %464)
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #3
  br label %465

465:                                              ; preds = %449, %448
  br label %525

466:                                              ; preds = %380
  %467 = load i32, ptr %26, align 4, !tbaa !9
  %468 = icmp eq i32 %467, 1
  br i1 %468, label %469, label %524

469:                                              ; preds = %466
  %470 = load i32, ptr %22, align 4, !tbaa !9
  %471 = icmp eq i32 %470, 0
  br i1 %471, label %472, label %509

472:                                              ; preds = %469
  %473 = load ptr, ptr %11, align 8, !tbaa !5
  %474 = load ptr, ptr %12, align 8, !tbaa !5
  %475 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %474, i32 0, i32 1
  %476 = load i32, ptr %475, align 4, !tbaa !22
  %477 = load i32, ptr %21, align 4, !tbaa !9
  %478 = load i32, ptr %15, align 4, !tbaa !9
  %479 = mul i32 %477, %478
  %480 = load ptr, ptr %13, align 8, !tbaa !5
  %481 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %480, i32 0, i32 2
  %482 = load i32, ptr %481, align 4, !tbaa !11
  %483 = mul i32 %479, %482
  %484 = load i8, ptr %32, align 1, !tbaa !13
  %485 = load i32, ptr %23, align 4, !tbaa !9
  %486 = load i32, ptr %19, align 4, !tbaa !9
  %487 = icmp eq i32 %486, 1
  br i1 %487, label %488, label %493

488:                                              ; preds = %472
  %489 = load i32, ptr %21, align 4, !tbaa !9
  %490 = load i32, ptr %17, align 4, !tbaa !9
  %491 = sub i32 %490, 1
  %492 = icmp eq i32 %489, %491
  br label %493

493:                                              ; preds = %488, %472
  %494 = phi i1 [ false, %472 ], [ %492, %488 ]
  %495 = zext i1 %494 to i64
  %496 = select i1 %494, i32 1, i32 0
  %497 = load i32, ptr %19, align 4, !tbaa !9
  %498 = icmp eq i32 %497, 1
  br i1 %498, label %499, label %506

499:                                              ; preds = %493
  %500 = load i32, ptr %21, align 4, !tbaa !9
  %501 = load i32, ptr %17, align 4, !tbaa !9
  %502 = sub i32 %501, 1
  %503 = icmp eq i32 %500, %502
  br i1 %503, label %504, label %506

504:                                              ; preds = %499
  %505 = load i32, ptr %20, align 4, !tbaa !9
  br label %507

506:                                              ; preds = %499, %493
  br label %507

507:                                              ; preds = %506, %504
  %508 = phi i32 [ %505, %504 ], [ 0, %506 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %473, i32 noundef 537208115, i32 noundef %476, i32 noundef 127, i32 noundef 0, i32 noundef %483, i8 noundef signext %484, i32 noundef %485, i32 noundef %496, i32 noundef %508, i32 noundef 0)
  br label %523

509:                                              ; preds = %469
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #3
  %510 = load ptr, ptr %11, align 8, !tbaa !5
  %511 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %510, i32 0, i32 6
  %512 = load i32, ptr %511, align 4, !tbaa !18
  %513 = icmp uge i32 %512, 1101
  %514 = zext i1 %513 to i64
  %515 = select i1 %513, i32 122, i32 121
  %516 = trunc i32 %515 to i8
  store i8 %516, ptr %36, align 1, !tbaa !13
  %517 = load ptr, ptr %11, align 8, !tbaa !5
  %518 = load i8, ptr %36, align 1, !tbaa !13
  %519 = load i32, ptr %16, align 4, !tbaa !9
  %520 = load i32, ptr %21, align 4, !tbaa !9
  %521 = add i32 %519, %520
  %522 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %517, i32 noundef 537138704, i8 noundef signext %518, i32 noundef %521, i32 noundef %522)
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #3
  br label %523

523:                                              ; preds = %509, %507
  br label %524

524:                                              ; preds = %523, %466
  br label %525

525:                                              ; preds = %524, %465
  br label %526

526:                                              ; preds = %525, %375
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #3
  br label %527

527:                                              ; preds = %526
  %528 = load i32, ptr %21, align 4, !tbaa !9
  %529 = add i32 %528, 1
  store i32 %529, ptr %21, align 4, !tbaa !9
  br label %321, !llvm.loop !25

530:                                              ; preds = %321
  br label %531

531:                                              ; preds = %530
  %532 = load i32, ptr %22, align 4, !tbaa !9
  %533 = add i32 %532, 1
  store i32 %533, ptr %22, align 4, !tbaa !9
  br label %316, !llvm.loop !27

534:                                              ; preds = %316
  store i32 1, ptr %31, align 4
  br label %1707

535:                                              ; preds = %309, %303
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %536

536:                                              ; preds = %1703, %535
  %537 = load i32, ptr %22, align 4, !tbaa !9
  %538 = load i32, ptr %18, align 4, !tbaa !9
  %539 = icmp ult i32 %537, %538
  br i1 %539, label %540, label %1706

540:                                              ; preds = %536
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %541

541:                                              ; preds = %1699, %540
  %542 = load i32, ptr %21, align 4, !tbaa !9
  %543 = load i32, ptr %17, align 4, !tbaa !9
  %544 = icmp ult i32 %542, %543
  br i1 %544, label %545, label %1702

545:                                              ; preds = %541
  %546 = load i32, ptr %16, align 4, !tbaa !9
  %547 = load i32, ptr %22, align 4, !tbaa !9
  %548 = load i32, ptr %17, align 4, !tbaa !9
  %549 = mul i32 %547, %548
  %550 = add i32 %546, %549
  %551 = load i32, ptr %21, align 4, !tbaa !9
  %552 = add i32 %550, %551
  store i32 %552, ptr %23, align 4, !tbaa !9
  %553 = load i32, ptr %28, align 4, !tbaa !9
  %554 = icmp eq i32 %553, 0
  br i1 %554, label %555, label %888

555:                                              ; preds = %545
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #3
  %556 = load ptr, ptr %13, align 8, !tbaa !5
  %557 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %556, i32 0, i32 6
  %558 = load i32, ptr %557, align 4, !tbaa !28
  store i32 %558, ptr %37, align 4, !tbaa !9
  %559 = load ptr, ptr %14, align 8, !tbaa !5
  %560 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %559, i32 0, i32 11
  %561 = load i8, ptr %560, align 1, !tbaa !14
  %562 = zext i8 %561 to i32
  %563 = icmp eq i32 %562, 1
  br i1 %563, label %564, label %630

564:                                              ; preds = %555
  %565 = load ptr, ptr %14, align 8, !tbaa !5
  %566 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %565, i32 0, i32 10
  %567 = load i16, ptr %566, align 1, !tbaa !21
  %568 = zext i16 %567 to i32
  %569 = icmp eq i32 %568, 43
  br i1 %569, label %570, label %630

570:                                              ; preds = %564
  %571 = load ptr, ptr %14, align 8, !tbaa !5
  %572 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %571, i32 noundef 0)
  %573 = icmp eq i32 12, %572
  br i1 %573, label %574, label %599

574:                                              ; preds = %570
  %575 = load ptr, ptr %14, align 8, !tbaa !5
  %576 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %575, i32 noundef 3)
  %577 = icmp eq i32 1, %576
  br i1 %577, label %578, label %599

578:                                              ; preds = %574
  store i8 120, ptr %24, align 1, !tbaa !13
  store i32 16, ptr %15, align 4, !tbaa !9
  %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 = icmp ult i32 %581, 1101
  br i1 %582, label %583, label %598

583:                                              ; preds = %578
  store i32 8, ptr %15, align 4, !tbaa !9
  %584 = load i32, ptr %19, align 4, !tbaa !9
  %585 = icmp ugt i32 %584, 0
  br i1 %585, label %586, label %597

586:                                              ; preds = %583
  %587 = load ptr, ptr %11, align 8, !tbaa !5
  %588 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %587, i32 0, i32 6
  %589 = load i32, ptr %588, align 4, !tbaa !18
  %590 = icmp ult i32 %589, 1041
  br i1 %590, label %591, label %597

591:                                              ; preds = %586
  %592 = load ptr, ptr %14, align 8, !tbaa !5
  %593 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %592, i32 0, i32 0
  %594 = load i32, ptr %593, align 1, !tbaa !20
  %595 = load i32, ptr %15, align 4, !tbaa !9
  %596 = urem i32 %594, %595
  store i32 %596, ptr %20, align 4, !tbaa !9
  br label %597

597:                                              ; preds = %591, %586, %583
  br label %598

598:                                              ; preds = %597, %578
  br label %599

599:                                              ; preds = %598, %574, %570
  %600 = load ptr, ptr %14, align 8, !tbaa !5
  %601 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %600, i32 noundef 0)
  %602 = icmp eq i32 10, %601
  br i1 %602, label %603, label %614

603:                                              ; preds = %599
  %604 = load ptr, ptr %14, align 8, !tbaa !5
  %605 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %604, i32 noundef 3)
  %606 = icmp eq i32 1, %605
  br i1 %606, label %607, label %614

607:                                              ; preds = %603
  store i8 121, ptr %24, align 1, !tbaa !13
  store i32 16, ptr %15, align 4, !tbaa !9
  %608 = load ptr, ptr %11, align 8, !tbaa !5
  %609 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %608, i32 0, i32 6
  %610 = load i32, ptr %609, align 4, !tbaa !18
  %611 = icmp ult i32 %610, 1101
  br i1 %611, label %612, label %613

612:                                              ; preds = %607
  store i8 120, ptr %24, align 1, !tbaa !13
  store i32 8, ptr %15, align 4, !tbaa !9
  br label %613

613:                                              ; preds = %612, %607
  br label %614

614:                                              ; preds = %613, %603, %599
  %615 = load ptr, ptr %14, align 8, !tbaa !5
  %616 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %615, i32 noundef 0)
  %617 = icmp eq i32 8, %616
  br i1 %617, label %618, label %629

618:                                              ; preds = %614
  %619 = load ptr, ptr %14, align 8, !tbaa !5
  %620 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %619, i32 noundef 3)
  %621 = icmp eq i32 1, %620
  br i1 %621, label %622, label %629

622:                                              ; preds = %618
  store i8 122, ptr %24, align 1, !tbaa !13
  store i32 16, ptr %15, align 4, !tbaa !9
  %623 = load ptr, ptr %11, align 8, !tbaa !5
  %624 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %623, i32 0, i32 6
  %625 = load i32, ptr %624, align 4, !tbaa !18
  %626 = icmp ult i32 %625, 1101
  br i1 %626, label %627, label %628

627:                                              ; preds = %622
  store i8 121, ptr %24, align 1, !tbaa !13
  store i32 8, ptr %15, align 4, !tbaa !9
  br label %628

628:                                              ; preds = %627, %622
  br label %629

629:                                              ; preds = %628, %618, %614
  br label %630

630:                                              ; preds = %629, %564, %555
  %631 = load ptr, ptr %14, align 8, !tbaa !5
  %632 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %631, i32 noundef 0)
  %633 = icmp eq i32 4, %632
  br i1 %633, label %638, label %634

634:                                              ; preds = %630
  %635 = load ptr, ptr %14, align 8, !tbaa !5
  %636 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %635, i32 noundef 0)
  %637 = icmp eq i32 5, %636
  br i1 %637, label %638, label %656

638:                                              ; preds = %634, %630
  %639 = load ptr, ptr %14, align 8, !tbaa !5
  %640 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %639, i32 noundef 4)
  %641 = icmp eq i32 1, %640
  br i1 %641, label %642, label %656

642:                                              ; preds = %638
  %643 = load ptr, ptr %11, align 8, !tbaa !5
  %644 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %643, i32 0, i32 6
  %645 = load i32, ptr %644, align 4, !tbaa !18
  %646 = icmp ult i32 %645, 1101
  br i1 %646, label %647, label %656

647:                                              ; preds = %642
  %648 = load i32, ptr %19, align 4, !tbaa !9
  %649 = icmp eq i32 %648, 1
  br i1 %649, label %650, label %655

650:                                              ; preds = %647
  %651 = load i32, ptr %21, align 4, !tbaa !9
  %652 = load i32, ptr %17, align 4, !tbaa !9
  %653 = sub i32 %652, 1
  %654 = icmp eq i32 %651, %653
  br i1 %654, label %656, label %655

655:                                              ; preds = %650, %647
  store i32 545725200, ptr %37, align 4, !tbaa !9
  br label %679

656:                                              ; preds = %650, %642, %638, %634
  %657 = load ptr, ptr %14, align 8, !tbaa !5
  %658 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %657, i32 noundef 0)
  %659 = icmp eq i32 2, %658
  br i1 %659, label %660, label %678

660:                                              ; preds = %656
  %661 = load ptr, ptr %14, align 8, !tbaa !5
  %662 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %661, i32 noundef 4)
  %663 = icmp eq i32 1, %662
  br i1 %663, label %664, label %678

664:                                              ; preds = %660
  %665 = load ptr, ptr %11, align 8, !tbaa !5
  %666 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %665, i32 0, i32 6
  %667 = load i32, ptr %666, align 4, !tbaa !18
  %668 = icmp ult i32 %667, 1005
  br i1 %668, label %669, label %678

669:                                              ; preds = %664
  %670 = load i32, ptr %19, align 4, !tbaa !9
  %671 = icmp eq i32 %670, 1
  br i1 %671, label %672, label %677

672:                                              ; preds = %669
  %673 = load i32, ptr %21, align 4, !tbaa !9
  %674 = load i32, ptr %17, align 4, !tbaa !9
  %675 = sub i32 %674, 1
  %676 = icmp eq i32 %673, %675
  br i1 %676, label %678, label %677

677:                                              ; preds = %672, %669
  store i32 -1610149872, ptr %37, align 4, !tbaa !9
  br label %678

678:                                              ; preds = %677, %672, %664, %660, %656
  br label %679

679:                                              ; preds = %678, %655
  %680 = load ptr, ptr %11, align 8, !tbaa !5
  %681 = load i32, ptr %37, align 4, !tbaa !9
  %682 = load ptr, ptr %12, align 8, !tbaa !5
  %683 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %682, i32 0, i32 1
  %684 = load i32, ptr %683, align 4, !tbaa !22
  %685 = load i32, ptr %21, align 4, !tbaa !9
  %686 = load i32, ptr %15, align 4, !tbaa !9
  %687 = mul i32 %685, %686
  %688 = load i32, ptr %22, align 4, !tbaa !9
  %689 = load ptr, ptr %14, align 8, !tbaa !5
  %690 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %689, i32 0, i32 2
  %691 = load i32, ptr %690, align 1, !tbaa !24
  %692 = mul i32 %688, %691
  %693 = add i32 %687, %692
  %694 = load ptr, ptr %13, align 8, !tbaa !5
  %695 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %694, i32 0, i32 2
  %696 = load i32, ptr %695, align 4, !tbaa !11
  %697 = mul i32 %693, %696
  %698 = load i8, ptr %24, align 1, !tbaa !13
  %699 = load i32, ptr %23, align 4, !tbaa !9
  %700 = load i32, ptr %19, align 4, !tbaa !9
  %701 = icmp eq i32 %700, 1
  br i1 %701, label %702, label %707

702:                                              ; preds = %679
  %703 = load i32, ptr %21, align 4, !tbaa !9
  %704 = load i32, ptr %17, align 4, !tbaa !9
  %705 = sub i32 %704, 1
  %706 = icmp eq i32 %703, %705
  br label %707

707:                                              ; preds = %702, %679
  %708 = phi i1 [ false, %679 ], [ %706, %702 ]
  %709 = zext i1 %708 to i64
  %710 = select i1 %708, i32 1, i32 0
  %711 = load i32, ptr %19, align 4, !tbaa !9
  %712 = icmp eq i32 %711, 1
  br i1 %712, label %713, label %720

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

718:                                              ; preds = %713
  %719 = load i32, ptr %20, align 4, !tbaa !9
  br label %721

720:                                              ; preds = %713, %707
  br label %721

721:                                              ; preds = %720, %718
  %722 = phi i32 [ %719, %718 ], [ 0, %720 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %680, i32 noundef %681, i32 noundef %684, i32 noundef 127, i32 noundef 0, i32 noundef %697, i8 noundef signext %698, i32 noundef %699, i32 noundef %710, i32 noundef %722, i32 noundef 0)
  %723 = load ptr, ptr %14, align 8, !tbaa !5
  %724 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %723, i32 noundef 4)
  %725 = icmp eq i32 1, %724
  br i1 %725, label %726, label %730

726:                                              ; preds = %721
  %727 = load ptr, ptr %14, align 8, !tbaa !5
  %728 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %727, i32 noundef 0)
  %729 = icmp eq i32 2, %728
  br i1 %729, label %738, label %730

730:                                              ; preds = %726, %721
  %731 = load ptr, ptr %14, align 8, !tbaa !5
  %732 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %731, i32 noundef 3)
  %733 = icmp eq i32 1, %732
  br i1 %733, label %734, label %745

734:                                              ; preds = %730
  %735 = load ptr, ptr %14, align 8, !tbaa !5
  %736 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %735, i32 noundef 0)
  %737 = icmp eq i32 2, %736
  br i1 %737, label %738, label %745

738:                                              ; preds = %734, %726
  %739 = load ptr, ptr %11, align 8, !tbaa !5
  %740 = load ptr, ptr %13, align 8, !tbaa !5
  %741 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %740, i32 0, i32 128
  %742 = load i8, ptr %741, align 4, !tbaa !29
  %743 = load i32, ptr %23, align 4, !tbaa !9
  %744 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %739, i8 noundef signext %742, i32 noundef %743, i32 noundef %744)
  br label %829

745:                                              ; preds = %734, %730
  %746 = load ptr, ptr %14, align 8, !tbaa !5
  %747 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %746, i32 noundef 4)
  %748 = icmp eq i32 1, %747
  br i1 %748, label %749, label %753

749:                                              ; preds = %745
  %750 = load ptr, ptr %14, align 8, !tbaa !5
  %751 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %750, i32 noundef 0)
  %752 = icmp eq i32 3, %751
  br i1 %752, label %761, label %753

753:                                              ; preds = %749, %745
  %754 = load ptr, ptr %14, align 8, !tbaa !5
  %755 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %754, i32 noundef 3)
  %756 = icmp eq i32 1, %755
  br i1 %756, label %757, label %768

757:                                              ; preds = %753
  %758 = load ptr, ptr %14, align 8, !tbaa !5
  %759 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %758, i32 noundef 0)
  %760 = icmp eq i32 3, %759
  br i1 %760, label %761, label %768

761:                                              ; preds = %757, %749
  %762 = load ptr, ptr %11, align 8, !tbaa !5
  %763 = load ptr, ptr %13, align 8, !tbaa !5
  %764 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %763, i32 0, i32 128
  %765 = load i8, ptr %764, align 4, !tbaa !29
  %766 = load i32, ptr %23, align 4, !tbaa !9
  %767 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %762, i32 noundef 537208083, i8 noundef signext %765, i32 noundef %766, i32 noundef %767)
  br label %828

768:                                              ; preds = %757, %753
  %769 = load ptr, ptr %14, align 8, !tbaa !5
  %770 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %769, i32 noundef 4)
  %771 = icmp eq i32 1, %770
  br i1 %771, label %772, label %776

772:                                              ; preds = %768
  %773 = load ptr, ptr %14, align 8, !tbaa !5
  %774 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %773, i32 noundef 0)
  %775 = icmp eq i32 4, %774
  br i1 %775, label %784, label %776

776:                                              ; preds = %772, %768
  %777 = load ptr, ptr %14, align 8, !tbaa !5
  %778 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %777, i32 noundef 3)
  %779 = icmp eq i32 1, %778
  br i1 %779, label %780, label %791

780:                                              ; preds = %776
  %781 = load ptr, ptr %14, align 8, !tbaa !5
  %782 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %781, i32 noundef 0)
  %783 = icmp eq i32 4, %782
  br i1 %783, label %784, label %791

784:                                              ; preds = %780, %772
  %785 = load ptr, ptr %11, align 8, !tbaa !5
  %786 = load ptr, ptr %13, align 8, !tbaa !5
  %787 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %786, i32 0, i32 128
  %788 = load i8, ptr %787, align 4, !tbaa !29
  %789 = load i32, ptr %23, align 4, !tbaa !9
  %790 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %785, i8 noundef signext %788, i32 noundef %789, i32 noundef %790)
  br label %827

791:                                              ; preds = %780, %776
  %792 = load ptr, ptr %14, align 8, !tbaa !5
  %793 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %792, i32 noundef 4)
  %794 = icmp eq i32 1, %793
  br i1 %794, label %795, label %799

795:                                              ; preds = %791
  %796 = load ptr, ptr %14, align 8, !tbaa !5
  %797 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %796, i32 noundef 0)
  %798 = icmp eq i32 5, %797
  br i1 %798, label %807, label %799

799:                                              ; preds = %795, %791
  %800 = load ptr, ptr %14, align 8, !tbaa !5
  %801 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %800, i32 noundef 3)
  %802 = icmp eq i32 1, %801
  br i1 %802, label %803, label %826

803:                                              ; preds = %799
  %804 = load ptr, ptr %14, align 8, !tbaa !5
  %805 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %804, i32 noundef 0)
  %806 = icmp eq i32 5, %805
  br i1 %806, label %807, label %826

807:                                              ; preds = %803, %795
  %808 = load ptr, ptr %11, align 8, !tbaa !5
  %809 = load ptr, ptr %13, align 8, !tbaa !5
  %810 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %809, i32 0, i32 128
  %811 = load i8, ptr %810, align 4, !tbaa !29
  %812 = load i32, ptr %23, align 4, !tbaa !9
  %813 = load i32, ptr %23, align 4, !tbaa !9
  %814 = load ptr, ptr %13, align 8, !tbaa !5
  %815 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %814, i32 0, i32 24
  %816 = load i32, ptr %815, align 4, !tbaa !30
  %817 = load ptr, ptr %13, align 8, !tbaa !5
  %818 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %817, i32 0, i32 25
  %819 = load i32, ptr %818, align 4, !tbaa !31
  %820 = load ptr, ptr %13, align 8, !tbaa !5
  %821 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %820, i32 0, i32 21
  %822 = load i32, ptr %821, align 4, !tbaa !32
  %823 = load ptr, ptr %13, align 8, !tbaa !5
  %824 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %823, i32 0, i32 22
  %825 = load i32, ptr %824, align 4, !tbaa !33
  call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %808, i8 noundef signext %811, i32 noundef %812, i32 noundef %813, i32 noundef %816, i32 noundef %819, i32 noundef %822, i32 noundef %825)
  br label %826

826:                                              ; preds = %807, %803, %799
  br label %827

827:                                              ; preds = %826, %784
  br label %828

828:                                              ; preds = %827, %761
  br label %829

829:                                              ; preds = %828, %738
  %830 = load ptr, ptr %14, align 8, !tbaa !5
  %831 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %830, i32 0, i32 11
  %832 = load i8, ptr %831, align 1, !tbaa !14
  %833 = zext i8 %832 to i32
  %834 = icmp eq i32 %833, 1
  br i1 %834, label %835, label %887

835:                                              ; preds = %829
  %836 = load ptr, ptr %14, align 8, !tbaa !5
  %837 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %836, i32 0, i32 10
  %838 = load i16, ptr %837, align 1, !tbaa !21
  %839 = zext i16 %838 to i32
  %840 = icmp eq i32 %839, 43
  br i1 %840, label %841, label %887

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

845:                                              ; preds = %841
  %846 = load ptr, ptr %14, align 8, !tbaa !5
  %847 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %846, i32 noundef 3)
  %848 = icmp eq i32 1, %847
  br i1 %848, label %849, label %856

849:                                              ; preds = %845
  %850 = load ptr, ptr %11, align 8, !tbaa !5
  %851 = load i32, ptr %23, align 4, !tbaa !9
  %852 = load ptr, ptr %13, align 8, !tbaa !5
  %853 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %852, i32 0, i32 118
  %854 = load i32, ptr %853, align 4, !tbaa !34
  %855 = load i32, ptr %30, align 4, !tbaa !9
  call void @libxsmm_generator_vcvtint2ps_avx512(ptr noundef %850, i32 noundef 12, i32 noundef %851, i32 noundef %854, i32 noundef %855)
  br label %856

856:                                              ; preds = %849, %845, %841
  %857 = load ptr, ptr %14, align 8, !tbaa !5
  %858 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %857, i32 noundef 0)
  %859 = icmp eq i32 10, %858
  br i1 %859, label %860, label %871

860:                                              ; preds = %856
  %861 = load ptr, ptr %14, align 8, !tbaa !5
  %862 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %861, i32 noundef 3)
  %863 = icmp eq i32 1, %862
  br i1 %863, label %864, label %871

864:                                              ; preds = %860
  %865 = load ptr, ptr %11, align 8, !tbaa !5
  %866 = load i32, ptr %23, align 4, !tbaa !9
  %867 = load ptr, ptr %13, align 8, !tbaa !5
  %868 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %867, i32 0, i32 118
  %869 = load i32, ptr %868, align 4, !tbaa !34
  %870 = load i32, ptr %30, align 4, !tbaa !9
  call void @libxsmm_generator_vcvtint2ps_avx512(ptr noundef %865, i32 noundef 10, i32 noundef %866, i32 noundef %869, i32 noundef %870)
  br label %871

871:                                              ; preds = %864, %860, %856
  %872 = load ptr, ptr %14, align 8, !tbaa !5
  %873 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %872, i32 noundef 0)
  %874 = icmp eq i32 8, %873
  br i1 %874, label %875, label %886

875:                                              ; preds = %871
  %876 = load ptr, ptr %14, align 8, !tbaa !5
  %877 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %876, i32 noundef 3)
  %878 = icmp eq i32 1, %877
  br i1 %878, label %879, label %886

879:                                              ; preds = %875
  %880 = load ptr, ptr %11, align 8, !tbaa !5
  %881 = load i32, ptr %23, align 4, !tbaa !9
  %882 = load ptr, ptr %13, align 8, !tbaa !5
  %883 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %882, i32 0, i32 118
  %884 = load i32, ptr %883, align 4, !tbaa !34
  %885 = load i32, ptr %30, align 4, !tbaa !9
  call void @libxsmm_generator_vcvtint2ps_avx512(ptr noundef %880, i32 noundef 8, i32 noundef %881, i32 noundef %884, i32 noundef %885)
  br label %886

886:                                              ; preds = %879, %875, %871
  br label %887

887:                                              ; preds = %886, %835, %829
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #3
  br label %1698

888:                                              ; preds = %545
  %889 = load i32, ptr %25, align 4, !tbaa !9
  %890 = icmp eq i32 %889, 1
  br i1 %890, label %894, label %891

891:                                              ; preds = %888
  %892 = load i32, ptr %27, align 4, !tbaa !9
  %893 = icmp eq i32 %892, 1
  br i1 %893, label %894, label %1333

894:                                              ; preds = %891, %888
  %895 = load i32, ptr %21, align 4, !tbaa !9
  %896 = icmp eq i32 %895, 0
  br i1 %896, label %897, label %1286

897:                                              ; preds = %894
  %898 = load i32, ptr %25, align 4, !tbaa !9
  %899 = icmp eq i32 %898, 1
  br i1 %899, label %906, label %900

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

903:                                              ; preds = %900
  %904 = load i32, ptr %22, align 4, !tbaa !9
  %905 = icmp eq i32 %904, 0
  br i1 %905, label %906, label %1240

906:                                              ; preds = %903, %897
  %907 = load ptr, ptr %14, align 8, !tbaa !5
  %908 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %907, i32 0, i32 11
  %909 = load i8, ptr %908, align 1, !tbaa !14
  %910 = zext i8 %909 to i32
  %911 = icmp eq i32 %910, 1
  br i1 %911, label %912, label %964

912:                                              ; preds = %906
  %913 = load ptr, ptr %14, align 8, !tbaa !5
  %914 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %913, i32 0, i32 10
  %915 = load i16, ptr %914, align 1, !tbaa !21
  %916 = zext i16 %915 to i32
  %917 = icmp eq i32 %916, 43
  br i1 %917, label %918, label %964

918:                                              ; preds = %912
  %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 12, %920
  br i1 %921, label %922, label %933

922:                                              ; preds = %918
  %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 1, %924
  br i1 %925, label %926, label %933

926:                                              ; preds = %922
  store i8 120, ptr %24, align 1, !tbaa !13
  store i32 16, ptr %15, align 4, !tbaa !9
  %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 ult i32 %929, 1101
  br i1 %930, label %931, label %932

931:                                              ; preds = %926
  store i8 120, ptr %24, align 1, !tbaa !13
  store i32 8, ptr %15, align 4, !tbaa !9
  br label %932

932:                                              ; preds = %931, %926
  br label %933

933:                                              ; preds = %932, %922, %918
  %934 = load ptr, ptr %14, align 8, !tbaa !5
  %935 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %934, i32 noundef 0)
  %936 = icmp eq i32 10, %935
  br i1 %936, label %937, label %948

937:                                              ; preds = %933
  %938 = load ptr, ptr %14, align 8, !tbaa !5
  %939 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %938, i32 noundef 3)
  %940 = icmp eq i32 1, %939
  br i1 %940, label %941, label %948

941:                                              ; preds = %937
  store i8 121, ptr %24, align 1, !tbaa !13
  store i32 16, ptr %15, align 4, !tbaa !9
  %942 = load ptr, ptr %11, align 8, !tbaa !5
  %943 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %942, i32 0, i32 6
  %944 = load i32, ptr %943, align 4, !tbaa !18
  %945 = icmp ult i32 %944, 1101
  br i1 %945, label %946, label %947

946:                                              ; preds = %941
  store i8 120, ptr %24, align 1, !tbaa !13
  store i32 8, ptr %15, align 4, !tbaa !9
  br label %947

947:                                              ; preds = %946, %941
  br label %948

948:                                              ; preds = %947, %937, %933
  %949 = load ptr, ptr %14, align 8, !tbaa !5
  %950 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %949, i32 noundef 0)
  %951 = icmp eq i32 8, %950
  br i1 %951, label %952, label %963

952:                                              ; preds = %948
  %953 = load ptr, ptr %14, align 8, !tbaa !5
  %954 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %953, i32 noundef 3)
  %955 = icmp eq i32 1, %954
  br i1 %955, label %956, label %963

956:                                              ; preds = %952
  store i8 122, ptr %24, align 1, !tbaa !13
  store i32 16, ptr %15, align 4, !tbaa !9
  %957 = load ptr, ptr %11, align 8, !tbaa !5
  %958 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %957, i32 0, i32 6
  %959 = load i32, ptr %958, align 4, !tbaa !18
  %960 = icmp ult i32 %959, 1101
  br i1 %960, label %961, label %962

961:                                              ; preds = %956
  store i8 121, ptr %24, align 1, !tbaa !13
  store i32 8, ptr %15, align 4, !tbaa !9
  br label %962

962:                                              ; preds = %961, %956
  br label %963

963:                                              ; preds = %962, %952, %948
  br label %964

964:                                              ; preds = %963, %912, %906
  %965 = load ptr, ptr %11, align 8, !tbaa !5
  %966 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %965, i32 0, i32 6
  %967 = load i32, ptr %966, align 4, !tbaa !18
  %968 = icmp ult i32 %967, 1005
  br i1 %968, label %969, label %1057

969:                                              ; preds = %964
  %970 = load ptr, ptr %13, align 8, !tbaa !5
  %971 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %970, i32 0, i32 2
  %972 = load i32, ptr %971, align 4, !tbaa !11
  %973 = icmp eq i32 %972, 8
  br i1 %973, label %974, label %996

974:                                              ; preds = %969
  %975 = load ptr, ptr %11, align 8, !tbaa !5
  %976 = load ptr, ptr %12, align 8, !tbaa !5
  %977 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %976, i32 0, i32 1
  %978 = load i32, ptr %977, align 4, !tbaa !22
  %979 = load i32, ptr %22, align 4, !tbaa !9
  %980 = load ptr, ptr %14, align 8, !tbaa !5
  %981 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %980, i32 0, i32 2
  %982 = load i32, ptr %981, align 1, !tbaa !24
  %983 = mul i32 %979, %982
  %984 = load ptr, ptr %13, align 8, !tbaa !5
  %985 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %984, i32 0, i32 2
  %986 = load i32, ptr %985, align 4, !tbaa !11
  %987 = mul i32 %983, %986
  %988 = load i8, ptr %24, align 1, !tbaa !13
  %989 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %975, i32 noundef -1610149872, i32 noundef %978, i32 noundef 127, i32 noundef 0, i32 noundef %987, i8 noundef signext %988, i32 noundef %989, i32 noundef 0, i32 noundef 0, i32 noundef 0)
  %990 = load ptr, ptr %11, align 8, !tbaa !5
  %991 = load ptr, ptr %13, align 8, !tbaa !5
  %992 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %991, i32 0, i32 128
  %993 = load i8, ptr %992, align 4, !tbaa !29
  %994 = load i32, ptr %23, align 4, !tbaa !9
  %995 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg_imm8(ptr noundef %990, i32 noundef -1609756474, i8 noundef signext %993, i32 noundef %994, i32 noundef %995, i32 noundef 0)
  br label %1056

996:                                              ; preds = %969
  %997 = load ptr, ptr %13, align 8, !tbaa !5
  %998 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %997, i32 0, i32 2
  %999 = load i32, ptr %998, align 4, !tbaa !11
  %1000 = icmp eq i32 %999, 4
  br i1 %1000, label %1001, label %1023

1001:                                             ; preds = %996
  %1002 = load ptr, ptr %11, align 8, !tbaa !5
  %1003 = load ptr, ptr %12, align 8, !tbaa !5
  %1004 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1003, i32 0, i32 1
  %1005 = load i32, ptr %1004, align 4, !tbaa !22
  %1006 = load i32, ptr %22, align 4, !tbaa !9
  %1007 = load ptr, ptr %14, align 8, !tbaa !5
  %1008 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1007, i32 0, i32 2
  %1009 = load i32, ptr %1008, align 1, !tbaa !24
  %1010 = mul i32 %1006, %1009
  %1011 = load ptr, ptr %13, align 8, !tbaa !5
  %1012 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1011, i32 0, i32 2
  %1013 = load i32, ptr %1012, align 4, !tbaa !11
  %1014 = mul i32 %1010, %1013
  %1015 = load i8, ptr %24, align 1, !tbaa !13
  %1016 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %1002, i32 noundef -1610215408, i32 noundef %1005, i32 noundef 127, i32 noundef 0, i32 noundef %1014, i8 noundef signext %1015, i32 noundef %1016, i32 noundef 0, i32 noundef 0, i32 noundef 0)
  %1017 = load ptr, ptr %11, align 8, !tbaa !5
  %1018 = load ptr, ptr %13, align 8, !tbaa !5
  %1019 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1018, i32 0, i32 128
  %1020 = load i8, ptr %1019, align 4, !tbaa !29
  %1021 = load i32, ptr %23, align 4, !tbaa !9
  %1022 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg_imm8(ptr noundef %1017, i32 noundef -1609822010, i8 noundef signext %1020, i32 noundef %1021, i32 noundef %1022, i32 noundef 0)
  br label %1055

1023:                                             ; preds = %996
  %1024 = load ptr, ptr %13, align 8, !tbaa !5
  %1025 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1024, i32 0, i32 2
  %1026 = load i32, ptr %1025, align 4, !tbaa !11
  %1027 = icmp eq i32 %1026, 2
  br i1 %1027, label %1028, label %1054

1028:                                             ; preds = %1023
  %1029 = load ptr, ptr %11, align 8, !tbaa !5
  call void @libxsmm_x86_instruction_push_reg(ptr noundef %1029, i32 noundef 1)
  %1030 = load ptr, ptr %11, align 8, !tbaa !5
  %1031 = load ptr, ptr %12, align 8, !tbaa !5
  %1032 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1031, i32 0, i32 1
  %1033 = load i32, ptr %1032, align 4, !tbaa !22
  %1034 = load i32, ptr %22, align 4, !tbaa !9
  %1035 = load ptr, ptr %14, align 8, !tbaa !5
  %1036 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1035, i32 0, i32 2
  %1037 = load i32, ptr %1036, align 1, !tbaa !24
  %1038 = mul i32 %1034, %1037
  %1039 = load ptr, ptr %13, align 8, !tbaa !5
  %1040 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1039, i32 0, i32 2
  %1041 = load i32, ptr %1040, align 4, !tbaa !11
  %1042 = mul i32 %1038, %1041
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %1030, i32 noundef -1610334069, i32 noundef %1033, i32 noundef 127, i32 noundef 0, i32 noundef %1042, i32 noundef 1, i32 noundef 0)
  %1043 = load ptr, ptr %11, align 8, !tbaa !5
  %1044 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg_imm8(ptr noundef %1043, i32 noundef -1609756476, i8 noundef signext 120, i32 noundef 1, i32 noundef %1044, i32 noundef 0)
  %1045 = load ptr, ptr %11, align 8, !tbaa !5
  %1046 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg_imm8(ptr noundef %1045, i32 noundef -1609756476, i8 noundef signext 120, i32 noundef 1, i32 noundef %1046, i32 noundef 1)
  %1047 = load ptr, ptr %11, align 8, !tbaa !5
  %1048 = load ptr, ptr %13, align 8, !tbaa !5
  %1049 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1048, i32 0, i32 128
  %1050 = load i8, ptr %1049, align 4, !tbaa !29
  %1051 = load i32, ptr %23, align 4, !tbaa !9
  %1052 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg_imm8(ptr noundef %1047, i32 noundef -1609822010, i8 noundef signext %1050, i32 noundef %1051, i32 noundef %1052, i32 noundef 0)
  %1053 = load ptr, ptr %11, align 8, !tbaa !5
  call void @libxsmm_x86_instruction_pop_reg(ptr noundef %1053, i32 noundef 1)
  br label %1054

1054:                                             ; preds = %1028, %1023
  br label %1055

1055:                                             ; preds = %1054, %1001
  br label %1056

1056:                                             ; preds = %1055, %974
  br label %1074

1057:                                             ; preds = %964
  %1058 = load ptr, ptr %11, align 8, !tbaa !5
  %1059 = load i32, ptr %29, align 4, !tbaa !9
  %1060 = load ptr, ptr %12, align 8, !tbaa !5
  %1061 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1060, i32 0, i32 1
  %1062 = load i32, ptr %1061, align 4, !tbaa !22
  %1063 = load i32, ptr %22, align 4, !tbaa !9
  %1064 = load ptr, ptr %14, align 8, !tbaa !5
  %1065 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1064, i32 0, i32 2
  %1066 = load i32, ptr %1065, align 1, !tbaa !24
  %1067 = mul i32 %1063, %1066
  %1068 = load ptr, ptr %13, align 8, !tbaa !5
  %1069 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1068, i32 0, i32 2
  %1070 = load i32, ptr %1069, align 4, !tbaa !11
  %1071 = mul i32 %1067, %1070
  %1072 = load i8, ptr %24, align 1, !tbaa !13
  %1073 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %1058, i32 noundef %1059, i32 noundef %1062, i32 noundef 127, i32 noundef 0, i32 noundef %1071, i8 noundef signext %1072, i32 noundef %1073, i32 noundef 0, i32 noundef 0, i32 noundef 0)
  br label %1074

1074:                                             ; preds = %1057, %1056
  %1075 = load ptr, ptr %14, align 8, !tbaa !5
  %1076 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1075, i32 noundef 4)
  %1077 = icmp eq i32 1, %1076
  br i1 %1077, label %1078, label %1082

1078:                                             ; preds = %1074
  %1079 = load ptr, ptr %14, align 8, !tbaa !5
  %1080 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1079, i32 noundef 0)
  %1081 = icmp eq i32 2, %1080
  br i1 %1081, label %1090, label %1082

1082:                                             ; preds = %1078, %1074
  %1083 = load ptr, ptr %14, align 8, !tbaa !5
  %1084 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1083, i32 noundef 3)
  %1085 = icmp eq i32 1, %1084
  br i1 %1085, label %1086, label %1097

1086:                                             ; preds = %1082
  %1087 = load ptr, ptr %14, align 8, !tbaa !5
  %1088 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1087, i32 noundef 0)
  %1089 = icmp eq i32 2, %1088
  br i1 %1089, label %1090, label %1097

1090:                                             ; preds = %1086, %1078
  %1091 = load ptr, ptr %11, align 8, !tbaa !5
  %1092 = load ptr, ptr %13, align 8, !tbaa !5
  %1093 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1092, i32 0, i32 128
  %1094 = load i8, ptr %1093, align 4, !tbaa !29
  %1095 = load i32, ptr %23, align 4, !tbaa !9
  %1096 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %1091, i8 noundef signext %1094, i32 noundef %1095, i32 noundef %1096)
  br label %1181

1097:                                             ; preds = %1086, %1082
  %1098 = load ptr, ptr %14, align 8, !tbaa !5
  %1099 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1098, i32 noundef 4)
  %1100 = icmp eq i32 1, %1099
  br i1 %1100, label %1101, label %1105

1101:                                             ; preds = %1097
  %1102 = load ptr, ptr %14, align 8, !tbaa !5
  %1103 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1102, i32 noundef 0)
  %1104 = icmp eq i32 3, %1103
  br i1 %1104, label %1113, label %1105

1105:                                             ; preds = %1101, %1097
  %1106 = load ptr, ptr %14, align 8, !tbaa !5
  %1107 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1106, i32 noundef 3)
  %1108 = icmp eq i32 1, %1107
  br i1 %1108, label %1109, label %1120

1109:                                             ; preds = %1105
  %1110 = load ptr, ptr %14, align 8, !tbaa !5
  %1111 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1110, i32 noundef 0)
  %1112 = icmp eq i32 3, %1111
  br i1 %1112, label %1113, label %1120

1113:                                             ; preds = %1109, %1101
  %1114 = load ptr, ptr %11, align 8, !tbaa !5
  %1115 = load ptr, ptr %13, align 8, !tbaa !5
  %1116 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1115, i32 0, i32 128
  %1117 = load i8, ptr %1116, align 4, !tbaa !29
  %1118 = load i32, ptr %23, align 4, !tbaa !9
  %1119 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %1114, i32 noundef 537208083, i8 noundef signext %1117, i32 noundef %1118, i32 noundef %1119)
  br label %1180

1120:                                             ; preds = %1109, %1105
  %1121 = load ptr, ptr %14, align 8, !tbaa !5
  %1122 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1121, i32 noundef 4)
  %1123 = icmp eq i32 1, %1122
  br i1 %1123, label %1124, label %1128

1124:                                             ; preds = %1120
  %1125 = load ptr, ptr %14, align 8, !tbaa !5
  %1126 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1125, i32 noundef 0)
  %1127 = icmp eq i32 4, %1126
  br i1 %1127, label %1136, label %1128

1128:                                             ; preds = %1124, %1120
  %1129 = load ptr, ptr %14, align 8, !tbaa !5
  %1130 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1129, i32 noundef 3)
  %1131 = icmp eq i32 1, %1130
  br i1 %1131, label %1132, label %1143

1132:                                             ; preds = %1128
  %1133 = load ptr, ptr %14, align 8, !tbaa !5
  %1134 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1133, i32 noundef 0)
  %1135 = icmp eq i32 4, %1134
  br i1 %1135, label %1136, label %1143

1136:                                             ; preds = %1132, %1124
  %1137 = load ptr, ptr %11, align 8, !tbaa !5
  %1138 = load ptr, ptr %13, align 8, !tbaa !5
  %1139 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1138, i32 0, i32 128
  %1140 = load i8, ptr %1139, align 4, !tbaa !29
  %1141 = load i32, ptr %23, align 4, !tbaa !9
  %1142 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %1137, i8 noundef signext %1140, i32 noundef %1141, i32 noundef %1142)
  br label %1179

1143:                                             ; preds = %1132, %1128
  %1144 = load ptr, ptr %14, align 8, !tbaa !5
  %1145 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1144, i32 noundef 4)
  %1146 = icmp eq i32 1, %1145
  br i1 %1146, label %1147, label %1151

1147:                                             ; preds = %1143
  %1148 = load ptr, ptr %14, align 8, !tbaa !5
  %1149 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1148, i32 noundef 0)
  %1150 = icmp eq i32 5, %1149
  br i1 %1150, label %1159, label %1151

1151:                                             ; preds = %1147, %1143
  %1152 = load ptr, ptr %14, align 8, !tbaa !5
  %1153 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1152, i32 noundef 3)
  %1154 = icmp eq i32 1, %1153
  br i1 %1154, label %1155, label %1178

1155:                                             ; preds = %1151
  %1156 = load ptr, ptr %14, align 8, !tbaa !5
  %1157 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1156, i32 noundef 0)
  %1158 = icmp eq i32 5, %1157
  br i1 %1158, label %1159, label %1178

1159:                                             ; preds = %1155, %1147
  %1160 = load ptr, ptr %11, align 8, !tbaa !5
  %1161 = load ptr, ptr %13, align 8, !tbaa !5
  %1162 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1161, i32 0, i32 128
  %1163 = load i8, ptr %1162, align 4, !tbaa !29
  %1164 = load i32, ptr %23, align 4, !tbaa !9
  %1165 = load i32, ptr %23, align 4, !tbaa !9
  %1166 = load ptr, ptr %13, align 8, !tbaa !5
  %1167 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1166, i32 0, i32 24
  %1168 = load i32, ptr %1167, align 4, !tbaa !30
  %1169 = load ptr, ptr %13, align 8, !tbaa !5
  %1170 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1169, i32 0, i32 25
  %1171 = load i32, ptr %1170, align 4, !tbaa !31
  %1172 = load ptr, ptr %13, align 8, !tbaa !5
  %1173 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1172, i32 0, i32 21
  %1174 = load i32, ptr %1173, align 4, !tbaa !32
  %1175 = load ptr, ptr %13, align 8, !tbaa !5
  %1176 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1175, i32 0, i32 22
  %1177 = load i32, ptr %1176, align 4, !tbaa !33
  call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %1160, i8 noundef signext %1163, i32 noundef %1164, i32 noundef %1165, i32 noundef %1168, i32 noundef %1171, i32 noundef %1174, i32 noundef %1177)
  br label %1178

1178:                                             ; preds = %1159, %1155, %1151
  br label %1179

1179:                                             ; preds = %1178, %1136
  br label %1180

1180:                                             ; preds = %1179, %1113
  br label %1181

1181:                                             ; preds = %1180, %1090
  %1182 = load ptr, ptr %14, align 8, !tbaa !5
  %1183 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1182, i32 0, i32 11
  %1184 = load i8, ptr %1183, align 1, !tbaa !14
  %1185 = zext i8 %1184 to i32
  %1186 = icmp eq i32 %1185, 1
  br i1 %1186, label %1187, label %1239

1187:                                             ; preds = %1181
  %1188 = load ptr, ptr %14, align 8, !tbaa !5
  %1189 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1188, i32 0, i32 10
  %1190 = load i16, ptr %1189, align 1, !tbaa !21
  %1191 = zext i16 %1190 to i32
  %1192 = icmp eq i32 %1191, 43
  br i1 %1192, label %1193, label %1239

1193:                                             ; preds = %1187
  %1194 = load ptr, ptr %14, align 8, !tbaa !5
  %1195 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1194, i32 noundef 0)
  %1196 = icmp eq i32 12, %1195
  br i1 %1196, label %1197, label %1208

1197:                                             ; preds = %1193
  %1198 = load ptr, ptr %14, align 8, !tbaa !5
  %1199 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1198, i32 noundef 3)
  %1200 = icmp eq i32 1, %1199
  br i1 %1200, label %1201, label %1208

1201:                                             ; preds = %1197
  %1202 = load ptr, ptr %11, align 8, !tbaa !5
  %1203 = load i32, ptr %23, align 4, !tbaa !9
  %1204 = load ptr, ptr %13, align 8, !tbaa !5
  %1205 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1204, i32 0, i32 118
  %1206 = load i32, ptr %1205, align 4, !tbaa !34
  %1207 = load i32, ptr %30, align 4, !tbaa !9
  call void @libxsmm_generator_vcvtint2ps_avx512(ptr noundef %1202, i32 noundef 12, i32 noundef %1203, i32 noundef %1206, i32 noundef %1207)
  br label %1208

1208:                                             ; preds = %1201, %1197, %1193
  %1209 = load ptr, ptr %14, align 8, !tbaa !5
  %1210 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1209, i32 noundef 0)
  %1211 = icmp eq i32 10, %1210
  br i1 %1211, label %1212, label %1223

1212:                                             ; preds = %1208
  %1213 = load ptr, ptr %14, align 8, !tbaa !5
  %1214 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1213, i32 noundef 3)
  %1215 = icmp eq i32 1, %1214
  br i1 %1215, label %1216, label %1223

1216:                                             ; preds = %1212
  %1217 = load ptr, ptr %11, align 8, !tbaa !5
  %1218 = load i32, ptr %23, align 4, !tbaa !9
  %1219 = load ptr, ptr %13, align 8, !tbaa !5
  %1220 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1219, i32 0, i32 118
  %1221 = load i32, ptr %1220, align 4, !tbaa !34
  %1222 = load i32, ptr %30, align 4, !tbaa !9
  call void @libxsmm_generator_vcvtint2ps_avx512(ptr noundef %1217, i32 noundef 10, i32 noundef %1218, i32 noundef %1221, i32 noundef %1222)
  br label %1223

1223:                                             ; preds = %1216, %1212, %1208
  %1224 = load ptr, ptr %14, align 8, !tbaa !5
  %1225 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1224, i32 noundef 0)
  %1226 = icmp eq i32 8, %1225
  br i1 %1226, label %1227, label %1238

1227:                                             ; preds = %1223
  %1228 = load ptr, ptr %14, align 8, !tbaa !5
  %1229 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1228, i32 noundef 3)
  %1230 = icmp eq i32 1, %1229
  br i1 %1230, label %1231, label %1238

1231:                                             ; preds = %1227
  %1232 = load ptr, ptr %11, align 8, !tbaa !5
  %1233 = load i32, ptr %23, align 4, !tbaa !9
  %1234 = load ptr, ptr %13, align 8, !tbaa !5
  %1235 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1234, i32 0, i32 118
  %1236 = load i32, ptr %1235, align 4, !tbaa !34
  %1237 = load i32, ptr %30, align 4, !tbaa !9
  call void @libxsmm_generator_vcvtint2ps_avx512(ptr noundef %1232, i32 noundef 8, i32 noundef %1233, i32 noundef %1236, i32 noundef %1237)
  br label %1238

1238:                                             ; preds = %1231, %1227, %1223
  br label %1239

1239:                                             ; preds = %1238, %1187, %1181
  br label %1285

1240:                                             ; preds = %903, %900
  %1241 = load i32, ptr %27, align 4, !tbaa !9
  %1242 = icmp eq i32 %1241, 1
  br i1 %1242, label %1243, label %1284

1243:                                             ; preds = %1240
  %1244 = load i32, ptr %22, align 4, !tbaa !9
  %1245 = icmp ugt i32 %1244, 0
  br i1 %1245, label %1246, label %1284

1246:                                             ; preds = %1243
  %1247 = load ptr, ptr %14, align 8, !tbaa !5
  %1248 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1247, i32 0, i32 11
  %1249 = load i8, ptr %1248, align 1, !tbaa !14
  %1250 = zext i8 %1249 to i32
  %1251 = icmp eq i32 %1250, 2
  br i1 %1251, label %1258, label %1252

1252:                                             ; preds = %1246
  %1253 = load ptr, ptr %14, align 8, !tbaa !5
  %1254 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1253, i32 0, i32 11
  %1255 = load i8, ptr %1254, align 1, !tbaa !14
  %1256 = zext i8 %1255 to i32
  %1257 = icmp eq i32 %1256, 3
  br i1 %1257, label %1258, label %1284

1258:                                             ; preds = %1252, %1246
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #3
  %1259 = load ptr, ptr %11, align 8, !tbaa !5
  %1260 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1259, i32 0, i32 6
  %1261 = load i32, ptr %1260, align 4, !tbaa !18
  %1262 = icmp ult i32 %1261, 1005
  br i1 %1262, label %1263, label %1264

1263:                                             ; preds = %1258
  br label %1271

1264:                                             ; preds = %1258
  %1265 = load ptr, ptr %11, align 8, !tbaa !5
  %1266 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1265, i32 0, i32 6
  %1267 = load i32, ptr %1266, align 4, !tbaa !18
  %1268 = icmp uge i32 %1267, 1101
  %1269 = zext i1 %1268 to i64
  %1270 = select i1 %1268, i32 122, i32 121
  br label %1271

1271:                                             ; preds = %1264, %1263
  %1272 = phi i32 [ 120, %1263 ], [ %1270, %1264 ]
  %1273 = trunc i32 %1272 to i8
  store i8 %1273, ptr %38, align 1, !tbaa !13
  %1274 = load ptr, ptr %11, align 8, !tbaa !5
  %1275 = load ptr, ptr %11, align 8, !tbaa !5
  %1276 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1275, i32 0, i32 6
  %1277 = load i32, ptr %1276, align 4, !tbaa !18
  %1278 = icmp ult i32 %1277, 1005
  %1279 = zext i1 %1278 to i64
  %1280 = select i1 %1278, i32 -1610346480, i32 537138704
  %1281 = load i8, ptr %38, align 1, !tbaa !13
  %1282 = load i32, ptr %16, align 4, !tbaa !9
  %1283 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %1274, i32 noundef %1280, i8 noundef signext %1281, i32 noundef %1282, i32 noundef %1283)
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #3
  br label %1284

1284:                                             ; preds = %1271, %1252, %1243, %1240
  br label %1285

1285:                                             ; preds = %1284, %1239
  br label %1286

1286:                                             ; preds = %1285, %894
  %1287 = load ptr, ptr %14, align 8, !tbaa !5
  %1288 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1287, i32 0, i32 11
  %1289 = load i8, ptr %1288, align 1, !tbaa !14
  %1290 = zext i8 %1289 to i32
  %1291 = icmp eq i32 %1290, 2
  br i1 %1291, label %1298, label %1292

1292:                                             ; preds = %1286
  %1293 = load ptr, ptr %14, align 8, !tbaa !5
  %1294 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1293, i32 0, i32 11
  %1295 = load i8, ptr %1294, align 1, !tbaa !14
  %1296 = zext i8 %1295 to i32
  %1297 = icmp eq i32 %1296, 3
  br i1 %1297, label %1298, label %1332

1298:                                             ; preds = %1292, %1286
  %1299 = load i32, ptr %21, align 4, !tbaa !9
  %1300 = icmp ugt i32 %1299, 0
  br i1 %1300, label %1301, label %1331

1301:                                             ; preds = %1298
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #3
  %1302 = load ptr, ptr %11, align 8, !tbaa !5
  %1303 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1302, i32 0, i32 6
  %1304 = load i32, ptr %1303, align 4, !tbaa !18
  %1305 = icmp ult i32 %1304, 1005
  br i1 %1305, label %1306, label %1307

1306:                                             ; preds = %1301
  br label %1314

1307:                                             ; preds = %1301
  %1308 = load ptr, ptr %11, align 8, !tbaa !5
  %1309 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1308, i32 0, i32 6
  %1310 = load i32, ptr %1309, align 4, !tbaa !18
  %1311 = icmp uge i32 %1310, 1101
  %1312 = zext i1 %1311 to i64
  %1313 = select i1 %1311, i32 122, i32 121
  br label %1314

1314:                                             ; preds = %1307, %1306
  %1315 = phi i32 [ 120, %1306 ], [ %1313, %1307 ]
  %1316 = trunc i32 %1315 to i8
  store i8 %1316, ptr %39, align 1, !tbaa !13
  %1317 = load ptr, ptr %11, align 8, !tbaa !5
  %1318 = load ptr, ptr %11, align 8, !tbaa !5
  %1319 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1318, i32 0, i32 6
  %1320 = load i32, ptr %1319, align 4, !tbaa !18
  %1321 = icmp ult i32 %1320, 1005
  %1322 = zext i1 %1321 to i64
  %1323 = select i1 %1321, i32 -1610346480, i32 537138704
  %1324 = load i8, ptr %39, align 1, !tbaa !13
  %1325 = load i32, ptr %16, align 4, !tbaa !9
  %1326 = load i32, ptr %22, align 4, !tbaa !9
  %1327 = load i32, ptr %17, align 4, !tbaa !9
  %1328 = mul i32 %1326, %1327
  %1329 = add i32 %1325, %1328
  %1330 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %1317, i32 noundef %1323, i8 noundef signext %1324, i32 noundef %1329, i32 noundef %1330)
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #3
  br label %1331

1331:                                             ; preds = %1314, %1298
  br label %1332

1332:                                             ; preds = %1331, %1292
  br label %1333

1333:                                             ; preds = %1332, %891
  %1334 = load i32, ptr %26, align 4, !tbaa !9
  %1335 = icmp eq i32 %1334, 1
  br i1 %1335, label %1336, label %1697

1336:                                             ; preds = %1333
  %1337 = load i32, ptr %22, align 4, !tbaa !9
  %1338 = icmp eq i32 %1337, 0
  br i1 %1338, label %1339, label %1652

1339:                                             ; preds = %1336
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #3
  %1340 = load ptr, ptr %13, align 8, !tbaa !5
  %1341 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1340, i32 0, i32 6
  %1342 = load i32, ptr %1341, align 4, !tbaa !28
  store i32 %1342, ptr %40, align 4, !tbaa !9
  %1343 = load ptr, ptr %14, align 8, !tbaa !5
  %1344 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1343, i32 0, i32 11
  %1345 = load i8, ptr %1344, align 1, !tbaa !14
  %1346 = zext i8 %1345 to i32
  %1347 = icmp eq i32 %1346, 1
  br i1 %1347, label %1348, label %1400

1348:                                             ; preds = %1339
  %1349 = load ptr, ptr %14, align 8, !tbaa !5
  %1350 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1349, i32 0, i32 10
  %1351 = load i16, ptr %1350, align 1, !tbaa !21
  %1352 = zext i16 %1351 to i32
  %1353 = icmp eq i32 %1352, 43
  br i1 %1353, label %1354, label %1400

1354:                                             ; preds = %1348
  %1355 = load ptr, ptr %14, align 8, !tbaa !5
  %1356 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1355, i32 noundef 0)
  %1357 = icmp eq i32 12, %1356
  br i1 %1357, label %1358, label %1369

1358:                                             ; preds = %1354
  %1359 = load ptr, ptr %14, align 8, !tbaa !5
  %1360 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1359, i32 noundef 3)
  %1361 = icmp eq i32 1, %1360
  br i1 %1361, label %1362, label %1369

1362:                                             ; preds = %1358
  store i8 120, ptr %24, align 1, !tbaa !13
  store i32 16, ptr %15, align 4, !tbaa !9
  %1363 = load ptr, ptr %11, align 8, !tbaa !5
  %1364 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1363, i32 0, i32 6
  %1365 = load i32, ptr %1364, align 4, !tbaa !18
  %1366 = icmp ult i32 %1365, 1101
  br i1 %1366, label %1367, label %1368

1367:                                             ; preds = %1362
  store i8 120, ptr %24, align 1, !tbaa !13
  store i32 8, ptr %15, align 4, !tbaa !9
  br label %1368

1368:                                             ; preds = %1367, %1362
  br label %1369

1369:                                             ; preds = %1368, %1358, %1354
  %1370 = load ptr, ptr %14, align 8, !tbaa !5
  %1371 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1370, i32 noundef 0)
  %1372 = icmp eq i32 10, %1371
  br i1 %1372, label %1373, label %1384

1373:                                             ; preds = %1369
  %1374 = load ptr, ptr %14, align 8, !tbaa !5
  %1375 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1374, i32 noundef 3)
  %1376 = icmp eq i32 1, %1375
  br i1 %1376, label %1377, label %1384

1377:                                             ; preds = %1373
  store i8 121, ptr %24, align 1, !tbaa !13
  store i32 16, ptr %15, align 4, !tbaa !9
  %1378 = load ptr, ptr %11, align 8, !tbaa !5
  %1379 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1378, i32 0, i32 6
  %1380 = load i32, ptr %1379, align 4, !tbaa !18
  %1381 = icmp ult i32 %1380, 1101
  br i1 %1381, label %1382, label %1383

1382:                                             ; preds = %1377
  store i8 120, ptr %24, align 1, !tbaa !13
  store i32 8, ptr %15, align 4, !tbaa !9
  br label %1383

1383:                                             ; preds = %1382, %1377
  br label %1384

1384:                                             ; preds = %1383, %1373, %1369
  %1385 = load ptr, ptr %14, align 8, !tbaa !5
  %1386 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1385, i32 noundef 0)
  %1387 = icmp eq i32 8, %1386
  br i1 %1387, label %1388, label %1399

1388:                                             ; preds = %1384
  %1389 = load ptr, ptr %14, align 8, !tbaa !5
  %1390 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1389, i32 noundef 3)
  %1391 = icmp eq i32 1, %1390
  br i1 %1391, label %1392, label %1399

1392:                                             ; preds = %1388
  store i8 122, ptr %24, align 1, !tbaa !13
  store i32 16, ptr %15, align 4, !tbaa !9
  %1393 = load ptr, ptr %11, align 8, !tbaa !5
  %1394 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1393, i32 0, i32 6
  %1395 = load i32, ptr %1394, align 4, !tbaa !18
  %1396 = icmp ult i32 %1395, 1101
  br i1 %1396, label %1397, label %1398

1397:                                             ; preds = %1392
  store i8 121, ptr %24, align 1, !tbaa !13
  store i32 8, ptr %15, align 4, !tbaa !9
  br label %1398

1398:                                             ; preds = %1397, %1392
  br label %1399

1399:                                             ; preds = %1398, %1388, %1384
  br label %1400

1400:                                             ; preds = %1399, %1348, %1339
  %1401 = load ptr, ptr %14, align 8, !tbaa !5
  %1402 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1401, i32 noundef 0)
  %1403 = icmp eq i32 4, %1402
  br i1 %1403, label %1408, label %1404

1404:                                             ; preds = %1400
  %1405 = load ptr, ptr %14, align 8, !tbaa !5
  %1406 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1405, i32 noundef 0)
  %1407 = icmp eq i32 5, %1406
  br i1 %1407, label %1408, label %1426

1408:                                             ; preds = %1404, %1400
  %1409 = load ptr, ptr %14, align 8, !tbaa !5
  %1410 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1409, i32 noundef 4)
  %1411 = icmp eq i32 1, %1410
  br i1 %1411, label %1412, label %1426

1412:                                             ; preds = %1408
  %1413 = load ptr, ptr %11, align 8, !tbaa !5
  %1414 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1413, i32 0, i32 6
  %1415 = load i32, ptr %1414, align 4, !tbaa !18
  %1416 = icmp ult i32 %1415, 1101
  br i1 %1416, label %1417, label %1426

1417:                                             ; preds = %1412
  %1418 = load i32, ptr %19, align 4, !tbaa !9
  %1419 = icmp eq i32 %1418, 1
  br i1 %1419, label %1420, label %1425

1420:                                             ; preds = %1417
  %1421 = load i32, ptr %21, align 4, !tbaa !9
  %1422 = load i32, ptr %17, align 4, !tbaa !9
  %1423 = sub i32 %1422, 1
  %1424 = icmp eq i32 %1421, %1423
  br i1 %1424, label %1426, label %1425

1425:                                             ; preds = %1420, %1417
  store i32 545725200, ptr %40, align 4, !tbaa !9
  br label %1449

1426:                                             ; preds = %1420, %1412, %1408, %1404
  %1427 = load ptr, ptr %14, align 8, !tbaa !5
  %1428 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1427, i32 noundef 0)
  %1429 = icmp eq i32 2, %1428
  br i1 %1429, label %1430, label %1448

1430:                                             ; preds = %1426
  %1431 = load ptr, ptr %14, align 8, !tbaa !5
  %1432 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1431, i32 noundef 4)
  %1433 = icmp eq i32 1, %1432
  br i1 %1433, label %1434, label %1448

1434:                                             ; preds = %1430
  %1435 = load ptr, ptr %11, align 8, !tbaa !5
  %1436 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1435, i32 0, i32 6
  %1437 = load i32, ptr %1436, align 4, !tbaa !18
  %1438 = icmp ult i32 %1437, 1005
  br i1 %1438, label %1439, label %1448

1439:                                             ; preds = %1434
  %1440 = load i32, ptr %19, align 4, !tbaa !9
  %1441 = icmp eq i32 %1440, 1
  br i1 %1441, label %1442, label %1447

1442:                                             ; preds = %1439
  %1443 = load i32, ptr %21, align 4, !tbaa !9
  %1444 = load i32, ptr %17, align 4, !tbaa !9
  %1445 = sub i32 %1444, 1
  %1446 = icmp eq i32 %1443, %1445
  br i1 %1446, label %1448, label %1447

1447:                                             ; preds = %1442, %1439
  store i32 -1610149872, ptr %40, align 4, !tbaa !9
  br label %1448

1448:                                             ; preds = %1447, %1442, %1434, %1430, %1426
  br label %1449

1449:                                             ; preds = %1448, %1425
  %1450 = load ptr, ptr %11, align 8, !tbaa !5
  %1451 = load i32, ptr %40, align 4, !tbaa !9
  %1452 = load ptr, ptr %12, align 8, !tbaa !5
  %1453 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1452, i32 0, i32 1
  %1454 = load i32, ptr %1453, align 4, !tbaa !22
  %1455 = load i32, ptr %21, align 4, !tbaa !9
  %1456 = load i32, ptr %15, align 4, !tbaa !9
  %1457 = mul i32 %1455, %1456
  %1458 = load ptr, ptr %13, align 8, !tbaa !5
  %1459 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1458, i32 0, i32 2
  %1460 = load i32, ptr %1459, align 4, !tbaa !11
  %1461 = mul i32 %1457, %1460
  %1462 = load i8, ptr %24, align 1, !tbaa !13
  %1463 = load i32, ptr %23, align 4, !tbaa !9
  %1464 = load i32, ptr %19, align 4, !tbaa !9
  %1465 = icmp eq i32 %1464, 1
  br i1 %1465, label %1466, label %1471

1466:                                             ; preds = %1449
  %1467 = load i32, ptr %21, align 4, !tbaa !9
  %1468 = load i32, ptr %17, align 4, !tbaa !9
  %1469 = sub i32 %1468, 1
  %1470 = icmp eq i32 %1467, %1469
  br label %1471

1471:                                             ; preds = %1466, %1449
  %1472 = phi i1 [ false, %1449 ], [ %1470, %1466 ]
  %1473 = zext i1 %1472 to i64
  %1474 = select i1 %1472, i32 1, i32 0
  %1475 = load i32, ptr %19, align 4, !tbaa !9
  %1476 = icmp eq i32 %1475, 1
  br i1 %1476, label %1477, label %1484

1477:                                             ; preds = %1471
  %1478 = load i32, ptr %21, align 4, !tbaa !9
  %1479 = load i32, ptr %17, align 4, !tbaa !9
  %1480 = sub i32 %1479, 1
  %1481 = icmp eq i32 %1478, %1480
  br i1 %1481, label %1482, label %1484

1482:                                             ; preds = %1477
  %1483 = load i32, ptr %20, align 4, !tbaa !9
  br label %1485

1484:                                             ; preds = %1477, %1471
  br label %1485

1485:                                             ; preds = %1484, %1482
  %1486 = phi i32 [ %1483, %1482 ], [ 0, %1484 ]
  call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %1450, i32 noundef %1451, i32 noundef %1454, i32 noundef 127, i32 noundef 0, i32 noundef %1461, i8 noundef signext %1462, i32 noundef %1463, i32 noundef %1474, i32 noundef %1486, i32 noundef 0)
  %1487 = load ptr, ptr %14, align 8, !tbaa !5
  %1488 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1487, i32 noundef 4)
  %1489 = icmp eq i32 1, %1488
  br i1 %1489, label %1490, label %1494

1490:                                             ; preds = %1485
  %1491 = load ptr, ptr %14, align 8, !tbaa !5
  %1492 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1491, i32 noundef 0)
  %1493 = icmp eq i32 2, %1492
  br i1 %1493, label %1502, label %1494

1494:                                             ; preds = %1490, %1485
  %1495 = load ptr, ptr %14, align 8, !tbaa !5
  %1496 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1495, i32 noundef 3)
  %1497 = icmp eq i32 1, %1496
  br i1 %1497, label %1498, label %1509

1498:                                             ; preds = %1494
  %1499 = load ptr, ptr %14, align 8, !tbaa !5
  %1500 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1499, i32 noundef 0)
  %1501 = icmp eq i32 2, %1500
  br i1 %1501, label %1502, label %1509

1502:                                             ; preds = %1498, %1490
  %1503 = load ptr, ptr %11, align 8, !tbaa !5
  %1504 = load ptr, ptr %13, align 8, !tbaa !5
  %1505 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1504, i32 0, i32 128
  %1506 = load i8, ptr %1505, align 4, !tbaa !29
  %1507 = load i32, ptr %23, align 4, !tbaa !9
  %1508 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %1503, i8 noundef signext %1506, i32 noundef %1507, i32 noundef %1508)
  br label %1593

1509:                                             ; preds = %1498, %1494
  %1510 = load ptr, ptr %14, align 8, !tbaa !5
  %1511 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1510, i32 noundef 4)
  %1512 = icmp eq i32 1, %1511
  br i1 %1512, label %1513, label %1517

1513:                                             ; preds = %1509
  %1514 = load ptr, ptr %14, align 8, !tbaa !5
  %1515 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1514, i32 noundef 0)
  %1516 = icmp eq i32 3, %1515
  br i1 %1516, label %1525, label %1517

1517:                                             ; preds = %1513, %1509
  %1518 = load ptr, ptr %14, align 8, !tbaa !5
  %1519 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1518, i32 noundef 3)
  %1520 = icmp eq i32 1, %1519
  br i1 %1520, label %1521, label %1532

1521:                                             ; preds = %1517
  %1522 = load ptr, ptr %14, align 8, !tbaa !5
  %1523 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1522, i32 noundef 0)
  %1524 = icmp eq i32 3, %1523
  br i1 %1524, label %1525, label %1532

1525:                                             ; preds = %1521, %1513
  %1526 = load ptr, ptr %11, align 8, !tbaa !5
  %1527 = load ptr, ptr %13, align 8, !tbaa !5
  %1528 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1527, i32 0, i32 128
  %1529 = load i8, ptr %1528, align 4, !tbaa !29
  %1530 = load i32, ptr %23, align 4, !tbaa !9
  %1531 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %1526, i32 noundef 537208083, i8 noundef signext %1529, i32 noundef %1530, i32 noundef %1531)
  br label %1592

1532:                                             ; preds = %1521, %1517
  %1533 = load ptr, ptr %14, align 8, !tbaa !5
  %1534 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1533, i32 noundef 4)
  %1535 = icmp eq i32 1, %1534
  br i1 %1535, label %1536, label %1540

1536:                                             ; preds = %1532
  %1537 = load ptr, ptr %14, align 8, !tbaa !5
  %1538 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1537, i32 noundef 0)
  %1539 = icmp eq i32 4, %1538
  br i1 %1539, label %1548, label %1540

1540:                                             ; preds = %1536, %1532
  %1541 = load ptr, ptr %14, align 8, !tbaa !5
  %1542 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1541, i32 noundef 3)
  %1543 = icmp eq i32 1, %1542
  br i1 %1543, label %1544, label %1555

1544:                                             ; preds = %1540
  %1545 = load ptr, ptr %14, align 8, !tbaa !5
  %1546 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1545, i32 noundef 0)
  %1547 = icmp eq i32 4, %1546
  br i1 %1547, label %1548, label %1555

1548:                                             ; preds = %1544, %1536
  %1549 = load ptr, ptr %11, align 8, !tbaa !5
  %1550 = load ptr, ptr %13, align 8, !tbaa !5
  %1551 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1550, i32 0, i32 128
  %1552 = load i8, ptr %1551, align 4, !tbaa !29
  %1553 = load i32, ptr %23, align 4, !tbaa !9
  %1554 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %1549, i8 noundef signext %1552, i32 noundef %1553, i32 noundef %1554)
  br label %1591

1555:                                             ; preds = %1544, %1540
  %1556 = load ptr, ptr %14, align 8, !tbaa !5
  %1557 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1556, i32 noundef 4)
  %1558 = icmp eq i32 1, %1557
  br i1 %1558, label %1559, label %1563

1559:                                             ; preds = %1555
  %1560 = load ptr, ptr %14, align 8, !tbaa !5
  %1561 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1560, i32 noundef 0)
  %1562 = icmp eq i32 5, %1561
  br i1 %1562, label %1571, label %1563

1563:                                             ; preds = %1559, %1555
  %1564 = load ptr, ptr %14, align 8, !tbaa !5
  %1565 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1564, i32 noundef 3)
  %1566 = icmp eq i32 1, %1565
  br i1 %1566, label %1567, label %1590

1567:                                             ; preds = %1563
  %1568 = load ptr, ptr %14, align 8, !tbaa !5
  %1569 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1568, i32 noundef 0)
  %1570 = icmp eq i32 5, %1569
  br i1 %1570, label %1571, label %1590

1571:                                             ; preds = %1567, %1559
  %1572 = load ptr, ptr %11, align 8, !tbaa !5
  %1573 = load ptr, ptr %13, align 8, !tbaa !5
  %1574 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1573, i32 0, i32 128
  %1575 = load i8, ptr %1574, align 4, !tbaa !29
  %1576 = load i32, ptr %23, align 4, !tbaa !9
  %1577 = load i32, ptr %23, align 4, !tbaa !9
  %1578 = load ptr, ptr %13, align 8, !tbaa !5
  %1579 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1578, i32 0, i32 24
  %1580 = load i32, ptr %1579, align 4, !tbaa !30
  %1581 = load ptr, ptr %13, align 8, !tbaa !5
  %1582 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1581, i32 0, i32 25
  %1583 = load i32, ptr %1582, align 4, !tbaa !31
  %1584 = load ptr, ptr %13, align 8, !tbaa !5
  %1585 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1584, i32 0, i32 21
  %1586 = load i32, ptr %1585, align 4, !tbaa !32
  %1587 = load ptr, ptr %13, align 8, !tbaa !5
  %1588 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1587, i32 0, i32 22
  %1589 = load i32, ptr %1588, align 4, !tbaa !33
  call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %1572, i8 noundef signext %1575, i32 noundef %1576, i32 noundef %1577, i32 noundef %1580, i32 noundef %1583, i32 noundef %1586, i32 noundef %1589)
  br label %1590

1590:                                             ; preds = %1571, %1567, %1563
  br label %1591

1591:                                             ; preds = %1590, %1548
  br label %1592

1592:                                             ; preds = %1591, %1525
  br label %1593

1593:                                             ; preds = %1592, %1502
  %1594 = load ptr, ptr %14, align 8, !tbaa !5
  %1595 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1594, i32 0, i32 11
  %1596 = load i8, ptr %1595, align 1, !tbaa !14
  %1597 = zext i8 %1596 to i32
  %1598 = icmp eq i32 %1597, 1
  br i1 %1598, label %1599, label %1651

1599:                                             ; preds = %1593
  %1600 = load ptr, ptr %14, align 8, !tbaa !5
  %1601 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1600, i32 0, i32 10
  %1602 = load i16, ptr %1601, align 1, !tbaa !21
  %1603 = zext i16 %1602 to i32
  %1604 = icmp eq i32 %1603, 43
  br i1 %1604, label %1605, label %1651

1605:                                             ; preds = %1599
  %1606 = load ptr, ptr %14, align 8, !tbaa !5
  %1607 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1606, i32 noundef 0)
  %1608 = icmp eq i32 12, %1607
  br i1 %1608, label %1609, label %1620

1609:                                             ; preds = %1605
  %1610 = load ptr, ptr %14, align 8, !tbaa !5
  %1611 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1610, i32 noundef 3)
  %1612 = icmp eq i32 1, %1611
  br i1 %1612, label %1613, label %1620

1613:                                             ; preds = %1609
  %1614 = load ptr, ptr %11, align 8, !tbaa !5
  %1615 = load i32, ptr %23, align 4, !tbaa !9
  %1616 = load ptr, ptr %13, align 8, !tbaa !5
  %1617 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1616, i32 0, i32 118
  %1618 = load i32, ptr %1617, align 4, !tbaa !34
  %1619 = load i32, ptr %30, align 4, !tbaa !9
  call void @libxsmm_generator_vcvtint2ps_avx512(ptr noundef %1614, i32 noundef 12, i32 noundef %1615, i32 noundef %1618, i32 noundef %1619)
  br label %1620

1620:                                             ; preds = %1613, %1609, %1605
  %1621 = load ptr, ptr %14, align 8, !tbaa !5
  %1622 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1621, i32 noundef 0)
  %1623 = icmp eq i32 10, %1622
  br i1 %1623, label %1624, label %1635

1624:                                             ; preds = %1620
  %1625 = load ptr, ptr %14, align 8, !tbaa !5
  %1626 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1625, i32 noundef 3)
  %1627 = icmp eq i32 1, %1626
  br i1 %1627, label %1628, label %1635

1628:                                             ; preds = %1624
  %1629 = load ptr, ptr %11, align 8, !tbaa !5
  %1630 = load i32, ptr %23, align 4, !tbaa !9
  %1631 = load ptr, ptr %13, align 8, !tbaa !5
  %1632 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1631, i32 0, i32 118
  %1633 = load i32, ptr %1632, align 4, !tbaa !34
  %1634 = load i32, ptr %30, align 4, !tbaa !9
  call void @libxsmm_generator_vcvtint2ps_avx512(ptr noundef %1629, i32 noundef 10, i32 noundef %1630, i32 noundef %1633, i32 noundef %1634)
  br label %1635

1635:                                             ; preds = %1628, %1624, %1620
  %1636 = load ptr, ptr %14, align 8, !tbaa !5
  %1637 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1636, i32 noundef 0)
  %1638 = icmp eq i32 8, %1637
  br i1 %1638, label %1639, label %1650

1639:                                             ; preds = %1635
  %1640 = load ptr, ptr %14, align 8, !tbaa !5
  %1641 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1640, i32 noundef 3)
  %1642 = icmp eq i32 1, %1641
  br i1 %1642, label %1643, label %1650

1643:                                             ; preds = %1639
  %1644 = load ptr, ptr %11, align 8, !tbaa !5
  %1645 = load i32, ptr %23, align 4, !tbaa !9
  %1646 = load ptr, ptr %13, align 8, !tbaa !5
  %1647 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1646, i32 0, i32 118
  %1648 = load i32, ptr %1647, align 4, !tbaa !34
  %1649 = load i32, ptr %30, align 4, !tbaa !9
  call void @libxsmm_generator_vcvtint2ps_avx512(ptr noundef %1644, i32 noundef 8, i32 noundef %1645, i32 noundef %1648, i32 noundef %1649)
  br label %1650

1650:                                             ; preds = %1643, %1639, %1635
  br label %1651

1651:                                             ; preds = %1650, %1599, %1593
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #3
  br label %1652

1652:                                             ; preds = %1651, %1336
  %1653 = load ptr, ptr %14, align 8, !tbaa !5
  %1654 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1653, i32 0, i32 11
  %1655 = load i8, ptr %1654, align 1, !tbaa !14
  %1656 = zext i8 %1655 to i32
  %1657 = icmp eq i32 %1656, 2
  br i1 %1657, label %1664, label %1658

1658:                                             ; preds = %1652
  %1659 = load ptr, ptr %14, align 8, !tbaa !5
  %1660 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1659, i32 0, i32 11
  %1661 = load i8, ptr %1660, align 1, !tbaa !14
  %1662 = zext i8 %1661 to i32
  %1663 = icmp eq i32 %1662, 3
  br i1 %1663, label %1664, label %1696

1664:                                             ; preds = %1658, %1652
  %1665 = load i32, ptr %22, align 4, !tbaa !9
  %1666 = icmp ugt i32 %1665, 0
  br i1 %1666, label %1667, label %1695

1667:                                             ; preds = %1664
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #3
  %1668 = load ptr, ptr %11, align 8, !tbaa !5
  %1669 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1668, i32 0, i32 6
  %1670 = load i32, ptr %1669, align 4, !tbaa !18
  %1671 = icmp ult i32 %1670, 1005
  br i1 %1671, label %1672, label %1673

1672:                                             ; preds = %1667
  br label %1680

1673:                                             ; preds = %1667
  %1674 = load ptr, ptr %11, align 8, !tbaa !5
  %1675 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1674, i32 0, i32 6
  %1676 = load i32, ptr %1675, align 4, !tbaa !18
  %1677 = icmp uge i32 %1676, 1101
  %1678 = zext i1 %1677 to i64
  %1679 = select i1 %1677, i32 122, i32 121
  br label %1680

1680:                                             ; preds = %1673, %1672
  %1681 = phi i32 [ 120, %1672 ], [ %1679, %1673 ]
  %1682 = trunc i32 %1681 to i8
  store i8 %1682, ptr %41, align 1, !tbaa !13
  %1683 = load ptr, ptr %11, align 8, !tbaa !5
  %1684 = load ptr, ptr %11, align 8, !tbaa !5
  %1685 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %1684, i32 0, i32 6
  %1686 = load i32, ptr %1685, align 4, !tbaa !18
  %1687 = icmp ult i32 %1686, 1005
  %1688 = zext i1 %1687 to i64
  %1689 = select i1 %1687, i32 -1610346480, i32 537138704
  %1690 = load i8, ptr %41, align 1, !tbaa !13
  %1691 = load i32, ptr %16, align 4, !tbaa !9
  %1692 = load i32, ptr %21, align 4, !tbaa !9
  %1693 = add i32 %1691, %1692
  %1694 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %1683, i32 noundef %1689, i8 noundef signext %1690, i32 noundef %1693, i32 noundef %1694)
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #3
  br label %1695

1695:                                             ; preds = %1680, %1664
  br label %1696

1696:                                             ; preds = %1695, %1658
  br label %1697

1697:                                             ; preds = %1696, %1333
  br label %1698

1698:                                             ; preds = %1697, %887
  br label %1699

1699:                                             ; preds = %1698
  %1700 = load i32, ptr %21, align 4, !tbaa !9
  %1701 = add i32 %1700, 1
  store i32 %1701, ptr %21, align 4, !tbaa !9
  br label %541, !llvm.loop !35

1702:                                             ; preds = %541
  br label %1703

1703:                                             ; preds = %1702
  %1704 = load i32, ptr %22, align 4, !tbaa !9
  %1705 = add i32 %1704, 1
  store i32 %1705, ptr %22, align 4, !tbaa !9
  br label %536, !llvm.loop !36

1706:                                             ; preds = %536
  store i32 0, ptr %31, align 4
  br label %1707

1707:                                             ; preds = %1706, %534, %302
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 1, 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
  %1708 = load i32, ptr %31, align 4
  switch i32 %1708, label %1710 [
    i32 0, label %1709
    i32 1, label %1709
  ]

1709:                                             ; preds = %1707, %1707
  ret void

1710:                                             ; preds = %1707
  unreachable
}

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

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

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

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

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

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

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

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

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

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

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

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 8}
!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 4}
!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 8}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.mustprogress"}
!27 = distinct !{!27, !26}
!28 = !{!12, !10, i64 24}
!29 = !{!12, !7, i64 512}
!30 = !{!12, !10, i64 96}
!31 = !{!12, !10, i64 100}
!32 = !{!12, !10, i64 84}
!33 = !{!12, !10, i64 88}
!34 = !{!12, !10, i64 472}
!35 = distinct !{!35, !26}
!36 = distinct !{!36, !26}


; 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_meltw_getenum_precision(ptr noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_load_2d_reg_block(ptr noundef %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr noundef %3, i32 noundef %4, i32 noundef %5, i32 noundef %6, i32 noundef %7, i32 noundef %8, i32 noundef %9) local_unnamed_addr #1 {
  %11 = getelementptr inbounds i8, ptr %2, i64 8
  %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
  switch i8 %19, label %44 [
    i8 1, label %.thread601
    i8 2, label %.thread603
    i8 3, label %35
  ]

.thread601:                                       ; preds = %10
  %20 = getelementptr inbounds i8, ptr %3, i64 27
  %21 = load i16, ptr %20, align 1, !tbaa !13
  %22 = insertelement <2 x i16> poison, i16 %21, i64 0
  %23 = shufflevector <2 x i16> %22, <2 x i16> poison, <2 x i32> zeroinitializer
  %24 = and <2 x i16> %23, <i16 4, i16 2>
  %25 = icmp ne <2 x i16> %24, zeroinitializer
  %26 = and i16 %21, 8
  %.not562 = icmp eq i16 %26, 0
  br i1 %.not562, label %.thread628, label %44

.thread603:                                       ; preds = %10
  %27 = getelementptr inbounds i8, ptr %3, i64 27
  %28 = load i16, ptr %27, align 1, !tbaa !13
  %29 = insertelement <2 x i16> poison, i16 %28, i64 0
  %30 = shufflevector <2 x i16> %29, <2 x i16> poison, <2 x i32> zeroinitializer
  %31 = and <2 x i16> %30, <i16 4, i16 1>
  %32 = icmp ne <2 x i16> %31, zeroinitializer
  %33 = and i16 %28, 16
  %.not563 = icmp eq i16 %33, 0
  br i1 %.not563, label %.thread628, label %44

.thread628:                                       ; preds = %.thread603, %.thread601
  %34 = phi <2 x i1> [ %32, %.thread603 ], [ %25, %.thread601 ]
  br label %44

35:                                               ; preds = %10
  %36 = getelementptr inbounds i8, ptr %3, i64 27
  %37 = load i16, ptr %36, align 1, !tbaa !13
  %38 = insertelement <2 x i16> poison, i16 %37, i64 0
  %39 = shufflevector <2 x i16> %38, <2 x i16> poison, <2 x i32> zeroinitializer
  %40 = and <2 x i16> %39, <i16 8, i16 1>
  %41 = icmp ne <2 x i16> %40, zeroinitializer
  %42 = and i16 %37, 64
  %43 = icmp ne i16 %42, 0
  br label %44

44:                                               ; preds = %10, %.thread628, %35, %.thread603, %.thread601
  %45 = phi i1 [ true, %.thread603 ], [ true, %.thread601 ], [ %43, %35 ], [ false, %.thread628 ], [ false, %10 ]
  %46 = phi <2 x i1> [ %32, %.thread603 ], [ %25, %.thread601 ], [ %41, %35 ], [ %34, %.thread628 ], [ zeroinitializer, %10 ]
  %47 = extractelement <2 x i1> %46, i64 0
  %48 = extractelement <2 x i1> %46, i64 1
  %or.cond = select i1 %48, i1 true, i1 %47
  %spec.select566 = select i1 %or.cond, i1 true, i1 %45
  %49 = icmp eq i32 %12, 4
  br i1 %49, label %.thread634, label %56

.thread634:                                       ; preds = %44
  %50 = getelementptr inbounds i8, ptr %0, i64 28
  %51 = load i32, ptr %50, align 4, !tbaa !14
  %52 = icmp ult i32 %51, 1101
  %53 = select i1 %52, i32 537209368, i32 537209432
  %54 = getelementptr inbounds i8, ptr %3, i64 27
  %55 = load i16, ptr %54, align 1, !tbaa !13
  br label %66

56:                                               ; preds = %44
  %57 = icmp eq i32 %12, 2
  %58 = select i1 %57, i32 537209209, i32 537208952
  %59 = getelementptr inbounds i8, ptr %3, i64 27
  %60 = load i16, ptr %59, align 1, !tbaa !13
  %61 = icmp eq i32 %12, 8
  br i1 %61, label %62, label %66

62:                                               ; preds = %56
  %63 = getelementptr inbounds i8, ptr %0, i64 28
  %64 = load i32, ptr %63, align 4, !tbaa !14
  %65 = icmp ult i32 %64, 1051
  %. = select i1 %65, i32 1610948697, i32 -528143527
  br label %66

66:                                               ; preds = %.thread634, %62, %56
  %.in.in.in = phi i16 [ %60, %56 ], [ %60, %62 ], [ %55, %.thread634 ]
  %.0544 = phi i32 [ %58, %56 ], [ %., %62 ], [ %53, %.thread634 ]
  %.in.in = lshr i16 %.in.in.in, 10
  %.in = and i16 %.in.in, 1
  %67 = zext nneg i16 %.in to i32
  %.not565 = icmp eq i32 %8, 0
  br i1 %.not565, label %85, label %68

68:                                               ; preds = %66
  %69 = getelementptr inbounds i8, ptr %0, i64 28
  %70 = load i32, ptr %69, align 4, !tbaa !14
  %71 = add i32 %70, -1005
  %or.cond567 = icmp ult i32 %71, 46
  br i1 %or.cond567, label %72, label %81

72:                                               ; preds = %68
  %73 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %74 = icmp eq i32 %73, 10
  br i1 %74, label %.sink.split, label %75

75:                                               ; preds = %72
  %76 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %77 = icmp eq i32 %76, 3
  br i1 %77, label %.sink.split, label %78

78:                                               ; preds = %75
  %79 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %80 = icmp eq i32 %79, 2
  br i1 %80, label %.sink.split, label %85

81:                                               ; preds = %68
  %82 = icmp ult i32 %70, 1005
  br i1 %82, label %.sink.split, label %85

.sink.split:                                      ; preds = %81, %72, %75, %78
  %83 = load i32, ptr %3, align 1, !tbaa !17
  %84 = urem i32 %83, %4
  br label %85

85:                                               ; preds = %.sink.split, %78, %81, %66
  %.0518 = phi i32 [ %9, %78 ], [ %9, %81 ], [ %9, %66 ], [ %84, %.sink.split ]
  %86 = load i8, ptr %18, align 1, !tbaa !10
  switch i8 %86, label %.thread636 [
    i8 1, label %87
    i8 2, label %92
  ]

87:                                               ; preds = %85
  %88 = getelementptr inbounds i8, ptr %3, i64 29
  %89 = load i16, ptr %88, align 1, !tbaa !18
  %90 = icmp ne i16 %89, 2
  %91 = icmp ne i32 %7, 0
  %or.cond731 = and i1 %90, %91
  br i1 %or.cond731, label %.preheader.lr.ph, label %.loopexit

92:                                               ; preds = %85
  %93 = getelementptr inbounds i8, ptr %3, i64 29
  %94 = load i16, ptr %93, align 1, !tbaa !18
  %95 = icmp eq i16 %94, 26
  br i1 %95, label %.preheader695, label %.thread636

.preheader695:                                    ; preds = %92
  %.not732 = icmp eq i32 %7, 0
  br i1 %.not732, label %.loopexit, label %.preheader694.lr.ph

.preheader694.lr.ph:                              ; preds = %.preheader695
  %.not733 = icmp eq i32 %6, 0
  %96 = getelementptr inbounds i8, ptr %0, i64 28
  %97 = getelementptr inbounds i8, ptr %1, i64 4
  %98 = getelementptr inbounds i8, ptr %3, i64 8
  %99 = icmp eq i32 %8, 1
  %100 = add i32 %6, -1
  %or.cond3 = select i1 %48, i1 true, i1 %45
  br i1 %.not733, label %.loopexit, label %.preheader694.lr.ph.split.us

.preheader694.lr.ph.split.us:                     ; preds = %.preheader694.lr.ph
  br i1 %spec.select566, label %.preheader694.lr.ph.split.us.split.us, label %.preheader694.us

.preheader694.lr.ph.split.us.split.us:            ; preds = %.preheader694.lr.ph.split.us
  br i1 %or.cond3, label %.preheader694.us.us.us.preheader, label %.preheader694.lr.ph.split.us.split.us.split

.preheader694.us.us.us.preheader:                 ; preds = %.preheader694.lr.ph.split.us.split.us
  %exitcond748.peel.not = icmp eq i32 %6, 1
  %exitcond750.peel.not = icmp eq i32 %6, 1
  %exitcond752.peel.not = icmp eq i32 %6, 1
  br label %.preheader694.us.us.us

.preheader694.us.us.us:                           ; preds = %.preheader694.us.us.us.preheader, %._crit_edge.split.us.split.us.us.us.us
  %.0527699.us.us.us = phi i32 [ %137, %._crit_edge.split.us.split.us.us.us.us ], [ 0, %.preheader694.us.us.us.preheader ]
  %101 = mul i32 %.0527699.us.us.us, %6
  %102 = add i32 %101, %5
  %103 = icmp eq i32 %.0527699.us.us.us, 0
  %or.cond5.us.us.us = and i1 %45, %103
  %or.cond568.us.us.us = select i1 %48, i1 true, i1 %or.cond5.us.us.us
  %or.cond568.us.us.us.fr = freeze i1 %or.cond568.us.us.us
  br i1 %or.cond568.us.us.us.fr, label %104, label %.lr.ph.split.us.split.us.us.us.us.split

104:                                              ; preds = %.preheader694.us.us.us
  %105 = load i32, ptr %96, align 4, !tbaa !14
  %106 = icmp ugt i32 %105, 1100
  %107 = select i1 %106, i8 122, i8 121
  %108 = load i32, ptr %97, align 4, !tbaa !19
  %109 = load i32, ptr %98, align 1, !tbaa !21
  %110 = mul i32 %109, %.0527699.us.us.us
  %111 = load i32, ptr %11, align 4, !tbaa !5
  %112 = mul i32 %110, %111
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef nonnull %0, i32 noundef %.0544, i32 noundef %108, i32 noundef 127, i32 noundef 0, i32 noundef %112, i8 noundef signext %17, i32 noundef %102, i32 noundef 0, i32 noundef 0, i32 noundef 0) #2
  tail call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef nonnull %0, i32 noundef 537208115, i8 noundef signext %107, i32 noundef %102, i32 noundef %102) #2
  br i1 %exitcond752.peel.not, label %._crit_edge.split.us.split.us.us.us.us, label %.lr.ph.split.us.split.us.us.us.us.split.us.peel.next

.lr.ph.split.us.split.us.us.us.us.split.us.peel.next: ; preds = %104, %.lr.ph.split.us.split.us.us.us.us.split.us.peel.next
  %.0524697.us.us.us.us.us.us = phi i32 [ %117, %.lr.ph.split.us.split.us.us.us.us.split.us.peel.next ], [ 1, %104 ]
  %113 = add i32 %.0524697.us.us.us.us.us.us, %102
  %114 = load i32, ptr %96, align 4, !tbaa !14
  %115 = icmp ugt i32 %114, 1100
  %116 = select i1 %115, i8 122, i8 121
  tail call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef nonnull %0, i32 noundef 537138704, i8 noundef signext %116, i32 noundef %102, i32 noundef %113) #2
  %117 = add nuw i32 %.0524697.us.us.us.us.us.us, 1
  %exitcond752.not = icmp eq i32 %117, %6
  br i1 %exitcond752.not, label %._crit_edge.split.us.split.us.us.us.us, label %.lr.ph.split.us.split.us.us.us.us.split.us.peel.next, !llvm.loop !22

.lr.ph.split.us.split.us.us.us.us.split:          ; preds = %.preheader694.us.us.us
  %118 = icmp ne i32 %.0527699.us.us.us, 0
  %or.cond7.us.us.us = and i1 %45, %118
  %or.cond7.us.us.us.fr = freeze i1 %or.cond7.us.us.us
  br i1 %or.cond7.us.us.us.fr, label %119, label %.lr.ph.split.us.split.us.us.us.us.split.split.preheader

.lr.ph.split.us.split.us.us.us.us.split.split.preheader: ; preds = %.lr.ph.split.us.split.us.us.us.us.split
  br i1 %exitcond748.peel.not, label %._crit_edge.split.us.split.us.us.us.us, label %.lr.ph.split.us.split.us.us.us.us.split.split.peel.next

119:                                              ; preds = %.lr.ph.split.us.split.us.us.us.us.split
  %120 = load i8, ptr %18, align 1, !tbaa !10
  %121 = icmp eq i8 %120, 2
  br i1 %121, label %122, label %126

122:                                              ; preds = %119
  %123 = load i32, ptr %96, align 4, !tbaa !14
  %124 = icmp ugt i32 %123, 1100
  %125 = select i1 %124, i8 122, i8 121
  tail call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef nonnull %0, i32 noundef 537138704, i8 noundef signext %125, i32 noundef %5, i32 noundef %102) #2
  br label %126

126:                                              ; preds = %122, %119
  br i1 %exitcond750.peel.not, label %._crit_edge.split.us.split.us.us.us.us, label %.lr.ph.split.us.split.us.us.us.us.split.split.us.peel.next

.lr.ph.split.us.split.us.us.us.us.split.split.us.peel.next: ; preds = %126, %.lr.ph.split.us.split.us.us.us.us.split.split.us.peel.next
  %.0524697.us.us.us.us.us.us715 = phi i32 [ %131, %.lr.ph.split.us.split.us.us.us.us.split.split.us.peel.next ], [ 1, %126 ]
  %127 = add i32 %.0524697.us.us.us.us.us.us715, %102
  %128 = load i32, ptr %96, align 4, !tbaa !14
  %129 = icmp ugt i32 %128, 1100
  %130 = select i1 %129, i8 122, i8 121
  tail call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef nonnull %0, i32 noundef 537138704, i8 noundef signext %130, i32 noundef %102, i32 noundef %127) #2
  %131 = add nuw i32 %.0524697.us.us.us.us.us.us715, 1
  %exitcond750.not = icmp eq i32 %131, %6
  br i1 %exitcond750.not, label %._crit_edge.split.us.split.us.us.us.us, label %.lr.ph.split.us.split.us.us.us.us.split.split.us.peel.next, !llvm.loop !25

.lr.ph.split.us.split.us.us.us.us.split.split.peel.next: ; preds = %.lr.ph.split.us.split.us.us.us.us.split.split.preheader, %.lr.ph.split.us.split.us.us.us.us.split.split.peel.next
  %.0524697.us.us.us.us.us = phi i32 [ %136, %.lr.ph.split.us.split.us.us.us.us.split.split.peel.next ], [ 1, %.lr.ph.split.us.split.us.us.us.us.split.split.preheader ]
  %132 = add i32 %.0524697.us.us.us.us.us, %102
  %133 = load i32, ptr %96, align 4, !tbaa !14
  %134 = icmp ugt i32 %133, 1100
  %135 = select i1 %134, i8 122, i8 121
  tail call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef nonnull %0, i32 noundef 537138704, i8 noundef signext %135, i32 noundef %102, i32 noundef %132) #2
  %136 = add nuw i32 %.0524697.us.us.us.us.us, 1
  %exitcond748.not = icmp eq i32 %136, %6
  br i1 %exitcond748.not, label %._crit_edge.split.us.split.us.us.us.us, label %.lr.ph.split.us.split.us.us.us.us.split.split.peel.next, !llvm.loop !26

._crit_edge.split.us.split.us.us.us.us:           ; preds = %.lr.ph.split.us.split.us.us.us.us.split.split.peel.next, %.lr.ph.split.us.split.us.us.us.us.split.split.us.peel.next, %.lr.ph.split.us.split.us.us.us.us.split.us.peel.next, %.lr.ph.split.us.split.us.us.us.us.split.split.preheader, %126, %104
  %137 = add nuw i32 %.0527699.us.us.us, 1
  %exitcond754.not = icmp eq i32 %137, %7
  br i1 %exitcond754.not, label %.loopexit, label %.preheader694.us.us.us, !llvm.loop !27

.preheader694.lr.ph.split.us.split.us.split:      ; preds = %.preheader694.lr.ph.split.us.split.us
  br i1 %47, label %.preheader694.us.us.us713, label %.loopexit

.preheader694.us.us.us713:                        ; preds = %.preheader694.lr.ph.split.us.split.us.split, %._crit_edge.split.us.split.split.us.us.us.us
  %.0527699.us.us.us714 = phi i32 [ %147, %._crit_edge.split.us.split.split.us.us.us.us ], [ 0, %.preheader694.lr.ph.split.us.split.us.split ]
  %138 = mul i32 %.0527699.us.us.us714, %6
  %139 = add i32 %138, %5
  %140 = icmp eq i32 %.0527699.us.us.us714, 0
  br i1 %140, label %.lr.ph.split.us.split.split.us.split.us.us.us.us, label %.lr.ph.split.us.split.split.us.split.us712.us.us

.lr.ph.split.us.split.split.us.split.us712.us.us: ; preds = %.preheader694.us.us.us713, %.lr.ph.split.us.split.split.us.split.us712.us.us
  %.0524697.us.us698.us710.us.us = phi i32 [ %146, %.lr.ph.split.us.split.split.us.split.us712.us.us ], [ 0, %.preheader694.us.us.us713 ]
  %141 = load i32, ptr %96, align 4, !tbaa !14
  %142 = icmp ugt i32 %141, 1100
  %143 = select i1 %142, i8 122, i8 121
  %144 = add i32 %.0524697.us.us698.us710.us.us, %139
  %145 = add i32 %.0524697.us.us698.us710.us.us, %5
  tail call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef nonnull %0, i32 noundef 537138704, i8 noundef signext %143, i32 noundef %145, i32 noundef %144) #2
  %146 = add nuw i32 %.0524697.us.us698.us710.us.us, 1
  %exitcond745.not = icmp eq i32 %146, %6
  br i1 %exitcond745.not, label %._crit_edge.split.us.split.split.us.us.us.us, label %.lr.ph.split.us.split.split.us.split.us712.us.us, !llvm.loop !28

._crit_edge.split.us.split.split.us.us.us.us:     ; preds = %.lr.ph.split.us.split.split.us.split.us712.us.us, %.lr.ph.split.us.split.split.us.split.us.us.us.us
  %147 = add nuw i32 %.0527699.us.us.us714, 1
  %exitcond747.not = icmp eq i32 %147, %7
  br i1 %exitcond747.not, label %.loopexit, label %.preheader694.us.us.us713, !llvm.loop !27

.lr.ph.split.us.split.split.us.split.us.us.us.us: ; preds = %.preheader694.us.us.us713, %.lr.ph.split.us.split.split.us.split.us.us.us.us
  %.0524697.us.us698.us.us.us.us = phi i32 [ %159, %.lr.ph.split.us.split.split.us.split.us.us.us.us ], [ 0, %.preheader694.us.us.us713 ]
  %148 = load i32, ptr %96, align 4, !tbaa !14
  %149 = icmp ugt i32 %148, 1100
  %150 = select i1 %149, i8 122, i8 121
  %151 = add i32 %.0524697.us.us698.us.us.us.us, %139
  %152 = load i32, ptr %97, align 4, !tbaa !19
  %153 = mul i32 %.0524697.us.us698.us.us.us.us, %4
  %154 = load i32, ptr %11, align 4, !tbaa !5
  %155 = mul i32 %153, %154
  %156 = icmp eq i32 %.0524697.us.us698.us.us.us.us, %100
  %157 = and i1 %99, %156
  %158 = zext i1 %157 to i32
  %spec.select569.us.us.us.us.us.us = select i1 %157, i32 %.0518, i32 0
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef nonnull %0, i32 noundef 537208115, i32 noundef %152, i32 noundef 127, i32 noundef 0, i32 noundef %155, i8 noundef signext %150, i32 noundef %151, i32 noundef %158, i32 noundef %spec.select569.us.us.us.us.us.us, i32 noundef 0) #2
  %159 = add nuw i32 %.0524697.us.us698.us.us.us.us, 1
  %exitcond746.not = icmp eq i32 %159, %6
  br i1 %exitcond746.not, label %._crit_edge.split.us.split.split.us.us.us.us, label %.lr.ph.split.us.split.split.us.split.us.us.us.us, !llvm.loop !28

.preheader694.us:                                 ; preds = %.preheader694.lr.ph.split.us, %._crit_edge.split.us703
  %.0527699.us = phi i32 [ %178, %._crit_edge.split.us703 ], [ 0, %.preheader694.lr.ph.split.us ]
  %160 = mul i32 %.0527699.us, %6
  %161 = add i32 %160, %5
  br label %162

162:                                              ; preds = %.preheader694.us, %162
  %.0524697.us702 = phi i32 [ 0, %.preheader694.us ], [ %177, %162 ]
  %163 = load i32, ptr %96, align 4, !tbaa !14
  %164 = icmp ugt i32 %163, 1100
  %165 = select i1 %164, i8 122, i8 121
  %166 = add i32 %.0524697.us702, %161
  %167 = load i32, ptr %97, align 4, !tbaa !19
  %168 = mul i32 %.0524697.us702, %4
  %169 = load i32, ptr %98, align 1, !tbaa !21
  %170 = mul i32 %169, %.0527699.us
  %171 = add i32 %170, %168
  %172 = load i32, ptr %11, align 4, !tbaa !5
  %173 = mul i32 %171, %172
  %174 = icmp eq i32 %.0524697.us702, %100
  %175 = and i1 %99, %174
  %176 = select i1 %175, i32 %.0518, i32 0
  tail call void @libxsmm_x86_instruction_vec_move(ptr noundef nonnull %0, i32 noundef %163, i32 noundef 537208115, i32 noundef %167, i32 noundef 127, i32 noundef 0, i32 noundef %173, i8 noundef signext %165, i32 noundef %166, i32 noundef %176, i32 noundef 0, i32 noundef 0) #2
  %177 = add nuw i32 %.0524697.us702, 1
  %exitcond.not = icmp eq i32 %177, %6
  br i1 %exitcond.not, label %._crit_edge.split.us703, label %162, !llvm.loop !28

._crit_edge.split.us703:                          ; preds = %162
  %178 = add nuw i32 %.0527699.us, 1
  %exitcond744.not = icmp eq i32 %178, %7
  br i1 %exitcond744.not, label %.loopexit, label %.preheader694.us, !llvm.loop !27

.thread636:                                       ; preds = %85, %92
  %.old.not = icmp eq i32 %7, 0
  br i1 %.old.not, label %.loopexit, label %.preheader.lr.ph

.preheader.lr.ph:                                 ; preds = %87, %.thread636
  %.not734 = icmp eq i32 %6, 0
  %179 = getelementptr inbounds i8, ptr %2, i64 24
  %180 = getelementptr inbounds i8, ptr %3, i64 29
  %181 = getelementptr inbounds i8, ptr %0, i64 28
  %182 = icmp eq i32 %8, 1
  %183 = add i32 %6, -1
  %184 = getelementptr inbounds i8, ptr %1, i64 4
  %185 = getelementptr inbounds i8, ptr %3, i64 8
  %186 = getelementptr inbounds i8, ptr %2, i64 512
  %187 = getelementptr inbounds i8, ptr %2, i64 96
  %188 = getelementptr inbounds i8, ptr %2, i64 100
  %189 = getelementptr inbounds i8, ptr %2, i64 84
  %190 = getelementptr inbounds i8, ptr %2, i64 88
  %191 = getelementptr inbounds i8, ptr %2, i64 472
  %or.cond9 = select i1 %48, i1 true, i1 %45
  br i1 %.not734, label %.loopexit, label %.preheader.us

.preheader.us:                                    ; preds = %.preheader.lr.ph, %._crit_edge.us
  %.0728.us = phi i32 [ %.14.us, %._crit_edge.us ], [ %4, %.preheader.lr.ph ]
  %.1519727.us = phi i32 [ %.5523.us, %._crit_edge.us ], [ %.0518, %.preheader.lr.ph ]
  %.1528726.us = phi i32 [ %702, %._crit_edge.us ], [ 0, %.preheader.lr.ph ]
  %.0529725.us = phi i8 [ %.14543.us, %._crit_edge.us ], [ %17, %.preheader.lr.ph ]
  %192 = mul i32 %.1528726.us, %6
  %193 = add i32 %192, %5
  %194 = icmp eq i32 %.1528726.us, 0
  %or.cond11.us = and i1 %45, %194
  %or.cond580.us = select i1 %48, i1 true, i1 %or.cond11.us
  %195 = icmp ne i32 %.1528726.us, 0
  %or.cond13.us = and i1 %45, %195
  %196 = shl i32 %.1528726.us, 2
  %197 = shl i32 %.1528726.us, 3
  br label %198

198:                                              ; preds = %.preheader.us, %.thread667.us
  %.1722.us = phi i32 [ %.0728.us, %.preheader.us ], [ %.14.us, %.thread667.us ]
  %.2520721.us = phi i32 [ %.1519727.us, %.preheader.us ], [ %.5523.us, %.thread667.us ]
  %.1525717.us = phi i32 [ 0, %.preheader.us ], [ %701, %.thread667.us ]
  %.1530716.us = phi i8 [ %.0529725.us, %.preheader.us ], [ %.14543.us, %.thread667.us ]
  %199 = add i32 %.1525717.us, %193
  br i1 %spec.select566, label %363, label %200

200:                                              ; preds = %198
  %201 = load i32, ptr %179, align 4, !tbaa !29
  %202 = load i8, ptr %18, align 1, !tbaa !10
  %203 = icmp eq i8 %202, 1
  br i1 %203, label %204, label %239

204:                                              ; preds = %200
  %205 = load i16, ptr %180, align 1, !tbaa !18
  %206 = icmp eq i16 %205, 43
  br i1 %206, label %207, label %239

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

210:                                              ; preds = %207
  %211 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %212 = icmp eq i32 %211, 1
  br i1 %212, label %213, label %221

213:                                              ; preds = %210
  %214 = load i32, ptr %181, align 4, !tbaa !14
  %215 = icmp ugt i32 %214, 1100
  %brmerge.us = or i1 %.not565, %215
  %.mux.us = select i1 %215, i32 16, i32 8
  br i1 %brmerge.us, label %221, label %216

216:                                              ; preds = %213
  %217 = icmp ult i32 %214, 1041
  br i1 %217, label %218, label %221

218:                                              ; preds = %216
  %219 = load i32, ptr %3, align 1, !tbaa !17
  %220 = and i32 %219, 7
  br label %221

221:                                              ; preds = %218, %216, %213, %210, %207
  %.2531.us = phi i8 [ 120, %218 ], [ 120, %216 ], [ 120, %213 ], [ %.1530716.us, %210 ], [ %.1530716.us, %207 ]
  %.3521.us = phi i32 [ %220, %218 ], [ %.2520721.us, %216 ], [ %.2520721.us, %213 ], [ %.2520721.us, %210 ], [ %.2520721.us, %207 ]
  %.2.us = phi i32 [ 8, %218 ], [ 8, %216 ], [ %.mux.us, %213 ], [ %.1722.us, %210 ], [ %.1722.us, %207 ]
  %222 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %223 = icmp eq i32 %222, 10
  br i1 %223, label %224, label %230

224:                                              ; preds = %221
  %225 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %226 = icmp eq i32 %225, 1
  br i1 %226, label %227, label %230

227:                                              ; preds = %224
  %228 = load i32, ptr %181, align 4, !tbaa !14
  %229 = icmp ult i32 %228, 1101
  %spec.select571.us = select i1 %229, i8 120, i8 121
  %spec.select572.us = select i1 %229, i32 8, i32 16
  br label %230

230:                                              ; preds = %227, %224, %221
  %.3532.us = phi i8 [ %.2531.us, %224 ], [ %.2531.us, %221 ], [ %spec.select571.us, %227 ]
  %.3.us = phi i32 [ %.2.us, %224 ], [ %.2.us, %221 ], [ %spec.select572.us, %227 ]
  %231 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %232 = icmp eq i32 %231, 8
  br i1 %232, label %233, label %239

233:                                              ; preds = %230
  %234 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %235 = icmp eq i32 %234, 1
  br i1 %235, label %236, label %239

236:                                              ; preds = %233
  %237 = load i32, ptr %181, align 4, !tbaa !14
  %238 = icmp ult i32 %237, 1101
  %spec.select573.us = select i1 %238, i8 121, i8 122
  %spec.select574.us = select i1 %238, i32 8, i32 16
  br label %239

239:                                              ; preds = %236, %233, %230, %204, %200
  %.4533.us = phi i8 [ %.3532.us, %233 ], [ %.3532.us, %230 ], [ %.1530716.us, %204 ], [ %.1530716.us, %200 ], [ %spec.select573.us, %236 ]
  %.4522.us = phi i32 [ %.3521.us, %233 ], [ %.3521.us, %230 ], [ %.2520721.us, %204 ], [ %.2520721.us, %200 ], [ %.3521.us, %236 ]
  %.4.us = phi i32 [ %.3.us, %233 ], [ %.3.us, %230 ], [ %.1722.us, %204 ], [ %.1722.us, %200 ], [ %spec.select574.us, %236 ]
  %240 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %241 = icmp eq i32 %240, 4
  br i1 %241, label %245, label %242

242:                                              ; preds = %239
  %243 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %244 = icmp eq i32 %243, 5
  br i1 %244, label %245, label %252

245:                                              ; preds = %242, %239
  %246 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %247 = icmp eq i32 %246, 1
  br i1 %247, label %248, label %252

248:                                              ; preds = %245
  %249 = load i32, ptr %181, align 4, !tbaa !14
  %250 = icmp ugt i32 %249, 1100
  %251 = icmp eq i32 %.1525717.us, %183
  %or.cond576.us = and i1 %182, %251
  %or.cond729 = or i1 %250, %or.cond576.us
  br i1 %or.cond729, label %252, label %263

252:                                              ; preds = %248, %245, %242
  %253 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %254 = icmp eq i32 %253, 2
  br i1 %254, label %255, label %263

255:                                              ; preds = %252
  %256 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %257 = icmp eq i32 %256, 1
  br i1 %257, label %258, label %263

258:                                              ; preds = %255
  %259 = load i32, ptr %181, align 4, !tbaa !14
  %260 = icmp ult i32 %259, 1005
  br i1 %260, label %261, label %263

261:                                              ; preds = %258
  %262 = icmp eq i32 %.1525717.us, %183
  %or.cond578.us = and i1 %182, %262
  %spec.select596.us = select i1 %or.cond578.us, i32 %201, i32 -1610149872
  br label %263

263:                                              ; preds = %248, %261, %258, %255, %252
  %.0526.us = phi i32 [ %201, %258 ], [ %201, %255 ], [ %201, %252 ], [ %spec.select596.us, %261 ], [ 545725200, %248 ]
  %264 = load i32, ptr %184, align 4, !tbaa !19
  %265 = mul i32 %.4.us, %.1525717.us
  %266 = load i32, ptr %185, align 1, !tbaa !21
  %267 = mul i32 %266, %.1528726.us
  %268 = add i32 %267, %265
  %269 = load i32, ptr %11, align 4, !tbaa !5
  %270 = mul i32 %268, %269
  %271 = icmp eq i32 %.1525717.us, %183
  %272 = and i1 %182, %271
  %273 = zext i1 %272 to i32
  %spec.select579.us = select i1 %272, i32 %.4522.us, i32 0
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %0, i32 noundef %.0526.us, i32 noundef %264, i32 noundef 127, i32 noundef 0, i32 noundef %270, i8 noundef signext %.4533.us, i32 noundef %199, i32 noundef %273, i32 noundef %spec.select579.us, i32 noundef 0) #2
  %274 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %275 = icmp eq i32 %274, 1
  br i1 %275, label %276, label %279

276:                                              ; preds = %263
  %277 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %278 = icmp eq i32 %277, 2
  br i1 %278, label %331, label %279

279:                                              ; preds = %276, %263
  %280 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %281 = icmp eq i32 %280, 1
  br i1 %281, label %282, label %285

282:                                              ; preds = %279
  %283 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %284 = icmp eq i32 %283, 2
  br i1 %284, label %331, label %285

285:                                              ; preds = %282, %279
  %286 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %287 = icmp eq i32 %286, 1
  br i1 %287, label %288, label %291

288:                                              ; preds = %285
  %289 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %290 = icmp eq i32 %289, 3
  br i1 %290, label %329, label %291

291:                                              ; preds = %288, %285
  %292 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %293 = icmp eq i32 %292, 1
  br i1 %293, label %294, label %297

294:                                              ; preds = %291
  %295 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %296 = icmp eq i32 %295, 3
  br i1 %296, label %329, label %297

297:                                              ; preds = %294, %291
  %298 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %299 = icmp eq i32 %298, 1
  br i1 %299, label %300, label %303

300:                                              ; preds = %297
  %301 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %302 = icmp eq i32 %301, 4
  br i1 %302, label %327, label %303

303:                                              ; preds = %300, %297
  %304 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %305 = icmp eq i32 %304, 1
  br i1 %305, label %306, label %309

306:                                              ; preds = %303
  %307 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %308 = icmp eq i32 %307, 4
  br i1 %308, label %327, label %309

309:                                              ; preds = %306, %303
  %310 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %311 = icmp eq i32 %310, 1
  br i1 %311, label %312, label %315

312:                                              ; preds = %309
  %313 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %314 = icmp eq i32 %313, 5
  br i1 %314, label %321, label %315

315:                                              ; preds = %312, %309
  %316 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %317 = icmp eq i32 %316, 1
  br i1 %317, label %318, label %333

318:                                              ; preds = %315
  %319 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %320 = icmp eq i32 %319, 5
  br i1 %320, label %321, label %333

321:                                              ; preds = %318, %312
  %322 = load i8, ptr %186, align 4, !tbaa !30
  %323 = load i32, ptr %187, align 4, !tbaa !31
  %324 = load i32, ptr %188, align 4, !tbaa !32
  %325 = load i32, ptr %189, align 4, !tbaa !33
  %326 = load i32, ptr %190, align 4, !tbaa !34
  tail call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %0, i8 noundef signext %322, i32 noundef %199, i32 noundef %199, i32 noundef %323, i32 noundef %324, i32 noundef %325, i32 noundef %326) #2
  br label %333

327:                                              ; preds = %306, %300
  %328 = load i8, ptr %186, align 4, !tbaa !30
  tail call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %0, i8 noundef signext %328, i32 noundef %199, i32 noundef %199) #2
  br label %333

329:                                              ; preds = %294, %288
  %330 = load i8, ptr %186, align 4, !tbaa !30
  tail call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %0, i32 noundef 537208083, i8 noundef signext %330, i32 noundef %199, i32 noundef %199) #2
  br label %333

331:                                              ; preds = %282, %276
  %332 = load i8, ptr %186, align 4, !tbaa !30
  tail call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %0, i8 noundef signext %332, i32 noundef %199, i32 noundef %199) #2
  br label %333

333:                                              ; preds = %331, %329, %327, %321, %318, %315
  %334 = load i8, ptr %18, align 1, !tbaa !10
  %335 = icmp eq i8 %334, 1
  br i1 %335, label %336, label %.thread667.us

336:                                              ; preds = %333
  %337 = load i16, ptr %180, align 1, !tbaa !18
  %338 = icmp eq i16 %337, 43
  br i1 %338, label %339, label %.thread667.us

339:                                              ; preds = %336
  %340 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %341 = icmp eq i32 %340, 12
  br i1 %341, label %342, label %347

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

345:                                              ; preds = %342
  %346 = load i32, ptr %191, align 4, !tbaa !35
  tail call void @libxsmm_generator_vcvtint2ps_avx512(ptr noundef %0, i32 noundef 12, i32 noundef %199, i32 noundef %346, i32 noundef %67) #2
  br label %347

347:                                              ; preds = %345, %342, %339
  %348 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %349 = icmp eq i32 %348, 10
  br i1 %349, label %350, label %355

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

353:                                              ; preds = %350
  %354 = load i32, ptr %191, align 4, !tbaa !35
  tail call void @libxsmm_generator_vcvtint2ps_avx512(ptr noundef %0, i32 noundef 10, i32 noundef %199, i32 noundef %354, i32 noundef %67) #2
  br label %355

355:                                              ; preds = %353, %350, %347
  %356 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %357 = icmp eq i32 %356, 8
  br i1 %357, label %358, label %.thread667.us

358:                                              ; preds = %355
  %359 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %360 = icmp eq i32 %359, 1
  br i1 %360, label %361, label %.thread667.us

361:                                              ; preds = %358
  %362 = load i32, ptr %191, align 4, !tbaa !35
  tail call void @libxsmm_generator_vcvtint2ps_avx512(ptr noundef %0, i32 noundef 8, i32 noundef %199, i32 noundef %362, i32 noundef %67) #2
  br label %.thread667.us

363:                                              ; preds = %198
  br i1 %or.cond9, label %364, label %.thread644.us

364:                                              ; preds = %363
  %365 = icmp eq i32 %.1525717.us, 0
  br i1 %365, label %367, label %.thread674.us

.thread674.us:                                    ; preds = %364
  %.pr677.us = load i8, ptr %18, align 1, !tbaa !10
  %366 = and i8 %.pr677.us, -2
  %or.cond781 = icmp eq i8 %366, 2
  br i1 %or.cond781, label %.thread678.us, label %.thread644.us

367:                                              ; preds = %364
  br i1 %or.cond580.us, label %379, label %368

368:                                              ; preds = %367
  br i1 %or.cond13.us, label %369, label %.thread644.us

369:                                              ; preds = %368
  %370 = load i8, ptr %18, align 1, !tbaa !10
  %371 = and i8 %370, -2
  %switch.us = icmp eq i8 %371, 2
  br i1 %switch.us, label %372, label %.thread644.us

372:                                              ; preds = %369
  %373 = load i32, ptr %181, align 4, !tbaa !14
  %374 = icmp ult i32 %373, 1005
  %375 = icmp ugt i32 %373, 1100
  %376 = select i1 %375, i8 122, i8 121
  %377 = select i1 %374, i8 120, i8 %376
  %378 = select i1 %374, i32 -1610346480, i32 537138704
  tail call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %0, i32 noundef %378, i8 noundef signext %377, i32 noundef %5, i32 noundef %199) #2
  br label %.thread644.us

379:                                              ; preds = %367
  %380 = load i8, ptr %18, align 1, !tbaa !10
  %381 = icmp eq i8 %380, 1
  br i1 %381, label %382, label %thread-pre-split

382:                                              ; preds = %379
  %383 = load i16, ptr %180, align 1, !tbaa !18
  %384 = icmp eq i16 %383, 43
  br i1 %384, label %385, label %thread-pre-split

385:                                              ; preds = %382
  %386 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %387 = icmp eq i32 %386, 12
  br i1 %387, label %388, label %394

388:                                              ; preds = %385
  %389 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %390 = icmp eq i32 %389, 1
  br i1 %390, label %391, label %394

391:                                              ; preds = %388
  %392 = load i32, ptr %181, align 4, !tbaa !14
  %393 = icmp ult i32 %392, 1101
  %spec.select581.us = select i1 %393, i32 8, i32 16
  br label %394

394:                                              ; preds = %391, %388, %385
  %.5534.us = phi i8 [ %.1530716.us, %388 ], [ %.1530716.us, %385 ], [ 120, %391 ]
  %.5.us = phi i32 [ %.1722.us, %388 ], [ %.1722.us, %385 ], [ %spec.select581.us, %391 ]
  %395 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %396 = icmp eq i32 %395, 10
  br i1 %396, label %397, label %403

397:                                              ; preds = %394
  %398 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %399 = icmp eq i32 %398, 1
  br i1 %399, label %400, label %403

400:                                              ; preds = %397
  %401 = load i32, ptr %181, align 4, !tbaa !14
  %402 = icmp ult i32 %401, 1101
  %spec.select582.us = select i1 %402, i8 120, i8 121
  %spec.select583.us = select i1 %402, i32 8, i32 16
  br label %403

403:                                              ; preds = %400, %397, %394
  %.6535.us = phi i8 [ %.5534.us, %397 ], [ %.5534.us, %394 ], [ %spec.select582.us, %400 ]
  %.6.us = phi i32 [ %.5.us, %397 ], [ %.5.us, %394 ], [ %spec.select583.us, %400 ]
  %404 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %405 = icmp eq i32 %404, 8
  br i1 %405, label %406, label %thread-pre-split

406:                                              ; preds = %403
  %407 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %408 = icmp eq i32 %407, 1
  br i1 %408, label %409, label %thread-pre-split

409:                                              ; preds = %406
  %410 = load i32, ptr %181, align 4, !tbaa !14
  %411 = icmp ult i32 %410, 1101
  %spec.select584.us = select i1 %411, i8 121, i8 122
  %spec.select585.us = select i1 %411, i32 8, i32 16
  br label %412

thread-pre-split:                                 ; preds = %379, %382, %403, %406
  %.7536.us.ph = phi i8 [ %.1530716.us, %379 ], [ %.1530716.us, %382 ], [ %.6535.us, %403 ], [ %.6535.us, %406 ]
  %.7.us.ph = phi i32 [ %.1722.us, %379 ], [ %.1722.us, %382 ], [ %.6.us, %403 ], [ %.6.us, %406 ]
  %.pr = load i32, ptr %181, align 4, !tbaa !14
  br label %412

412:                                              ; preds = %thread-pre-split, %409
  %413 = phi i32 [ %.pr, %thread-pre-split ], [ %410, %409 ]
  %.7536.us = phi i8 [ %.7536.us.ph, %thread-pre-split ], [ %spec.select584.us, %409 ]
  %.7.us = phi i32 [ %.7.us.ph, %thread-pre-split ], [ %spec.select585.us, %409 ]
  %414 = icmp ult i32 %413, 1005
  br i1 %414, label %421, label %415

415:                                              ; preds = %412
  %416 = load i32, ptr %184, align 4, !tbaa !19
  %417 = load i32, ptr %185, align 1, !tbaa !21
  %418 = mul i32 %417, %.1528726.us
  %419 = load i32, ptr %11, align 4, !tbaa !5
  %420 = mul i32 %418, %419
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef nonnull %0, i32 noundef %.0544, i32 noundef %416, i32 noundef 127, i32 noundef 0, i32 noundef %420, i8 noundef signext %.7536.us, i32 noundef %199, i32 noundef 0, i32 noundef 0, i32 noundef 0) #2
  br label %440

421:                                              ; preds = %412
  %422 = load i32, ptr %11, align 4, !tbaa !5
  switch i32 %422, label %440 [
    i32 8, label %435
    i32 4, label %430
    i32 2, label %423
  ]

423:                                              ; preds = %421
  tail call void @libxsmm_x86_instruction_push_reg(ptr noundef nonnull %0, i32 noundef 1) #2
  %424 = load i32, ptr %184, align 4, !tbaa !19
  %425 = load i32, ptr %185, align 1, !tbaa !21
  %426 = mul i32 %425, %.1528726.us
  %427 = load i32, ptr %11, align 4, !tbaa !5
  %428 = mul i32 %426, %427
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef nonnull %0, i32 noundef -1610334069, i32 noundef %424, i32 noundef 127, i32 noundef 0, i32 noundef %428, i32 noundef 1, i32 noundef 0) #2
  tail call void @libxsmm_x86_instruction_vec_compute_2reg_imm8(ptr noundef nonnull %0, i32 noundef -1609756476, i8 noundef signext 120, i32 noundef 1, i32 noundef %199, i32 noundef 0) #2
  tail call void @libxsmm_x86_instruction_vec_compute_2reg_imm8(ptr noundef nonnull %0, i32 noundef -1609756476, i8 noundef signext 120, i32 noundef 1, i32 noundef %199, i32 noundef 1) #2
  %429 = load i8, ptr %186, align 4, !tbaa !30
  tail call void @libxsmm_x86_instruction_vec_compute_2reg_imm8(ptr noundef nonnull %0, i32 noundef -1609822010, i8 noundef signext %429, i32 noundef %199, i32 noundef %199, i32 noundef 0) #2
  tail call void @libxsmm_x86_instruction_pop_reg(ptr noundef nonnull %0, i32 noundef 1) #2
  br label %440

430:                                              ; preds = %421
  %431 = load i32, ptr %184, align 4, !tbaa !19
  %432 = load i32, ptr %185, align 1, !tbaa !21
  %433 = mul i32 %196, %432
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef nonnull %0, i32 noundef -1610215408, i32 noundef %431, i32 noundef 127, i32 noundef 0, i32 noundef %433, i8 noundef signext %.7536.us, i32 noundef %199, i32 noundef 0, i32 noundef 0, i32 noundef 0) #2
  %434 = load i8, ptr %186, align 4, !tbaa !30
  tail call void @libxsmm_x86_instruction_vec_compute_2reg_imm8(ptr noundef nonnull %0, i32 noundef -1609822010, i8 noundef signext %434, i32 noundef %199, i32 noundef %199, i32 noundef 0) #2
  br label %440

435:                                              ; preds = %421
  %436 = load i32, ptr %184, align 4, !tbaa !19
  %437 = load i32, ptr %185, align 1, !tbaa !21
  %438 = mul i32 %197, %437
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef nonnull %0, i32 noundef -1610149872, i32 noundef %436, i32 noundef 127, i32 noundef 0, i32 noundef %438, i8 noundef signext %.7536.us, i32 noundef %199, i32 noundef 0, i32 noundef 0, i32 noundef 0) #2
  %439 = load i8, ptr %186, align 4, !tbaa !30
  tail call void @libxsmm_x86_instruction_vec_compute_2reg_imm8(ptr noundef nonnull %0, i32 noundef -1609756474, i8 noundef signext %439, i32 noundef %199, i32 noundef %199, i32 noundef 0) #2
  br label %440

440:                                              ; preds = %435, %430, %423, %421, %415
  %441 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %442 = icmp eq i32 %441, 1
  br i1 %442, label %443, label %446

443:                                              ; preds = %440
  %444 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %445 = icmp eq i32 %444, 2
  br i1 %445, label %498, label %446

446:                                              ; preds = %443, %440
  %447 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %448 = icmp eq i32 %447, 1
  br i1 %448, label %449, label %452

449:                                              ; preds = %446
  %450 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %451 = icmp eq i32 %450, 2
  br i1 %451, label %498, label %452

452:                                              ; preds = %449, %446
  %453 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %454 = icmp eq i32 %453, 1
  br i1 %454, label %455, label %458

455:                                              ; preds = %452
  %456 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %457 = icmp eq i32 %456, 3
  br i1 %457, label %496, label %458

458:                                              ; preds = %455, %452
  %459 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %460 = icmp eq i32 %459, 1
  br i1 %460, label %461, label %464

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

464:                                              ; preds = %461, %458
  %465 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %466 = icmp eq i32 %465, 1
  br i1 %466, label %467, label %470

467:                                              ; preds = %464
  %468 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %469 = icmp eq i32 %468, 4
  br i1 %469, label %494, label %470

470:                                              ; preds = %467, %464
  %471 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %472 = icmp eq i32 %471, 1
  br i1 %472, label %473, label %476

473:                                              ; preds = %470
  %474 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %475 = icmp eq i32 %474, 4
  br i1 %475, label %494, label %476

476:                                              ; preds = %473, %470
  %477 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %478 = icmp eq i32 %477, 1
  br i1 %478, label %479, label %482

479:                                              ; preds = %476
  %480 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %481 = icmp eq i32 %480, 5
  br i1 %481, label %488, label %482

482:                                              ; preds = %479, %476
  %483 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %484 = icmp eq i32 %483, 1
  br i1 %484, label %485, label %500

485:                                              ; preds = %482
  %486 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %487 = icmp eq i32 %486, 5
  br i1 %487, label %488, label %500

488:                                              ; preds = %485, %479
  %489 = load i8, ptr %186, align 4, !tbaa !30
  %490 = load i32, ptr %187, align 4, !tbaa !31
  %491 = load i32, ptr %188, align 4, !tbaa !32
  %492 = load i32, ptr %189, align 4, !tbaa !33
  %493 = load i32, ptr %190, align 4, !tbaa !34
  tail call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef nonnull %0, i8 noundef signext %489, i32 noundef %199, i32 noundef %199, i32 noundef %490, i32 noundef %491, i32 noundef %492, i32 noundef %493) #2
  br label %500

494:                                              ; preds = %473, %467
  %495 = load i8, ptr %186, align 4, !tbaa !30
  tail call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef nonnull %0, i8 noundef signext %495, i32 noundef %199, i32 noundef %199) #2
  br label %500

496:                                              ; preds = %461, %455
  %497 = load i8, ptr %186, align 4, !tbaa !30
  tail call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef nonnull %0, i32 noundef 537208083, i8 noundef signext %497, i32 noundef %199, i32 noundef %199) #2
  br label %500

498:                                              ; preds = %449, %443
  %499 = load i8, ptr %186, align 4, !tbaa !30
  tail call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef nonnull %0, i8 noundef signext %499, i32 noundef %199, i32 noundef %199) #2
  br label %500

500:                                              ; preds = %498, %496, %494, %488, %485, %482
  %501 = load i8, ptr %18, align 1, !tbaa !10
  %502 = icmp eq i8 %501, 1
  br i1 %502, label %503, label %.thread644.us

503:                                              ; preds = %500
  %504 = load i16, ptr %180, align 1, !tbaa !18
  %505 = icmp eq i16 %504, 43
  br i1 %505, label %506, label %.thread644.us

506:                                              ; preds = %503
  %507 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %508 = icmp eq i32 %507, 12
  br i1 %508, label %509, label %514

509:                                              ; preds = %506
  %510 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %511 = icmp eq i32 %510, 1
  br i1 %511, label %512, label %514

512:                                              ; preds = %509
  %513 = load i32, ptr %191, align 4, !tbaa !35
  tail call void @libxsmm_generator_vcvtint2ps_avx512(ptr noundef nonnull %0, i32 noundef 12, i32 noundef %199, i32 noundef %513, i32 noundef %67) #2
  br label %514

514:                                              ; preds = %512, %509, %506
  %515 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %516 = icmp eq i32 %515, 10
  br i1 %516, label %517, label %522

517:                                              ; preds = %514
  %518 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %519 = icmp eq i32 %518, 1
  br i1 %519, label %520, label %522

520:                                              ; preds = %517
  %521 = load i32, ptr %191, align 4, !tbaa !35
  tail call void @libxsmm_generator_vcvtint2ps_avx512(ptr noundef nonnull %0, i32 noundef 10, i32 noundef %199, i32 noundef %521, i32 noundef %67) #2
  br label %522

522:                                              ; preds = %520, %517, %514
  %523 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %524 = icmp eq i32 %523, 8
  br i1 %524, label %525, label %.thread644.us

525:                                              ; preds = %522
  %526 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %527 = icmp eq i32 %526, 1
  br i1 %527, label %528, label %.thread644.us

528:                                              ; preds = %525
  %529 = load i32, ptr %191, align 4, !tbaa !35
  tail call void @libxsmm_generator_vcvtint2ps_avx512(ptr noundef nonnull %0, i32 noundef 8, i32 noundef %199, i32 noundef %529, i32 noundef %67) #2
  br label %.thread644.us

.thread678.us:                                    ; preds = %.thread674.us
  %530 = load i32, ptr %181, align 4, !tbaa !14
  %531 = icmp ult i32 %530, 1005
  %532 = icmp ugt i32 %530, 1100
  %533 = select i1 %532, i8 122, i8 121
  %534 = select i1 %531, i8 120, i8 %533
  %535 = select i1 %531, i32 -1610346480, i32 537138704
  tail call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %0, i32 noundef %535, i8 noundef signext %534, i32 noundef %193, i32 noundef %199) #2
  br label %.thread644.us

.thread644.us:                                    ; preds = %.thread674.us, %368, %372, %522, %525, %528, %503, %.thread678.us, %500, %369, %363
  %.9538.us = phi i8 [ %.1530716.us, %.thread678.us ], [ %.1530716.us, %363 ], [ %.1530716.us, %369 ], [ %.7536.us, %500 ], [ %.7536.us, %503 ], [ %.7536.us, %528 ], [ %.7536.us, %525 ], [ %.7536.us, %522 ], [ %.1530716.us, %372 ], [ %.1530716.us, %368 ], [ %.1530716.us, %.thread674.us ]
  %.9.us = phi i32 [ %.1722.us, %.thread678.us ], [ %.1722.us, %363 ], [ %.1722.us, %369 ], [ %.7.us, %500 ], [ %.7.us, %503 ], [ %.7.us, %528 ], [ %.7.us, %525 ], [ %.7.us, %522 ], [ %.1722.us, %372 ], [ %.1722.us, %368 ], [ %.1722.us, %.thread674.us ]
  br i1 %47, label %536, label %.thread667.us

536:                                              ; preds = %.thread644.us
  br i1 %194, label %539, label %.thread685.us

.thread685.us:                                    ; preds = %536
  %.pr657688.us = load i8, ptr %18, align 1, !tbaa !10
  %537 = icmp eq i8 %.pr657688.us, 2
  %538 = icmp eq i8 %.pr657688.us, 3
  %or.cond21.us = and i1 %195, %538
  %or.cond782 = or i1 %537, %or.cond21.us
  br i1 %or.cond782, label %.thread689.us, label %.thread667.us

539:                                              ; preds = %536
  %540 = load i32, ptr %179, align 4, !tbaa !29
  %541 = load i8, ptr %18, align 1, !tbaa !10
  %542 = icmp eq i8 %541, 1
  br i1 %542, label %543, label %573

543:                                              ; preds = %539
  %544 = load i16, ptr %180, align 1, !tbaa !18
  %545 = icmp eq i16 %544, 43
  br i1 %545, label %546, label %573

546:                                              ; preds = %543
  %547 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %548 = icmp eq i32 %547, 12
  br i1 %548, label %549, label %555

549:                                              ; preds = %546
  %550 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %551 = icmp eq i32 %550, 1
  br i1 %551, label %552, label %555

552:                                              ; preds = %549
  %553 = load i32, ptr %181, align 4, !tbaa !14
  %554 = icmp ult i32 %553, 1101
  %spec.select586.us = select i1 %554, i32 8, i32 16
  br label %555

555:                                              ; preds = %552, %549, %546
  %.10539.us = phi i8 [ %.9538.us, %549 ], [ %.9538.us, %546 ], [ 120, %552 ]
  %.10.us = phi i32 [ %.9.us, %549 ], [ %.9.us, %546 ], [ %spec.select586.us, %552 ]
  %556 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %557 = icmp eq i32 %556, 10
  br i1 %557, label %558, label %564

558:                                              ; preds = %555
  %559 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %560 = icmp eq i32 %559, 1
  br i1 %560, label %561, label %564

561:                                              ; preds = %558
  %562 = load i32, ptr %181, align 4, !tbaa !14
  %563 = icmp ult i32 %562, 1101
  %spec.select587.us = select i1 %563, i8 120, i8 121
  %spec.select588.us = select i1 %563, i32 8, i32 16
  br label %564

564:                                              ; preds = %561, %558, %555
  %.11540.us = phi i8 [ %.10539.us, %558 ], [ %.10539.us, %555 ], [ %spec.select587.us, %561 ]
  %.11.us = phi i32 [ %.10.us, %558 ], [ %.10.us, %555 ], [ %spec.select588.us, %561 ]
  %565 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %566 = icmp eq i32 %565, 8
  br i1 %566, label %567, label %573

567:                                              ; preds = %564
  %568 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %569 = icmp eq i32 %568, 1
  br i1 %569, label %570, label %573

570:                                              ; preds = %567
  %571 = load i32, ptr %181, align 4, !tbaa !14
  %572 = icmp ult i32 %571, 1101
  %spec.select589.us = select i1 %572, i8 121, i8 122
  %spec.select590.us = select i1 %572, i32 8, i32 16
  br label %573

573:                                              ; preds = %570, %567, %564, %543, %539
  %.12541.us = phi i8 [ %.11540.us, %567 ], [ %.11540.us, %564 ], [ %.9538.us, %543 ], [ %.9538.us, %539 ], [ %spec.select589.us, %570 ]
  %.12.us = phi i32 [ %.11.us, %567 ], [ %.11.us, %564 ], [ %.9.us, %543 ], [ %.9.us, %539 ], [ %spec.select590.us, %570 ]
  %574 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %575 = icmp eq i32 %574, 4
  br i1 %575, label %579, label %576

576:                                              ; preds = %573
  %577 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %578 = icmp eq i32 %577, 5
  br i1 %578, label %579, label %586

579:                                              ; preds = %576, %573
  %580 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %581 = icmp eq i32 %580, 1
  br i1 %581, label %582, label %586

582:                                              ; preds = %579
  %583 = load i32, ptr %181, align 4, !tbaa !14
  %584 = icmp ugt i32 %583, 1100
  %585 = icmp eq i32 %.1525717.us, %183
  %or.cond592.us = and i1 %182, %585
  %or.cond730 = or i1 %584, %or.cond592.us
  br i1 %or.cond730, label %586, label %597

586:                                              ; preds = %582, %579, %576
  %587 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %588 = icmp eq i32 %587, 2
  br i1 %588, label %589, label %597

589:                                              ; preds = %586
  %590 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %591 = icmp eq i32 %590, 1
  br i1 %591, label %592, label %597

592:                                              ; preds = %589
  %593 = load i32, ptr %181, align 4, !tbaa !14
  %594 = icmp ult i32 %593, 1005
  br i1 %594, label %595, label %597

595:                                              ; preds = %592
  %596 = icmp eq i32 %.1525717.us, %183
  %or.cond594.us = and i1 %182, %596
  %spec.select597.us = select i1 %or.cond594.us, i32 %540, i32 -1610149872
  br label %597

597:                                              ; preds = %582, %595, %592, %589, %586
  %.0517.us = phi i32 [ %540, %592 ], [ %540, %589 ], [ %540, %586 ], [ %spec.select597.us, %595 ], [ 545725200, %582 ]
  %598 = load i32, ptr %184, align 4, !tbaa !19
  %599 = mul i32 %.12.us, %.1525717.us
  %600 = load i32, ptr %11, align 4, !tbaa !5
  %601 = mul i32 %599, %600
  %602 = icmp eq i32 %.1525717.us, %183
  %603 = and i1 %182, %602
  %604 = zext i1 %603 to i32
  %spec.select595.us = select i1 %603, i32 %.2520721.us, i32 0
  tail call void @libxsmm_x86_instruction_unified_vec_move(ptr noundef %0, i32 noundef %.0517.us, i32 noundef %598, i32 noundef 127, i32 noundef 0, i32 noundef %601, i8 noundef signext %.12541.us, i32 noundef %199, i32 noundef %604, i32 noundef %spec.select595.us, i32 noundef 0) #2
  %605 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %606 = icmp eq i32 %605, 1
  br i1 %606, label %607, label %610

607:                                              ; preds = %597
  %608 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %609 = icmp eq i32 %608, 2
  br i1 %609, label %662, label %610

610:                                              ; preds = %607, %597
  %611 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %612 = icmp eq i32 %611, 1
  br i1 %612, label %613, label %616

613:                                              ; preds = %610
  %614 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %615 = icmp eq i32 %614, 2
  br i1 %615, label %662, label %616

616:                                              ; preds = %613, %610
  %617 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %618 = icmp eq i32 %617, 1
  br i1 %618, label %619, label %622

619:                                              ; preds = %616
  %620 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %621 = icmp eq i32 %620, 3
  br i1 %621, label %660, label %622

622:                                              ; preds = %619, %616
  %623 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %624 = icmp eq i32 %623, 1
  br i1 %624, label %625, label %628

625:                                              ; preds = %622
  %626 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %627 = icmp eq i32 %626, 3
  br i1 %627, label %660, label %628

628:                                              ; preds = %625, %622
  %629 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %630 = icmp eq i32 %629, 1
  br i1 %630, label %631, label %634

631:                                              ; preds = %628
  %632 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %633 = icmp eq i32 %632, 4
  br i1 %633, label %658, label %634

634:                                              ; preds = %631, %628
  %635 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %636 = icmp eq i32 %635, 1
  br i1 %636, label %637, label %640

637:                                              ; preds = %634
  %638 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %639 = icmp eq i32 %638, 4
  br i1 %639, label %658, label %640

640:                                              ; preds = %637, %634
  %641 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #2
  %642 = icmp eq i32 %641, 1
  br i1 %642, label %643, label %646

643:                                              ; preds = %640
  %644 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %645 = icmp eq i32 %644, 5
  br i1 %645, label %652, label %646

646:                                              ; preds = %643, %640
  %647 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %648 = icmp eq i32 %647, 1
  br i1 %648, label %649, label %664

649:                                              ; preds = %646
  %650 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %651 = icmp eq i32 %650, 5
  br i1 %651, label %652, label %664

652:                                              ; preds = %649, %643
  %653 = load i8, ptr %186, align 4, !tbaa !30
  %654 = load i32, ptr %187, align 4, !tbaa !31
  %655 = load i32, ptr %188, align 4, !tbaa !32
  %656 = load i32, ptr %189, align 4, !tbaa !33
  %657 = load i32, ptr %190, align 4, !tbaa !34
  tail call void @libxsmm_generator_vcvthf8_to_f32_avx512_preppedstack(ptr noundef %0, i8 noundef signext %653, i32 noundef %199, i32 noundef %199, i32 noundef %654, i32 noundef %655, i32 noundef %656, i32 noundef %657) #2
  br label %664

658:                                              ; preds = %637, %631
  %659 = load i8, ptr %186, align 4, !tbaa !30
  tail call void @libxsmm_generator_cvtbf8ps_avx512(ptr noundef %0, i8 noundef signext %659, i32 noundef %199, i32 noundef %199) #2
  br label %664

660:                                              ; preds = %625, %619
  %661 = load i8, ptr %186, align 4, !tbaa !30
  tail call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %0, i32 noundef 537208083, i8 noundef signext %661, i32 noundef %199, i32 noundef %199) #2
  br label %664

662:                                              ; preds = %613, %607
  %663 = load i8, ptr %186, align 4, !tbaa !30
  tail call void @libxsmm_generator_cvtbf16ps_sse_avx2_avx512(ptr noundef %0, i8 noundef signext %663, i32 noundef %199, i32 noundef %199) #2
  br label %664

664:                                              ; preds = %662, %660, %658, %652, %649, %646
  %665 = load i8, ptr %18, align 1, !tbaa !10
  %666 = icmp eq i8 %665, 1
  br i1 %666, label %667, label %.thread667.us

667:                                              ; preds = %664
  %668 = load i16, ptr %180, align 1, !tbaa !18
  %669 = icmp eq i16 %668, 43
  br i1 %669, label %670, label %.thread667.us

670:                                              ; preds = %667
  %671 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %672 = icmp eq i32 %671, 12
  br i1 %672, label %673, label %678

673:                                              ; preds = %670
  %674 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %675 = icmp eq i32 %674, 1
  br i1 %675, label %676, label %678

676:                                              ; preds = %673
  %677 = load i32, ptr %191, align 4, !tbaa !35
  tail call void @libxsmm_generator_vcvtint2ps_avx512(ptr noundef %0, i32 noundef 12, i32 noundef %199, i32 noundef %677, i32 noundef %67) #2
  br label %678

678:                                              ; preds = %676, %673, %670
  %679 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %680 = icmp eq i32 %679, 10
  br i1 %680, label %681, label %686

681:                                              ; preds = %678
  %682 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %683 = icmp eq i32 %682, 1
  br i1 %683, label %684, label %686

684:                                              ; preds = %681
  %685 = load i32, ptr %191, align 4, !tbaa !35
  tail call void @libxsmm_generator_vcvtint2ps_avx512(ptr noundef %0, i32 noundef 10, i32 noundef %199, i32 noundef %685, i32 noundef %67) #2
  br label %686

686:                                              ; preds = %684, %681, %678
  %687 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #2
  %688 = icmp eq i32 %687, 8
  br i1 %688, label %689, label %.thread667.us

689:                                              ; preds = %686
  %690 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #2
  %691 = icmp eq i32 %690, 1
  br i1 %691, label %692, label %.thread667.us

692:                                              ; preds = %689
  %693 = load i32, ptr %191, align 4, !tbaa !35
  tail call void @libxsmm_generator_vcvtint2ps_avx512(ptr noundef %0, i32 noundef 8, i32 noundef %199, i32 noundef %693, i32 noundef %67) #2
  br label %.thread667.us

.thread689.us:                                    ; preds = %.thread685.us
  %694 = load i32, ptr %181, align 4, !tbaa !14
  %695 = icmp ult i32 %694, 1005
  %696 = icmp ugt i32 %694, 1100
  %697 = select i1 %696, i8 122, i8 121
  %698 = select i1 %695, i8 120, i8 %697
  %699 = select i1 %695, i32 -1610346480, i32 537138704
  %700 = add i32 %.1525717.us, %5
  tail call void @libxsmm_x86_instruction_vec_compute_2reg(ptr noundef %0, i32 noundef %699, i8 noundef signext %698, i32 noundef %700, i32 noundef %199) #2
  br label %.thread667.us

.thread667.us:                                    ; preds = %.thread685.us, %686, %689, %692, %667, %.thread689.us, %664, %.thread644.us, %361, %358, %355, %336, %333
  %.14543.us = phi i8 [ %.9538.us, %.thread689.us ], [ %.9538.us, %.thread644.us ], [ %.4533.us, %355 ], [ %.4533.us, %358 ], [ %.4533.us, %361 ], [ %.4533.us, %336 ], [ %.4533.us, %333 ], [ %.12541.us, %664 ], [ %.12541.us, %667 ], [ %.12541.us, %692 ], [ %.12541.us, %689 ], [ %.12541.us, %686 ], [ %.9538.us, %.thread685.us ]
  %.5523.us = phi i32 [ %.2520721.us, %.thread689.us ], [ %.2520721.us, %.thread644.us ], [ %.4522.us, %355 ], [ %.4522.us, %358 ], [ %.4522.us, %361 ], [ %.4522.us, %336 ], [ %.4522.us, %333 ], [ %.2520721.us, %664 ], [ %.2520721.us, %667 ], [ %.2520721.us, %692 ], [ %.2520721.us, %689 ], [ %.2520721.us, %686 ], [ %.2520721.us, %.thread685.us ]
  %.14.us = phi i32 [ %.9.us, %.thread689.us ], [ %.9.us, %.thread644.us ], [ %.4.us, %355 ], [ %.4.us, %358 ], [ %.4.us, %361 ], [ %.4.us, %336 ], [ %.4.us, %333 ], [ %.12.us, %664 ], [ %.12.us, %667 ], [ %.12.us, %692 ], [ %.12.us, %689 ], [ %.12.us, %686 ], [ %.9.us, %.thread685.us ]
  %701 = add nuw i32 %.1525717.us, 1
  %exitcond755.not = icmp eq i32 %701, %6
  br i1 %exitcond755.not, label %._crit_edge.us, label %198, !llvm.loop !36

._crit_edge.us:                                   ; preds = %.thread667.us
  %702 = add nuw i32 %.1528726.us, 1
  %exitcond756.not = icmp eq i32 %702, %7
  br i1 %exitcond756.not, label %.loopexit, label %.preheader.us, !llvm.loop !37

.loopexit:                                        ; preds = %._crit_edge.split.us703, %._crit_edge.split.us.split.split.us.us.us.us, %._crit_edge.split.us.split.us.us.us.us, %._crit_edge.us, %.preheader.lr.ph, %.preheader694.lr.ph.split.us.split.us.split, %.preheader694.lr.ph, %.preheader695, %.thread636, %87
  ret void
}

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

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

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

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

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

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

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

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

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

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

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

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 8}
!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 4}
!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 8}
!22 = distinct !{!22, !23, !24}
!23 = !{!"llvm.loop.mustprogress"}
!24 = !{!"llvm.loop.peeled.count", i32 1}
!25 = distinct !{!25, !23, !24}
!26 = distinct !{!26, !23, !24}
!27 = distinct !{!27, !23}
!28 = distinct !{!28, !23}
!29 = !{!6, !7, i64 24}
!30 = !{!6, !8, i64 512}
!31 = !{!6, !7, i64 96}
!32 = !{!6, !7, i64 100}
!33 = !{!6, !7, i64 84}
!34 = !{!6, !7, i64 88}
!35 = !{!6, !7, i64 472}
!36 = distinct !{!36, !23}
!37 = distinct !{!37, !23}


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