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

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

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

@.str = external hidden unnamed_addr constant [97 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [27 x i8], align 1
@__PRETTY_FUNCTION__.libxsmm_load_aarch64_2d_reg_block = external hidden unnamed_addr constant [262 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [286 x i8], align 1

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

declare void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i64 noundef) #1

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

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #2

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

49:                                               ; preds = %10
  %50 = load ptr, ptr %14, align 8, !tbaa !5
  %51 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %50, i32 0, i32 9
  %52 = load i16, ptr %51, align 1, !tbaa !14
  %53 = zext i16 %52 to i32
  %54 = and i32 %53, 2
  %55 = icmp sgt i32 %54, 0
  br i1 %55, label %84, label %56

56:                                               ; preds = %49, %10
  %57 = load ptr, ptr %14, align 8, !tbaa !5
  %58 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %57, i32 0, i32 11
  %59 = load i8, ptr %58, align 1, !tbaa !11
  %60 = zext i8 %59 to i32
  %61 = icmp eq i32 %60, 2
  br i1 %61, label %62, label %69

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

69:                                               ; preds = %62, %56
  %70 = load ptr, ptr %14, align 8, !tbaa !5
  %71 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %70, i32 0, i32 11
  %72 = load i8, ptr %71, align 1, !tbaa !11
  %73 = zext i8 %72 to i32
  %74 = icmp eq i32 %73, 3
  br i1 %74, label %75, label %82

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

82:                                               ; preds = %75, %69
  %83 = phi i1 [ false, %69 ], [ %81, %75 ]
  br label %84

84:                                               ; preds = %82, %62, %49
  %85 = phi i1 [ true, %62 ], [ true, %49 ], [ %83, %82 ]
  %86 = zext i1 %85 to i64
  %87 = select i1 %85, i32 1, i32 0
  store i32 %87, ptr %24, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #4
  %88 = load ptr, ptr %14, align 8, !tbaa !5
  %89 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %88, i32 0, i32 11
  %90 = load i8, ptr %89, align 1, !tbaa !11
  %91 = zext i8 %90 to i32
  %92 = icmp eq i32 %91, 1
  br i1 %92, label %93, label %100

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

100:                                              ; preds = %93, %84
  %101 = load ptr, ptr %14, align 8, !tbaa !5
  %102 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %101, i32 0, i32 11
  %103 = load i8, ptr %102, align 1, !tbaa !11
  %104 = zext i8 %103 to i32
  %105 = icmp eq i32 %104, 2
  br i1 %105, label %106, label %113

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

113:                                              ; preds = %106, %100
  %114 = load ptr, ptr %14, align 8, !tbaa !5
  %115 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %114, i32 0, i32 11
  %116 = load i8, ptr %115, align 1, !tbaa !11
  %117 = zext i8 %116 to i32
  %118 = icmp eq i32 %117, 3
  br i1 %118, label %119, label %126

119:                                              ; preds = %113
  %120 = load ptr, ptr %14, align 8, !tbaa !5
  %121 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %120, i32 0, i32 9
  %122 = load i16, ptr %121, align 1, !tbaa !14
  %123 = zext i16 %122 to i32
  %124 = and i32 %123, 8
  %125 = icmp sgt i32 %124, 0
  br label %126

126:                                              ; preds = %119, %113
  %127 = phi i1 [ false, %113 ], [ %125, %119 ]
  br label %128

128:                                              ; preds = %126, %106, %93
  %129 = phi i1 [ true, %106 ], [ true, %93 ], [ %127, %126 ]
  %130 = zext i1 %129 to i64
  %131 = select i1 %129, i32 1, i32 0
  store i32 %131, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #4
  %132 = load ptr, ptr %14, align 8, !tbaa !5
  %133 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %132, i32 0, i32 11
  %134 = load i8, ptr %133, align 1, !tbaa !11
  %135 = zext i8 %134 to i32
  %136 = icmp eq i32 %135, 1
  br i1 %136, label %137, label %144

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

144:                                              ; preds = %137, %128
  %145 = load ptr, ptr %14, align 8, !tbaa !5
  %146 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %145, i32 0, i32 11
  %147 = load i8, ptr %146, align 1, !tbaa !11
  %148 = zext i8 %147 to i32
  %149 = icmp eq i32 %148, 2
  br i1 %149, label %150, label %157

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

157:                                              ; preds = %150, %144
  %158 = load ptr, ptr %14, align 8, !tbaa !5
  %159 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %158, i32 0, i32 11
  %160 = load i8, ptr %159, align 1, !tbaa !11
  %161 = zext i8 %160 to i32
  %162 = icmp eq i32 %161, 3
  br i1 %162, label %163, label %170

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

170:                                              ; preds = %163, %157
  %171 = phi i1 [ false, %157 ], [ %169, %163 ]
  br label %172

172:                                              ; preds = %170, %150, %137
  %173 = phi i1 [ true, %150 ], [ true, %137 ], [ %171, %170 ]
  %174 = zext i1 %173 to i64
  %175 = select i1 %173, i32 1, i32 0
  store i32 %175, ptr %26, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #4
  %176 = load i32, ptr %24, align 4, !tbaa !9
  %177 = icmp eq i32 %176, 1
  br i1 %177, label %184, label %178

178:                                              ; preds = %172
  %179 = load i32, ptr %25, align 4, !tbaa !9
  %180 = icmp eq i32 %179, 1
  br i1 %180, label %184, label %181

181:                                              ; preds = %178
  %182 = load i32, ptr %26, align 4, !tbaa !9
  %183 = icmp eq i32 %182, 1
  br label %184

184:                                              ; preds = %181, %178, %172
  %185 = phi i1 [ true, %178 ], [ true, %172 ], [ %183, %181 ]
  %186 = zext i1 %185 to i64
  %187 = select i1 %185, i32 1, i32 0
  store i32 %187, ptr %27, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #4
  %188 = load ptr, ptr %14, align 8, !tbaa !5
  %189 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %188, i32 0, i32 9
  %190 = load i16, ptr %189, align 1, !tbaa !14
  %191 = zext i16 %190 to i32
  %192 = and i32 %191, 1024
  %193 = icmp sgt i32 %192, 0
  %194 = zext i1 %193 to i64
  %195 = select i1 %193, i32 1, i32 0
  store i32 %195, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #4
  %196 = load ptr, ptr %14, align 8, !tbaa !5
  %197 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %196, i32 0, i32 9
  %198 = load i16, ptr %197, align 1, !tbaa !14
  %199 = zext i16 %198 to i32
  %200 = and i32 %199, 16
  %201 = icmp sgt i32 %200, 0
  %202 = zext i1 %201 to i64
  %203 = select i1 %201, i32 1, i32 0
  store i32 %203, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #4
  %204 = load ptr, ptr %14, align 8, !tbaa !5
  %205 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %204, i32 0, i32 2
  %206 = load i32, ptr %205, align 1, !tbaa !15
  %207 = load ptr, ptr %13, align 8, !tbaa !5
  %208 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %207, i32 0, i32 2
  %209 = load i32, ptr %208, align 4, !tbaa !16
  %210 = mul i32 %206, %209
  store i32 %210, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #4
  %211 = load i32, ptr %19, align 4, !tbaa !9
  %212 = icmp eq i32 %211, 0
  br i1 %212, label %213, label %221

213:                                              ; preds = %184
  %214 = load ptr, ptr %13, align 8, !tbaa !5
  %215 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %214, i32 0, i32 2
  %216 = load i32, ptr %215, align 4, !tbaa !16
  %217 = load i32, ptr %15, align 4, !tbaa !9
  %218 = mul i32 %216, %217
  %219 = load i32, ptr %17, align 4, !tbaa !9
  %220 = mul i32 %218, %219
  br label %232

221:                                              ; preds = %184
  %222 = load ptr, ptr %13, align 8, !tbaa !5
  %223 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %222, i32 0, i32 2
  %224 = load i32, ptr %223, align 4, !tbaa !16
  %225 = load i32, ptr %15, align 4, !tbaa !9
  %226 = load i32, ptr %17, align 4, !tbaa !9
  %227 = sub i32 %226, 1
  %228 = mul i32 %225, %227
  %229 = load i32, ptr %19, align 4, !tbaa !9
  %230 = add i32 %228, %229
  %231 = mul i32 %224, %230
  br label %232

232:                                              ; preds = %221, %213
  %233 = phi i32 [ %220, %213 ], [ %231, %221 ]
  store i32 %233, ptr %31, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #4
  store i32 0, ptr %32, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #4
  %234 = load ptr, ptr %11, align 8, !tbaa !5
  %235 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %234, i32 0, i32 6
  %236 = load i32, ptr %235, align 4, !tbaa !18
  %237 = icmp uge i32 %236, 2201
  br i1 %237, label %238, label %243

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

243:                                              ; preds = %238, %232
  %244 = phi i1 [ false, %232 ], [ %242, %238 ]
  %245 = zext i1 %244 to i32
  %246 = trunc i32 %245 to i8
  store i8 %246, ptr %33, align 1, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #4
  %247 = load ptr, ptr %14, align 8, !tbaa !5
  %248 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %247, i32 0, i32 11
  %249 = load i8, ptr %248, align 1, !tbaa !11
  %250 = zext i8 %249 to i32
  %251 = icmp eq i32 %250, 1
  br i1 %251, label %252, label %258

252:                                              ; preds = %243
  %253 = load ptr, ptr %14, align 8, !tbaa !5
  %254 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %253, i32 0, i32 10
  %255 = load i16, ptr %254, align 1, !tbaa !21
  %256 = zext i16 %255 to i32
  %257 = icmp eq i32 %256, 33
  br label %258

258:                                              ; preds = %252, %243
  %259 = phi i1 [ false, %243 ], [ %257, %252 ]
  %260 = zext i1 %259 to i64
  %261 = select i1 %259, i32 1, i32 0
  store i32 %261, ptr %34, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #4
  %262 = load ptr, ptr %14, align 8, !tbaa !5
  %263 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %262, i32 0, i32 11
  %264 = load i8, ptr %263, align 1, !tbaa !11
  %265 = zext i8 %264 to i32
  %266 = icmp eq i32 %265, 2
  br i1 %266, label %267, label %273

267:                                              ; preds = %258
  %268 = load ptr, ptr %14, align 8, !tbaa !5
  %269 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %268, i32 0, i32 10
  %270 = load i16, ptr %269, align 1, !tbaa !21
  %271 = zext i16 %270 to i32
  %272 = icmp eq i32 %271, 26
  br label %273

273:                                              ; preds = %267, %258
  %274 = phi i1 [ false, %258 ], [ %272, %267 ]
  %275 = zext i1 %274 to i64
  %276 = select i1 %274, i32 1, i32 0
  store i32 %276, ptr %35, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #4
  %277 = load i32, ptr %34, align 4, !tbaa !9
  %278 = icmp ugt i32 %277, 0
  br i1 %278, label %279, label %381

279:                                              ; preds = %273
  %280 = load ptr, ptr %14, align 8, !tbaa !5
  %281 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %280, i32 noundef 0)
  %282 = icmp eq i32 0, %281
  br i1 %282, label %283, label %284

283:                                              ; preds = %279
  br label %377

284:                                              ; preds = %279
  %285 = load ptr, ptr %14, align 8, !tbaa !5
  %286 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %285, i32 noundef 0)
  %287 = icmp eq i32 1, %286
  br i1 %287, label %288, label %289

288:                                              ; preds = %284
  br label %375

289:                                              ; preds = %284
  %290 = load ptr, ptr %14, align 8, !tbaa !5
  %291 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %290, i32 noundef 0)
  %292 = icmp eq i32 2, %291
  br i1 %292, label %293, label %294

293:                                              ; preds = %289
  br label %373

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

298:                                              ; preds = %294
  br label %371

299:                                              ; preds = %294
  %300 = load ptr, ptr %14, align 8, !tbaa !5
  %301 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %300, i32 noundef 0)
  %302 = icmp eq i32 4, %301
  br i1 %302, label %303, label %304

303:                                              ; preds = %299
  br label %369

304:                                              ; preds = %299
  %305 = load ptr, ptr %14, align 8, !tbaa !5
  %306 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %305, i32 noundef 0)
  %307 = icmp eq i32 5, %306
  br i1 %307, label %308, label %309

308:                                              ; preds = %304
  br label %367

309:                                              ; preds = %304
  %310 = load ptr, ptr %14, align 8, !tbaa !5
  %311 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %310, i32 noundef 0)
  %312 = icmp eq i32 6, %311
  br i1 %312, label %313, label %314

313:                                              ; preds = %309
  br label %365

314:                                              ; preds = %309
  %315 = load ptr, ptr %14, align 8, !tbaa !5
  %316 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %315, i32 noundef 0)
  %317 = icmp eq i32 7, %316
  br i1 %317, label %318, label %319

318:                                              ; preds = %314
  br label %363

319:                                              ; preds = %314
  %320 = load ptr, ptr %14, align 8, !tbaa !5
  %321 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %320, i32 noundef 0)
  %322 = icmp eq i32 8, %321
  br i1 %322, label %323, label %324

323:                                              ; preds = %319
  br label %361

324:                                              ; preds = %319
  %325 = load ptr, ptr %14, align 8, !tbaa !5
  %326 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %325, i32 noundef 0)
  %327 = icmp eq i32 9, %326
  br i1 %327, label %328, label %329

328:                                              ; preds = %324
  br label %359

329:                                              ; preds = %324
  %330 = load ptr, ptr %14, align 8, !tbaa !5
  %331 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %330, i32 noundef 0)
  %332 = icmp eq i32 10, %331
  br i1 %332, label %333, label %334

333:                                              ; preds = %329
  br label %357

334:                                              ; preds = %329
  %335 = load ptr, ptr %14, align 8, !tbaa !5
  %336 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %335, i32 noundef 0)
  %337 = icmp eq i32 11, %336
  br i1 %337, label %338, label %339

338:                                              ; preds = %334
  br label %355

339:                                              ; preds = %334
  %340 = load ptr, ptr %14, align 8, !tbaa !5
  %341 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %340, i32 noundef 0)
  %342 = icmp eq i32 12, %341
  br i1 %342, label %343, label %344

343:                                              ; preds = %339
  br label %353

344:                                              ; preds = %339
  %345 = load ptr, ptr %14, align 8, !tbaa !5
  %346 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %345, i32 noundef 0)
  %347 = icmp eq i32 13, %346
  br i1 %347, label %348, label %349

348:                                              ; preds = %344
  br label %351

349:                                              ; preds = %344
  call void @__assert_fail(ptr noundef @.str.3, ptr noundef @.str, i32 noundef 471, ptr noundef @__PRETTY_FUNCTION__.libxsmm_load_aarch64_2d_reg_block) #5
  unreachable

350:                                              ; No predecessors!
  br label %351

351:                                              ; preds = %350, %348
  %352 = phi i32 [ 1, %348 ], [ 0, %350 ]
  br label %353

353:                                              ; preds = %351, %343
  %354 = phi i32 [ 1, %343 ], [ %352, %351 ]
  br label %355

355:                                              ; preds = %353, %338
  %356 = phi i32 [ 2, %338 ], [ %354, %353 ]
  br label %357

357:                                              ; preds = %355, %333
  %358 = phi i32 [ 2, %333 ], [ %356, %355 ]
  br label %359

359:                                              ; preds = %357, %328
  %360 = phi i32 [ 4, %328 ], [ %358, %357 ]
  br label %361

361:                                              ; preds = %359, %323
  %362 = phi i32 [ 4, %323 ], [ %360, %359 ]
  br label %363

363:                                              ; preds = %361, %318
  %364 = phi i32 [ 8, %318 ], [ %362, %361 ]
  br label %365

365:                                              ; preds = %363, %313
  %366 = phi i32 [ 8, %313 ], [ %364, %363 ]
  br label %367

367:                                              ; preds = %365, %308
  %368 = phi i32 [ 1, %308 ], [ %366, %365 ]
  br label %369

369:                                              ; preds = %367, %303
  %370 = phi i32 [ 1, %303 ], [ %368, %367 ]
  br label %371

371:                                              ; preds = %369, %298
  %372 = phi i32 [ 2, %298 ], [ %370, %369 ]
  br label %373

373:                                              ; preds = %371, %293
  %374 = phi i32 [ 2, %293 ], [ %372, %371 ]
  br label %375

375:                                              ; preds = %373, %288
  %376 = phi i32 [ 4, %288 ], [ %374, %373 ]
  br label %377

377:                                              ; preds = %375, %283
  %378 = phi i32 [ 8, %283 ], [ %376, %375 ]
  %379 = trunc i32 %378 to i8
  %380 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext %379)
  br label %590

381:                                              ; preds = %273
  %382 = load i32, ptr %35, align 4, !tbaa !9
  %383 = icmp ne i32 %382, 0
  br i1 %383, label %384, label %486

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

388:                                              ; preds = %384
  br label %482

389:                                              ; preds = %384
  %390 = load ptr, ptr %14, align 8, !tbaa !5
  %391 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %390, i32 noundef 3)
  %392 = icmp eq i32 1, %391
  br i1 %392, label %393, label %394

393:                                              ; preds = %389
  br label %480

394:                                              ; preds = %389
  %395 = load ptr, ptr %14, align 8, !tbaa !5
  %396 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %395, i32 noundef 3)
  %397 = icmp eq i32 2, %396
  br i1 %397, label %398, label %399

398:                                              ; preds = %394
  br label %478

399:                                              ; preds = %394
  %400 = load ptr, ptr %14, align 8, !tbaa !5
  %401 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %400, i32 noundef 3)
  %402 = icmp eq i32 3, %401
  br i1 %402, label %403, label %404

403:                                              ; preds = %399
  br label %476

404:                                              ; preds = %399
  %405 = load ptr, ptr %14, align 8, !tbaa !5
  %406 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %405, i32 noundef 3)
  %407 = icmp eq i32 4, %406
  br i1 %407, label %408, label %409

408:                                              ; preds = %404
  br label %474

409:                                              ; preds = %404
  %410 = load ptr, ptr %14, align 8, !tbaa !5
  %411 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %410, i32 noundef 3)
  %412 = icmp eq i32 5, %411
  br i1 %412, label %413, label %414

413:                                              ; preds = %409
  br label %472

414:                                              ; preds = %409
  %415 = load ptr, ptr %14, align 8, !tbaa !5
  %416 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %415, i32 noundef 3)
  %417 = icmp eq i32 6, %416
  br i1 %417, label %418, label %419

418:                                              ; preds = %414
  br label %470

419:                                              ; preds = %414
  %420 = load ptr, ptr %14, align 8, !tbaa !5
  %421 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %420, i32 noundef 3)
  %422 = icmp eq i32 7, %421
  br i1 %422, label %423, label %424

423:                                              ; preds = %419
  br label %468

424:                                              ; preds = %419
  %425 = load ptr, ptr %14, align 8, !tbaa !5
  %426 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %425, i32 noundef 3)
  %427 = icmp eq i32 8, %426
  br i1 %427, label %428, label %429

428:                                              ; preds = %424
  br label %466

429:                                              ; preds = %424
  %430 = load ptr, ptr %14, align 8, !tbaa !5
  %431 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %430, i32 noundef 3)
  %432 = icmp eq i32 9, %431
  br i1 %432, label %433, label %434

433:                                              ; preds = %429
  br label %464

434:                                              ; preds = %429
  %435 = load ptr, ptr %14, align 8, !tbaa !5
  %436 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %435, i32 noundef 3)
  %437 = icmp eq i32 10, %436
  br i1 %437, label %438, label %439

438:                                              ; preds = %434
  br label %462

439:                                              ; preds = %434
  %440 = load ptr, ptr %14, align 8, !tbaa !5
  %441 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %440, i32 noundef 3)
  %442 = icmp eq i32 11, %441
  br i1 %442, label %443, label %444

443:                                              ; preds = %439
  br label %460

444:                                              ; preds = %439
  %445 = load ptr, ptr %14, align 8, !tbaa !5
  %446 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %445, i32 noundef 3)
  %447 = icmp eq i32 12, %446
  br i1 %447, label %448, label %449

448:                                              ; preds = %444
  br label %458

449:                                              ; preds = %444
  %450 = load ptr, ptr %14, align 8, !tbaa !5
  %451 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %450, i32 noundef 3)
  %452 = icmp eq i32 13, %451
  br i1 %452, label %453, label %454

453:                                              ; preds = %449
  br label %456

454:                                              ; preds = %449
  call void @__assert_fail(ptr noundef @.str.3, ptr noundef @.str, i32 noundef 472, ptr noundef @__PRETTY_FUNCTION__.libxsmm_load_aarch64_2d_reg_block) #5
  unreachable

455:                                              ; No predecessors!
  br label %456

456:                                              ; preds = %455, %453
  %457 = phi i32 [ 1, %453 ], [ 0, %455 ]
  br label %458

458:                                              ; preds = %456, %448
  %459 = phi i32 [ 1, %448 ], [ %457, %456 ]
  br label %460

460:                                              ; preds = %458, %443
  %461 = phi i32 [ 2, %443 ], [ %459, %458 ]
  br label %462

462:                                              ; preds = %460, %438
  %463 = phi i32 [ 2, %438 ], [ %461, %460 ]
  br label %464

464:                                              ; preds = %462, %433
  %465 = phi i32 [ 4, %433 ], [ %463, %462 ]
  br label %466

466:                                              ; preds = %464, %428
  %467 = phi i32 [ 4, %428 ], [ %465, %464 ]
  br label %468

468:                                              ; preds = %466, %423
  %469 = phi i32 [ 8, %423 ], [ %467, %466 ]
  br label %470

470:                                              ; preds = %468, %418
  %471 = phi i32 [ 8, %418 ], [ %469, %468 ]
  br label %472

472:                                              ; preds = %470, %413
  %473 = phi i32 [ 1, %413 ], [ %471, %470 ]
  br label %474

474:                                              ; preds = %472, %408
  %475 = phi i32 [ 1, %408 ], [ %473, %472 ]
  br label %476

476:                                              ; preds = %474, %403
  %477 = phi i32 [ 2, %403 ], [ %475, %474 ]
  br label %478

478:                                              ; preds = %476, %398
  %479 = phi i32 [ 2, %398 ], [ %477, %476 ]
  br label %480

480:                                              ; preds = %478, %393
  %481 = phi i32 [ 4, %393 ], [ %479, %478 ]
  br label %482

482:                                              ; preds = %480, %388
  %483 = phi i32 [ 8, %388 ], [ %481, %480 ]
  %484 = trunc i32 %483 to i8
  %485 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext %484)
  br label %588

486:                                              ; preds = %381
  %487 = load ptr, ptr %14, align 8, !tbaa !5
  %488 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %487, i32 noundef 4)
  %489 = icmp eq i32 0, %488
  br i1 %489, label %490, label %491

490:                                              ; preds = %486
  br label %584

491:                                              ; preds = %486
  %492 = load ptr, ptr %14, align 8, !tbaa !5
  %493 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %492, i32 noundef 4)
  %494 = icmp eq i32 1, %493
  br i1 %494, label %495, label %496

495:                                              ; preds = %491
  br label %582

496:                                              ; preds = %491
  %497 = load ptr, ptr %14, align 8, !tbaa !5
  %498 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %497, i32 noundef 4)
  %499 = icmp eq i32 2, %498
  br i1 %499, label %500, label %501

500:                                              ; preds = %496
  br label %580

501:                                              ; preds = %496
  %502 = load ptr, ptr %14, align 8, !tbaa !5
  %503 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %502, i32 noundef 4)
  %504 = icmp eq i32 3, %503
  br i1 %504, label %505, label %506

505:                                              ; preds = %501
  br label %578

506:                                              ; preds = %501
  %507 = load ptr, ptr %14, align 8, !tbaa !5
  %508 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %507, i32 noundef 4)
  %509 = icmp eq i32 4, %508
  br i1 %509, label %510, label %511

510:                                              ; preds = %506
  br label %576

511:                                              ; preds = %506
  %512 = load ptr, ptr %14, align 8, !tbaa !5
  %513 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %512, i32 noundef 4)
  %514 = icmp eq i32 5, %513
  br i1 %514, label %515, label %516

515:                                              ; preds = %511
  br label %574

516:                                              ; preds = %511
  %517 = load ptr, ptr %14, align 8, !tbaa !5
  %518 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %517, i32 noundef 4)
  %519 = icmp eq i32 6, %518
  br i1 %519, label %520, label %521

520:                                              ; preds = %516
  br label %572

521:                                              ; preds = %516
  %522 = load ptr, ptr %14, align 8, !tbaa !5
  %523 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %522, i32 noundef 4)
  %524 = icmp eq i32 7, %523
  br i1 %524, label %525, label %526

525:                                              ; preds = %521
  br label %570

526:                                              ; preds = %521
  %527 = load ptr, ptr %14, align 8, !tbaa !5
  %528 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %527, i32 noundef 4)
  %529 = icmp eq i32 8, %528
  br i1 %529, label %530, label %531

530:                                              ; preds = %526
  br label %568

531:                                              ; preds = %526
  %532 = load ptr, ptr %14, align 8, !tbaa !5
  %533 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %532, i32 noundef 4)
  %534 = icmp eq i32 9, %533
  br i1 %534, label %535, label %536

535:                                              ; preds = %531
  br label %566

536:                                              ; preds = %531
  %537 = load ptr, ptr %14, align 8, !tbaa !5
  %538 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %537, i32 noundef 4)
  %539 = icmp eq i32 10, %538
  br i1 %539, label %540, label %541

540:                                              ; preds = %536
  br label %564

541:                                              ; preds = %536
  %542 = load ptr, ptr %14, align 8, !tbaa !5
  %543 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %542, i32 noundef 4)
  %544 = icmp eq i32 11, %543
  br i1 %544, label %545, label %546

545:                                              ; preds = %541
  br label %562

546:                                              ; preds = %541
  %547 = load ptr, ptr %14, align 8, !tbaa !5
  %548 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %547, i32 noundef 4)
  %549 = icmp eq i32 12, %548
  br i1 %549, label %550, label %551

550:                                              ; preds = %546
  br label %560

551:                                              ; preds = %546
  %552 = load ptr, ptr %14, align 8, !tbaa !5
  %553 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %552, i32 noundef 4)
  %554 = icmp eq i32 13, %553
  br i1 %554, label %555, label %556

555:                                              ; preds = %551
  br label %558

556:                                              ; preds = %551
  call void @__assert_fail(ptr noundef @.str.3, ptr noundef @.str, i32 noundef 473, ptr noundef @__PRETTY_FUNCTION__.libxsmm_load_aarch64_2d_reg_block) #5
  unreachable

557:                                              ; No predecessors!
  br label %558

558:                                              ; preds = %557, %555
  %559 = phi i32 [ 1, %555 ], [ 0, %557 ]
  br label %560

560:                                              ; preds = %558, %550
  %561 = phi i32 [ 1, %550 ], [ %559, %558 ]
  br label %562

562:                                              ; preds = %560, %545
  %563 = phi i32 [ 2, %545 ], [ %561, %560 ]
  br label %564

564:                                              ; preds = %562, %540
  %565 = phi i32 [ 2, %540 ], [ %563, %562 ]
  br label %566

566:                                              ; preds = %564, %535
  %567 = phi i32 [ 4, %535 ], [ %565, %564 ]
  br label %568

568:                                              ; preds = %566, %530
  %569 = phi i32 [ 4, %530 ], [ %567, %566 ]
  br label %570

570:                                              ; preds = %568, %525
  %571 = phi i32 [ 8, %525 ], [ %569, %568 ]
  br label %572

572:                                              ; preds = %570, %520
  %573 = phi i32 [ 8, %520 ], [ %571, %570 ]
  br label %574

574:                                              ; preds = %572, %515
  %575 = phi i32 [ 1, %515 ], [ %573, %572 ]
  br label %576

576:                                              ; preds = %574, %510
  %577 = phi i32 [ 1, %510 ], [ %575, %574 ]
  br label %578

578:                                              ; preds = %576, %505
  %579 = phi i32 [ 2, %505 ], [ %577, %576 ]
  br label %580

580:                                              ; preds = %578, %500
  %581 = phi i32 [ 2, %500 ], [ %579, %578 ]
  br label %582

582:                                              ; preds = %580, %495
  %583 = phi i32 [ 4, %495 ], [ %581, %580 ]
  br label %584

584:                                              ; preds = %582, %490
  %585 = phi i32 [ 8, %490 ], [ %583, %582 ]
  %586 = trunc i32 %585 to i8
  %587 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext %586)
  br label %588

588:                                              ; preds = %584, %482
  %589 = phi i32 [ %485, %482 ], [ %587, %584 ]
  br label %590

590:                                              ; preds = %588, %377
  %591 = phi i32 [ %380, %377 ], [ %589, %588 ]
  store i32 %591, ptr %36, align 4, !tbaa !9
  %592 = load i32, ptr %20, align 4, !tbaa !9
  %593 = load ptr, ptr %14, align 8, !tbaa !5
  %594 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %593, i32 0, i32 11
  %595 = load i8, ptr %594, align 1, !tbaa !11
  %596 = zext i8 %595 to i32
  %597 = icmp eq i32 %596, 1
  br i1 %597, label %598, label %605

598:                                              ; preds = %590
  %599 = load ptr, ptr %14, align 8, !tbaa !5
  %600 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %599, i32 0, i32 10
  %601 = load i16, ptr %600, align 1, !tbaa !21
  %602 = zext i16 %601 to i32
  %603 = icmp eq i32 %602, 2
  br i1 %603, label %604, label %605

604:                                              ; preds = %598
  store i32 1, ptr %37, align 4
  br label %1778

605:                                              ; preds = %598, %590
  %606 = load i8, ptr %33, align 1, !tbaa !20
  %607 = icmp ne i8 %606, 0
  br i1 %607, label %608, label %690

608:                                              ; preds = %605
  %609 = load ptr, ptr %11, align 8, !tbaa !5
  %610 = load ptr, ptr %12, align 8, !tbaa !5
  %611 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %610, i32 0, i32 35
  %612 = load i32, ptr %611, align 4, !tbaa !22
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %609, i32 noundef 0, i32 noundef -1, i32 noundef %612)
  %613 = load ptr, ptr %11, align 8, !tbaa !5
  %614 = load i32, ptr %19, align 4, !tbaa !9
  %615 = load ptr, ptr %13, align 8, !tbaa !5
  %616 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %615, i32 0, i32 2
  %617 = load i32, ptr %616, align 4, !tbaa !16
  %618 = mul i32 %614, %617
  %619 = load ptr, ptr %12, align 8, !tbaa !5
  %620 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %619, i32 0, i32 35
  %621 = load i32, ptr %620, align 4, !tbaa !22
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %613, i32 noundef 1, i32 noundef %618, i32 noundef %621)
  %622 = load ptr, ptr %14, align 8, !tbaa !5
  %623 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %622, i32 noundef 0)
  %624 = icmp eq i32 2, %623
  br i1 %624, label %679, label %625

625:                                              ; preds = %608
  %626 = load ptr, ptr %14, align 8, !tbaa !5
  %627 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %626, i32 noundef 0)
  %628 = icmp eq i32 12, %627
  br i1 %628, label %679, label %629

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

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

637:                                              ; preds = %633
  %638 = load ptr, ptr %14, align 8, !tbaa !5
  %639 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %638, i32 0, i32 11
  %640 = load i8, ptr %639, align 1, !tbaa !11
  %641 = zext i8 %640 to i32
  %642 = icmp eq i32 %641, 2
  br i1 %642, label %649, label %643

643:                                              ; preds = %637
  %644 = load ptr, ptr %14, align 8, !tbaa !5
  %645 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %644, i32 0, i32 11
  %646 = load i8, ptr %645, align 1, !tbaa !11
  %647 = zext i8 %646 to i32
  %648 = icmp eq i32 %647, 3
  br i1 %648, label %649, label %661

649:                                              ; preds = %643, %637
  %650 = load ptr, ptr %14, align 8, !tbaa !5
  %651 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %650, i32 noundef 1)
  %652 = icmp eq i32 2, %651
  br i1 %652, label %679, label %653

653:                                              ; preds = %649
  %654 = load ptr, ptr %14, align 8, !tbaa !5
  %655 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %654, i32 noundef 1)
  %656 = icmp eq i32 11, %655
  br i1 %656, label %679, label %657

657:                                              ; preds = %653
  %658 = load ptr, ptr %14, align 8, !tbaa !5
  %659 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %658, i32 noundef 1)
  %660 = icmp eq i32 10, %659
  br i1 %660, label %679, label %661

661:                                              ; preds = %657, %643
  %662 = load ptr, ptr %14, align 8, !tbaa !5
  %663 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %662, i32 0, i32 11
  %664 = load i8, ptr %663, align 1, !tbaa !11
  %665 = zext i8 %664 to i32
  %666 = icmp eq i32 %665, 3
  br i1 %666, label %667, label %689

667:                                              ; preds = %661
  %668 = load ptr, ptr %14, align 8, !tbaa !5
  %669 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %668, i32 noundef 2)
  %670 = icmp eq i32 2, %669
  br i1 %670, label %679, label %671

671:                                              ; preds = %667
  %672 = load ptr, ptr %14, align 8, !tbaa !5
  %673 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %672, i32 noundef 2)
  %674 = icmp eq i32 11, %673
  br i1 %674, label %679, label %675

675:                                              ; preds = %671
  %676 = load ptr, ptr %14, align 8, !tbaa !5
  %677 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %676, i32 noundef 2)
  %678 = icmp eq i32 10, %677
  br i1 %678, label %679, label %689

679:                                              ; preds = %675, %671, %667, %657, %653, %649, %633, %629, %625, %608
  %680 = load ptr, ptr %11, align 8, !tbaa !5
  %681 = load i32, ptr %15, align 4, !tbaa !9
  %682 = load ptr, ptr %13, align 8, !tbaa !5
  %683 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %682, i32 0, i32 2
  %684 = load i32, ptr %683, align 4, !tbaa !16
  %685 = mul i32 %681, %684
  %686 = load ptr, ptr %12, align 8, !tbaa !5
  %687 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %686, i32 0, i32 35
  %688 = load i32, ptr %687, align 4, !tbaa !22
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %680, i32 noundef 2, i32 noundef %685, i32 noundef %688)
  br label %689

689:                                              ; preds = %679, %675, %661
  br label %690

690:                                              ; preds = %689, %605
  %691 = load ptr, ptr %14, align 8, !tbaa !5
  %692 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %691, i32 0, i32 11
  %693 = load i8, ptr %692, align 1, !tbaa !11
  %694 = zext i8 %693 to i32
  %695 = icmp eq i32 %694, 2
  br i1 %695, label %696, label %1118

696:                                              ; preds = %690
  %697 = load ptr, ptr %14, align 8, !tbaa !5
  %698 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %697, i32 0, i32 10
  %699 = load i16, ptr %698, align 1, !tbaa !21
  %700 = zext i16 %699 to i32
  %701 = icmp eq i32 %700, 26
  br i1 %701, label %702, label %1118

702:                                              ; preds = %696
  %703 = load i8, ptr %33, align 1, !tbaa !20
  %704 = zext i8 %703 to i32
  %705 = icmp sgt i32 %704, 0
  br i1 %705, label %706, label %1117

706:                                              ; preds = %702
  %707 = load i32, ptr %30, align 4, !tbaa !9
  %708 = load i32, ptr %18, align 4, !tbaa !9
  %709 = mul i32 %707, %708
  store i32 %709, ptr %32, align 4, !tbaa !9
  %710 = load ptr, ptr %11, align 8, !tbaa !5
  %711 = load i32, ptr %15, align 4, !tbaa !9
  %712 = load ptr, ptr %13, align 8, !tbaa !5
  %713 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %712, i32 0, i32 2
  %714 = load i32, ptr %713, align 4, !tbaa !16
  %715 = mul i32 %711, %714
  %716 = load ptr, ptr %12, align 8, !tbaa !5
  %717 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %716, i32 0, i32 35
  %718 = load i32, ptr %717, align 4, !tbaa !22
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %710, i32 noundef 2, i32 noundef %715, i32 noundef %718)
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %719

719:                                              ; preds = %1101, %706
  %720 = load i32, ptr %22, align 4, !tbaa !9
  %721 = load i32, ptr %18, align 4, !tbaa !9
  %722 = icmp ult i32 %720, %721
  br i1 %722, label %723, label %1104

723:                                              ; preds = %719
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %724

724:                                              ; preds = %1044, %723
  %725 = load i32, ptr %21, align 4, !tbaa !9
  %726 = load i32, ptr %17, align 4, !tbaa !9
  %727 = icmp ult i32 %725, %726
  br i1 %727, label %728, label %1047

728:                                              ; preds = %724
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #4
  %729 = load ptr, ptr %14, align 8, !tbaa !5
  %730 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %729, i32 noundef 0)
  %731 = icmp eq i32 1, %730
  br i1 %731, label %736, label %732

732:                                              ; preds = %728
  %733 = load ptr, ptr %14, align 8, !tbaa !5
  %734 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %733, i32 noundef 0)
  %735 = icmp eq i32 0, %734
  br label %736

736:                                              ; preds = %732, %728
  %737 = phi i1 [ true, %728 ], [ %735, %732 ]
  %738 = zext i1 %737 to i64
  %739 = select i1 %737, i32 1, i32 0
  store i32 %739, ptr %38, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #4
  %740 = load i32, ptr %38, align 4, !tbaa !9
  %741 = icmp ne i32 %740, 0
  br i1 %741, label %742, label %752

742:                                              ; preds = %736
  %743 = load i32, ptr %21, align 4, !tbaa !9
  %744 = load i32, ptr %17, align 4, !tbaa !9
  %745 = sub i32 %744, 1
  %746 = icmp eq i32 %743, %745
  br i1 %746, label %747, label %749

747:                                              ; preds = %742
  %748 = load i32, ptr %19, align 4, !tbaa !9
  br label %750

749:                                              ; preds = %742
  br label %750

750:                                              ; preds = %749, %747
  %751 = phi i32 [ %748, %747 ], [ 0, %749 ]
  br label %770

752:                                              ; preds = %736
  %753 = load i32, ptr %21, align 4, !tbaa !9
  %754 = load i32, ptr %17, align 4, !tbaa !9
  %755 = sub i32 %754, 1
  %756 = icmp eq i32 %753, %755
  br i1 %756, label %757, label %766

757:                                              ; preds = %752
  %758 = load i32, ptr %19, align 4, !tbaa !9
  %759 = icmp ugt i32 %758, 0
  br i1 %759, label %760, label %762

760:                                              ; preds = %757
  %761 = load i32, ptr %19, align 4, !tbaa !9
  br label %764

762:                                              ; preds = %757
  %763 = load i32, ptr %15, align 4, !tbaa !9
  br label %764

764:                                              ; preds = %762, %760
  %765 = phi i32 [ %761, %760 ], [ %763, %762 ]
  br label %768

766:                                              ; preds = %752
  %767 = load i32, ptr %15, align 4, !tbaa !9
  br label %768

768:                                              ; preds = %766, %764
  %769 = phi i32 [ %765, %764 ], [ %767, %766 ]
  br label %770

770:                                              ; preds = %768, %750
  %771 = phi i32 [ %751, %750 ], [ %769, %768 ]
  store i32 %771, ptr %39, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #4
  %772 = load i32, ptr %38, align 4, !tbaa !9
  %773 = icmp ne i32 %772, 0
  br i1 %773, label %774, label %787

774:                                              ; preds = %770
  %775 = load i32, ptr %21, align 4, !tbaa !9
  %776 = load i32, ptr %17, align 4, !tbaa !9
  %777 = sub i32 %776, 1
  %778 = icmp eq i32 %775, %777
  br i1 %778, label %779, label %784

779:                                              ; preds = %774
  %780 = load i32, ptr %19, align 4, !tbaa !9
  %781 = icmp ugt i32 %780, 0
  %782 = zext i1 %781 to i64
  %783 = select i1 %781, i32 1, i32 0
  br label %785

784:                                              ; preds = %774
  br label %785

785:                                              ; preds = %784, %779
  %786 = phi i32 [ %783, %779 ], [ 0, %784 ]
  br label %800

787:                                              ; preds = %770
  %788 = load i32, ptr %21, align 4, !tbaa !9
  %789 = load i32, ptr %17, align 4, !tbaa !9
  %790 = sub i32 %789, 1
  %791 = icmp eq i32 %788, %790
  br i1 %791, label %792, label %797

792:                                              ; preds = %787
  %793 = load i32, ptr %19, align 4, !tbaa !9
  %794 = icmp ugt i32 %793, 0
  %795 = zext i1 %794 to i64
  %796 = select i1 %794, i32 1, i32 2
  br label %798

797:                                              ; preds = %787
  br label %798

798:                                              ; preds = %797, %792
  %799 = phi i32 [ %796, %792 ], [ 2, %797 ]
  br label %800

800:                                              ; preds = %798, %785
  %801 = phi i32 [ %786, %785 ], [ %799, %798 ]
  store i32 %801, ptr %40, align 4, !tbaa !9
  %802 = load i32, ptr %16, align 4, !tbaa !9
  %803 = load i32, ptr %22, align 4, !tbaa !9
  %804 = load i32, ptr %17, align 4, !tbaa !9
  %805 = mul i32 %803, %804
  %806 = add i32 %802, %805
  %807 = load i32, ptr %21, align 4, !tbaa !9
  %808 = add i32 %806, %807
  store i32 %808, ptr %23, align 4, !tbaa !9
  %809 = load i32, ptr %27, align 4, !tbaa !9
  %810 = icmp eq i32 %809, 0
  br i1 %810, label %811, label %860

811:                                              ; preds = %800
  %812 = load ptr, ptr %11, align 8, !tbaa !5
  %813 = load ptr, ptr %12, align 8, !tbaa !5
  %814 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %813, i32 0, i32 1
  %815 = load i32, ptr %814, align 4, !tbaa !24
  %816 = load ptr, ptr %12, align 8, !tbaa !5
  %817 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %816, i32 0, i32 36
  %818 = load i32, ptr %817, align 4, !tbaa !25
  %819 = load i32, ptr %23, align 4, !tbaa !9
  %820 = load ptr, ptr %13, align 8, !tbaa !5
  %821 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %820, i32 0, i32 2
  %822 = load i32, ptr %821, align 4, !tbaa !16
  %823 = load i32, ptr %39, align 4, !tbaa !9
  %824 = load i32, ptr %40, align 4, !tbaa !9
  %825 = trunc i32 %824 to i8
  %826 = zext i8 %825 to i32
  %827 = icmp eq i32 0, %826
  br i1 %827, label %833, label %828

828:                                              ; preds = %811
  %829 = load i32, ptr %40, align 4, !tbaa !9
  %830 = trunc i32 %829 to i8
  %831 = zext i8 %830 to i32
  %832 = icmp slt i32 0, %831
  br i1 %832, label %833, label %851

833:                                              ; preds = %828, %811
  %834 = load i32, ptr %40, align 4, !tbaa !9
  %835 = zext i32 %834 to i64
  %836 = mul i64 1, %835
  %837 = icmp ult i64 %836, 255
  br i1 %837, label %838, label %842

838:                                              ; preds = %833
  %839 = load i32, ptr %40, align 4, !tbaa !9
  %840 = zext i32 %839 to i64
  %841 = mul i64 1, %840
  br label %843

842:                                              ; preds = %833
  br label %843

843:                                              ; preds = %842, %838
  %844 = phi i64 [ %841, %838 ], [ 255, %842 ]
  %845 = icmp ule i64 %844, 255
  br i1 %845, label %846, label %851

846:                                              ; preds = %843
  %847 = load i32, ptr %40, align 4, !tbaa !9
  %848 = uitofp i32 %847 to double
  %849 = fcmp ole double 0.000000e+00, %848
  br i1 %849, label %850, label %851

850:                                              ; preds = %846
  br label %852

851:                                              ; preds = %846, %843, %828
  call void @__assert_fail(ptr noundef @.str.5, ptr noundef @.str, i32 noundef 513, ptr noundef @__PRETTY_FUNCTION__.libxsmm_load_aarch64_2d_reg_block) #5
  unreachable

852:                                              ; preds = %850
  %853 = load i32, ptr %40, align 4, !tbaa !9
  %854 = trunc i32 %853 to i8
  %855 = load i8, ptr %33, align 1, !tbaa !20
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %812, i32 noundef %815, i32 noundef %818, i32 noundef %819, i32 noundef %822, i32 noundef %823, i32 noundef 1, i32 noundef 0, i8 noundef zeroext %854, i8 noundef zeroext %855)
  %856 = load ptr, ptr %11, align 8, !tbaa !5
  %857 = load i32, ptr %23, align 4, !tbaa !9
  %858 = load i32, ptr %23, align 4, !tbaa !9
  %859 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4)
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %856, i32 noundef 87177218, i32 noundef %857, i32 noundef 127, i8 noundef zeroext 0, i32 noundef %858, i32 noundef 0, i32 noundef %859)
  br label %1043

860:                                              ; preds = %800
  %861 = load i32, ptr %24, align 4, !tbaa !9
  %862 = icmp eq i32 %861, 1
  br i1 %862, label %866, label %863

863:                                              ; preds = %860
  %864 = load i32, ptr %26, align 4, !tbaa !9
  %865 = icmp eq i32 %864, 1
  br i1 %865, label %866, label %948

866:                                              ; preds = %863, %860
  %867 = load i32, ptr %26, align 4, !tbaa !9
  %868 = icmp eq i32 %867, 1
  br i1 %868, label %869, label %873

869:                                              ; preds = %866
  %870 = load ptr, ptr %13, align 8, !tbaa !5
  %871 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %870, i32 0, i32 2
  %872 = load i32, ptr %871, align 4, !tbaa !16
  br label %877

873:                                              ; preds = %866
  %874 = load i32, ptr %30, align 4, !tbaa !9
  %875 = load i32, ptr %18, align 4, !tbaa !9
  %876 = mul i32 %874, %875
  br label %877

877:                                              ; preds = %873, %869
  %878 = phi i32 [ %872, %869 ], [ %876, %873 ]
  store i32 %878, ptr %32, align 4, !tbaa !9
  %879 = load i32, ptr %21, align 4, !tbaa !9
  %880 = icmp eq i32 %879, 0
  br i1 %880, label %881, label %929

881:                                              ; preds = %877
  %882 = load i32, ptr %24, align 4, !tbaa !9
  %883 = icmp eq i32 %882, 1
  br i1 %883, label %890, label %884

884:                                              ; preds = %881
  %885 = load i32, ptr %26, align 4, !tbaa !9
  %886 = icmp eq i32 %885, 1
  br i1 %886, label %887, label %915

887:                                              ; preds = %884
  %888 = load i32, ptr %22, align 4, !tbaa !9
  %889 = icmp eq i32 %888, 0
  br i1 %889, label %890, label %915

890:                                              ; preds = %887, %881
  %891 = load ptr, ptr %11, align 8, !tbaa !5
  %892 = load ptr, ptr %12, align 8, !tbaa !5
  %893 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %892, i32 0, i32 1
  %894 = load i32, ptr %893, align 4, !tbaa !24
  %895 = load ptr, ptr %12, align 8, !tbaa !5
  %896 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %895, i32 0, i32 36
  %897 = load i32, ptr %896, align 4, !tbaa !25
  %898 = load i32, ptr %23, align 4, !tbaa !9
  %899 = load ptr, ptr %13, align 8, !tbaa !5
  %900 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %899, i32 0, i32 2
  %901 = load i32, ptr %900, align 4, !tbaa !16
  %902 = load i32, ptr %21, align 4, !tbaa !9
  %903 = load i32, ptr %17, align 4, !tbaa !9
  %904 = sub i32 %903, 1
  %905 = icmp eq i32 %902, %904
  br i1 %905, label %906, label %908

906:                                              ; preds = %890
  %907 = load i32, ptr %19, align 4, !tbaa !9
  br label %909

908:                                              ; preds = %890
  br label %909

909:                                              ; preds = %908, %906
  %910 = phi i32 [ %907, %906 ], [ 0, %908 ]
  call void @libxsmm_generator_bcastload_masked_vreg_aarch64_asimd(ptr noundef %891, i32 noundef %894, i32 noundef %897, i32 noundef %898, i32 noundef %901, i32 noundef %910, i32 noundef 1)
  %911 = load ptr, ptr %11, align 8, !tbaa !5
  %912 = load i32, ptr %23, align 4, !tbaa !9
  %913 = load i32, ptr %23, align 4, !tbaa !9
  %914 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4)
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %911, i32 noundef 87177218, i32 noundef %912, i32 noundef 127, i8 noundef zeroext 0, i32 noundef %913, i32 noundef 0, i32 noundef %914)
  br label %928

915:                                              ; preds = %887, %884
  %916 = load i32, ptr %26, align 4, !tbaa !9
  %917 = icmp eq i32 %916, 1
  br i1 %917, label %918, label %927

918:                                              ; preds = %915
  %919 = load i32, ptr %22, align 4, !tbaa !9
  %920 = icmp ugt i32 %919, 0
  br i1 %920, label %921, label %927

921:                                              ; preds = %918
  %922 = load ptr, ptr %11, align 8, !tbaa !5
  %923 = load i32, ptr %16, align 4, !tbaa !9
  %924 = load i32, ptr %16, align 4, !tbaa !9
  %925 = load i32, ptr %23, align 4, !tbaa !9
  %926 = load i32, ptr %36, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %922, i32 noundef 73412611, i32 noundef %923, i32 noundef %924, i8 noundef zeroext 0, i32 noundef %925, i32 noundef 0, i32 noundef %926)
  br label %927

927:                                              ; preds = %921, %918, %915
  br label %928

928:                                              ; preds = %927, %909
  br label %947

929:                                              ; preds = %877
  %930 = load i32, ptr %21, align 4, !tbaa !9
  %931 = icmp ugt i32 %930, 0
  br i1 %931, label %932, label %946

932:                                              ; preds = %929
  %933 = load ptr, ptr %11, align 8, !tbaa !5
  %934 = load i32, ptr %16, align 4, !tbaa !9
  %935 = load i32, ptr %22, align 4, !tbaa !9
  %936 = load i32, ptr %17, align 4, !tbaa !9
  %937 = mul i32 %935, %936
  %938 = add i32 %934, %937
  %939 = load i32, ptr %16, align 4, !tbaa !9
  %940 = load i32, ptr %22, align 4, !tbaa !9
  %941 = load i32, ptr %17, align 4, !tbaa !9
  %942 = mul i32 %940, %941
  %943 = add i32 %939, %942
  %944 = load i32, ptr %23, align 4, !tbaa !9
  %945 = load i32, ptr %36, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %933, i32 noundef 73412611, i32 noundef %938, i32 noundef %943, i8 noundef zeroext 0, i32 noundef %944, i32 noundef 0, i32 noundef %945)
  br label %946

946:                                              ; preds = %932, %929
  br label %947

947:                                              ; preds = %946, %928
  br label %1042

948:                                              ; preds = %863
  %949 = load i32, ptr %25, align 4, !tbaa !9
  %950 = icmp eq i32 %949, 1
  br i1 %950, label %951, label %1041

951:                                              ; preds = %948
  %952 = load i32, ptr %19, align 4, !tbaa !9
  %953 = icmp eq i32 %952, 0
  br i1 %953, label %954, label %962

954:                                              ; preds = %951
  %955 = load ptr, ptr %13, align 8, !tbaa !5
  %956 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %955, i32 0, i32 2
  %957 = load i32, ptr %956, align 4, !tbaa !16
  %958 = load i32, ptr %15, align 4, !tbaa !9
  %959 = mul i32 %957, %958
  %960 = load i32, ptr %17, align 4, !tbaa !9
  %961 = mul i32 %959, %960
  br label %973

962:                                              ; preds = %951
  %963 = load ptr, ptr %13, align 8, !tbaa !5
  %964 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %963, i32 0, i32 2
  %965 = load i32, ptr %964, align 4, !tbaa !16
  %966 = load i32, ptr %15, align 4, !tbaa !9
  %967 = load i32, ptr %17, align 4, !tbaa !9
  %968 = sub i32 %967, 1
  %969 = mul i32 %966, %968
  %970 = load i32, ptr %19, align 4, !tbaa !9
  %971 = add i32 %969, %970
  %972 = mul i32 %965, %971
  br label %973

973:                                              ; preds = %962, %954
  %974 = phi i32 [ %961, %954 ], [ %972, %962 ]
  store i32 %974, ptr %32, align 4, !tbaa !9
  %975 = load i32, ptr %22, align 4, !tbaa !9
  %976 = icmp eq i32 %975, 0
  br i1 %976, label %977, label %1026

977:                                              ; preds = %973
  %978 = load ptr, ptr %11, align 8, !tbaa !5
  %979 = load ptr, ptr %12, align 8, !tbaa !5
  %980 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %979, i32 0, i32 1
  %981 = load i32, ptr %980, align 4, !tbaa !24
  %982 = load ptr, ptr %12, align 8, !tbaa !5
  %983 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %982, i32 0, i32 36
  %984 = load i32, ptr %983, align 4, !tbaa !25
  %985 = load i32, ptr %23, align 4, !tbaa !9
  %986 = load ptr, ptr %13, align 8, !tbaa !5
  %987 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %986, i32 0, i32 2
  %988 = load i32, ptr %987, align 4, !tbaa !16
  %989 = load i32, ptr %39, align 4, !tbaa !9
  %990 = load i32, ptr %40, align 4, !tbaa !9
  %991 = trunc i32 %990 to i8
  %992 = zext i8 %991 to i32
  %993 = icmp eq i32 0, %992
  br i1 %993, label %999, label %994

994:                                              ; preds = %977
  %995 = load i32, ptr %40, align 4, !tbaa !9
  %996 = trunc i32 %995 to i8
  %997 = zext i8 %996 to i32
  %998 = icmp slt i32 0, %997
  br i1 %998, label %999, label %1017

999:                                              ; preds = %994, %977
  %1000 = load i32, ptr %40, align 4, !tbaa !9
  %1001 = zext i32 %1000 to i64
  %1002 = mul i64 1, %1001
  %1003 = icmp ult i64 %1002, 255
  br i1 %1003, label %1004, label %1008

1004:                                             ; preds = %999
  %1005 = load i32, ptr %40, align 4, !tbaa !9
  %1006 = zext i32 %1005 to i64
  %1007 = mul i64 1, %1006
  br label %1009

1008:                                             ; preds = %999
  br label %1009

1009:                                             ; preds = %1008, %1004
  %1010 = phi i64 [ %1007, %1004 ], [ 255, %1008 ]
  %1011 = icmp ule i64 %1010, 255
  br i1 %1011, label %1012, label %1017

1012:                                             ; preds = %1009
  %1013 = load i32, ptr %40, align 4, !tbaa !9
  %1014 = uitofp i32 %1013 to double
  %1015 = fcmp ole double 0.000000e+00, %1014
  br i1 %1015, label %1016, label %1017

1016:                                             ; preds = %1012
  br label %1018

1017:                                             ; preds = %1012, %1009, %994
  call void @__assert_fail(ptr noundef @.str.5, ptr noundef @.str, i32 noundef 535, ptr noundef @__PRETTY_FUNCTION__.libxsmm_load_aarch64_2d_reg_block) #5
  unreachable

1018:                                             ; preds = %1016
  %1019 = load i32, ptr %40, align 4, !tbaa !9
  %1020 = trunc i32 %1019 to i8
  %1021 = load i8, ptr %33, align 1, !tbaa !20
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %978, i32 noundef %981, i32 noundef %984, i32 noundef %985, i32 noundef %988, i32 noundef %989, i32 noundef 1, i32 noundef 0, i8 noundef zeroext %1020, i8 noundef zeroext %1021)
  %1022 = load ptr, ptr %11, align 8, !tbaa !5
  %1023 = load i32, ptr %23, align 4, !tbaa !9
  %1024 = load i32, ptr %23, align 4, !tbaa !9
  %1025 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4)
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %1022, i32 noundef 87177218, i32 noundef %1023, i32 noundef 127, i8 noundef zeroext 0, i32 noundef %1024, i32 noundef 0, i32 noundef %1025)
  br label %1040

1026:                                             ; preds = %973
  %1027 = load i32, ptr %22, align 4, !tbaa !9
  %1028 = icmp ugt i32 %1027, 0
  br i1 %1028, label %1029, label %1039

1029:                                             ; preds = %1026
  %1030 = load ptr, ptr %11, align 8, !tbaa !5
  %1031 = load i32, ptr %16, align 4, !tbaa !9
  %1032 = load i32, ptr %21, align 4, !tbaa !9
  %1033 = add i32 %1031, %1032
  %1034 = load i32, ptr %16, align 4, !tbaa !9
  %1035 = load i32, ptr %21, align 4, !tbaa !9
  %1036 = add i32 %1034, %1035
  %1037 = load i32, ptr %23, align 4, !tbaa !9
  %1038 = load i32, ptr %36, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %1030, i32 noundef 73412611, i32 noundef %1033, i32 noundef %1036, i8 noundef zeroext 0, i32 noundef %1037, i32 noundef 0, i32 noundef %1038)
  br label %1039

1039:                                             ; preds = %1029, %1026
  br label %1040

1040:                                             ; preds = %1039, %1018
  br label %1041

1041:                                             ; preds = %1040, %948
  br label %1042

1042:                                             ; preds = %1041, %947
  br label %1043

1043:                                             ; preds = %1042, %852
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #4
  br label %1044

1044:                                             ; preds = %1043
  %1045 = load i32, ptr %21, align 4, !tbaa !9
  %1046 = add i32 %1045, 1
  store i32 %1046, ptr %21, align 4, !tbaa !9
  br label %724, !llvm.loop !26

1047:                                             ; preds = %724
  %1048 = load i32, ptr %27, align 4, !tbaa !9
  %1049 = icmp eq i32 %1048, 0
  br i1 %1049, label %1050, label %1071

1050:                                             ; preds = %1047
  %1051 = load i32, ptr %30, align 4, !tbaa !9
  %1052 = load i32, ptr %31, align 4, !tbaa !9
  %1053 = icmp ne i32 %1051, %1052
  br i1 %1053, label %1054, label %1070

1054:                                             ; preds = %1050
  %1055 = load ptr, ptr %11, align 8, !tbaa !5
  %1056 = load ptr, ptr %12, align 8, !tbaa !5
  %1057 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1056, i32 0, i32 1
  %1058 = load i32, ptr %1057, align 4, !tbaa !24
  %1059 = load ptr, ptr %12, align 8, !tbaa !5
  %1060 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1059, i32 0, i32 35
  %1061 = load i32, ptr %1060, align 4, !tbaa !22
  %1062 = load ptr, ptr %12, align 8, !tbaa !5
  %1063 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1062, i32 0, i32 1
  %1064 = load i32, ptr %1063, align 4, !tbaa !24
  %1065 = load i32, ptr %30, align 4, !tbaa !9
  %1066 = zext i32 %1065 to i64
  %1067 = load i32, ptr %31, align 4, !tbaa !9
  %1068 = zext i32 %1067 to i64
  %1069 = sub nsw i64 %1066, %1068
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1055, i32 noundef 4096, i32 noundef %1058, i32 noundef %1061, i32 noundef %1064, i64 noundef %1069)
  br label %1070

1070:                                             ; preds = %1054, %1050
  br label %1100

1071:                                             ; preds = %1047
  %1072 = load i32, ptr %24, align 4, !tbaa !9
  %1073 = icmp eq i32 %1072, 1
  br i1 %1073, label %1074, label %1099

1074:                                             ; preds = %1071
  %1075 = load i32, ptr %30, align 4, !tbaa !9
  %1076 = load ptr, ptr %13, align 8, !tbaa !5
  %1077 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1076, i32 0, i32 2
  %1078 = load i32, ptr %1077, align 4, !tbaa !16
  %1079 = icmp ne i32 %1075, %1078
  br i1 %1079, label %1080, label %1098

1080:                                             ; preds = %1074
  %1081 = load ptr, ptr %11, align 8, !tbaa !5
  %1082 = load ptr, ptr %12, align 8, !tbaa !5
  %1083 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1082, i32 0, i32 1
  %1084 = load i32, ptr %1083, align 4, !tbaa !24
  %1085 = load ptr, ptr %12, align 8, !tbaa !5
  %1086 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1085, i32 0, i32 35
  %1087 = load i32, ptr %1086, align 4, !tbaa !22
  %1088 = load ptr, ptr %12, align 8, !tbaa !5
  %1089 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1088, i32 0, i32 1
  %1090 = load i32, ptr %1089, align 4, !tbaa !24
  %1091 = load i32, ptr %30, align 4, !tbaa !9
  %1092 = zext i32 %1091 to i64
  %1093 = load ptr, ptr %13, align 8, !tbaa !5
  %1094 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1093, i32 0, i32 2
  %1095 = load i32, ptr %1094, align 4, !tbaa !16
  %1096 = zext i32 %1095 to i64
  %1097 = sub nsw i64 %1092, %1096
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1081, i32 noundef 4096, i32 noundef %1084, i32 noundef %1087, i32 noundef %1090, i64 noundef %1097)
  br label %1098

1098:                                             ; preds = %1080, %1074
  br label %1099

1099:                                             ; preds = %1098, %1071
  br label %1100

1100:                                             ; preds = %1099, %1070
  br label %1101

1101:                                             ; preds = %1100
  %1102 = load i32, ptr %22, align 4, !tbaa !9
  %1103 = add i32 %1102, 1
  store i32 %1103, ptr %22, align 4, !tbaa !9
  br label %719, !llvm.loop !28

1104:                                             ; preds = %719
  %1105 = load ptr, ptr %11, align 8, !tbaa !5
  %1106 = load ptr, ptr %12, align 8, !tbaa !5
  %1107 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1106, i32 0, i32 1
  %1108 = load i32, ptr %1107, align 4, !tbaa !24
  %1109 = load ptr, ptr %12, align 8, !tbaa !5
  %1110 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1109, i32 0, i32 35
  %1111 = load i32, ptr %1110, align 4, !tbaa !22
  %1112 = load ptr, ptr %12, align 8, !tbaa !5
  %1113 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1112, i32 0, i32 1
  %1114 = load i32, ptr %1113, align 4, !tbaa !24
  %1115 = load i32, ptr %32, align 4, !tbaa !9
  %1116 = zext i32 %1115 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1105, i32 noundef 4097, i32 noundef %1108, i32 noundef %1111, i32 noundef %1114, i64 noundef %1116)
  br label %1117

1117:                                             ; preds = %1104, %702
  store i32 1, ptr %37, align 4
  br label %1778

1118:                                             ; preds = %696, %690
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %1119

1119:                                             ; preds = %1762, %1118
  %1120 = load i32, ptr %22, align 4, !tbaa !9
  %1121 = load i32, ptr %18, align 4, !tbaa !9
  %1122 = icmp ult i32 %1120, %1121
  br i1 %1122, label %1123, label %1765

1123:                                             ; preds = %1119
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %1124

1124:                                             ; preds = %1705, %1123
  %1125 = load i32, ptr %21, align 4, !tbaa !9
  %1126 = load i32, ptr %17, align 4, !tbaa !9
  %1127 = icmp ult i32 %1125, %1126
  br i1 %1127, label %1128, label %1708

1128:                                             ; preds = %1124
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #4
  %1129 = load ptr, ptr %14, align 8, !tbaa !5
  %1130 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1129, i32 noundef 0)
  %1131 = icmp eq i32 1, %1130
  br i1 %1131, label %1144, label %1132

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 9, %1134
  br i1 %1135, label %1144, label %1136

1136:                                             ; preds = %1132
  %1137 = load ptr, ptr %14, align 8, !tbaa !5
  %1138 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1137, i32 noundef 0)
  %1139 = icmp eq i32 8, %1138
  br i1 %1139, label %1144, label %1140

1140:                                             ; preds = %1136
  %1141 = load ptr, ptr %14, align 8, !tbaa !5
  %1142 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1141, i32 noundef 0)
  %1143 = icmp eq i32 0, %1142
  br label %1144

1144:                                             ; preds = %1140, %1136, %1132, %1128
  %1145 = phi i1 [ true, %1136 ], [ true, %1132 ], [ true, %1128 ], [ %1143, %1140 ]
  %1146 = zext i1 %1145 to i64
  %1147 = select i1 %1145, i32 1, i32 0
  store i32 %1147, ptr %41, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #4
  %1148 = load i32, ptr %41, align 4, !tbaa !9
  %1149 = icmp ne i32 %1148, 0
  br i1 %1149, label %1150, label %1160

1150:                                             ; preds = %1144
  %1151 = load i32, ptr %21, align 4, !tbaa !9
  %1152 = load i32, ptr %17, align 4, !tbaa !9
  %1153 = sub i32 %1152, 1
  %1154 = icmp eq i32 %1151, %1153
  br i1 %1154, label %1155, label %1157

1155:                                             ; preds = %1150
  %1156 = load i32, ptr %19, align 4, !tbaa !9
  br label %1158

1157:                                             ; preds = %1150
  br label %1158

1158:                                             ; preds = %1157, %1155
  %1159 = phi i32 [ %1156, %1155 ], [ 0, %1157 ]
  br label %1178

1160:                                             ; preds = %1144
  %1161 = load i32, ptr %21, align 4, !tbaa !9
  %1162 = load i32, ptr %17, align 4, !tbaa !9
  %1163 = sub i32 %1162, 1
  %1164 = icmp eq i32 %1161, %1163
  br i1 %1164, label %1165, label %1174

1165:                                             ; preds = %1160
  %1166 = load i32, ptr %19, align 4, !tbaa !9
  %1167 = icmp ugt i32 %1166, 0
  br i1 %1167, label %1168, label %1170

1168:                                             ; preds = %1165
  %1169 = load i32, ptr %19, align 4, !tbaa !9
  br label %1172

1170:                                             ; preds = %1165
  %1171 = load i32, ptr %15, align 4, !tbaa !9
  br label %1172

1172:                                             ; preds = %1170, %1168
  %1173 = phi i32 [ %1169, %1168 ], [ %1171, %1170 ]
  br label %1176

1174:                                             ; preds = %1160
  %1175 = load i32, ptr %15, align 4, !tbaa !9
  br label %1176

1176:                                             ; preds = %1174, %1172
  %1177 = phi i32 [ %1173, %1172 ], [ %1175, %1174 ]
  br label %1178

1178:                                             ; preds = %1176, %1158
  %1179 = phi i32 [ %1159, %1158 ], [ %1177, %1176 ]
  store i32 %1179, ptr %42, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #4
  %1180 = load i32, ptr %41, align 4, !tbaa !9
  %1181 = icmp ne i32 %1180, 0
  br i1 %1181, label %1182, label %1195

1182:                                             ; preds = %1178
  %1183 = load i32, ptr %21, align 4, !tbaa !9
  %1184 = load i32, ptr %17, align 4, !tbaa !9
  %1185 = sub i32 %1184, 1
  %1186 = icmp eq i32 %1183, %1185
  br i1 %1186, label %1187, label %1192

1187:                                             ; preds = %1182
  %1188 = load i32, ptr %19, align 4, !tbaa !9
  %1189 = icmp ugt i32 %1188, 0
  %1190 = zext i1 %1189 to i64
  %1191 = select i1 %1189, i32 1, i32 0
  br label %1193

1192:                                             ; preds = %1182
  br label %1193

1193:                                             ; preds = %1192, %1187
  %1194 = phi i32 [ %1191, %1187 ], [ 0, %1192 ]
  br label %1208

1195:                                             ; preds = %1178
  %1196 = load i32, ptr %21, align 4, !tbaa !9
  %1197 = load i32, ptr %17, align 4, !tbaa !9
  %1198 = sub i32 %1197, 1
  %1199 = icmp eq i32 %1196, %1198
  br i1 %1199, label %1200, label %1205

1200:                                             ; preds = %1195
  %1201 = load i32, ptr %19, align 4, !tbaa !9
  %1202 = icmp ugt i32 %1201, 0
  %1203 = zext i1 %1202 to i64
  %1204 = select i1 %1202, i32 1, i32 2
  br label %1206

1205:                                             ; preds = %1195
  br label %1206

1206:                                             ; preds = %1205, %1200
  %1207 = phi i32 [ %1204, %1200 ], [ 2, %1205 ]
  br label %1208

1208:                                             ; preds = %1206, %1193
  %1209 = phi i32 [ %1194, %1193 ], [ %1207, %1206 ]
  store i32 %1209, ptr %43, align 4, !tbaa !9
  %1210 = load i32, ptr %16, align 4, !tbaa !9
  %1211 = load i32, ptr %22, align 4, !tbaa !9
  %1212 = load i32, ptr %17, align 4, !tbaa !9
  %1213 = mul i32 %1211, %1212
  %1214 = add i32 %1210, %1213
  %1215 = load i32, ptr %21, align 4, !tbaa !9
  %1216 = add i32 %1214, %1215
  store i32 %1216, ptr %23, align 4, !tbaa !9
  %1217 = load i32, ptr %27, align 4, !tbaa !9
  %1218 = icmp eq i32 %1217, 0
  br i1 %1218, label %1219, label %1343

1219:                                             ; preds = %1208
  %1220 = load i32, ptr %30, align 4, !tbaa !9
  %1221 = load i32, ptr %18, align 4, !tbaa !9
  %1222 = mul i32 %1220, %1221
  store i32 %1222, ptr %32, align 4, !tbaa !9
  %1223 = load ptr, ptr %11, align 8, !tbaa !5
  %1224 = load ptr, ptr %12, align 8, !tbaa !5
  %1225 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1224, i32 0, i32 1
  %1226 = load i32, ptr %1225, align 4, !tbaa !24
  %1227 = load ptr, ptr %12, align 8, !tbaa !5
  %1228 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1227, i32 0, i32 36
  %1229 = load i32, ptr %1228, align 4, !tbaa !25
  %1230 = load i32, ptr %23, align 4, !tbaa !9
  %1231 = load ptr, ptr %13, align 8, !tbaa !5
  %1232 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1231, i32 0, i32 2
  %1233 = load i32, ptr %1232, align 4, !tbaa !16
  %1234 = load i32, ptr %42, align 4, !tbaa !9
  %1235 = load i32, ptr %43, align 4, !tbaa !9
  %1236 = trunc i32 %1235 to i8
  %1237 = zext i8 %1236 to i32
  %1238 = icmp eq i32 0, %1237
  br i1 %1238, label %1244, label %1239

1239:                                             ; preds = %1219
  %1240 = load i32, ptr %43, align 4, !tbaa !9
  %1241 = trunc i32 %1240 to i8
  %1242 = zext i8 %1241 to i32
  %1243 = icmp slt i32 0, %1242
  br i1 %1243, label %1244, label %1262

1244:                                             ; preds = %1239, %1219
  %1245 = load i32, ptr %43, align 4, !tbaa !9
  %1246 = zext i32 %1245 to i64
  %1247 = mul i64 1, %1246
  %1248 = icmp ult i64 %1247, 255
  br i1 %1248, label %1249, label %1253

1249:                                             ; preds = %1244
  %1250 = load i32, ptr %43, align 4, !tbaa !9
  %1251 = zext i32 %1250 to i64
  %1252 = mul i64 1, %1251
  br label %1254

1253:                                             ; preds = %1244
  br label %1254

1254:                                             ; preds = %1253, %1249
  %1255 = phi i64 [ %1252, %1249 ], [ 255, %1253 ]
  %1256 = icmp ule i64 %1255, 255
  br i1 %1256, label %1257, label %1262

1257:                                             ; preds = %1254
  %1258 = load i32, ptr %43, align 4, !tbaa !9
  %1259 = uitofp i32 %1258 to double
  %1260 = fcmp ole double 0.000000e+00, %1259
  br i1 %1260, label %1261, label %1262

1261:                                             ; preds = %1257
  br label %1263

1262:                                             ; preds = %1257, %1254, %1239
  call void @__assert_fail(ptr noundef @.str.5, ptr noundef @.str, i32 noundef 578, ptr noundef @__PRETTY_FUNCTION__.libxsmm_load_aarch64_2d_reg_block) #5
  unreachable

1263:                                             ; preds = %1261
  %1264 = load i32, ptr %43, align 4, !tbaa !9
  %1265 = trunc i32 %1264 to i8
  %1266 = load i8, ptr %33, align 1, !tbaa !20
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %1223, i32 noundef %1226, i32 noundef %1229, i32 noundef %1230, i32 noundef %1233, i32 noundef %1234, i32 noundef 1, i32 noundef 0, i8 noundef zeroext %1265, i8 noundef zeroext %1266)
  %1267 = load ptr, ptr %14, align 8, !tbaa !5
  %1268 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1267, i32 noundef 4)
  %1269 = icmp eq i32 1, %1268
  br i1 %1269, label %1270, label %1274

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

1274:                                             ; preds = %1270, %1263
  %1275 = load ptr, ptr %14, align 8, !tbaa !5
  %1276 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1275, i32 noundef 3)
  %1277 = icmp eq i32 1, %1276
  br i1 %1277, label %1278, label %1285

1278:                                             ; preds = %1274
  %1279 = load ptr, ptr %14, align 8, !tbaa !5
  %1280 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1279, i32 noundef 0)
  %1281 = icmp eq i32 2, %1280
  br i1 %1281, label %1282, label %1285

1282:                                             ; preds = %1278, %1270
  %1283 = load ptr, ptr %11, align 8, !tbaa !5
  %1284 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %1283, i32 noundef %1284, i32 noundef 0)
  br label %1285

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

1291:                                             ; preds = %1285
  %1292 = load ptr, ptr %14, align 8, !tbaa !5
  %1293 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1292, i32 0, i32 10
  %1294 = load i16, ptr %1293, align 1, !tbaa !21
  %1295 = zext i16 %1294 to i32
  %1296 = icmp eq i32 %1295, 43
  br i1 %1296, label %1297, label %1313

1297:                                             ; preds = %1291
  %1298 = load ptr, ptr %14, align 8, !tbaa !5
  %1299 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1298, i32 noundef 0)
  %1300 = icmp eq i32 12, %1299
  br i1 %1300, label %1301, label %1312

1301:                                             ; preds = %1297
  %1302 = load ptr, ptr %14, align 8, !tbaa !5
  %1303 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1302, i32 noundef 3)
  %1304 = icmp eq i32 1, %1303
  br i1 %1304, label %1305, label %1312

1305:                                             ; preds = %1301
  %1306 = load ptr, ptr %11, align 8, !tbaa !5
  %1307 = load i32, ptr %23, align 4, !tbaa !9
  %1308 = load ptr, ptr %13, align 8, !tbaa !5
  %1309 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1308, i32 0, i32 118
  %1310 = load i32, ptr %1309, align 4, !tbaa !29
  %1311 = load i32, ptr %28, align 4, !tbaa !9
  call void @libxsmm_generator_vcvt_i8f32_aarch64(ptr noundef %1306, i32 noundef %1307, i32 noundef %1310, i32 noundef 0, i32 noundef %1311)
  br label %1312

1312:                                             ; preds = %1305, %1301, %1297
  br label %1313

1313:                                             ; preds = %1312, %1291, %1285
  %1314 = load ptr, ptr %14, align 8, !tbaa !5
  %1315 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1314, i32 0, i32 11
  %1316 = load i8, ptr %1315, align 1, !tbaa !11
  %1317 = zext i8 %1316 to i32
  %1318 = icmp eq i32 %1317, 1
  br i1 %1318, label %1319, label %1342

1319:                                             ; preds = %1313
  %1320 = load ptr, ptr %14, align 8, !tbaa !5
  %1321 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1320, i32 0, i32 10
  %1322 = load i16, ptr %1321, align 1, !tbaa !21
  %1323 = zext i16 %1322 to i32
  %1324 = icmp eq i32 %1323, 42
  br i1 %1324, label %1325, label %1342

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

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

1333:                                             ; preds = %1329
  %1334 = load ptr, ptr %11, align 8, !tbaa !5
  %1335 = load i32, ptr %23, align 4, !tbaa !9
  %1336 = load ptr, ptr %13, align 8, !tbaa !5
  %1337 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1336, i32 0, i32 118
  %1338 = load i32, ptr %1337, align 4, !tbaa !29
  %1339 = load i32, ptr %28, align 4, !tbaa !9
  %1340 = load i32, ptr %29, align 4, !tbaa !9
  call void @libxsmm_generator_vcvt_f32i8_aarch64(ptr noundef %1334, i32 noundef %1335, i32 noundef %1338, i32 noundef 0, i32 noundef %1339, i32 noundef %1340)
  br label %1341

1341:                                             ; preds = %1333, %1329, %1325
  br label %1342

1342:                                             ; preds = %1341, %1319, %1313
  br label %1704

1343:                                             ; preds = %1208
  %1344 = load i32, ptr %24, align 4, !tbaa !9
  %1345 = icmp eq i32 %1344, 1
  br i1 %1345, label %1349, label %1346

1346:                                             ; preds = %1343
  %1347 = load i32, ptr %26, align 4, !tbaa !9
  %1348 = icmp eq i32 %1347, 1
  br i1 %1348, label %1349, label %1536

1349:                                             ; preds = %1346, %1343
  %1350 = load i32, ptr %26, align 4, !tbaa !9
  %1351 = icmp eq i32 %1350, 1
  br i1 %1351, label %1352, label %1356

1352:                                             ; preds = %1349
  %1353 = load ptr, ptr %13, align 8, !tbaa !5
  %1354 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1353, i32 0, i32 2
  %1355 = load i32, ptr %1354, align 4, !tbaa !16
  br label %1360

1356:                                             ; preds = %1349
  %1357 = load i32, ptr %30, align 4, !tbaa !9
  %1358 = load i32, ptr %18, align 4, !tbaa !9
  %1359 = mul i32 %1357, %1358
  br label %1360

1360:                                             ; preds = %1356, %1352
  %1361 = phi i32 [ %1355, %1352 ], [ %1359, %1356 ]
  store i32 %1361, ptr %32, align 4, !tbaa !9
  %1362 = load i32, ptr %21, align 4, !tbaa !9
  %1363 = icmp eq i32 %1362, 0
  br i1 %1363, label %1364, label %1482

1364:                                             ; preds = %1360
  %1365 = load i32, ptr %24, align 4, !tbaa !9
  %1366 = icmp eq i32 %1365, 1
  br i1 %1366, label %1373, label %1367

1367:                                             ; preds = %1364
  %1368 = load i32, ptr %26, align 4, !tbaa !9
  %1369 = icmp eq i32 %1368, 1
  br i1 %1369, label %1370, label %1441

1370:                                             ; preds = %1367
  %1371 = load i32, ptr %22, align 4, !tbaa !9
  %1372 = icmp eq i32 %1371, 0
  br i1 %1372, label %1373, label %1441

1373:                                             ; preds = %1370, %1364
  %1374 = load ptr, ptr %11, align 8, !tbaa !5
  %1375 = load ptr, ptr %12, align 8, !tbaa !5
  %1376 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1375, i32 0, i32 1
  %1377 = load i32, ptr %1376, align 4, !tbaa !24
  %1378 = load ptr, ptr %12, align 8, !tbaa !5
  %1379 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1378, i32 0, i32 36
  %1380 = load i32, ptr %1379, align 4, !tbaa !25
  %1381 = load i32, ptr %23, align 4, !tbaa !9
  %1382 = load ptr, ptr %13, align 8, !tbaa !5
  %1383 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1382, i32 0, i32 2
  %1384 = load i32, ptr %1383, align 4, !tbaa !16
  %1385 = load i32, ptr %21, align 4, !tbaa !9
  %1386 = load i32, ptr %17, align 4, !tbaa !9
  %1387 = sub i32 %1386, 1
  %1388 = icmp eq i32 %1385, %1387
  br i1 %1388, label %1389, label %1391

1389:                                             ; preds = %1373
  %1390 = load i32, ptr %19, align 4, !tbaa !9
  br label %1392

1391:                                             ; preds = %1373
  br label %1392

1392:                                             ; preds = %1391, %1389
  %1393 = phi i32 [ %1390, %1389 ], [ 0, %1391 ]
  call void @libxsmm_generator_bcastload_masked_vreg_aarch64_asimd(ptr noundef %1374, i32 noundef %1377, i32 noundef %1380, i32 noundef %1381, i32 noundef %1384, i32 noundef %1393, i32 noundef 1)
  %1394 = load ptr, ptr %14, align 8, !tbaa !5
  %1395 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1394, i32 noundef 4)
  %1396 = icmp eq i32 1, %1395
  br i1 %1396, label %1397, label %1401

1397:                                             ; preds = %1392
  %1398 = load ptr, ptr %14, align 8, !tbaa !5
  %1399 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1398, i32 noundef 0)
  %1400 = icmp eq i32 2, %1399
  br i1 %1400, label %1409, label %1401

1401:                                             ; preds = %1397, %1392
  %1402 = load ptr, ptr %14, align 8, !tbaa !5
  %1403 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1402, i32 noundef 3)
  %1404 = icmp eq i32 1, %1403
  br i1 %1404, label %1405, label %1412

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

1409:                                             ; preds = %1405, %1397
  %1410 = load ptr, ptr %11, align 8, !tbaa !5
  %1411 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %1410, i32 noundef %1411, i32 noundef 0)
  br label %1412

1412:                                             ; preds = %1409, %1405, %1401
  %1413 = load ptr, ptr %14, align 8, !tbaa !5
  %1414 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1413, i32 0, i32 11
  %1415 = load i8, ptr %1414, align 1, !tbaa !11
  %1416 = zext i8 %1415 to i32
  %1417 = icmp eq i32 %1416, 1
  br i1 %1417, label %1418, label %1440

1418:                                             ; preds = %1412
  %1419 = load ptr, ptr %14, align 8, !tbaa !5
  %1420 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1419, i32 0, i32 10
  %1421 = load i16, ptr %1420, align 1, !tbaa !21
  %1422 = zext i16 %1421 to i32
  %1423 = icmp eq i32 %1422, 43
  br i1 %1423, label %1424, label %1440

1424:                                             ; preds = %1418
  %1425 = load ptr, ptr %14, align 8, !tbaa !5
  %1426 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1425, i32 noundef 0)
  %1427 = icmp eq i32 12, %1426
  br i1 %1427, label %1428, label %1439

1428:                                             ; preds = %1424
  %1429 = load ptr, ptr %14, align 8, !tbaa !5
  %1430 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1429, i32 noundef 3)
  %1431 = icmp eq i32 1, %1430
  br i1 %1431, label %1432, label %1439

1432:                                             ; preds = %1428
  %1433 = load ptr, ptr %11, align 8, !tbaa !5
  %1434 = load i32, ptr %23, align 4, !tbaa !9
  %1435 = load ptr, ptr %13, align 8, !tbaa !5
  %1436 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1435, i32 0, i32 118
  %1437 = load i32, ptr %1436, align 4, !tbaa !29
  %1438 = load i32, ptr %28, align 4, !tbaa !9
  call void @libxsmm_generator_vcvt_i8f32_aarch64(ptr noundef %1433, i32 noundef %1434, i32 noundef %1437, i32 noundef 0, i32 noundef %1438)
  br label %1439

1439:                                             ; preds = %1432, %1428, %1424
  br label %1440

1440:                                             ; preds = %1439, %1418, %1412
  br label %1481

1441:                                             ; preds = %1370, %1367
  %1442 = load i32, ptr %26, align 4, !tbaa !9
  %1443 = icmp eq i32 %1442, 1
  br i1 %1443, label %1444, label %1480

1444:                                             ; preds = %1441
  %1445 = load i32, ptr %22, align 4, !tbaa !9
  %1446 = icmp ugt i32 %1445, 0
  br i1 %1446, label %1447, label %1480

1447:                                             ; preds = %1444
  %1448 = load ptr, ptr %14, align 8, !tbaa !5
  %1449 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1448, i32 0, i32 11
  %1450 = load i8, ptr %1449, align 1, !tbaa !11
  %1451 = zext i8 %1450 to i32
  %1452 = icmp eq i32 %1451, 2
  br i1 %1452, label %1459, label %1453

1453:                                             ; preds = %1447
  %1454 = load ptr, ptr %14, align 8, !tbaa !5
  %1455 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1454, i32 0, i32 11
  %1456 = load i8, ptr %1455, align 1, !tbaa !11
  %1457 = zext i8 %1456 to i32
  %1458 = icmp eq i32 %1457, 3
  br i1 %1458, label %1459, label %1480

1459:                                             ; preds = %1453, %1447
  %1460 = load i8, ptr %33, align 1, !tbaa !20
  %1461 = icmp ne i8 %1460, 0
  br i1 %1461, label %1462, label %1468

1462:                                             ; preds = %1459
  %1463 = load ptr, ptr %11, align 8, !tbaa !5
  %1464 = load i32, ptr %16, align 4, !tbaa !9
  %1465 = load i32, ptr %16, align 4, !tbaa !9
  %1466 = load i32, ptr %23, align 4, !tbaa !9
  %1467 = load i32, ptr %36, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %1463, i32 noundef 73412611, i32 noundef %1464, i32 noundef %1465, i8 noundef zeroext 0, i32 noundef %1466, i32 noundef 0, i32 noundef %1467)
  br label %1479

1468:                                             ; preds = %1459
  %1469 = load ptr, ptr %11, align 8, !tbaa !5
  %1470 = load i32, ptr %16, align 4, !tbaa !9
  %1471 = load i32, ptr %16, align 4, !tbaa !9
  %1472 = load i32, ptr %23, align 4, !tbaa !9
  %1473 = load ptr, ptr %13, align 8, !tbaa !5
  %1474 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1473, i32 0, i32 2
  %1475 = load i32, ptr %1474, align 4, !tbaa !16
  %1476 = icmp eq i32 %1475, 4
  %1477 = zext i1 %1476 to i64
  %1478 = select i1 %1476, i32 5, i32 7
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %1469, i32 noundef 245373971, i32 noundef %1470, i32 noundef %1471, i8 noundef zeroext 0, i32 noundef %1472, i32 noundef %1478)
  br label %1479

1479:                                             ; preds = %1468, %1462
  br label %1480

1480:                                             ; preds = %1479, %1453, %1444, %1441
  br label %1481

1481:                                             ; preds = %1480, %1440
  br label %1482

1482:                                             ; preds = %1481, %1360
  %1483 = load ptr, ptr %14, align 8, !tbaa !5
  %1484 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1483, i32 0, i32 11
  %1485 = load i8, ptr %1484, align 1, !tbaa !11
  %1486 = zext i8 %1485 to i32
  %1487 = icmp eq i32 %1486, 2
  br i1 %1487, label %1494, label %1488

1488:                                             ; preds = %1482
  %1489 = load ptr, ptr %14, align 8, !tbaa !5
  %1490 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1489, i32 0, i32 11
  %1491 = load i8, ptr %1490, align 1, !tbaa !11
  %1492 = zext i8 %1491 to i32
  %1493 = icmp eq i32 %1492, 3
  br i1 %1493, label %1494, label %1535

1494:                                             ; preds = %1488, %1482
  %1495 = load i32, ptr %21, align 4, !tbaa !9
  %1496 = icmp ugt i32 %1495, 0
  br i1 %1496, label %1497, label %1534

1497:                                             ; preds = %1494
  %1498 = load i8, ptr %33, align 1, !tbaa !20
  %1499 = icmp ne i8 %1498, 0
  br i1 %1499, label %1500, label %1514

1500:                                             ; preds = %1497
  %1501 = load ptr, ptr %11, align 8, !tbaa !5
  %1502 = load i32, ptr %16, align 4, !tbaa !9
  %1503 = load i32, ptr %22, align 4, !tbaa !9
  %1504 = load i32, ptr %17, align 4, !tbaa !9
  %1505 = mul i32 %1503, %1504
  %1506 = add i32 %1502, %1505
  %1507 = load i32, ptr %16, align 4, !tbaa !9
  %1508 = load i32, ptr %22, align 4, !tbaa !9
  %1509 = load i32, ptr %17, align 4, !tbaa !9
  %1510 = mul i32 %1508, %1509
  %1511 = add i32 %1507, %1510
  %1512 = load i32, ptr %23, align 4, !tbaa !9
  %1513 = load i32, ptr %36, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %1501, i32 noundef 73412611, i32 noundef %1506, i32 noundef %1511, i8 noundef zeroext 0, i32 noundef %1512, i32 noundef 0, i32 noundef %1513)
  br label %1533

1514:                                             ; preds = %1497
  %1515 = load ptr, ptr %11, align 8, !tbaa !5
  %1516 = load i32, ptr %16, align 4, !tbaa !9
  %1517 = load i32, ptr %22, align 4, !tbaa !9
  %1518 = load i32, ptr %17, align 4, !tbaa !9
  %1519 = mul i32 %1517, %1518
  %1520 = add i32 %1516, %1519
  %1521 = load i32, ptr %16, align 4, !tbaa !9
  %1522 = load i32, ptr %22, align 4, !tbaa !9
  %1523 = load i32, ptr %17, align 4, !tbaa !9
  %1524 = mul i32 %1522, %1523
  %1525 = add i32 %1521, %1524
  %1526 = load i32, ptr %23, align 4, !tbaa !9
  %1527 = load ptr, ptr %13, align 8, !tbaa !5
  %1528 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1527, i32 0, i32 2
  %1529 = load i32, ptr %1528, align 4, !tbaa !16
  %1530 = icmp eq i32 %1529, 4
  %1531 = zext i1 %1530 to i64
  %1532 = select i1 %1530, i32 5, i32 7
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %1515, i32 noundef 245373971, i32 noundef %1520, i32 noundef %1525, i8 noundef zeroext 0, i32 noundef %1526, i32 noundef %1532)
  br label %1533

1533:                                             ; preds = %1514, %1500
  br label %1534

1534:                                             ; preds = %1533, %1494
  br label %1535

1535:                                             ; preds = %1534, %1488
  br label %1536

1536:                                             ; preds = %1535, %1346
  %1537 = load i32, ptr %25, align 4, !tbaa !9
  %1538 = icmp eq i32 %1537, 1
  br i1 %1538, label %1539, label %1703

1539:                                             ; preds = %1536
  %1540 = load i32, ptr %19, align 4, !tbaa !9
  %1541 = icmp eq i32 %1540, 0
  br i1 %1541, label %1542, label %1550

1542:                                             ; preds = %1539
  %1543 = load ptr, ptr %13, align 8, !tbaa !5
  %1544 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1543, i32 0, i32 2
  %1545 = load i32, ptr %1544, align 4, !tbaa !16
  %1546 = load i32, ptr %15, align 4, !tbaa !9
  %1547 = mul i32 %1545, %1546
  %1548 = load i32, ptr %17, align 4, !tbaa !9
  %1549 = mul i32 %1547, %1548
  br label %1561

1550:                                             ; preds = %1539
  %1551 = load ptr, ptr %13, align 8, !tbaa !5
  %1552 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1551, i32 0, i32 2
  %1553 = load i32, ptr %1552, align 4, !tbaa !16
  %1554 = load i32, ptr %15, align 4, !tbaa !9
  %1555 = load i32, ptr %17, align 4, !tbaa !9
  %1556 = sub i32 %1555, 1
  %1557 = mul i32 %1554, %1556
  %1558 = load i32, ptr %19, align 4, !tbaa !9
  %1559 = add i32 %1557, %1558
  %1560 = mul i32 %1553, %1559
  br label %1561

1561:                                             ; preds = %1550, %1542
  %1562 = phi i32 [ %1549, %1542 ], [ %1560, %1550 ]
  store i32 %1562, ptr %32, align 4, !tbaa !9
  %1563 = load i32, ptr %22, align 4, !tbaa !9
  %1564 = icmp eq i32 %1563, 0
  br i1 %1564, label %1565, label %1657

1565:                                             ; preds = %1561
  %1566 = load ptr, ptr %11, align 8, !tbaa !5
  %1567 = load ptr, ptr %12, align 8, !tbaa !5
  %1568 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1567, i32 0, i32 1
  %1569 = load i32, ptr %1568, align 4, !tbaa !24
  %1570 = load ptr, ptr %12, align 8, !tbaa !5
  %1571 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1570, i32 0, i32 36
  %1572 = load i32, ptr %1571, align 4, !tbaa !25
  %1573 = load i32, ptr %23, align 4, !tbaa !9
  %1574 = load ptr, ptr %13, align 8, !tbaa !5
  %1575 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1574, i32 0, i32 2
  %1576 = load i32, ptr %1575, align 4, !tbaa !16
  %1577 = load i32, ptr %42, align 4, !tbaa !9
  %1578 = load i32, ptr %43, align 4, !tbaa !9
  %1579 = trunc i32 %1578 to i8
  %1580 = zext i8 %1579 to i32
  %1581 = icmp eq i32 0, %1580
  br i1 %1581, label %1587, label %1582

1582:                                             ; preds = %1565
  %1583 = load i32, ptr %43, align 4, !tbaa !9
  %1584 = trunc i32 %1583 to i8
  %1585 = zext i8 %1584 to i32
  %1586 = icmp slt i32 0, %1585
  br i1 %1586, label %1587, label %1605

1587:                                             ; preds = %1582, %1565
  %1588 = load i32, ptr %43, align 4, !tbaa !9
  %1589 = zext i32 %1588 to i64
  %1590 = mul i64 1, %1589
  %1591 = icmp ult i64 %1590, 255
  br i1 %1591, label %1592, label %1596

1592:                                             ; preds = %1587
  %1593 = load i32, ptr %43, align 4, !tbaa !9
  %1594 = zext i32 %1593 to i64
  %1595 = mul i64 1, %1594
  br label %1597

1596:                                             ; preds = %1587
  br label %1597

1597:                                             ; preds = %1596, %1592
  %1598 = phi i64 [ %1595, %1592 ], [ 255, %1596 ]
  %1599 = icmp ule i64 %1598, 255
  br i1 %1599, label %1600, label %1605

1600:                                             ; preds = %1597
  %1601 = load i32, ptr %43, align 4, !tbaa !9
  %1602 = uitofp i32 %1601 to double
  %1603 = fcmp ole double 0.000000e+00, %1602
  br i1 %1603, label %1604, label %1605

1604:                                             ; preds = %1600
  br label %1606

1605:                                             ; preds = %1600, %1597, %1582
  call void @__assert_fail(ptr noundef @.str.5, ptr noundef @.str, i32 noundef 647, ptr noundef @__PRETTY_FUNCTION__.libxsmm_load_aarch64_2d_reg_block) #5
  unreachable

1606:                                             ; preds = %1604
  %1607 = load i32, ptr %43, align 4, !tbaa !9
  %1608 = trunc i32 %1607 to i8
  %1609 = load i8, ptr %33, align 1, !tbaa !20
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %1566, i32 noundef %1569, i32 noundef %1572, i32 noundef %1573, i32 noundef %1576, i32 noundef %1577, i32 noundef 1, i32 noundef 0, i8 noundef zeroext %1608, i8 noundef zeroext %1609)
  %1610 = load ptr, ptr %14, align 8, !tbaa !5
  %1611 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1610, i32 noundef 4)
  %1612 = icmp eq i32 1, %1611
  br i1 %1612, label %1613, label %1617

1613:                                             ; preds = %1606
  %1614 = load ptr, ptr %14, align 8, !tbaa !5
  %1615 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1614, i32 noundef 0)
  %1616 = icmp eq i32 2, %1615
  br i1 %1616, label %1625, label %1617

1617:                                             ; preds = %1613, %1606
  %1618 = load ptr, ptr %14, align 8, !tbaa !5
  %1619 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1618, i32 noundef 3)
  %1620 = icmp eq i32 1, %1619
  br i1 %1620, label %1621, label %1628

1621:                                             ; preds = %1617
  %1622 = load ptr, ptr %14, align 8, !tbaa !5
  %1623 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1622, i32 noundef 0)
  %1624 = icmp eq i32 2, %1623
  br i1 %1624, label %1625, label %1628

1625:                                             ; preds = %1621, %1613
  %1626 = load ptr, ptr %11, align 8, !tbaa !5
  %1627 = load i32, ptr %23, align 4, !tbaa !9
  call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %1626, i32 noundef %1627, i32 noundef 0)
  br label %1628

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

1634:                                             ; preds = %1628
  %1635 = load ptr, ptr %14, align 8, !tbaa !5
  %1636 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1635, i32 0, i32 10
  %1637 = load i16, ptr %1636, align 1, !tbaa !21
  %1638 = zext i16 %1637 to i32
  %1639 = icmp eq i32 %1638, 43
  br i1 %1639, label %1640, label %1656

1640:                                             ; preds = %1634
  %1641 = load ptr, ptr %14, align 8, !tbaa !5
  %1642 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1641, i32 noundef 0)
  %1643 = icmp eq i32 12, %1642
  br i1 %1643, label %1644, label %1655

1644:                                             ; preds = %1640
  %1645 = load ptr, ptr %14, align 8, !tbaa !5
  %1646 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1645, i32 noundef 3)
  %1647 = icmp eq i32 1, %1646
  br i1 %1647, label %1648, label %1655

1648:                                             ; preds = %1644
  %1649 = load ptr, ptr %11, align 8, !tbaa !5
  %1650 = load i32, ptr %23, align 4, !tbaa !9
  %1651 = load ptr, ptr %13, align 8, !tbaa !5
  %1652 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1651, i32 0, i32 118
  %1653 = load i32, ptr %1652, align 4, !tbaa !29
  %1654 = load i32, ptr %28, align 4, !tbaa !9
  call void @libxsmm_generator_vcvt_i8f32_aarch64(ptr noundef %1649, i32 noundef %1650, i32 noundef %1653, i32 noundef 0, i32 noundef %1654)
  br label %1655

1655:                                             ; preds = %1648, %1644, %1640
  br label %1656

1656:                                             ; preds = %1655, %1634, %1628
  br label %1657

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

1663:                                             ; preds = %1657
  %1664 = load ptr, ptr %14, align 8, !tbaa !5
  %1665 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1664, i32 0, i32 11
  %1666 = load i8, ptr %1665, align 1, !tbaa !11
  %1667 = zext i8 %1666 to i32
  %1668 = icmp eq i32 %1667, 3
  br i1 %1668, label %1669, label %1702

1669:                                             ; preds = %1663, %1657
  %1670 = load i32, ptr %22, align 4, !tbaa !9
  %1671 = icmp ugt i32 %1670, 0
  br i1 %1671, label %1672, label %1701

1672:                                             ; preds = %1669
  %1673 = load i8, ptr %33, align 1, !tbaa !20
  %1674 = icmp ne i8 %1673, 0
  br i1 %1674, label %1675, label %1685

1675:                                             ; preds = %1672
  %1676 = load ptr, ptr %11, align 8, !tbaa !5
  %1677 = load i32, ptr %16, align 4, !tbaa !9
  %1678 = load i32, ptr %21, align 4, !tbaa !9
  %1679 = add i32 %1677, %1678
  %1680 = load i32, ptr %16, align 4, !tbaa !9
  %1681 = load i32, ptr %21, align 4, !tbaa !9
  %1682 = add i32 %1680, %1681
  %1683 = load i32, ptr %23, align 4, !tbaa !9
  %1684 = load i32, ptr %36, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %1676, i32 noundef 73412611, i32 noundef %1679, i32 noundef %1682, i8 noundef zeroext 0, i32 noundef %1683, i32 noundef 0, i32 noundef %1684)
  br label %1700

1685:                                             ; preds = %1672
  %1686 = load ptr, ptr %11, align 8, !tbaa !5
  %1687 = load i32, ptr %16, align 4, !tbaa !9
  %1688 = load i32, ptr %21, align 4, !tbaa !9
  %1689 = add i32 %1687, %1688
  %1690 = load i32, ptr %16, align 4, !tbaa !9
  %1691 = load i32, ptr %21, align 4, !tbaa !9
  %1692 = add i32 %1690, %1691
  %1693 = load i32, ptr %23, align 4, !tbaa !9
  %1694 = load ptr, ptr %13, align 8, !tbaa !5
  %1695 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1694, i32 0, i32 2
  %1696 = load i32, ptr %1695, align 4, !tbaa !16
  %1697 = icmp eq i32 %1696, 4
  %1698 = zext i1 %1697 to i64
  %1699 = select i1 %1697, i32 5, i32 7
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %1686, i32 noundef 245373971, i32 noundef %1689, i32 noundef %1692, i8 noundef zeroext 0, i32 noundef %1693, i32 noundef %1699)
  br label %1700

1700:                                             ; preds = %1685, %1675
  br label %1701

1701:                                             ; preds = %1700, %1669
  br label %1702

1702:                                             ; preds = %1701, %1663
  br label %1703

1703:                                             ; preds = %1702, %1536
  br label %1704

1704:                                             ; preds = %1703, %1342
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #4
  br label %1705

1705:                                             ; preds = %1704
  %1706 = load i32, ptr %21, align 4, !tbaa !9
  %1707 = add i32 %1706, 1
  store i32 %1707, ptr %21, align 4, !tbaa !9
  br label %1124, !llvm.loop !30

1708:                                             ; preds = %1124
  %1709 = load i32, ptr %27, align 4, !tbaa !9
  %1710 = icmp eq i32 %1709, 0
  br i1 %1710, label %1711, label %1732

1711:                                             ; preds = %1708
  %1712 = load i32, ptr %30, align 4, !tbaa !9
  %1713 = load i32, ptr %31, align 4, !tbaa !9
  %1714 = icmp ne i32 %1712, %1713
  br i1 %1714, label %1715, label %1731

1715:                                             ; preds = %1711
  %1716 = load ptr, ptr %11, align 8, !tbaa !5
  %1717 = load ptr, ptr %12, align 8, !tbaa !5
  %1718 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1717, i32 0, i32 1
  %1719 = load i32, ptr %1718, align 4, !tbaa !24
  %1720 = load ptr, ptr %12, align 8, !tbaa !5
  %1721 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1720, i32 0, i32 35
  %1722 = load i32, ptr %1721, align 4, !tbaa !22
  %1723 = load ptr, ptr %12, align 8, !tbaa !5
  %1724 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1723, i32 0, i32 1
  %1725 = load i32, ptr %1724, align 4, !tbaa !24
  %1726 = load i32, ptr %30, align 4, !tbaa !9
  %1727 = zext i32 %1726 to i64
  %1728 = load i32, ptr %31, align 4, !tbaa !9
  %1729 = zext i32 %1728 to i64
  %1730 = sub nsw i64 %1727, %1729
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1716, i32 noundef 4096, i32 noundef %1719, i32 noundef %1722, i32 noundef %1725, i64 noundef %1730)
  br label %1731

1731:                                             ; preds = %1715, %1711
  br label %1761

1732:                                             ; preds = %1708
  %1733 = load i32, ptr %24, align 4, !tbaa !9
  %1734 = icmp eq i32 %1733, 1
  br i1 %1734, label %1735, label %1760

1735:                                             ; preds = %1732
  %1736 = load i32, ptr %30, align 4, !tbaa !9
  %1737 = load ptr, ptr %13, align 8, !tbaa !5
  %1738 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1737, i32 0, i32 2
  %1739 = load i32, ptr %1738, align 4, !tbaa !16
  %1740 = icmp ne i32 %1736, %1739
  br i1 %1740, label %1741, label %1759

1741:                                             ; preds = %1735
  %1742 = load ptr, ptr %11, align 8, !tbaa !5
  %1743 = load ptr, ptr %12, align 8, !tbaa !5
  %1744 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1743, i32 0, i32 1
  %1745 = load i32, ptr %1744, align 4, !tbaa !24
  %1746 = load ptr, ptr %12, align 8, !tbaa !5
  %1747 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1746, i32 0, i32 35
  %1748 = load i32, ptr %1747, align 4, !tbaa !22
  %1749 = load ptr, ptr %12, align 8, !tbaa !5
  %1750 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1749, i32 0, i32 1
  %1751 = load i32, ptr %1750, align 4, !tbaa !24
  %1752 = load i32, ptr %30, align 4, !tbaa !9
  %1753 = zext i32 %1752 to i64
  %1754 = load ptr, ptr %13, align 8, !tbaa !5
  %1755 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1754, i32 0, i32 2
  %1756 = load i32, ptr %1755, align 4, !tbaa !16
  %1757 = zext i32 %1756 to i64
  %1758 = sub nsw i64 %1753, %1757
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1742, i32 noundef 4096, i32 noundef %1745, i32 noundef %1748, i32 noundef %1751, i64 noundef %1758)
  br label %1759

1759:                                             ; preds = %1741, %1735
  br label %1760

1760:                                             ; preds = %1759, %1732
  br label %1761

1761:                                             ; preds = %1760, %1731
  br label %1762

1762:                                             ; preds = %1761
  %1763 = load i32, ptr %22, align 4, !tbaa !9
  %1764 = add i32 %1763, 1
  store i32 %1764, ptr %22, align 4, !tbaa !9
  br label %1119, !llvm.loop !31

1765:                                             ; preds = %1119
  %1766 = load ptr, ptr %11, align 8, !tbaa !5
  %1767 = load ptr, ptr %12, align 8, !tbaa !5
  %1768 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1767, i32 0, i32 1
  %1769 = load i32, ptr %1768, align 4, !tbaa !24
  %1770 = load ptr, ptr %12, align 8, !tbaa !5
  %1771 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1770, i32 0, i32 35
  %1772 = load i32, ptr %1771, align 4, !tbaa !22
  %1773 = load ptr, ptr %12, align 8, !tbaa !5
  %1774 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1773, i32 0, i32 1
  %1775 = load i32, ptr %1774, align 4, !tbaa !24
  %1776 = load i32, ptr %32, align 4, !tbaa !9
  %1777 = zext i32 %1776 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1766, i32 noundef 4097, i32 noundef %1769, i32 noundef %1772, i32 noundef %1775, i64 noundef %1777)
  store i32 0, ptr %37, align 4
  br label %1778

1778:                                             ; preds = %1765, %1117, %604
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #4
  %1779 = load i32, ptr %37, align 4
  switch i32 %1779, label %1781 [
    i32 0, label %1780
    i32 1, label %1780
  ]

1780:                                             ; preds = %1778, %1778
  ret void

1781:                                             ; preds = %1778
  unreachable
}

declare i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext) #1

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

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

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

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

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

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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { noreturn nounwind "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 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 #4 = { nounwind }
attributes #5 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !7, i64 31}
!12 = !{!"libxsmm_meltw_descriptor", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !7, i64 24, !7, i64 25, !7, i64 26, !13, i64 27, !13, i64 29, !7, i64 31}
!13 = !{!"short", !7, i64 0}
!14 = !{!12, !13, i64 27}
!15 = !{!12, !10, i64 8}
!16 = !{!17, !10, i64 8}
!17 = !{!"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}
!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 = !{!7, !7, i64 0}
!21 = !{!12, !13, i64 29}
!22 = !{!23, !10, i64 140}
!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 = !{!23, !10, i64 4}
!25 = !{!23, !10, i64 144}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.mustprogress"}
!28 = distinct !{!28, !27}
!29 = !{!17, !10, i64 472}
!30 = distinct !{!30, !27}
!31 = distinct !{!31, !27}


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

@.str = external hidden unnamed_addr constant [97 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [27 x i8], align 1
@__PRETTY_FUNCTION__.libxsmm_load_aarch64_2d_reg_block = external hidden unnamed_addr constant [262 x i8], align 1

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

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_load_aarch64_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 #2 {
  %11 = getelementptr inbounds i8, ptr %3, i64 31
  %12 = load i8, ptr %11, align 1, !tbaa !5
  %13 = icmp eq i8 %12, 1
  %14 = getelementptr inbounds i8, ptr %3, i64 27
  %15 = load i16, ptr %14, align 1, !tbaa !11
  br i1 %13, label %.thread545, label %21

.thread545:                                       ; preds = %10
  %16 = insertelement <2 x i16> poison, i16 %15, i64 0
  %17 = shufflevector <2 x i16> %16, <2 x i16> poison, <2 x i32> zeroinitializer
  %18 = and <2 x i16> %17, <i16 4, i16 2>
  %19 = icmp ne <2 x i16> %18, zeroinitializer
  %20 = and i16 %15, 8
  %.not522 = icmp eq i16 %20, 0
  br i1 %.not522, label %.thread572, label %._crit_edge675

21:                                               ; preds = %10
  switch i8 %12, label %._crit_edge675 [
    i8 2, label %.thread547
    i8 3, label %28
  ]

.thread547:                                       ; preds = %21
  %22 = insertelement <2 x i16> poison, i16 %15, 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 1>
  %25 = icmp ne <2 x i16> %24, zeroinitializer
  %26 = and i16 %15, 16
  %.not523 = icmp eq i16 %26, 0
  br i1 %.not523, label %.thread572, label %._crit_edge675

.thread572:                                       ; preds = %.thread547, %.thread545
  %27 = phi <2 x i1> [ %25, %.thread547 ], [ %19, %.thread545 ]
  br label %._crit_edge675

28:                                               ; preds = %21
  %29 = insertelement <2 x i16> poison, i16 %15, i64 0
  %30 = shufflevector <2 x i16> %29, <2 x i16> poison, <2 x i32> zeroinitializer
  %31 = and <2 x i16> %30, <i16 8, i16 1>
  %32 = icmp ne <2 x i16> %31, zeroinitializer
  %33 = and i16 %15, 64
  %34 = icmp ne i16 %33, 0
  br label %._crit_edge675

._crit_edge675:                                   ; preds = %21, %.thread572, %28, %.thread547, %.thread545
  %35 = phi i1 [ true, %.thread547 ], [ true, %.thread545 ], [ %34, %28 ], [ false, %.thread572 ], [ false, %21 ]
  %36 = phi <2 x i1> [ %25, %.thread547 ], [ %19, %.thread545 ], [ %32, %28 ], [ %27, %.thread572 ], [ zeroinitializer, %21 ]
  %37 = extractelement <2 x i1> %36, i64 0
  %38 = extractelement <2 x i1> %36, i64 1
  %or.cond = select i1 %38, i1 true, i1 %37
  %spec.select = select i1 %or.cond, i1 true, i1 %35
  %spec.select.fr = freeze i1 %spec.select
  %39 = zext i16 %15 to i32
  %40 = lshr i32 %39, 10
  %.lobit = and i32 %40, 1
  %41 = lshr i32 %39, 4
  %.lobit526 = and i32 %41, 1
  %42 = getelementptr inbounds i8, ptr %3, i64 8
  %43 = load i32, ptr %42, align 1, !tbaa !12
  %44 = getelementptr inbounds i8, ptr %2, i64 8
  %45 = load i32, ptr %44, align 4, !tbaa !13
  %46 = mul i32 %45, %43
  %47 = icmp eq i32 %8, 0
  br i1 %47, label %48, label %51

48:                                               ; preds = %._crit_edge675
  %49 = mul i32 %6, %4
  %50 = mul i32 %49, %45
  br label %56

51:                                               ; preds = %._crit_edge675
  %52 = add i32 %6, -1
  %53 = mul i32 %52, %4
  %54 = add i32 %53, %8
  %55 = mul i32 %45, %54
  br label %56

56:                                               ; preds = %51, %48
  %57 = phi i32 [ %50, %48 ], [ %55, %51 ]
  %58 = getelementptr inbounds i8, ptr %0, i64 28
  %59 = load i32, ptr %58, align 4, !tbaa !15
  %60 = add i32 %59, -2201
  %spec.select537 = icmp ult i32 %60, 799
  %61 = zext i1 %spec.select537 to i8
  br i1 %13, label %64, label %62

62:                                               ; preds = %56
  %63 = icmp eq i8 %12, 2
  br i1 %63, label %111, label %.thread583

64:                                               ; preds = %56
  %65 = getelementptr inbounds i8, ptr %3, i64 29
  %66 = load i16, ptr %65, align 1, !tbaa !18
  %67 = icmp eq i16 %66, 33
  br i1 %67, label %68, label %.thread583

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

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

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

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

80:                                               ; preds = %77
  %81 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #3
  %82 = icmp eq i32 %81, 4
  br i1 %82, label %200, label %83

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

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

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

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

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

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

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

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

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

110:                                              ; preds = %107
  tail call void @__assert_fail(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str, i32 noundef 471, ptr noundef nonnull @__PRETTY_FUNCTION__.libxsmm_load_aarch64_2d_reg_block) #4
  unreachable

111:                                              ; preds = %62
  %112 = getelementptr inbounds i8, ptr %3, i64 29
  %113 = load i16, ptr %112, align 1, !tbaa !18
  %114 = icmp eq i16 %113, 26
  br i1 %114, label %115, label %.thread583

115:                                              ; preds = %111
  %116 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #3
  %117 = icmp eq i32 %116, 0
  br i1 %117, label %200, label %118

118:                                              ; preds = %115
  %119 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #3
  %120 = icmp eq i32 %119, 1
  br i1 %120, label %200, label %121

121:                                              ; preds = %118
  %122 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #3
  %123 = icmp eq i32 %122, 2
  br i1 %123, label %200, label %124

124:                                              ; preds = %121
  %125 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #3
  %126 = icmp eq i32 %125, 3
  br i1 %126, label %200, label %127

127:                                              ; preds = %124
  %128 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #3
  %129 = icmp eq i32 %128, 4
  br i1 %129, label %200, label %130

130:                                              ; preds = %127
  %131 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #3
  %132 = icmp eq i32 %131, 5
  br i1 %132, label %200, label %133

133:                                              ; preds = %130
  %134 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #3
  %135 = icmp eq i32 %134, 6
  br i1 %135, label %200, label %136

136:                                              ; preds = %133
  %137 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #3
  %138 = icmp eq i32 %137, 7
  br i1 %138, label %200, label %139

139:                                              ; preds = %136
  %140 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #3
  %141 = icmp eq i32 %140, 8
  br i1 %141, label %200, label %142

142:                                              ; preds = %139
  %143 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #3
  %144 = icmp eq i32 %143, 9
  br i1 %144, label %200, label %145

145:                                              ; preds = %142
  %146 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #3
  %147 = icmp eq i32 %146, 10
  br i1 %147, label %200, label %148

148:                                              ; preds = %145
  %149 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #3
  %150 = icmp eq i32 %149, 11
  br i1 %150, label %200, label %151

151:                                              ; preds = %148
  %152 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #3
  %153 = icmp eq i32 %152, 12
  br i1 %153, label %200, label %154

154:                                              ; preds = %151
  %155 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #3
  %156 = icmp eq i32 %155, 13
  br i1 %156, label %200, label %157

157:                                              ; preds = %154
  tail call void @__assert_fail(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str, i32 noundef 472, ptr noundef nonnull @__PRETTY_FUNCTION__.libxsmm_load_aarch64_2d_reg_block) #4
  unreachable

.thread583:                                       ; preds = %64, %62, %111
  %158 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #3
  %159 = icmp eq i32 %158, 0
  br i1 %159, label %200, label %160

160:                                              ; preds = %.thread583
  %161 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #3
  %162 = icmp eq i32 %161, 1
  br i1 %162, label %200, label %163

163:                                              ; preds = %160
  %164 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #3
  %165 = icmp eq i32 %164, 2
  br i1 %165, label %200, label %166

166:                                              ; preds = %163
  %167 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #3
  %168 = icmp eq i32 %167, 3
  br i1 %168, label %200, label %169

169:                                              ; preds = %166
  %170 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #3
  %171 = icmp eq i32 %170, 4
  br i1 %171, label %200, label %172

172:                                              ; preds = %169
  %173 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #3
  %174 = icmp eq i32 %173, 5
  br i1 %174, label %200, label %175

175:                                              ; preds = %172
  %176 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #3
  %177 = icmp eq i32 %176, 6
  br i1 %177, label %200, label %178

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

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

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

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

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

193:                                              ; preds = %190
  %194 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #3
  %195 = icmp eq i32 %194, 12
  br i1 %195, label %200, label %196

196:                                              ; preds = %193
  %197 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #3
  %198 = icmp eq i32 %197, 13
  br i1 %198, label %200, label %199

199:                                              ; preds = %196
  tail call void @__assert_fail(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str, i32 noundef 473, ptr noundef nonnull @__PRETTY_FUNCTION__.libxsmm_load_aarch64_2d_reg_block) #4
  unreachable

200:                                              ; preds = %.thread583, %163, %169, %175, %181, %187, %193, %196, %190, %184, %178, %172, %166, %160, %115, %121, %127, %133, %139, %145, %151, %154, %148, %142, %136, %130, %124, %118, %68, %74, %80, %86, %92, %98, %104, %107, %101, %95, %89, %83, %77, %71
  %.sink = phi i8 [ 8, %68 ], [ 4, %71 ], [ 2, %74 ], [ 2, %77 ], [ 1, %80 ], [ 1, %83 ], [ 8, %86 ], [ 8, %89 ], [ 4, %92 ], [ 4, %95 ], [ 2, %98 ], [ 2, %101 ], [ 1, %104 ], [ 1, %107 ], [ 8, %115 ], [ 4, %118 ], [ 2, %121 ], [ 2, %124 ], [ 1, %127 ], [ 1, %130 ], [ 8, %133 ], [ 8, %136 ], [ 4, %139 ], [ 4, %142 ], [ 2, %145 ], [ 2, %148 ], [ 1, %151 ], [ 1, %154 ], [ 8, %.thread583 ], [ 4, %160 ], [ 2, %163 ], [ 2, %166 ], [ 1, %169 ], [ 1, %172 ], [ 8, %175 ], [ 8, %178 ], [ 4, %181 ], [ 4, %184 ], [ 2, %187 ], [ 2, %190 ], [ 1, %193 ], [ 1, %196 ]
  %201 = tail call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext %.sink) #3
  %202 = load i8, ptr %11, align 1, !tbaa !5
  %203 = icmp eq i8 %202, 1
  br i1 %203, label %204, label %208

204:                                              ; preds = %200
  %205 = getelementptr inbounds i8, ptr %3, i64 29
  %206 = load i16, ptr %205, align 1, !tbaa !18
  %207 = icmp eq i16 %206, 2
  br i1 %207, label %596, label %208

208:                                              ; preds = %204, %200
  br i1 %spec.select537, label %209, label %thread-pre-split586

209:                                              ; preds = %208
  %210 = getelementptr inbounds i8, ptr %1, i64 140
  %211 = load i32, ptr %210, align 4, !tbaa !19
  tail call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef nonnull %0, i32 noundef 0, i32 noundef -1, i32 noundef %211) #3
  %212 = load i32, ptr %44, align 4, !tbaa !13
  %213 = mul i32 %212, %8
  %214 = load i32, ptr %210, align 4, !tbaa !19
  tail call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef nonnull %0, i32 noundef 1, i32 noundef %213, i32 noundef %214) #3
  %215 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #3
  %216 = icmp eq i32 %215, 2
  br i1 %216, label %249, label %217

217:                                              ; preds = %209
  %218 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #3
  %219 = icmp eq i32 %218, 12
  br i1 %219, label %249, label %220

220:                                              ; preds = %217
  %221 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #3
  %222 = icmp eq i32 %221, 11
  br i1 %222, label %249, label %223

223:                                              ; preds = %220
  %224 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #3
  %225 = icmp eq i32 %224, 10
  br i1 %225, label %249, label %226

226:                                              ; preds = %223
  %227 = load i8, ptr %11, align 1, !tbaa !5
  %228 = and i8 %227, -2
  %switch = icmp eq i8 %228, 2
  br i1 %switch, label %229, label %.thread588

229:                                              ; preds = %226
  %230 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 1) #3
  %231 = icmp eq i32 %230, 2
  br i1 %231, label %249, label %232

232:                                              ; preds = %229
  %233 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 1) #3
  %234 = icmp eq i32 %233, 11
  br i1 %234, label %249, label %235

235:                                              ; preds = %232
  %236 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 1) #3
  %237 = icmp eq i32 %236, 10
  br i1 %237, label %249, label %238

238:                                              ; preds = %235
  %.pr = load i8, ptr %11, align 1, !tbaa !5
  %239 = icmp eq i8 %.pr, 3
  br i1 %239, label %240, label %253

240:                                              ; preds = %238
  %241 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 2) #3
  %242 = icmp eq i32 %241, 2
  br i1 %242, label %249, label %243

243:                                              ; preds = %240
  %244 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 2) #3
  %245 = icmp eq i32 %244, 11
  br i1 %245, label %249, label %246

246:                                              ; preds = %243
  %247 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 2) #3
  %248 = icmp eq i32 %247, 10
  br i1 %248, label %249, label %thread-pre-split586

249:                                              ; preds = %246, %243, %240, %235, %232, %229, %223, %220, %217, %209
  %250 = load i32, ptr %44, align 4, !tbaa !13
  %251 = mul i32 %250, %4
  %252 = load i32, ptr %210, align 4, !tbaa !19
  tail call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef nonnull %0, i32 noundef 2, i32 noundef %251, i32 noundef %252) #3
  br label %thread-pre-split586

thread-pre-split586:                              ; preds = %208, %249, %246
  %.pr587 = load i8, ptr %11, align 1, !tbaa !5
  br label %253

253:                                              ; preds = %thread-pre-split586, %238
  %254 = phi i8 [ %.pr587, %thread-pre-split586 ], [ %.pr, %238 ]
  %255 = icmp eq i8 %254, 2
  br i1 %255, label %256, label %.thread588

256:                                              ; preds = %253
  %257 = getelementptr inbounds i8, ptr %3, i64 29
  %258 = load i16, ptr %257, align 1, !tbaa !18
  %259 = icmp eq i16 %258, 26
  br i1 %259, label %260, label %.thread588

260:                                              ; preds = %256
  br i1 %spec.select537, label %261, label %596

261:                                              ; preds = %260
  %262 = mul i32 %46, %7
  %263 = load i32, ptr %44, align 4, !tbaa !13
  %264 = mul i32 %263, %4
  %265 = getelementptr inbounds i8, ptr %1, i64 140
  %266 = load i32, ptr %265, align 4, !tbaa !19
  tail call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef nonnull %0, i32 noundef 2, i32 noundef %264, i32 noundef %266) #3
  %.not660 = icmp eq i32 %7, 0
  br i1 %.not660, label %._crit_edge654, label %.preheader.lr.ph

.preheader.lr.ph:                                 ; preds = %261
  %.not661 = icmp eq i32 %6, 0
  %267 = add i32 %6, -1
  %268 = select i1 %47, i32 %4, i32 %8
  %269 = select i1 %47, i32 2, i32 1
  %.not536 = icmp ne i32 %8, 0
  %270 = zext i1 %.not536 to i32
  %271 = getelementptr inbounds i8, ptr %1, i64 4
  %272 = getelementptr inbounds i8, ptr %1, i64 144
  %or.cond3 = select i1 %38, i1 true, i1 %35
  %273 = mul i32 %267, %4
  %274 = add i32 %273, %8
  %275 = mul i32 %6, %4
  %276 = icmp eq i32 %6, 1
  %277 = select i1 %276, i32 %8, i32 0
  %.not533 = icmp eq i32 %46, %57
  %278 = zext i32 %46 to i64
  %279 = zext i32 %57 to i64
  %280 = sub nsw i64 %278, %279
  %281 = icmp eq i32 %267, 0
  %spec.select624.us.peel = select i1 %281, i32 %268, i32 %4
  %spec.select626.us.peel = select i1 %281, i32 %269, i32 2
  %282 = icmp eq i32 %267, 0
  %283 = select i1 %282, i32 %8, i32 0
  %spec.select655.peel = select i1 %282, i32 %270, i32 0
  %exitcond672.peel.not = icmp eq i32 %6, 1
  %.v702 = select i1 %47, i32 %275, i32 %274
  %.v703 = select i1 %47, i32 %275, i32 %274
  br label %.preheader

.preheader:                                       ; preds = %.preheader.lr.ph, %378
  %.0496653 = phi i32 [ 0, %.preheader.lr.ph ], [ %379, %378 ]
  %.0498652 = phi i32 [ %262, %.preheader.lr.ph ], [ %.1499.lcssa679, %378 ]
  br i1 %.not661, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader
  %284 = mul i32 %.0496653, %6
  %285 = add i32 %284, %5
  %286 = icmp eq i32 %.0496653, 0
  %or.cond5 = and i1 %35, %286
  %or.cond538 = select i1 %38, i1 true, i1 %or.cond5
  %287 = icmp ne i32 %.0496653, 0
  %or.cond7 = and i1 %35, %287
  br i1 %spec.select.fr, label %.lr.ph.split.us.preheader, label %.lr.ph.split

.lr.ph.split.us.preheader:                        ; preds = %.lr.ph
  %288 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 0) #3
  %289 = icmp eq i32 %288, 1
  br i1 %289, label %.thread589.us.peel, label %290

290:                                              ; preds = %.lr.ph.split.us.preheader
  %291 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 0) #3
  %292 = icmp eq i32 %291, 0
  br i1 %292, label %.thread589.us.peel, label %293

.thread589.us.peel:                               ; preds = %290, %.lr.ph.split.us.preheader
  br label %293

293:                                              ; preds = %290, %.thread589.us.peel
  %294 = phi i32 [ %283, %.thread589.us.peel ], [ %spec.select624.us.peel, %290 ]
  %295 = phi i32 [ %spec.select655.peel, %.thread589.us.peel ], [ %spec.select626.us.peel, %290 ]
  br i1 %or.cond3, label %306, label %296

296:                                              ; preds = %293
  br i1 %37, label %297, label %.thread677

297:                                              ; preds = %296
  %298 = load i32, ptr %44, align 4, !tbaa !13
  %299 = mul i32 %.v702, %298
  br i1 %286, label %301, label %300

300:                                              ; preds = %297
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 73412611, i32 noundef %5, i32 noundef %5, i8 noundef zeroext 0, i32 noundef %285, i32 noundef 0, i32 noundef %201) #3
  br label %.thread677

301:                                              ; preds = %297
  %302 = load i32, ptr %271, align 4, !tbaa !21
  %303 = load i32, ptr %272, align 4, !tbaa !22
  %304 = trunc nuw nsw i32 %295 to i8
  tail call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef %302, i32 noundef %303, i32 noundef %285, i32 noundef %298, i32 noundef %294, i32 noundef 1, i32 noundef 0, i8 noundef zeroext %304, i8 noundef zeroext %61) #3
  %305 = tail call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4) #3
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 87177218, i32 noundef %285, i32 noundef 127, i8 noundef zeroext 0, i32 noundef %285, i32 noundef 0, i32 noundef %305) #3
  br label %.thread677

306:                                              ; preds = %293
  br i1 %35, label %307, label %.thread

307:                                              ; preds = %306
  %308 = load i32, ptr %44, align 4, !tbaa !13
  br i1 %or.cond538, label %311, label %309

.thread:                                          ; preds = %306
  br i1 %or.cond538, label %311, label %.thread677

309:                                              ; preds = %307
  br i1 %or.cond7, label %310, label %.thread677

310:                                              ; preds = %309
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 73412611, i32 noundef %5, i32 noundef %5, i8 noundef zeroext 0, i32 noundef %285, i32 noundef 0, i32 noundef %201) #3
  br label %.thread677

311:                                              ; preds = %.thread, %307
  %312 = phi i32 [ %262, %.thread ], [ %308, %307 ]
  %313 = load i32, ptr %271, align 4, !tbaa !21
  %314 = load i32, ptr %272, align 4, !tbaa !22
  %315 = load i32, ptr %44, align 4, !tbaa !13
  tail call void @libxsmm_generator_bcastload_masked_vreg_aarch64_asimd(ptr noundef %0, i32 noundef %313, i32 noundef %314, i32 noundef %285, i32 noundef %315, i32 noundef %277, i32 noundef 1) #3
  %316 = tail call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4) #3
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 87177218, i32 noundef %285, i32 noundef 127, i8 noundef zeroext 0, i32 noundef %285, i32 noundef 0, i32 noundef %316) #3
  br label %.thread677

.thread677:                                       ; preds = %.thread, %311, %310, %309, %301, %300, %296
  %.2.us.peel = phi i32 [ %312, %311 ], [ %308, %310 ], [ %308, %309 ], [ %299, %301 ], [ %299, %300 ], [ %.0498652, %296 ], [ %262, %.thread ]
  br i1 %exitcond672.peel.not, label %._crit_edge.thread, label %.lr.ph.split.us

.lr.ph.split.us:                                  ; preds = %.thread677, %346
  %.0649.us = phi i32 [ %347, %346 ], [ 1, %.thread677 ]
  %.1499648.us = phi i32 [ %.2.us, %346 ], [ %.2.us.peel, %.thread677 ]
  %317 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 0) #3
  %318 = icmp eq i32 %317, 1
  br i1 %318, label %.thread589.us, label %319

319:                                              ; preds = %.lr.ph.split.us
  %320 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 0) #3
  %321 = icmp eq i32 %320, 0
  br i1 %321, label %.thread589.us, label %322

322:                                              ; preds = %319
  %323 = icmp eq i32 %.0649.us, %267
  %spec.select624.us = select i1 %323, i32 %268, i32 %4
  %spec.select626.us = select i1 %323, i32 %269, i32 2
  br label %326

.thread589.us:                                    ; preds = %319, %.lr.ph.split.us
  %324 = icmp eq i32 %.0649.us, %267
  %325 = select i1 %324, i32 %8, i32 0
  %spec.select655 = select i1 %324, i32 %270, i32 0
  br label %326

326:                                              ; preds = %.thread589.us, %322
  %327 = phi i32 [ %spec.select624.us, %322 ], [ %325, %.thread589.us ]
  %328 = phi i32 [ %spec.select626.us, %322 ], [ %spec.select655, %.thread589.us ]
  %329 = add i32 %.0649.us, %285
  br i1 %or.cond3, label %341, label %330

330:                                              ; preds = %326
  br i1 %37, label %331, label %346

331:                                              ; preds = %330
  %332 = load i32, ptr %44, align 4, !tbaa !13
  %333 = mul i32 %.v703, %332
  br i1 %286, label %336, label %334

334:                                              ; preds = %331
  %335 = add i32 %.0649.us, %5
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 73412611, i32 noundef %335, i32 noundef %335, i8 noundef zeroext 0, i32 noundef %329, i32 noundef 0, i32 noundef %201) #3
  br label %346

336:                                              ; preds = %331
  %337 = load i32, ptr %271, align 4, !tbaa !21
  %338 = load i32, ptr %272, align 4, !tbaa !22
  %339 = trunc nuw nsw i32 %328 to i8
  tail call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef %337, i32 noundef %338, i32 noundef %329, i32 noundef %332, i32 noundef %327, i32 noundef 1, i32 noundef 0, i8 noundef zeroext %339, i8 noundef zeroext %61) #3
  %340 = tail call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4) #3
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 87177218, i32 noundef %329, i32 noundef 127, i8 noundef zeroext 0, i32 noundef %329, i32 noundef 0, i32 noundef %340) #3
  br label %346

341:                                              ; preds = %326
  br i1 %35, label %342, label %344

342:                                              ; preds = %341
  %343 = load i32, ptr %44, align 4, !tbaa !13
  br label %344

344:                                              ; preds = %341, %342
  %345 = phi i32 [ %343, %342 ], [ %262, %341 ]
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 73412611, i32 noundef %285, i32 noundef %285, i8 noundef zeroext 0, i32 noundef %329, i32 noundef 0, i32 noundef %201) #3
  br label %346

346:                                              ; preds = %344, %336, %334, %330
  %.2.us = phi i32 [ %345, %344 ], [ %333, %336 ], [ %333, %334 ], [ %.1499648.us, %330 ]
  %347 = add nuw i32 %.0649.us, 1
  %exitcond672.not = icmp eq i32 %347, %6
  br i1 %exitcond672.not, label %._crit_edge, label %.lr.ph.split.us, !llvm.loop !23

.lr.ph.split:                                     ; preds = %.lr.ph, %357
  %.0649 = phi i32 [ %366, %357 ], [ 0, %.lr.ph ]
  %348 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 0) #3
  %349 = icmp eq i32 %348, 1
  br i1 %349, label %.thread589, label %350

350:                                              ; preds = %.lr.ph.split
  %351 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 0) #3
  %352 = icmp eq i32 %351, 0
  br i1 %352, label %.thread589, label %353

353:                                              ; preds = %350
  %354 = icmp eq i32 %.0649, %267
  %spec.select624 = select i1 %354, i32 %268, i32 %4
  %spec.select626 = select i1 %354, i32 %269, i32 2
  br label %357

.thread589:                                       ; preds = %.lr.ph.split, %350
  %355 = icmp eq i32 %.0649, %267
  %356 = select i1 %355, i32 %8, i32 0
  %spec.select656 = select i1 %355, i32 %270, i32 0
  br label %357

357:                                              ; preds = %.thread589, %353
  %358 = phi i32 [ %spec.select624, %353 ], [ %356, %.thread589 ]
  %359 = phi i32 [ %spec.select626, %353 ], [ %spec.select656, %.thread589 ]
  %360 = add i32 %.0649, %285
  %361 = load i32, ptr %271, align 4, !tbaa !21
  %362 = load i32, ptr %272, align 4, !tbaa !22
  %363 = load i32, ptr %44, align 4, !tbaa !13
  %364 = trunc nuw nsw i32 %359 to i8
  tail call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef %361, i32 noundef %362, i32 noundef %360, i32 noundef %363, i32 noundef %358, i32 noundef 1, i32 noundef 0, i8 noundef zeroext %364, i8 noundef zeroext %61) #3
  %365 = tail call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4) #3
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 87177218, i32 noundef %360, i32 noundef 127, i8 noundef zeroext 0, i32 noundef %360, i32 noundef 0, i32 noundef %365) #3
  %366 = add nuw i32 %.0649, 1
  %exitcond671.not = icmp eq i32 %366, %6
  br i1 %exitcond671.not, label %._crit_edge, label %.lr.ph.split, !llvm.loop !26

._crit_edge:                                      ; preds = %357, %346, %.preheader
  %.1499.lcssa = phi i32 [ %.0498652, %.preheader ], [ %.2.us, %346 ], [ %.0498652, %357 ]
  br i1 %spec.select.fr, label %._crit_edge.thread, label %367

367:                                              ; preds = %._crit_edge
  br i1 %.not533, label %378, label %368

368:                                              ; preds = %367
  %369 = load i32, ptr %271, align 4, !tbaa !21
  %370 = load i32, ptr %265, align 4, !tbaa !19
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %369, i32 noundef %370, i32 noundef %369, i64 noundef %280) #3
  br label %378

._crit_edge.thread:                               ; preds = %.thread677, %._crit_edge
  %.1499.lcssa680 = phi i32 [ %.1499.lcssa, %._crit_edge ], [ %.2.us.peel, %.thread677 ]
  br i1 %38, label %371, label %378

371:                                              ; preds = %._crit_edge.thread
  %372 = load i32, ptr %44, align 4, !tbaa !13
  %.not532 = icmp eq i32 %46, %372
  br i1 %.not532, label %378, label %373

373:                                              ; preds = %371
  %374 = load i32, ptr %271, align 4, !tbaa !21
  %375 = load i32, ptr %265, align 4, !tbaa !19
  %376 = zext i32 %372 to i64
  %377 = sub nsw i64 %278, %376
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %374, i32 noundef %375, i32 noundef %374, i64 noundef %377) #3
  br label %378

378:                                              ; preds = %368, %367, %371, %373, %._crit_edge.thread
  %.1499.lcssa679 = phi i32 [ %.1499.lcssa, %368 ], [ %.1499.lcssa, %367 ], [ %.1499.lcssa680, %371 ], [ %.1499.lcssa680, %373 ], [ %.1499.lcssa680, %._crit_edge.thread ]
  %379 = add nuw i32 %.0496653, 1
  %exitcond674.not = icmp eq i32 %379, %7
  br i1 %exitcond674.not, label %._crit_edge654.loopexit, label %.preheader, !llvm.loop !27

._crit_edge654.loopexit:                          ; preds = %378
  %380 = zext i32 %.1499.lcssa679 to i64
  br label %._crit_edge654

._crit_edge654:                                   ; preds = %._crit_edge654.loopexit, %261
  %.0498.lcssa = phi i64 [ 0, %261 ], [ %380, %._crit_edge654.loopexit ]
  %381 = getelementptr inbounds i8, ptr %1, i64 4
  %382 = load i32, ptr %381, align 4, !tbaa !21
  %383 = load i32, ptr %265, align 4, !tbaa !19
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4097, i32 noundef %382, i32 noundef %383, i32 noundef %382, i64 noundef %.0498.lcssa) #3
  br label %596

.thread588:                                       ; preds = %226, %256, %253
  %.not658 = icmp eq i32 %7, 0
  br i1 %.not658, label %._crit_edge635, label %.preheader628.lr.ph

.preheader628.lr.ph:                              ; preds = %.thread588
  %.not659 = icmp eq i32 %6, 0
  %384 = add i32 %6, -1
  %385 = select i1 %47, i32 %4, i32 %8
  %386 = select i1 %47, i32 2, i32 1
  %.not531 = icmp ne i32 %8, 0
  %387 = mul i32 %46, %7
  %388 = getelementptr inbounds i8, ptr %1, i64 4
  %389 = getelementptr inbounds i8, ptr %1, i64 144
  %390 = getelementptr inbounds i8, ptr %3, i64 29
  %391 = getelementptr inbounds i8, ptr %2, i64 472
  %or.cond9 = select i1 %38, i1 true, i1 %35
  %392 = icmp eq i32 %6, 1
  %393 = select i1 %392, i32 %8, i32 0
  %394 = mul i32 %384, %4
  %395 = add i32 %394, %8
  %396 = mul i32 %6, %4
  %.not528 = icmp eq i32 %46, %57
  %397 = getelementptr inbounds i8, ptr %1, i64 140
  %398 = zext i32 %46 to i64
  %399 = zext i32 %57 to i64
  %400 = sub nsw i64 %398, %399
  br i1 %.not659, label %.preheader628.lr.ph.split, label %.preheader628.us.preheader

.preheader628.us.preheader:                       ; preds = %.preheader628.lr.ph
  %.v = select i1 %47, i32 %396, i32 %395
  br label %.preheader628.us

.preheader628.us:                                 ; preds = %.preheader628.us.preheader, %417
  %.1497634.us = phi i32 [ %418, %417 ], [ 0, %.preheader628.us.preheader ]
  %.3633.us = phi i32 [ %.6.us, %417 ], [ 0, %.preheader628.us.preheader ]
  %401 = mul i32 %.1497634.us, %6
  %402 = add i32 %401, %5
  %403 = icmp eq i32 %.1497634.us, 0
  %or.cond11.us = and i1 %35, %403
  %or.cond539.us = select i1 %38, i1 true, i1 %or.cond11.us
  %404 = icmp ne i32 %.1497634.us, 0
  %or.cond13.us = and i1 %35, %404
  br label %419

405:                                              ; preds = %._crit_edge.us
  br i1 %.not528, label %417, label %406

406:                                              ; preds = %405
  %407 = load i32, ptr %388, align 4, !tbaa !21
  %408 = load i32, ptr %397, align 4, !tbaa !19
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %407, i32 noundef %408, i32 noundef %407, i64 noundef %400) #3
  br label %417

409:                                              ; preds = %._crit_edge.us
  br i1 %38, label %410, label %417

410:                                              ; preds = %409
  %411 = load i32, ptr %44, align 4, !tbaa !13
  %.not527.us = icmp eq i32 %46, %411
  br i1 %.not527.us, label %417, label %412

412:                                              ; preds = %410
  %413 = load i32, ptr %388, align 4, !tbaa !21
  %414 = load i32, ptr %397, align 4, !tbaa !19
  %415 = zext i32 %411 to i64
  %416 = sub nsw i64 %398, %415
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %413, i32 noundef %414, i32 noundef %413, i64 noundef %416) #3
  br label %417

417:                                              ; preds = %412, %410, %409, %406, %405
  %418 = add nuw i32 %.1497634.us, 1
  %exitcond668.not = icmp eq i32 %418, %7
  br i1 %exitcond668.not, label %._crit_edge635.loopexit667, label %.preheader628.us, !llvm.loop !28

419:                                              ; preds = %.preheader628.us, %.thread600.us
  %.1630.us = phi i32 [ 0, %.preheader628.us ], [ %577, %.thread600.us ]
  %.4629.us = phi i32 [ %.3633.us, %.preheader628.us ], [ %.6.us, %.thread600.us ]
  %420 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 0) #3
  %421 = icmp eq i32 %420, 1
  br i1 %421, label %.thread594.us, label %422

422:                                              ; preds = %419
  %423 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 0) #3
  %424 = icmp eq i32 %423, 9
  br i1 %424, label %.thread594.us, label %425

425:                                              ; preds = %422
  %426 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 0) #3
  %427 = icmp eq i32 %426, 8
  br i1 %427, label %.thread594.us, label %428

428:                                              ; preds = %425
  %429 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 0) #3
  %430 = icmp eq i32 %429, 0
  br i1 %430, label %.thread594.us, label %431

431:                                              ; preds = %428
  %432 = icmp eq i32 %.1630.us, %384
  %spec.select625.us = select i1 %432, i32 %385, i32 %4
  %spec.select627.us = select i1 %432, i32 %386, i32 2
  br label %435

.thread594.us:                                    ; preds = %428, %425, %422, %419
  %433 = icmp eq i32 %.1630.us, %384
  %434 = select i1 %433, i32 %8, i32 0
  %narrow = and i1 %433, %.not531
  %spec.select657 = zext i1 %narrow to i32
  br label %435

435:                                              ; preds = %.thread594.us, %431
  %436 = phi i32 [ %spec.select625.us, %431 ], [ %434, %.thread594.us ]
  %437 = phi i32 [ %spec.select627.us, %431 ], [ %spec.select657, %.thread594.us ]
  %438 = add i32 %.1630.us, %402
  br i1 %spec.select.fr, label %482, label %439

439:                                              ; preds = %435
  %440 = load i32, ptr %388, align 4, !tbaa !21
  %441 = load i32, ptr %389, align 4, !tbaa !22
  %442 = load i32, ptr %44, align 4, !tbaa !13
  %443 = trunc nuw nsw i32 %437 to i8
  tail call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef %440, i32 noundef %441, i32 noundef %438, i32 noundef %442, i32 noundef %436, i32 noundef 1, i32 noundef 0, i8 noundef zeroext %443, i8 noundef zeroext %61) #3
  %444 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 4) #3
  %445 = icmp eq i32 %444, 1
  br i1 %445, label %446, label %449

446:                                              ; preds = %439
  %447 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 0) #3
  %448 = icmp eq i32 %447, 2
  br i1 %448, label %455, label %449

449:                                              ; preds = %446, %439
  %450 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 3) #3
  %451 = icmp eq i32 %450, 1
  br i1 %451, label %452, label %456

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

455:                                              ; preds = %452, %446
  tail call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %0, i32 noundef %438, i32 noundef 0) #3
  br label %456

456:                                              ; preds = %455, %452, %449
  %457 = load i8, ptr %11, align 1, !tbaa !5
  %458 = icmp eq i8 %457, 1
  br i1 %458, label %459, label %.thread600.us

459:                                              ; preds = %456
  %460 = load i16, ptr %390, align 1, !tbaa !18
  %461 = icmp eq i16 %460, 43
  br i1 %461, label %462, label %.thread681

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

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

468:                                              ; preds = %465
  %469 = load i32, ptr %391, align 4, !tbaa !29
  tail call void @libxsmm_generator_vcvt_i8f32_aarch64(ptr noundef %0, i32 noundef %438, i32 noundef %469, i32 noundef 0, i32 noundef %.lobit) #3
  br label %470

470:                                              ; preds = %468, %465, %462
  %.pr599.us.pr = load i8, ptr %11, align 1, !tbaa !5
  %471 = icmp eq i8 %.pr599.us.pr, 1
  br i1 %471, label %thread-pre-split683, label %.thread600.us

thread-pre-split683:                              ; preds = %470
  %.pr684 = load i16, ptr %390, align 1, !tbaa !18
  br label %.thread681

.thread681:                                       ; preds = %459, %thread-pre-split683
  %472 = phi i16 [ %.pr684, %thread-pre-split683 ], [ %460, %459 ]
  %473 = icmp eq i16 %472, 42
  br i1 %473, label %474, label %.thread600.us

474:                                              ; preds = %.thread681
  %475 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #3
  %476 = icmp eq i32 %475, 12
  br i1 %476, label %477, label %.thread600.us

477:                                              ; preds = %474
  %478 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #3
  %479 = icmp eq i32 %478, 1
  br i1 %479, label %480, label %.thread600.us

480:                                              ; preds = %477
  %481 = load i32, ptr %391, align 4, !tbaa !29
  tail call void @libxsmm_generator_vcvt_f32i8_aarch64(ptr noundef %0, i32 noundef %438, i32 noundef %481, i32 noundef 0, i32 noundef %.lobit, i32 noundef %.lobit526) #3
  br label %.thread600.us

482:                                              ; preds = %435
  br i1 %or.cond9, label %483, label %.thread604.us

483:                                              ; preds = %482
  br i1 %35, label %484, label %486

484:                                              ; preds = %483
  %485 = load i32, ptr %44, align 4, !tbaa !13
  br label %486

486:                                              ; preds = %483, %484
  %487 = phi i32 [ %485, %484 ], [ %387, %483 ]
  %488 = icmp eq i32 %.1630.us, 0
  br i1 %488, label %490, label %.thread614.us

.thread614.us:                                    ; preds = %486
  %.pr602615.us = load i8, ptr %11, align 1, !tbaa !5
  %489 = and i8 %.pr602615.us, -2
  %or.cond700 = icmp eq i8 %489, 2
  br i1 %or.cond700, label %.thread616.us, label %.thread604.us

490:                                              ; preds = %486
  br i1 %or.cond539.us, label %501, label %491

491:                                              ; preds = %490
  br i1 %or.cond13.us, label %492, label %.thread604.us

492:                                              ; preds = %491
  %493 = load i8, ptr %11, align 1, !tbaa !5
  %494 = and i8 %493, -2
  %switch541.us = icmp eq i8 %494, 2
  br i1 %switch541.us, label %495, label %.thread604.us

495:                                              ; preds = %492
  br i1 %spec.select537, label %500, label %496

496:                                              ; preds = %495
  %497 = load i32, ptr %44, align 4, !tbaa !13
  %498 = icmp eq i32 %497, 4
  %499 = select i1 %498, i32 5, i32 7
  tail call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef 245373971, i32 noundef %5, i32 noundef %5, i8 noundef zeroext 0, i32 noundef %438, i32 noundef %499) #3
  br label %.thread604.us

500:                                              ; preds = %495
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 73412611, i32 noundef %5, i32 noundef %5, i8 noundef zeroext 0, i32 noundef %438, i32 noundef 0, i32 noundef %201) #3
  br label %.thread604.us

501:                                              ; preds = %490
  %502 = load i32, ptr %388, align 4, !tbaa !21
  %503 = load i32, ptr %389, align 4, !tbaa !22
  %504 = load i32, ptr %44, align 4, !tbaa !13
  tail call void @libxsmm_generator_bcastload_masked_vreg_aarch64_asimd(ptr noundef %0, i32 noundef %502, i32 noundef %503, i32 noundef %438, i32 noundef %504, i32 noundef %393, i32 noundef 1) #3
  %505 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 4) #3
  %506 = icmp eq i32 %505, 1
  br i1 %506, label %507, label %510

507:                                              ; preds = %501
  %508 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 0) #3
  %509 = icmp eq i32 %508, 2
  br i1 %509, label %516, label %510

510:                                              ; preds = %507, %501
  %511 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 3) #3
  %512 = icmp eq i32 %511, 1
  br i1 %512, label %513, label %517

513:                                              ; preds = %510
  %514 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 0) #3
  %515 = icmp eq i32 %514, 2
  br i1 %515, label %516, label %517

516:                                              ; preds = %513, %507
  tail call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %0, i32 noundef %438, i32 noundef 0) #3
  br label %517

517:                                              ; preds = %516, %513, %510
  %518 = load i8, ptr %11, align 1, !tbaa !5
  %519 = icmp eq i8 %518, 1
  br i1 %519, label %520, label %.thread604.us

520:                                              ; preds = %517
  %521 = load i16, ptr %390, align 1, !tbaa !18
  %522 = icmp eq i16 %521, 43
  br i1 %522, label %523, label %.thread604.us

523:                                              ; preds = %520
  %524 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #3
  %525 = icmp eq i32 %524, 12
  br i1 %525, label %526, label %.thread604.us

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

529:                                              ; preds = %526
  %530 = load i32, ptr %391, align 4, !tbaa !29
  tail call void @libxsmm_generator_vcvt_i8f32_aarch64(ptr noundef %0, i32 noundef %438, i32 noundef %530, i32 noundef 0, i32 noundef %.lobit) #3
  br label %.thread604.us

.thread616.us:                                    ; preds = %.thread614.us
  br i1 %spec.select537, label %535, label %531

531:                                              ; preds = %.thread616.us
  %532 = load i32, ptr %44, align 4, !tbaa !13
  %533 = icmp eq i32 %532, 4
  %534 = select i1 %533, i32 5, i32 7
  tail call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef 245373971, i32 noundef %402, i32 noundef %402, i8 noundef zeroext 0, i32 noundef %438, i32 noundef %534) #3
  br label %.thread604.us

535:                                              ; preds = %.thread616.us
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 73412611, i32 noundef %402, i32 noundef %402, i8 noundef zeroext 0, i32 noundef %438, i32 noundef 0, i32 noundef %201) #3
  br label %.thread604.us

.thread604.us:                                    ; preds = %.thread614.us, %491, %496, %500, %523, %526, %529, %520, %535, %531, %517, %492, %482
  %.5.us = phi i32 [ %487, %535 ], [ %487, %531 ], [ %.4629.us, %482 ], [ %487, %492 ], [ %487, %517 ], [ %487, %520 ], [ %487, %529 ], [ %487, %526 ], [ %487, %523 ], [ %487, %500 ], [ %487, %496 ], [ %487, %491 ], [ %487, %.thread614.us ]
  br i1 %37, label %536, label %.thread600.us

536:                                              ; preds = %.thread604.us
  %537 = load i32, ptr %44, align 4, !tbaa !13
  %538 = mul i32 %.v, %537
  br i1 %403, label %541, label %.thread619.us

.thread619.us:                                    ; preds = %536
  %.pr609620.us = load i8, ptr %11, align 1, !tbaa !5
  %539 = icmp eq i8 %.pr609620.us, 2
  %540 = icmp eq i8 %.pr609620.us, 3
  %or.cond18.us = and i1 %404, %540
  %or.cond701 = or i1 %539, %or.cond18.us
  br i1 %or.cond701, label %.thread621.us, label %.thread600.us

541:                                              ; preds = %536
  %542 = load i32, ptr %388, align 4, !tbaa !21
  %543 = load i32, ptr %389, align 4, !tbaa !22
  %544 = trunc nuw nsw i32 %437 to i8
  tail call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef %542, i32 noundef %543, i32 noundef %438, i32 noundef %537, i32 noundef %436, i32 noundef 1, i32 noundef 0, i8 noundef zeroext %544, i8 noundef zeroext %61) #3
  %545 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 4) #3
  %546 = icmp eq i32 %545, 1
  br i1 %546, label %547, label %550

547:                                              ; preds = %541
  %548 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 0) #3
  %549 = icmp eq i32 %548, 2
  br i1 %549, label %556, label %550

550:                                              ; preds = %547, %541
  %551 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 3) #3
  %552 = icmp eq i32 %551, 1
  br i1 %552, label %553, label %557

553:                                              ; preds = %550
  %554 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 0) #3
  %555 = icmp eq i32 %554, 2
  br i1 %555, label %556, label %557

556:                                              ; preds = %553, %547
  tail call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %0, i32 noundef %438, i32 noundef 0) #3
  br label %557

557:                                              ; preds = %556, %553, %550
  %558 = load i8, ptr %11, align 1, !tbaa !5
  %559 = icmp eq i8 %558, 1
  br i1 %559, label %560, label %.thread600.us

560:                                              ; preds = %557
  %561 = load i16, ptr %390, align 1, !tbaa !18
  %562 = icmp eq i16 %561, 43
  br i1 %562, label %563, label %.thread600.us

563:                                              ; preds = %560
  %564 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 0) #3
  %565 = icmp eq i32 %564, 12
  br i1 %565, label %566, label %.thread600.us

566:                                              ; preds = %563
  %567 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #3
  %568 = icmp eq i32 %567, 1
  br i1 %568, label %569, label %.thread600.us

569:                                              ; preds = %566
  %570 = load i32, ptr %391, align 4, !tbaa !29
  tail call void @libxsmm_generator_vcvt_i8f32_aarch64(ptr noundef %0, i32 noundef %438, i32 noundef %570, i32 noundef 0, i32 noundef %.lobit) #3
  br label %.thread600.us

.thread621.us:                                    ; preds = %.thread619.us
  %571 = add i32 %.1630.us, %5
  br i1 %spec.select537, label %576, label %572

572:                                              ; preds = %.thread621.us
  %573 = load i32, ptr %44, align 4, !tbaa !13
  %574 = icmp eq i32 %573, 4
  %575 = select i1 %574, i32 5, i32 7
  tail call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef 245373971, i32 noundef %571, i32 noundef %571, i8 noundef zeroext 0, i32 noundef %438, i32 noundef %575) #3
  br label %.thread600.us

576:                                              ; preds = %.thread621.us
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 73412611, i32 noundef %571, i32 noundef %571, i8 noundef zeroext 0, i32 noundef %438, i32 noundef 0, i32 noundef %201) #3
  br label %.thread600.us

.thread600.us:                                    ; preds = %.thread619.us, %563, %566, %569, %560, %576, %572, %557, %.thread604.us, %480, %477, %474, %.thread681, %470, %456
  %.6.us = phi i32 [ %387, %480 ], [ %387, %477 ], [ %387, %474 ], [ %387, %.thread681 ], [ %387, %470 ], [ %538, %576 ], [ %538, %572 ], [ %.5.us, %.thread604.us ], [ %387, %456 ], [ %538, %557 ], [ %538, %560 ], [ %538, %569 ], [ %538, %566 ], [ %538, %563 ], [ %538, %.thread619.us ]
  %577 = add nuw i32 %.1630.us, 1
  %exitcond.not = icmp eq i32 %577, %6
  br i1 %exitcond.not, label %._crit_edge.us, label %419, !llvm.loop !30

._crit_edge.us:                                   ; preds = %.thread600.us
  br i1 %spec.select.fr, label %409, label %405

.preheader628.lr.ph.split:                        ; preds = %.preheader628.lr.ph
  br i1 %spec.select.fr, label %.preheader628.lr.ph.split.split.us, label %.preheader628.lr.ph.split.split

.preheader628.lr.ph.split.split.us:               ; preds = %.preheader628.lr.ph.split
  br i1 %38, label %.preheader628.lr.ph.split.split.us.split.us, label %._crit_edge635

.preheader628.lr.ph.split.split.us.split.us:      ; preds = %.preheader628.lr.ph.split.split.us
  %578 = load i32, ptr %44, align 4, !tbaa !13
  %579 = icmp eq i32 %46, %578
  br i1 %579, label %._crit_edge635, label %.preheader628.us637.us

.preheader628.us637.us:                           ; preds = %.preheader628.lr.ph.split.split.us.split.us, %586
  %.1497634.us638.us = phi i32 [ %587, %586 ], [ 0, %.preheader628.lr.ph.split.split.us.split.us ]
  %580 = load i32, ptr %44, align 4, !tbaa !13
  %.not527.us639.us = icmp eq i32 %46, %580
  br i1 %.not527.us639.us, label %586, label %581

581:                                              ; preds = %.preheader628.us637.us
  %582 = load i32, ptr %388, align 4, !tbaa !21
  %583 = load i32, ptr %397, align 4, !tbaa !19
  %584 = zext i32 %580 to i64
  %585 = sub nsw i64 %398, %584
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %582, i32 noundef %583, i32 noundef %582, i64 noundef %585) #3
  br label %586

586:                                              ; preds = %581, %.preheader628.us637.us
  %587 = add nuw i32 %.1497634.us638.us, 1
  %exitcond670.not = icmp eq i32 %587, %7
  br i1 %exitcond670.not, label %._crit_edge635, label %.preheader628.us637.us, !llvm.loop !31

.preheader628.lr.ph.split.split:                  ; preds = %.preheader628.lr.ph.split
  br i1 %.not528, label %._crit_edge635, label %.preheader628

.preheader628:                                    ; preds = %.preheader628.lr.ph.split.split, %.preheader628
  %.1497634 = phi i32 [ %590, %.preheader628 ], [ 0, %.preheader628.lr.ph.split.split ]
  %588 = load i32, ptr %388, align 4, !tbaa !21
  %589 = load i32, ptr %397, align 4, !tbaa !19
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %588, i32 noundef %589, i32 noundef %588, i64 noundef %400) #3
  %590 = add nuw i32 %.1497634, 1
  %exitcond669.not = icmp eq i32 %590, %7
  br i1 %exitcond669.not, label %._crit_edge635, label %.preheader628, !llvm.loop !28

._crit_edge635.loopexit667:                       ; preds = %417
  %591 = zext i32 %.6.us to i64
  br label %._crit_edge635

._crit_edge635:                                   ; preds = %.preheader628, %586, %.preheader628.lr.ph.split.split, %.preheader628.lr.ph.split.split.us.split.us, %.preheader628.lr.ph.split.split.us, %._crit_edge635.loopexit667, %.thread588
  %.3.lcssa = phi i64 [ 0, %.thread588 ], [ %591, %._crit_edge635.loopexit667 ], [ 0, %.preheader628.lr.ph.split.split.us ], [ 0, %.preheader628.lr.ph.split.split.us.split.us ], [ 0, %.preheader628.lr.ph.split.split ], [ 0, %586 ], [ 0, %.preheader628 ]
  %592 = getelementptr inbounds i8, ptr %1, i64 4
  %593 = load i32, ptr %592, align 4, !tbaa !21
  %594 = getelementptr inbounds i8, ptr %1, i64 140
  %595 = load i32, ptr %594, align 4, !tbaa !19
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4097, i32 noundef %593, i32 noundef %595, i32 noundef %593, i64 noundef %.3.lcssa) #3
  br label %596

596:                                              ; preds = %260, %._crit_edge654, %204, %._crit_edge635
  ret void
}

declare i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext) local_unnamed_addr #0

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

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

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

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

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

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

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

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

attributes #0 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { noreturn nounwind "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 }
attributes #4 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !8, i64 31}
!6 = !{!"libxsmm_meltw_descriptor", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !8, i64 24, !8, i64 25, !8, i64 26, !10, i64 27, !10, i64 29, !8, i64 31}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"short", !8, i64 0}
!11 = !{!6, !10, i64 27}
!12 = !{!6, !7, i64 8}
!13 = !{!14, !7, i64 8}
!14 = !{!"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}
!15 = !{!16, !7, i64 28}
!16 = !{!"libxsmm_generated_code", !17, i64 0, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28}
!17 = !{!"any pointer", !8, i64 0}
!18 = !{!6, !10, i64 29}
!19 = !{!20, !7, i64 140}
!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 = !{!20, !7, i64 4}
!22 = !{!20, !7, i64 144}
!23 = distinct !{!23, !24, !25}
!24 = !{!"llvm.loop.mustprogress"}
!25 = !{!"llvm.loop.peeled.count", i32 1}
!26 = distinct !{!26, !24}
!27 = distinct !{!27, !24}
!28 = distinct !{!28, !24}
!29 = !{!14, !7, i64 472}
!30 = distinct !{!30, !24}
!31 = distinct !{!31, !24, !32}
!32 = !{!"llvm.loop.unswitch.partial.disable"}


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