; 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
@.str.5 = external hidden unnamed_addr constant [286 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [281 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [386 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [391 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [401 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [431 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [431 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [391 x i8], align 1
@__PRETTY_FUNCTION__.libxsmm_compute_binary_aarch64_2d_reg_block = external hidden unnamed_addr constant [272 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [371 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 i32 @libxsmm_generator_mateltwise_is_binary_cmp_op(ptr noundef) #1

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

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_aarch64_instruction_asimd_compute(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef zeroext, i32 noundef, i32 noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_unary_binary_aarch64_store_bitmask_2bytemult_sve(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef zeroext, i8 noundef zeroext, i8 noundef zeroext, i8 noundef zeroext, i8 noundef zeroext, i8 noundef zeroext, ptr noundef) #3

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_unary_binary_aarch64_store_bitmask_2bytemult_asimd(ptr noundef, i32 noundef, i32 noundef, i8 noundef zeroext, i8 noundef zeroext, i8 noundef zeroext, i8 noundef zeroext, i8 noundef zeroext, i8 noundef zeroext, ptr noundef) #3

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_compute_binary_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 i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i8, align 1
  %38 = alloca i8, align 1
  %39 = alloca i8, align 1
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i8, align 1
  %54 = alloca i8, align 1
  %55 = alloca i8, align 1
  %56 = alloca i32, align 4
  %57 = 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
  store i32 0, ptr %24, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #4
  %58 = load ptr, ptr %14, align 8, !tbaa !5
  %59 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %58, i32 0, i32 9
  %60 = load i16, ptr %59, align 1, !tbaa !11
  %61 = zext i16 %60 to i32
  %62 = and i32 %61, 2
  %63 = icmp sgt i32 %62, 0
  %64 = zext i1 %63 to i64
  %65 = select i1 %63, i32 1, i32 0
  store i32 %65, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #4
  %66 = load ptr, ptr %14, align 8, !tbaa !5
  %67 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %66, i32 0, i32 9
  %68 = load i16, ptr %67, align 1, !tbaa !11
  %69 = zext i16 %68 to i32
  %70 = and i32 %69, 8
  %71 = icmp sgt i32 %70, 0
  %72 = zext i1 %71 to i64
  %73 = select i1 %71, i32 1, i32 0
  store i32 %73, ptr %26, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #4
  %74 = load ptr, ptr %14, align 8, !tbaa !5
  %75 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %74, i32 0, i32 9
  %76 = load i16, ptr %75, align 1, !tbaa !11
  %77 = zext i16 %76 to i32
  %78 = and i32 %77, 32
  %79 = icmp sgt i32 %78, 0
  %80 = zext i1 %79 to i64
  %81 = select i1 %79, i32 1, i32 0
  store i32 %81, ptr %27, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #4
  %82 = load i32, ptr %25, align 4, !tbaa !9
  %83 = icmp eq i32 %82, 1
  br i1 %83, label %90, label %84

84:                                               ; preds = %10
  %85 = load i32, ptr %26, align 4, !tbaa !9
  %86 = icmp eq i32 %85, 1
  br i1 %86, label %90, label %87

87:                                               ; preds = %84
  %88 = load i32, ptr %27, align 4, !tbaa !9
  %89 = icmp eq i32 %88, 1
  br label %90

90:                                               ; preds = %87, %84, %10
  %91 = phi i1 [ true, %84 ], [ true, %10 ], [ %89, %87 ]
  %92 = zext i1 %91 to i64
  %93 = select i1 %91, i32 1, i32 0
  store i32 %93, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #4
  %94 = load ptr, ptr %14, align 8, !tbaa !5
  %95 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %94, i32 0, i32 3
  %96 = load i32, ptr %95, align 1, !tbaa !14
  %97 = load ptr, ptr %13, align 8, !tbaa !5
  %98 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %97, i32 0, i32 5
  %99 = load i32, ptr %98, align 4, !tbaa !15
  %100 = mul i32 %96, %99
  store i32 %100, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #4
  %101 = load ptr, ptr %14, align 8, !tbaa !5
  %102 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %101, i32 0, i32 4
  %103 = load i32, ptr %102, align 1, !tbaa !17
  %104 = load ptr, ptr %13, align 8, !tbaa !5
  %105 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %104, i32 0, i32 3
  %106 = load i32, ptr %105, align 4, !tbaa !18
  %107 = mul i32 %103, %106
  store i32 %107, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #4
  %108 = load i32, ptr %19, align 4, !tbaa !9
  %109 = icmp eq i32 %108, 0
  br i1 %109, label %110, label %118

110:                                              ; preds = %90
  %111 = load ptr, ptr %13, align 8, !tbaa !5
  %112 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %111, i32 0, i32 5
  %113 = load i32, ptr %112, align 4, !tbaa !15
  %114 = load i32, ptr %15, align 4, !tbaa !9
  %115 = mul i32 %113, %114
  %116 = load i32, ptr %17, align 4, !tbaa !9
  %117 = mul i32 %115, %116
  br label %129

118:                                              ; preds = %90
  %119 = load ptr, ptr %13, align 8, !tbaa !5
  %120 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %119, i32 0, i32 5
  %121 = load i32, ptr %120, align 4, !tbaa !15
  %122 = load i32, ptr %15, align 4, !tbaa !9
  %123 = load i32, ptr %17, align 4, !tbaa !9
  %124 = sub i32 %123, 1
  %125 = mul i32 %122, %124
  %126 = load i32, ptr %19, align 4, !tbaa !9
  %127 = add i32 %125, %126
  %128 = mul i32 %121, %127
  br label %129

129:                                              ; preds = %118, %110
  %130 = phi i32 [ %117, %110 ], [ %128, %118 ]
  store i32 %130, ptr %31, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #4
  %131 = load i32, ptr %19, align 4, !tbaa !9
  %132 = icmp eq i32 %131, 0
  br i1 %132, label %133, label %141

133:                                              ; preds = %129
  %134 = load ptr, ptr %13, align 8, !tbaa !5
  %135 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %134, i32 0, i32 3
  %136 = load i32, ptr %135, align 4, !tbaa !18
  %137 = load i32, ptr %15, align 4, !tbaa !9
  %138 = mul i32 %136, %137
  %139 = load i32, ptr %17, align 4, !tbaa !9
  %140 = mul i32 %138, %139
  br label %152

141:                                              ; preds = %129
  %142 = load ptr, ptr %13, align 8, !tbaa !5
  %143 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %142, i32 0, i32 3
  %144 = load i32, ptr %143, align 4, !tbaa !18
  %145 = load i32, ptr %15, align 4, !tbaa !9
  %146 = load i32, ptr %17, align 4, !tbaa !9
  %147 = sub i32 %146, 1
  %148 = mul i32 %145, %147
  %149 = load i32, ptr %19, align 4, !tbaa !9
  %150 = add i32 %148, %149
  %151 = mul i32 %144, %150
  br label %152

152:                                              ; preds = %141, %133
  %153 = phi i32 [ %140, %133 ], [ %151, %141 ]
  store i32 %153, ptr %32, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #4
  store i32 0, ptr %33, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #4
  store i32 0, ptr %34, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #4
  %154 = load i32, ptr %26, align 4, !tbaa !9
  %155 = icmp eq i32 %154, 1
  br i1 %155, label %156, label %157

156:                                              ; preds = %152
  br label %159

157:                                              ; preds = %152
  %158 = load i32, ptr %18, align 4, !tbaa !9
  br label %159

159:                                              ; preds = %157, %156
  %160 = phi i32 [ 1, %156 ], [ %158, %157 ]
  store i32 %160, ptr %35, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #4
  store i32 0, ptr %36, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #4
  %161 = load ptr, ptr %11, align 8, !tbaa !5
  %162 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %161, i32 0, i32 6
  %163 = load i32, ptr %162, align 4, !tbaa !19
  %164 = icmp uge i32 %163, 2201
  br i1 %164, label %165, label %170

165:                                              ; preds = %159
  %166 = load ptr, ptr %11, align 8, !tbaa !5
  %167 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %166, i32 0, i32 6
  %168 = load i32, ptr %167, align 4, !tbaa !19
  %169 = icmp ule i32 %168, 2999
  br label %170

170:                                              ; preds = %165, %159
  %171 = phi i1 [ false, %159 ], [ %169, %165 ]
  %172 = zext i1 %171 to i32
  %173 = trunc i32 %172 to i8
  store i8 %173, ptr %37, align 1, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #4
  %174 = load ptr, ptr %14, align 8, !tbaa !5
  %175 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %174, i32 0, i32 10
  %176 = load i16, ptr %175, align 1, !tbaa !22
  %177 = zext i16 %176 to i32
  %178 = icmp eq i32 %177, 4
  br i1 %178, label %201, label %179

179:                                              ; preds = %170
  %180 = load ptr, ptr %14, align 8, !tbaa !5
  %181 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %180, i32 0, i32 10
  %182 = load i16, ptr %181, align 1, !tbaa !22
  %183 = zext i16 %182 to i32
  %184 = icmp eq i32 %183, 5
  br i1 %184, label %201, label %185

185:                                              ; preds = %179
  %186 = load ptr, ptr %14, align 8, !tbaa !5
  %187 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %186, i32 0, i32 10
  %188 = load i16, ptr %187, align 1, !tbaa !22
  %189 = zext i16 %188 to i32
  %190 = icmp eq i32 %189, 9
  br i1 %190, label %201, label %191

191:                                              ; preds = %185
  %192 = load ptr, ptr %14, align 8, !tbaa !5
  %193 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %192, i32 0, i32 10
  %194 = load i16, ptr %193, align 1, !tbaa !22
  %195 = zext i16 %194 to i32
  %196 = icmp eq i32 %195, 10
  br i1 %196, label %201, label %197

197:                                              ; preds = %191
  %198 = load ptr, ptr %14, align 8, !tbaa !5
  %199 = call i32 @libxsmm_generator_mateltwise_is_binary_cmp_op(ptr noundef %198)
  %200 = icmp ugt i32 %199, 0
  br label %201

201:                                              ; preds = %197, %191, %185, %179, %170
  %202 = phi i1 [ true, %191 ], [ true, %185 ], [ true, %179 ], [ true, %170 ], [ %200, %197 ]
  %203 = zext i1 %202 to i32
  %204 = trunc i32 %203 to i8
  store i8 %204, ptr %38, align 1, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #4
  %205 = load i32, ptr %20, align 4, !tbaa !9
  %206 = trunc i32 %205 to i8
  %207 = zext i8 %206 to i32
  %208 = icmp eq i32 0, %207
  br i1 %208, label %214, label %209

209:                                              ; preds = %201
  %210 = load i32, ptr %20, align 4, !tbaa !9
  %211 = trunc i32 %210 to i8
  %212 = zext i8 %211 to i32
  %213 = icmp slt i32 0, %212
  br i1 %213, label %214, label %232

214:                                              ; preds = %209, %201
  %215 = load i32, ptr %20, align 4, !tbaa !9
  %216 = zext i32 %215 to i64
  %217 = mul i64 1, %216
  %218 = icmp ult i64 %217, 255
  br i1 %218, label %219, label %223

219:                                              ; preds = %214
  %220 = load i32, ptr %20, align 4, !tbaa !9
  %221 = zext i32 %220 to i64
  %222 = mul i64 1, %221
  br label %224

223:                                              ; preds = %214
  br label %224

224:                                              ; preds = %223, %219
  %225 = phi i64 [ %222, %219 ], [ 255, %223 ]
  %226 = icmp ule i64 %225, 255
  br i1 %226, label %227, label %232

227:                                              ; preds = %224
  %228 = load i32, ptr %20, align 4, !tbaa !9
  %229 = uitofp i32 %228 to double
  %230 = fcmp ole double 0.000000e+00, %229
  br i1 %230, label %231, label %232

231:                                              ; preds = %227
  br label %233

232:                                              ; preds = %227, %224, %209
  call void @__assert_fail(ptr noundef @.str.7, ptr noundef @.str, i32 noundef 2511, ptr noundef @__PRETTY_FUNCTION__.libxsmm_compute_binary_aarch64_2d_reg_block) #5
  unreachable

233:                                              ; preds = %231
  %234 = load i32, ptr %20, align 4, !tbaa !9
  %235 = trunc i32 %234 to i8
  store i8 %235, ptr %39, align 1, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #4
  %236 = load ptr, ptr %14, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %236, i32 0, i32 11
  %238 = load i8, ptr %237, align 1, !tbaa !23
  %239 = zext i8 %238 to i32
  %240 = icmp eq i32 %239, 2
  br i1 %240, label %241, label %247

241:                                              ; preds = %233
  %242 = load ptr, ptr %14, align 8, !tbaa !5
  %243 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %242, i32 0, i32 10
  %244 = load i16, ptr %243, align 1, !tbaa !22
  %245 = zext i16 %244 to i32
  %246 = icmp eq i32 %245, 26
  br label %247

247:                                              ; preds = %241, %233
  %248 = phi i1 [ false, %233 ], [ %246, %241 ]
  %249 = zext i1 %248 to i64
  %250 = select i1 %248, i32 1, i32 0
  store i32 %250, ptr %40, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #4
  %251 = load i32, ptr %40, align 4, !tbaa !9
  %252 = icmp ugt i32 %251, 0
  br i1 %252, label %253, label %355

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

257:                                              ; preds = %253
  br label %351

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

262:                                              ; preds = %258
  br label %349

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

267:                                              ; preds = %263
  br label %347

268:                                              ; preds = %263
  %269 = load ptr, ptr %14, align 8, !tbaa !5
  %270 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %269, i32 noundef 3)
  %271 = icmp eq i32 3, %270
  br i1 %271, label %272, label %273

272:                                              ; preds = %268
  br label %345

273:                                              ; preds = %268
  %274 = load ptr, ptr %14, align 8, !tbaa !5
  %275 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %274, i32 noundef 3)
  %276 = icmp eq i32 4, %275
  br i1 %276, label %277, label %278

277:                                              ; preds = %273
  br label %343

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

282:                                              ; preds = %278
  br label %341

283:                                              ; preds = %278
  %284 = load ptr, ptr %14, align 8, !tbaa !5
  %285 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %284, i32 noundef 3)
  %286 = icmp eq i32 6, %285
  br i1 %286, label %287, label %288

287:                                              ; preds = %283
  br label %339

288:                                              ; preds = %283
  %289 = load ptr, ptr %14, align 8, !tbaa !5
  %290 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %289, i32 noundef 3)
  %291 = icmp eq i32 7, %290
  br i1 %291, label %292, label %293

292:                                              ; preds = %288
  br label %337

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

297:                                              ; preds = %293
  br label %335

298:                                              ; preds = %293
  %299 = load ptr, ptr %14, align 8, !tbaa !5
  %300 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %299, i32 noundef 3)
  %301 = icmp eq i32 9, %300
  br i1 %301, label %302, label %303

302:                                              ; preds = %298
  br label %333

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

307:                                              ; preds = %303
  br label %331

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

312:                                              ; preds = %308
  br label %329

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

317:                                              ; preds = %313
  br label %327

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

322:                                              ; preds = %318
  br label %325

323:                                              ; preds = %318
  call void @__assert_fail(ptr noundef @.str.3, ptr noundef @.str, i32 noundef 2513, ptr noundef @__PRETTY_FUNCTION__.libxsmm_compute_binary_aarch64_2d_reg_block) #5
  unreachable

324:                                              ; No predecessors!
  br label %325

325:                                              ; preds = %324, %322
  %326 = phi i32 [ 1, %322 ], [ 0, %324 ]
  br label %327

327:                                              ; preds = %325, %317
  %328 = phi i32 [ 1, %317 ], [ %326, %325 ]
  br label %329

329:                                              ; preds = %327, %312
  %330 = phi i32 [ 2, %312 ], [ %328, %327 ]
  br label %331

331:                                              ; preds = %329, %307
  %332 = phi i32 [ 2, %307 ], [ %330, %329 ]
  br label %333

333:                                              ; preds = %331, %302
  %334 = phi i32 [ 4, %302 ], [ %332, %331 ]
  br label %335

335:                                              ; preds = %333, %297
  %336 = phi i32 [ 4, %297 ], [ %334, %333 ]
  br label %337

337:                                              ; preds = %335, %292
  %338 = phi i32 [ 8, %292 ], [ %336, %335 ]
  br label %339

339:                                              ; preds = %337, %287
  %340 = phi i32 [ 8, %287 ], [ %338, %337 ]
  br label %341

341:                                              ; preds = %339, %282
  %342 = phi i32 [ 1, %282 ], [ %340, %339 ]
  br label %343

343:                                              ; preds = %341, %277
  %344 = phi i32 [ 1, %277 ], [ %342, %341 ]
  br label %345

345:                                              ; preds = %343, %272
  %346 = phi i32 [ 2, %272 ], [ %344, %343 ]
  br label %347

347:                                              ; preds = %345, %267
  %348 = phi i32 [ 2, %267 ], [ %346, %345 ]
  br label %349

349:                                              ; preds = %347, %262
  %350 = phi i32 [ 4, %262 ], [ %348, %347 ]
  br label %351

351:                                              ; preds = %349, %257
  %352 = phi i32 [ 8, %257 ], [ %350, %349 ]
  %353 = trunc i32 %352 to i8
  %354 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext %353)
  br label %457

355:                                              ; preds = %247
  %356 = load ptr, ptr %14, align 8, !tbaa !5
  %357 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %356, i32 noundef 4)
  %358 = icmp eq i32 0, %357
  br i1 %358, label %359, label %360

359:                                              ; preds = %355
  br label %453

360:                                              ; preds = %355
  %361 = load ptr, ptr %14, align 8, !tbaa !5
  %362 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %361, i32 noundef 4)
  %363 = icmp eq i32 1, %362
  br i1 %363, label %364, label %365

364:                                              ; preds = %360
  br label %451

365:                                              ; preds = %360
  %366 = load ptr, ptr %14, align 8, !tbaa !5
  %367 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %366, i32 noundef 4)
  %368 = icmp eq i32 2, %367
  br i1 %368, label %369, label %370

369:                                              ; preds = %365
  br label %449

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

374:                                              ; preds = %370
  br label %447

375:                                              ; preds = %370
  %376 = load ptr, ptr %14, align 8, !tbaa !5
  %377 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %376, i32 noundef 4)
  %378 = icmp eq i32 4, %377
  br i1 %378, label %379, label %380

379:                                              ; preds = %375
  br label %445

380:                                              ; preds = %375
  %381 = load ptr, ptr %14, align 8, !tbaa !5
  %382 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %381, i32 noundef 4)
  %383 = icmp eq i32 5, %382
  br i1 %383, label %384, label %385

384:                                              ; preds = %380
  br label %443

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

389:                                              ; preds = %385
  br label %441

390:                                              ; preds = %385
  %391 = load ptr, ptr %14, align 8, !tbaa !5
  %392 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %391, i32 noundef 4)
  %393 = icmp eq i32 7, %392
  br i1 %393, label %394, label %395

394:                                              ; preds = %390
  br label %439

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

399:                                              ; preds = %395
  br label %437

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

404:                                              ; preds = %400
  br label %435

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

409:                                              ; preds = %405
  br label %433

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

414:                                              ; preds = %410
  br label %431

415:                                              ; preds = %410
  %416 = load ptr, ptr %14, align 8, !tbaa !5
  %417 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %416, i32 noundef 4)
  %418 = icmp eq i32 12, %417
  br i1 %418, label %419, label %420

419:                                              ; preds = %415
  br label %429

420:                                              ; preds = %415
  %421 = load ptr, ptr %14, align 8, !tbaa !5
  %422 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %421, i32 noundef 4)
  %423 = icmp eq i32 13, %422
  br i1 %423, label %424, label %425

424:                                              ; preds = %420
  br label %427

425:                                              ; preds = %420
  call void @__assert_fail(ptr noundef @.str.3, ptr noundef @.str, i32 noundef 2514, ptr noundef @__PRETTY_FUNCTION__.libxsmm_compute_binary_aarch64_2d_reg_block) #5
  unreachable

426:                                              ; No predecessors!
  br label %427

427:                                              ; preds = %426, %424
  %428 = phi i32 [ 1, %424 ], [ 0, %426 ]
  br label %429

429:                                              ; preds = %427, %419
  %430 = phi i32 [ 1, %419 ], [ %428, %427 ]
  br label %431

431:                                              ; preds = %429, %414
  %432 = phi i32 [ 2, %414 ], [ %430, %429 ]
  br label %433

433:                                              ; preds = %431, %409
  %434 = phi i32 [ 2, %409 ], [ %432, %431 ]
  br label %435

435:                                              ; preds = %433, %404
  %436 = phi i32 [ 4, %404 ], [ %434, %433 ]
  br label %437

437:                                              ; preds = %435, %399
  %438 = phi i32 [ 4, %399 ], [ %436, %435 ]
  br label %439

439:                                              ; preds = %437, %394
  %440 = phi i32 [ 8, %394 ], [ %438, %437 ]
  br label %441

441:                                              ; preds = %439, %389
  %442 = phi i32 [ 8, %389 ], [ %440, %439 ]
  br label %443

443:                                              ; preds = %441, %384
  %444 = phi i32 [ 1, %384 ], [ %442, %441 ]
  br label %445

445:                                              ; preds = %443, %379
  %446 = phi i32 [ 1, %379 ], [ %444, %443 ]
  br label %447

447:                                              ; preds = %445, %374
  %448 = phi i32 [ 2, %374 ], [ %446, %445 ]
  br label %449

449:                                              ; preds = %447, %369
  %450 = phi i32 [ 2, %369 ], [ %448, %447 ]
  br label %451

451:                                              ; preds = %449, %364
  %452 = phi i32 [ 4, %364 ], [ %450, %449 ]
  br label %453

453:                                              ; preds = %451, %359
  %454 = phi i32 [ 8, %359 ], [ %452, %451 ]
  %455 = trunc i32 %454 to i8
  %456 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext %455)
  br label %457

457:                                              ; preds = %453, %351
  %458 = phi i32 [ %354, %351 ], [ %456, %453 ]
  store i32 %458, ptr %41, align 4, !tbaa !9
  %459 = load ptr, ptr %14, align 8, !tbaa !5
  %460 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %459, i32 0, i32 10
  %461 = load i16, ptr %460, align 1, !tbaa !22
  %462 = zext i16 %461 to i32
  switch i32 %462, label %505 [
    i32 1, label %463
    i32 2, label %469
    i32 3, label %475
    i32 4, label %481
    i32 5, label %487
    i32 9, label %493
    i32 10, label %499
  ]

463:                                              ; preds = %457
  %464 = load i8, ptr %37, align 1, !tbaa !21
  %465 = zext i8 %464 to i32
  %466 = icmp ne i32 %465, 0
  %467 = zext i1 %466 to i64
  %468 = select i1 %466, i32 1694498819, i32 237032459
  store i32 %468, ptr %24, align 4, !tbaa !9
  br label %506

469:                                              ; preds = %457
  %470 = load i8, ptr %37, align 1, !tbaa !21
  %471 = zext i8 %470 to i32
  %472 = icmp ne i32 %471, 0
  %473 = zext i1 %472 to i64
  %474 = select i1 %472, i32 1694500867, i32 773905419
  store i32 %474, ptr %24, align 4, !tbaa !9
  br label %506

475:                                              ; preds = %457
  %476 = load i8, ptr %37, align 1, !tbaa !21
  %477 = zext i8 %476 to i32
  %478 = icmp ne i32 %477, 0
  %479 = zext i1 %478 to i64
  %480 = select i1 %478, i32 1694499843, i32 245421067
  store i32 %480, ptr %24, align 4, !tbaa !9
  br label %506

481:                                              ; preds = %457
  %482 = load i8, ptr %37, align 1, !tbaa !21
  %483 = zext i8 %482 to i32
  %484 = icmp ne i32 %483, 0
  %485 = zext i1 %484 to i64
  %486 = select i1 %484, i32 1695383714, i32 773913611
  store i32 %486, ptr %24, align 4, !tbaa !9
  br label %506

487:                                              ; preds = %457
  %488 = load i8, ptr %37, align 1, !tbaa !21
  %489 = zext i8 %488 to i32
  %490 = icmp ne i32 %489, 0
  %491 = zext i1 %490 to i64
  %492 = select i1 %490, i32 1696596099, i32 237030411
  store i32 %492, ptr %24, align 4, !tbaa !9
  br label %506

493:                                              ; preds = %457
  %494 = load i8, ptr %37, align 1, !tbaa !21
  %495 = zext i8 %494 to i32
  %496 = icmp ne i32 %495, 0
  %497 = zext i1 %496 to i64
  %498 = select i1 %496, i32 1694924962, i32 237040651
  store i32 %498, ptr %24, align 4, !tbaa !9
  br label %506

499:                                              ; preds = %457
  %500 = load i8, ptr %37, align 1, !tbaa !21
  %501 = zext i8 %500 to i32
  %502 = icmp ne i32 %501, 0
  %503 = zext i1 %502 to i64
  %504 = select i1 %502, i32 1694990498, i32 245429259
  store i32 %504, ptr %24, align 4, !tbaa !9
  br label %506

505:                                              ; preds = %457
  br label %506

506:                                              ; preds = %505, %499, %493, %487, %481, %475, %469, %463
  %507 = load ptr, ptr %14, align 8, !tbaa !5
  %508 = call i32 @libxsmm_generator_mateltwise_is_binary_cmp_op(ptr noundef %507)
  %509 = icmp ugt i32 %508, 0
  br i1 %509, label %510, label %566

510:                                              ; preds = %506
  %511 = load ptr, ptr %14, align 8, !tbaa !5
  %512 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %511, i32 0, i32 10
  %513 = load i16, ptr %512, align 1, !tbaa !22
  %514 = zext i16 %513 to i32
  switch i32 %514, label %551 [
    i32 27, label %515
    i32 28, label %521
    i32 29, label %527
    i32 30, label %533
    i32 31, label %539
    i32 32, label %545
  ]

515:                                              ; preds = %510
  %516 = load i8, ptr %37, align 1, !tbaa !21
  %517 = zext i8 %516 to i32
  %518 = icmp sgt i32 %517, 0
  %519 = zext i1 %518 to i64
  %520 = select i1 %518, i32 1694515347, i32 782296075
  store i32 %520, ptr %24, align 4, !tbaa !9
  br label %552

521:                                              ; preds = %510
  %522 = load i8, ptr %37, align 1, !tbaa !21
  %523 = zext i8 %522 to i32
  %524 = icmp sgt i32 %523, 0
  %525 = zext i1 %524 to i64
  %526 = select i1 %524, i32 1694515331, i32 773907467
  store i32 %526, ptr %24, align 4, !tbaa !9
  br label %552

527:                                              ; preds = %510
  %528 = load i8, ptr %37, align 1, !tbaa !21
  %529 = zext i8 %528 to i32
  %530 = icmp sgt i32 %529, 0
  %531 = zext i1 %530 to i64
  %532 = select i1 %530, i32 1694515347, i32 782296075
  store i32 %532, ptr %24, align 4, !tbaa !9
  br label %552

533:                                              ; preds = %510
  %534 = load i8, ptr %37, align 1, !tbaa !21
  %535 = zext i8 %534 to i32
  %536 = icmp sgt i32 %535, 0
  %537 = zext i1 %536 to i64
  %538 = select i1 %536, i32 1694515331, i32 773907467
  store i32 %538, ptr %24, align 4, !tbaa !9
  br label %552

539:                                              ; preds = %510
  %540 = load i8, ptr %37, align 1, !tbaa !21
  %541 = zext i8 %540 to i32
  %542 = icmp sgt i32 %541, 0
  %543 = zext i1 %542 to i64
  %544 = select i1 %542, i32 1694523523, i32 237036555
  store i32 %544, ptr %24, align 4, !tbaa !9
  br label %552

545:                                              ; preds = %510
  %546 = load i8, ptr %37, align 1, !tbaa !21
  %547 = zext i8 %546 to i32
  %548 = icmp sgt i32 %547, 0
  %549 = zext i1 %548 to i64
  %550 = select i1 %548, i32 1694523539, i32 237036555
  store i32 %550, ptr %24, align 4, !tbaa !9
  br label %552

551:                                              ; preds = %510
  br label %552

552:                                              ; preds = %551, %545, %539, %533, %527, %521, %515
  %553 = load ptr, ptr %14, align 8, !tbaa !5
  %554 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %553, i32 0, i32 10
  %555 = load i16, ptr %554, align 1, !tbaa !22
  %556 = zext i16 %555 to i32
  %557 = icmp eq i32 %556, 29
  br i1 %557, label %564, label %558

558:                                              ; preds = %552
  %559 = load ptr, ptr %14, align 8, !tbaa !5
  %560 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %559, i32 0, i32 10
  %561 = load i16, ptr %560, align 1, !tbaa !22
  %562 = zext i16 %561 to i32
  %563 = icmp eq i32 %562, 30
  br i1 %563, label %564, label %565

564:                                              ; preds = %558, %552
  store i32 1, ptr %36, align 4, !tbaa !9
  br label %565

565:                                              ; preds = %564, %558
  br label %566

566:                                              ; preds = %565, %506
  %567 = load i8, ptr %37, align 1, !tbaa !21
  %568 = zext i8 %567 to i32
  %569 = icmp ne i32 %568, 0
  br i1 %569, label %570, label %578

570:                                              ; preds = %566
  %571 = load i8, ptr %38, align 1, !tbaa !21
  %572 = zext i8 %571 to i32
  %573 = icmp ne i32 %572, 0
  br i1 %573, label %574, label %578

574:                                              ; preds = %570
  %575 = load ptr, ptr %11, align 8, !tbaa !5
  %576 = load i8, ptr %39, align 1, !tbaa !21
  %577 = zext i8 %576 to i32
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %575, i32 noundef %577, i32 noundef -1, i32 noundef 0)
  br label %578

578:                                              ; preds = %574, %570, %566
  %579 = load i8, ptr %37, align 1, !tbaa !21
  %580 = icmp ne i8 %579, 0
  br i1 %580, label %581, label %626

581:                                              ; preds = %578
  %582 = load ptr, ptr %11, align 8, !tbaa !5
  %583 = load i32, ptr %19, align 4, !tbaa !9
  %584 = load ptr, ptr %13, align 8, !tbaa !5
  %585 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %584, i32 0, i32 3
  %586 = load i32, ptr %585, align 4, !tbaa !18
  %587 = mul i32 %583, %586
  %588 = load ptr, ptr %12, align 8, !tbaa !5
  %589 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %588, i32 0, i32 36
  %590 = load i32, ptr %589, align 4, !tbaa !24
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %582, i32 noundef 1, i32 noundef %587, i32 noundef %590)
  %591 = load ptr, ptr %14, align 8, !tbaa !5
  %592 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %591, i32 0, i32 10
  %593 = load i16, ptr %592, align 1, !tbaa !22
  %594 = zext i16 %593 to i32
  %595 = icmp eq i32 %594, 5
  br i1 %595, label %596, label %606

596:                                              ; preds = %581
  %597 = load ptr, ptr %11, align 8, !tbaa !5
  %598 = load i32, ptr %19, align 4, !tbaa !9
  %599 = load ptr, ptr %13, align 8, !tbaa !5
  %600 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %599, i32 0, i32 5
  %601 = load i32, ptr %600, align 4, !tbaa !15
  %602 = mul i32 %598, %601
  %603 = load ptr, ptr %12, align 8, !tbaa !5
  %604 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %603, i32 0, i32 36
  %605 = load i32, ptr %604, align 4, !tbaa !24
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %597, i32 noundef 3, i32 noundef %602, i32 noundef %605)
  br label %606

606:                                              ; preds = %596, %581
  %607 = load ptr, ptr %14, align 8, !tbaa !5
  %608 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %607, i32 noundef 1)
  %609 = icmp eq i32 2, %608
  br i1 %609, label %618, label %610

610:                                              ; preds = %606
  %611 = load ptr, ptr %14, align 8, !tbaa !5
  %612 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %611, i32 noundef 2)
  %613 = icmp eq i32 2, %612
  br i1 %613, label %618, label %614

614:                                              ; preds = %610
  %615 = load ptr, ptr %14, align 8, !tbaa !5
  %616 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %615, i32 noundef 3)
  %617 = icmp eq i32 2, %616
  br i1 %617, label %618, label %625

618:                                              ; preds = %614, %610, %606
  %619 = load ptr, ptr %11, align 8, !tbaa !5
  %620 = load i32, ptr %15, align 4, !tbaa !9
  %621 = mul i32 %620, 2
  %622 = load ptr, ptr %12, align 8, !tbaa !5
  %623 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %622, i32 0, i32 36
  %624 = load i32, ptr %623, align 4, !tbaa !24
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %619, i32 noundef 2, i32 noundef %621, i32 noundef %624)
  br label %625

625:                                              ; preds = %618, %614
  br label %626

626:                                              ; preds = %625, %578
  %627 = load ptr, ptr %14, align 8, !tbaa !5
  %628 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %627, i32 0, i32 10
  %629 = load i16, ptr %628, align 1, !tbaa !22
  %630 = zext i16 %629 to i32
  %631 = icmp eq i32 %630, 26
  br i1 %631, label %632, label %980

632:                                              ; preds = %626
  %633 = load i8, ptr %37, align 1, !tbaa !21
  %634 = zext i8 %633 to i32
  %635 = icmp sgt i32 %634, 0
  br i1 %635, label %636, label %979

636:                                              ; preds = %632
  %637 = load i32, ptr %30, align 4, !tbaa !9
  %638 = load i32, ptr %18, align 4, !tbaa !9
  %639 = mul i32 %637, %638
  store i32 %639, ptr %33, align 4, !tbaa !9
  %640 = load ptr, ptr %11, align 8, !tbaa !5
  %641 = load i8, ptr %39, align 1, !tbaa !21
  %642 = zext i8 %641 to i32
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %640, i32 noundef %642, i32 noundef -1, i32 noundef 0)
  %643 = load ptr, ptr %11, align 8, !tbaa !5
  %644 = load i32, ptr %15, align 4, !tbaa !9
  %645 = load ptr, ptr %13, align 8, !tbaa !5
  %646 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %645, i32 0, i32 2
  %647 = load i32, ptr %646, align 4, !tbaa !26
  %648 = mul i32 %644, %647
  %649 = load ptr, ptr %12, align 8, !tbaa !5
  %650 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %649, i32 0, i32 35
  %651 = load i32, ptr %650, align 4, !tbaa !27
  call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef %643, i32 noundef 2, i32 noundef %648, i32 noundef %651)
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %652

652:                                              ; preds = %963, %636
  %653 = load i32, ptr %22, align 4, !tbaa !9
  %654 = load i32, ptr %18, align 4, !tbaa !9
  %655 = icmp ult i32 %653, %654
  br i1 %655, label %656, label %966

656:                                              ; preds = %652
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %657

657:                                              ; preds = %891, %656
  %658 = load i32, ptr %21, align 4, !tbaa !9
  %659 = load i32, ptr %17, align 4, !tbaa !9
  %660 = icmp ult i32 %658, %659
  br i1 %660, label %661, label %894

661:                                              ; preds = %657
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #4
  %662 = load ptr, ptr %14, align 8, !tbaa !5
  %663 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %662, i32 noundef 0)
  %664 = icmp eq i32 1, %663
  br i1 %664, label %669, label %665

665:                                              ; preds = %661
  %666 = load ptr, ptr %14, align 8, !tbaa !5
  %667 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %666, i32 noundef 0)
  %668 = icmp eq i32 0, %667
  br label %669

669:                                              ; preds = %665, %661
  %670 = phi i1 [ true, %661 ], [ %668, %665 ]
  %671 = zext i1 %670 to i64
  %672 = select i1 %670, i32 1, i32 0
  store i32 %672, ptr %42, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #4
  %673 = load i32, ptr %42, align 4, !tbaa !9
  %674 = icmp ne i32 %673, 0
  br i1 %674, label %675, label %685

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

680:                                              ; preds = %675
  %681 = load i32, ptr %19, align 4, !tbaa !9
  br label %683

682:                                              ; preds = %675
  br label %683

683:                                              ; preds = %682, %680
  %684 = phi i32 [ %681, %680 ], [ 0, %682 ]
  br label %703

685:                                              ; preds = %669
  %686 = load i32, ptr %21, align 4, !tbaa !9
  %687 = load i32, ptr %17, align 4, !tbaa !9
  %688 = sub i32 %687, 1
  %689 = icmp eq i32 %686, %688
  br i1 %689, label %690, label %699

690:                                              ; preds = %685
  %691 = load i32, ptr %19, align 4, !tbaa !9
  %692 = icmp ugt i32 %691, 0
  br i1 %692, label %693, label %695

693:                                              ; preds = %690
  %694 = load i32, ptr %19, align 4, !tbaa !9
  br label %697

695:                                              ; preds = %690
  %696 = load i32, ptr %15, align 4, !tbaa !9
  br label %697

697:                                              ; preds = %695, %693
  %698 = phi i32 [ %694, %693 ], [ %696, %695 ]
  br label %701

699:                                              ; preds = %685
  %700 = load i32, ptr %15, align 4, !tbaa !9
  br label %701

701:                                              ; preds = %699, %697
  %702 = phi i32 [ %698, %697 ], [ %700, %699 ]
  br label %703

703:                                              ; preds = %701, %683
  %704 = phi i32 [ %684, %683 ], [ %702, %701 ]
  store i32 %704, ptr %43, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #4
  %705 = load i32, ptr %42, align 4, !tbaa !9
  %706 = icmp ne i32 %705, 0
  br i1 %706, label %707, label %720

707:                                              ; preds = %703
  %708 = load i32, ptr %21, align 4, !tbaa !9
  %709 = load i32, ptr %17, align 4, !tbaa !9
  %710 = sub i32 %709, 1
  %711 = icmp eq i32 %708, %710
  br i1 %711, label %712, label %717

712:                                              ; preds = %707
  %713 = load i32, ptr %19, align 4, !tbaa !9
  %714 = icmp ugt i32 %713, 0
  %715 = zext i1 %714 to i64
  %716 = select i1 %714, i32 1, i32 0
  br label %718

717:                                              ; preds = %707
  br label %718

718:                                              ; preds = %717, %712
  %719 = phi i32 [ %716, %712 ], [ 0, %717 ]
  br label %733

720:                                              ; preds = %703
  %721 = load i32, ptr %21, align 4, !tbaa !9
  %722 = load i32, ptr %17, align 4, !tbaa !9
  %723 = sub i32 %722, 1
  %724 = icmp eq i32 %721, %723
  br i1 %724, label %725, label %730

725:                                              ; preds = %720
  %726 = load i32, ptr %19, align 4, !tbaa !9
  %727 = icmp ugt i32 %726, 0
  %728 = zext i1 %727 to i64
  %729 = select i1 %727, i32 1, i32 2
  br label %731

730:                                              ; preds = %720
  br label %731

731:                                              ; preds = %730, %725
  %732 = phi i32 [ %729, %725 ], [ 2, %730 ]
  br label %733

733:                                              ; preds = %731, %718
  %734 = phi i32 [ %719, %718 ], [ %732, %731 ]
  store i32 %734, ptr %44, align 4, !tbaa !9
  %735 = load i32, ptr %16, align 4, !tbaa !9
  %736 = load i32, ptr %22, align 4, !tbaa !9
  %737 = load i32, ptr %17, align 4, !tbaa !9
  %738 = mul i32 %736, %737
  %739 = add i32 %735, %738
  %740 = load i32, ptr %21, align 4, !tbaa !9
  %741 = add i32 %739, %740
  store i32 %741, ptr %23, align 4, !tbaa !9
  %742 = load i32, ptr %28, align 4, !tbaa !9
  %743 = icmp eq i32 %742, 0
  br i1 %743, label %747, label %744

744:                                              ; preds = %733
  %745 = load i32, ptr %26, align 4, !tbaa !9
  %746 = icmp eq i32 %745, 1
  br i1 %746, label %747, label %820

747:                                              ; preds = %744, %733
  %748 = load i32, ptr %26, align 4, !tbaa !9
  %749 = icmp eq i32 %748, 1
  br i1 %749, label %750, label %752

750:                                              ; preds = %747
  %751 = load i32, ptr %32, align 4, !tbaa !9
  br label %756

752:                                              ; preds = %747
  %753 = load i32, ptr %30, align 4, !tbaa !9
  %754 = load i32, ptr %35, align 4, !tbaa !9
  %755 = mul i32 %753, %754
  br label %756

756:                                              ; preds = %752, %750
  %757 = phi i32 [ %751, %750 ], [ %755, %752 ]
  store i32 %757, ptr %33, align 4, !tbaa !9
  %758 = load ptr, ptr %11, align 8, !tbaa !5
  %759 = load ptr, ptr %12, align 8, !tbaa !5
  %760 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %759, i32 0, i32 2
  %761 = load i32, ptr %760, align 4, !tbaa !28
  %762 = load ptr, ptr %12, align 8, !tbaa !5
  %763 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %762, i32 0, i32 36
  %764 = load i32, ptr %763, align 4, !tbaa !24
  %765 = load ptr, ptr %13, align 8, !tbaa !5
  %766 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %765, i32 0, i32 29
  %767 = load i32, ptr %766, align 4, !tbaa !29
  %768 = load ptr, ptr %13, align 8, !tbaa !5
  %769 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %768, i32 0, i32 2
  %770 = load i32, ptr %769, align 4, !tbaa !26
  %771 = load i32, ptr %43, align 4, !tbaa !9
  %772 = load i32, ptr %44, align 4, !tbaa !9
  %773 = trunc i32 %772 to i8
  %774 = zext i8 %773 to i32
  %775 = icmp eq i32 0, %774
  br i1 %775, label %781, label %776

776:                                              ; preds = %756
  %777 = load i32, ptr %44, align 4, !tbaa !9
  %778 = trunc i32 %777 to i8
  %779 = zext i8 %778 to i32
  %780 = icmp slt i32 0, %779
  br i1 %780, label %781, label %799

781:                                              ; preds = %776, %756
  %782 = load i32, ptr %44, align 4, !tbaa !9
  %783 = zext i32 %782 to i64
  %784 = mul i64 1, %783
  %785 = icmp ult i64 %784, 255
  br i1 %785, label %786, label %790

786:                                              ; preds = %781
  %787 = load i32, ptr %44, align 4, !tbaa !9
  %788 = zext i32 %787 to i64
  %789 = mul i64 1, %788
  br label %791

790:                                              ; preds = %781
  br label %791

791:                                              ; preds = %790, %786
  %792 = phi i64 [ %789, %786 ], [ 255, %790 ]
  %793 = icmp ule i64 %792, 255
  br i1 %793, label %794, label %799

794:                                              ; preds = %791
  %795 = load i32, ptr %44, align 4, !tbaa !9
  %796 = uitofp i32 %795 to double
  %797 = fcmp ole double 0.000000e+00, %796
  br i1 %797, label %798, label %799

798:                                              ; preds = %794
  br label %800

799:                                              ; preds = %794, %791, %776
  call void @__assert_fail(ptr noundef @.str.5, ptr noundef @.str, i32 noundef 2598, ptr noundef @__PRETTY_FUNCTION__.libxsmm_compute_binary_aarch64_2d_reg_block) #5
  unreachable

800:                                              ; preds = %798
  %801 = load i32, ptr %44, align 4, !tbaa !9
  %802 = trunc i32 %801 to i8
  %803 = load i8, ptr %37, align 1, !tbaa !21
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %758, i32 noundef %761, i32 noundef %764, i32 noundef %767, i32 noundef %770, i32 noundef %771, i32 noundef 1, i32 noundef 0, i8 noundef zeroext %802, i8 noundef zeroext %803)
  %804 = load ptr, ptr %11, align 8, !tbaa !5
  %805 = load ptr, ptr %13, align 8, !tbaa !5
  %806 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %805, i32 0, i32 29
  %807 = load i32, ptr %806, align 4, !tbaa !29
  %808 = load ptr, ptr %13, align 8, !tbaa !5
  %809 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %808, i32 0, i32 29
  %810 = load i32, ptr %809, align 4, !tbaa !29
  %811 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4)
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %804, i32 noundef 87177218, i32 noundef %807, i32 noundef 127, i8 noundef zeroext 0, i32 noundef %810, i32 noundef 0, i32 noundef %811)
  %812 = load ptr, ptr %11, align 8, !tbaa !5
  %813 = load ptr, ptr %13, align 8, !tbaa !5
  %814 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %813, i32 0, i32 29
  %815 = load i32, ptr %814, align 4, !tbaa !29
  %816 = load ptr, ptr %13, align 8, !tbaa !5
  %817 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %816, i32 0, i32 29
  %818 = load i32, ptr %817, align 4, !tbaa !29
  %819 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4)
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %812, i32 noundef 69245958, i32 noundef %815, i32 noundef 127, i8 noundef zeroext 16, i32 noundef %818, i32 noundef 0, i32 noundef %819)
  br label %881

820:                                              ; preds = %744
  %821 = load i32, ptr %25, align 4, !tbaa !9
  %822 = icmp eq i32 %821, 1
  br i1 %822, label %826, label %823

823:                                              ; preds = %820
  %824 = load i32, ptr %27, align 4, !tbaa !9
  %825 = icmp eq i32 %824, 1
  br i1 %825, label %826, label %880

826:                                              ; preds = %823, %820
  %827 = load i32, ptr %27, align 4, !tbaa !9
  %828 = icmp eq i32 %827, 1
  br i1 %828, label %829, label %830

829:                                              ; preds = %826
  br label %840

830:                                              ; preds = %826
  %831 = load ptr, ptr %13, align 8, !tbaa !5
  %832 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %831, i32 0, i32 3
  %833 = load i32, ptr %832, align 4, !tbaa !18
  %834 = load ptr, ptr %14, align 8, !tbaa !5
  %835 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %834, i32 0, i32 4
  %836 = load i32, ptr %835, align 1, !tbaa !17
  %837 = mul i32 %833, %836
  %838 = load i32, ptr %18, align 4, !tbaa !9
  %839 = mul i32 %837, %838
  br label %840

840:                                              ; preds = %830, %829
  %841 = phi i32 [ 0, %829 ], [ %839, %830 ]
  store i32 %841, ptr %33, align 4, !tbaa !9
  %842 = load ptr, ptr %11, align 8, !tbaa !5
  %843 = load ptr, ptr %12, align 8, !tbaa !5
  %844 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %843, i32 0, i32 2
  %845 = load i32, ptr %844, align 4, !tbaa !28
  %846 = load ptr, ptr %12, align 8, !tbaa !5
  %847 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %846, i32 0, i32 36
  %848 = load i32, ptr %847, align 4, !tbaa !24
  %849 = load ptr, ptr %13, align 8, !tbaa !5
  %850 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %849, i32 0, i32 29
  %851 = load i32, ptr %850, align 4, !tbaa !29
  %852 = load ptr, ptr %13, align 8, !tbaa !5
  %853 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %852, i32 0, i32 3
  %854 = load i32, ptr %853, align 4, !tbaa !18
  %855 = load i32, ptr %21, align 4, !tbaa !9
  %856 = load i32, ptr %17, align 4, !tbaa !9
  %857 = sub i32 %856, 1
  %858 = icmp eq i32 %855, %857
  br i1 %858, label %859, label %861

859:                                              ; preds = %840
  %860 = load i32, ptr %19, align 4, !tbaa !9
  br label %862

861:                                              ; preds = %840
  br label %862

862:                                              ; preds = %861, %859
  %863 = phi i32 [ %860, %859 ], [ 0, %861 ]
  call void @libxsmm_generator_bcastload_masked_vreg_aarch64_asimd(ptr noundef %842, i32 noundef %845, i32 noundef %848, i32 noundef %851, i32 noundef %854, i32 noundef %863, i32 noundef 0)
  %864 = load ptr, ptr %11, align 8, !tbaa !5
  %865 = load ptr, ptr %13, align 8, !tbaa !5
  %866 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %865, i32 0, i32 29
  %867 = load i32, ptr %866, align 4, !tbaa !29
  %868 = load ptr, ptr %13, align 8, !tbaa !5
  %869 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %868, i32 0, i32 29
  %870 = load i32, ptr %869, align 4, !tbaa !29
  %871 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4)
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %864, i32 noundef 87177218, i32 noundef %867, i32 noundef 127, i8 noundef zeroext 0, i32 noundef %870, i32 noundef 0, i32 noundef %871)
  %872 = load ptr, ptr %11, align 8, !tbaa !5
  %873 = load ptr, ptr %13, align 8, !tbaa !5
  %874 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %873, i32 0, i32 29
  %875 = load i32, ptr %874, align 4, !tbaa !29
  %876 = load ptr, ptr %13, align 8, !tbaa !5
  %877 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %876, i32 0, i32 29
  %878 = load i32, ptr %877, align 4, !tbaa !29
  %879 = call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4)
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %872, i32 noundef 69245958, i32 noundef %875, i32 noundef 127, i8 noundef zeroext 16, i32 noundef %878, i32 noundef 0, i32 noundef %879)
  br label %880

880:                                              ; preds = %862, %823
  br label %881

881:                                              ; preds = %880, %800
  %882 = load ptr, ptr %11, align 8, !tbaa !5
  %883 = load i32, ptr %23, align 4, !tbaa !9
  %884 = load ptr, ptr %13, align 8, !tbaa !5
  %885 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %884, i32 0, i32 29
  %886 = load i32, ptr %885, align 4, !tbaa !29
  %887 = load i32, ptr %23, align 4, !tbaa !9
  %888 = load i8, ptr %39, align 1, !tbaa !21
  %889 = zext i8 %888 to i32
  %890 = load i32, ptr %41, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %882, i32 noundef 73412611, i32 noundef %883, i32 noundef %886, i8 noundef zeroext 0, i32 noundef %887, i32 noundef %889, i32 noundef %890)
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #4
  br label %891

891:                                              ; preds = %881
  %892 = load i32, ptr %21, align 4, !tbaa !9
  %893 = add i32 %892, 1
  store i32 %893, ptr %21, align 4, !tbaa !9
  br label %657, !llvm.loop !30

894:                                              ; preds = %657
  %895 = load i32, ptr %28, align 4, !tbaa !9
  %896 = icmp eq i32 %895, 0
  br i1 %896, label %897, label %918

897:                                              ; preds = %894
  %898 = load i32, ptr %30, align 4, !tbaa !9
  %899 = load i32, ptr %32, align 4, !tbaa !9
  %900 = icmp ne i32 %898, %899
  br i1 %900, label %901, label %917

901:                                              ; preds = %897
  %902 = load ptr, ptr %11, align 8, !tbaa !5
  %903 = load ptr, ptr %12, align 8, !tbaa !5
  %904 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %903, i32 0, i32 2
  %905 = load i32, ptr %904, align 4, !tbaa !28
  %906 = load ptr, ptr %12, align 8, !tbaa !5
  %907 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %906, i32 0, i32 35
  %908 = load i32, ptr %907, align 4, !tbaa !27
  %909 = load ptr, ptr %12, align 8, !tbaa !5
  %910 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %909, i32 0, i32 2
  %911 = load i32, ptr %910, align 4, !tbaa !28
  %912 = load i32, ptr %30, align 4, !tbaa !9
  %913 = zext i32 %912 to i64
  %914 = load i32, ptr %32, align 4, !tbaa !9
  %915 = zext i32 %914 to i64
  %916 = sub nsw i64 %913, %915
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %902, i32 noundef 4096, i32 noundef %905, i32 noundef %908, i32 noundef %911, i64 noundef %916)
  br label %917

917:                                              ; preds = %901, %897
  br label %918

918:                                              ; preds = %917, %894
  %919 = load i32, ptr %26, align 4, !tbaa !9
  %920 = icmp eq i32 %919, 1
  br i1 %920, label %921, label %939

921:                                              ; preds = %918
  %922 = load i32, ptr %22, align 4, !tbaa !9
  %923 = load i32, ptr %18, align 4, !tbaa !9
  %924 = sub i32 %923, 1
  %925 = icmp ult i32 %922, %924
  br i1 %925, label %926, label %939

926:                                              ; preds = %921
  %927 = load ptr, ptr %11, align 8, !tbaa !5
  %928 = load ptr, ptr %12, align 8, !tbaa !5
  %929 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %928, i32 0, i32 2
  %930 = load i32, ptr %929, align 4, !tbaa !28
  %931 = load ptr, ptr %12, align 8, !tbaa !5
  %932 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %931, i32 0, i32 35
  %933 = load i32, ptr %932, align 4, !tbaa !27
  %934 = load ptr, ptr %12, align 8, !tbaa !5
  %935 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %934, i32 0, i32 2
  %936 = load i32, ptr %935, align 4, !tbaa !28
  %937 = load i32, ptr %33, align 4, !tbaa !9
  %938 = zext i32 %937 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %927, i32 noundef 4097, i32 noundef %930, i32 noundef %933, i32 noundef %936, i64 noundef %938)
  br label %939

939:                                              ; preds = %926, %921, %918
  %940 = load i32, ptr %25, align 4, !tbaa !9
  %941 = icmp eq i32 %940, 1
  br i1 %941, label %942, label %962

942:                                              ; preds = %939
  %943 = load ptr, ptr %11, align 8, !tbaa !5
  %944 = load ptr, ptr %12, align 8, !tbaa !5
  %945 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %944, i32 0, i32 2
  %946 = load i32, ptr %945, align 4, !tbaa !28
  %947 = load ptr, ptr %12, align 8, !tbaa !5
  %948 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %947, i32 0, i32 35
  %949 = load i32, ptr %948, align 4, !tbaa !27
  %950 = load ptr, ptr %12, align 8, !tbaa !5
  %951 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %950, i32 0, i32 2
  %952 = load i32, ptr %951, align 4, !tbaa !28
  %953 = load ptr, ptr %14, align 8, !tbaa !5
  %954 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %953, i32 0, i32 4
  %955 = load i32, ptr %954, align 1, !tbaa !17
  %956 = zext i32 %955 to i64
  %957 = load ptr, ptr %13, align 8, !tbaa !5
  %958 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %957, i32 0, i32 3
  %959 = load i32, ptr %958, align 4, !tbaa !18
  %960 = zext i32 %959 to i64
  %961 = mul nsw i64 %956, %960
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %943, i32 noundef 4096, i32 noundef %946, i32 noundef %949, i32 noundef %952, i64 noundef %961)
  br label %962

962:                                              ; preds = %942, %939
  br label %963

963:                                              ; preds = %962
  %964 = load i32, ptr %22, align 4, !tbaa !9
  %965 = add i32 %964, 1
  store i32 %965, ptr %22, align 4, !tbaa !9
  br label %652, !llvm.loop !32

966:                                              ; preds = %652
  %967 = load ptr, ptr %11, align 8, !tbaa !5
  %968 = load ptr, ptr %12, align 8, !tbaa !5
  %969 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %968, i32 0, i32 2
  %970 = load i32, ptr %969, align 4, !tbaa !28
  %971 = load ptr, ptr %12, align 8, !tbaa !5
  %972 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %971, i32 0, i32 35
  %973 = load i32, ptr %972, align 4, !tbaa !27
  %974 = load ptr, ptr %12, align 8, !tbaa !5
  %975 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %974, i32 0, i32 2
  %976 = load i32, ptr %975, align 4, !tbaa !28
  %977 = load i32, ptr %33, align 4, !tbaa !9
  %978 = zext i32 %977 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %967, i32 noundef 4097, i32 noundef %970, i32 noundef %973, i32 noundef %976, i64 noundef %978)
  br label %979

979:                                              ; preds = %966, %632
  store i32 1, ptr %45, align 4
  br label %2109

980:                                              ; preds = %626
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %981

981:                                              ; preds = %2050, %980
  %982 = load i32, ptr %22, align 4, !tbaa !9
  %983 = load i32, ptr %18, align 4, !tbaa !9
  %984 = icmp ult i32 %982, %983
  br i1 %984, label %985, label %2053

985:                                              ; preds = %981
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #4
  store i32 0, ptr %46, align 4, !tbaa !9
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %986

986:                                              ; preds = %1927, %985
  %987 = load i32, ptr %21, align 4, !tbaa !9
  %988 = load i32, ptr %17, align 4, !tbaa !9
  %989 = icmp ult i32 %987, %988
  br i1 %989, label %990, label %1930

990:                                              ; preds = %986
  %991 = load i32, ptr %16, align 4, !tbaa !9
  %992 = load i32, ptr %22, align 4, !tbaa !9
  %993 = load i32, ptr %17, align 4, !tbaa !9
  %994 = mul i32 %992, %993
  %995 = add i32 %991, %994
  %996 = load i32, ptr %21, align 4, !tbaa !9
  %997 = add i32 %995, %996
  store i32 %997, ptr %23, align 4, !tbaa !9
  %998 = load i32, ptr %25, align 4, !tbaa !9
  %999 = icmp eq i32 %998, 1
  br i1 %999, label %1003, label %1000

1000:                                             ; preds = %990
  %1001 = load i32, ptr %27, align 4, !tbaa !9
  %1002 = icmp eq i32 %1001, 1
  br i1 %1002, label %1003, label %1065

1003:                                             ; preds = %1000, %990
  %1004 = load i32, ptr %27, align 4, !tbaa !9
  %1005 = icmp eq i32 %1004, 1
  br i1 %1005, label %1006, label %1007

1006:                                             ; preds = %1003
  br label %1017

1007:                                             ; preds = %1003
  %1008 = load ptr, ptr %13, align 8, !tbaa !5
  %1009 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1008, i32 0, i32 3
  %1010 = load i32, ptr %1009, align 4, !tbaa !18
  %1011 = load ptr, ptr %14, align 8, !tbaa !5
  %1012 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1011, i32 0, i32 4
  %1013 = load i32, ptr %1012, align 1, !tbaa !17
  %1014 = mul i32 %1010, %1013
  %1015 = load i32, ptr %18, align 4, !tbaa !9
  %1016 = mul i32 %1014, %1015
  br label %1017

1017:                                             ; preds = %1007, %1006
  %1018 = phi i32 [ 0, %1006 ], [ %1016, %1007 ]
  store i32 %1018, ptr %34, align 4, !tbaa !9
  %1019 = load i32, ptr %29, align 4, !tbaa !9
  %1020 = load i32, ptr %18, align 4, !tbaa !9
  %1021 = mul i32 %1019, %1020
  store i32 %1021, ptr %33, align 4, !tbaa !9
  %1022 = load ptr, ptr %11, align 8, !tbaa !5
  %1023 = load ptr, ptr %12, align 8, !tbaa !5
  %1024 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1023, i32 0, i32 2
  %1025 = load i32, ptr %1024, align 4, !tbaa !28
  %1026 = load ptr, ptr %12, align 8, !tbaa !5
  %1027 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1026, i32 0, i32 36
  %1028 = load i32, ptr %1027, align 4, !tbaa !24
  %1029 = load ptr, ptr %13, align 8, !tbaa !5
  %1030 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1029, i32 0, i32 29
  %1031 = load i32, ptr %1030, align 4, !tbaa !29
  %1032 = load ptr, ptr %13, align 8, !tbaa !5
  %1033 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1032, i32 0, i32 3
  %1034 = load i32, ptr %1033, align 4, !tbaa !18
  %1035 = load i32, ptr %21, align 4, !tbaa !9
  %1036 = load i32, ptr %17, align 4, !tbaa !9
  %1037 = sub i32 %1036, 1
  %1038 = icmp eq i32 %1035, %1037
  br i1 %1038, label %1039, label %1041

1039:                                             ; preds = %1017
  %1040 = load i32, ptr %19, align 4, !tbaa !9
  br label %1042

1041:                                             ; preds = %1017
  br label %1042

1042:                                             ; preds = %1041, %1039
  %1043 = phi i32 [ %1040, %1039 ], [ 0, %1041 ]
  call void @libxsmm_generator_bcastload_masked_vreg_aarch64_asimd(ptr noundef %1022, i32 noundef %1025, i32 noundef %1028, i32 noundef %1031, i32 noundef %1034, i32 noundef %1043, i32 noundef 0)
  %1044 = load ptr, ptr %14, align 8, !tbaa !5
  %1045 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1044, i32 noundef 4)
  %1046 = icmp eq i32 1, %1045
  br i1 %1046, label %1047, label %1051

1047:                                             ; preds = %1042
  %1048 = load ptr, ptr %14, align 8, !tbaa !5
  %1049 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1048, i32 noundef 1)
  %1050 = icmp eq i32 2, %1049
  br i1 %1050, label %1059, label %1051

1051:                                             ; preds = %1047, %1042
  %1052 = load ptr, ptr %14, align 8, !tbaa !5
  %1053 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1052, i32 noundef 3)
  %1054 = icmp eq i32 1, %1053
  br i1 %1054, label %1055, label %1064

1055:                                             ; preds = %1051
  %1056 = load ptr, ptr %14, align 8, !tbaa !5
  %1057 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1056, i32 noundef 1)
  %1058 = icmp eq i32 2, %1057
  br i1 %1058, label %1059, label %1064

1059:                                             ; preds = %1055, %1047
  %1060 = load ptr, ptr %11, align 8, !tbaa !5
  %1061 = load ptr, ptr %13, align 8, !tbaa !5
  %1062 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1061, i32 0, i32 29
  %1063 = load i32, ptr %1062, align 4, !tbaa !29
  call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %1060, i32 noundef %1063, i32 noundef 0)
  br label %1064

1064:                                             ; preds = %1059, %1055, %1051
  br label %1065

1065:                                             ; preds = %1064, %1000
  %1066 = load i32, ptr %28, align 4, !tbaa !9
  %1067 = icmp eq i32 %1066, 0
  br i1 %1067, label %1071, label %1068

1068:                                             ; preds = %1065
  %1069 = load i32, ptr %26, align 4, !tbaa !9
  %1070 = icmp eq i32 %1069, 1
  br i1 %1070, label %1071, label %1225

1071:                                             ; preds = %1068, %1065
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #4
  %1072 = load ptr, ptr %14, align 8, !tbaa !5
  %1073 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1072, i32 noundef 1)
  %1074 = icmp eq i32 1, %1073
  br i1 %1074, label %1079, label %1075

1075:                                             ; preds = %1071
  %1076 = load ptr, ptr %14, align 8, !tbaa !5
  %1077 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1076, i32 noundef 1)
  %1078 = icmp eq i32 0, %1077
  br label %1079

1079:                                             ; preds = %1075, %1071
  %1080 = phi i1 [ true, %1071 ], [ %1078, %1075 ]
  %1081 = zext i1 %1080 to i64
  %1082 = select i1 %1080, i32 1, i32 0
  store i32 %1082, ptr %47, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #4
  %1083 = load i32, ptr %47, align 4, !tbaa !9
  %1084 = icmp ne i32 %1083, 0
  br i1 %1084, label %1085, label %1095

1085:                                             ; preds = %1079
  %1086 = load i32, ptr %21, align 4, !tbaa !9
  %1087 = load i32, ptr %17, align 4, !tbaa !9
  %1088 = sub i32 %1087, 1
  %1089 = icmp eq i32 %1086, %1088
  br i1 %1089, label %1090, label %1092

1090:                                             ; preds = %1085
  %1091 = load i32, ptr %19, align 4, !tbaa !9
  br label %1093

1092:                                             ; preds = %1085
  br label %1093

1093:                                             ; preds = %1092, %1090
  %1094 = phi i32 [ %1091, %1090 ], [ 0, %1092 ]
  br label %1113

1095:                                             ; preds = %1079
  %1096 = load i32, ptr %21, align 4, !tbaa !9
  %1097 = load i32, ptr %17, align 4, !tbaa !9
  %1098 = sub i32 %1097, 1
  %1099 = icmp eq i32 %1096, %1098
  br i1 %1099, label %1100, label %1109

1100:                                             ; preds = %1095
  %1101 = load i32, ptr %19, align 4, !tbaa !9
  %1102 = icmp ugt i32 %1101, 0
  br i1 %1102, label %1103, label %1105

1103:                                             ; preds = %1100
  %1104 = load i32, ptr %19, align 4, !tbaa !9
  br label %1107

1105:                                             ; preds = %1100
  %1106 = load i32, ptr %15, align 4, !tbaa !9
  br label %1107

1107:                                             ; preds = %1105, %1103
  %1108 = phi i32 [ %1104, %1103 ], [ %1106, %1105 ]
  br label %1111

1109:                                             ; preds = %1095
  %1110 = load i32, ptr %15, align 4, !tbaa !9
  br label %1111

1111:                                             ; preds = %1109, %1107
  %1112 = phi i32 [ %1108, %1107 ], [ %1110, %1109 ]
  br label %1113

1113:                                             ; preds = %1111, %1093
  %1114 = phi i32 [ %1094, %1093 ], [ %1112, %1111 ]
  store i32 %1114, ptr %48, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #4
  %1115 = load i32, ptr %47, align 4, !tbaa !9
  %1116 = icmp ne i32 %1115, 0
  br i1 %1116, label %1117, label %1130

1117:                                             ; preds = %1113
  %1118 = load i32, ptr %21, align 4, !tbaa !9
  %1119 = load i32, ptr %17, align 4, !tbaa !9
  %1120 = sub i32 %1119, 1
  %1121 = icmp eq i32 %1118, %1120
  br i1 %1121, label %1122, label %1127

1122:                                             ; preds = %1117
  %1123 = load i32, ptr %19, align 4, !tbaa !9
  %1124 = icmp ugt i32 %1123, 0
  %1125 = zext i1 %1124 to i64
  %1126 = select i1 %1124, i32 1, i32 0
  br label %1128

1127:                                             ; preds = %1117
  br label %1128

1128:                                             ; preds = %1127, %1122
  %1129 = phi i32 [ %1126, %1122 ], [ 0, %1127 ]
  br label %1143

1130:                                             ; preds = %1113
  %1131 = load i32, ptr %21, align 4, !tbaa !9
  %1132 = load i32, ptr %17, align 4, !tbaa !9
  %1133 = sub i32 %1132, 1
  %1134 = icmp eq i32 %1131, %1133
  br i1 %1134, label %1135, label %1140

1135:                                             ; preds = %1130
  %1136 = load i32, ptr %19, align 4, !tbaa !9
  %1137 = icmp ugt i32 %1136, 0
  %1138 = zext i1 %1137 to i64
  %1139 = select i1 %1137, i32 1, i32 2
  br label %1141

1140:                                             ; preds = %1130
  br label %1141

1141:                                             ; preds = %1140, %1135
  %1142 = phi i32 [ %1139, %1135 ], [ 2, %1140 ]
  br label %1143

1143:                                             ; preds = %1141, %1128
  %1144 = phi i32 [ %1129, %1128 ], [ %1142, %1141 ]
  store i32 %1144, ptr %49, align 4, !tbaa !9
  %1145 = load i32, ptr %29, align 4, !tbaa !9
  %1146 = load i32, ptr %18, align 4, !tbaa !9
  %1147 = mul i32 %1145, %1146
  store i32 %1147, ptr %33, align 4, !tbaa !9
  %1148 = load i32, ptr %26, align 4, !tbaa !9
  %1149 = icmp eq i32 %1148, 1
  br i1 %1149, label %1150, label %1152

1150:                                             ; preds = %1143
  %1151 = load i32, ptr %32, align 4, !tbaa !9
  br label %1156

1152:                                             ; preds = %1143
  %1153 = load i32, ptr %30, align 4, !tbaa !9
  %1154 = load i32, ptr %35, align 4, !tbaa !9
  %1155 = mul i32 %1153, %1154
  br label %1156

1156:                                             ; preds = %1152, %1150
  %1157 = phi i32 [ %1151, %1150 ], [ %1155, %1152 ]
  store i32 %1157, ptr %34, align 4, !tbaa !9
  %1158 = load ptr, ptr %11, align 8, !tbaa !5
  %1159 = load ptr, ptr %12, align 8, !tbaa !5
  %1160 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1159, i32 0, i32 2
  %1161 = load i32, ptr %1160, align 4, !tbaa !28
  %1162 = load ptr, ptr %12, align 8, !tbaa !5
  %1163 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1162, i32 0, i32 36
  %1164 = load i32, ptr %1163, align 4, !tbaa !24
  %1165 = load ptr, ptr %13, align 8, !tbaa !5
  %1166 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1165, i32 0, i32 29
  %1167 = load i32, ptr %1166, align 4, !tbaa !29
  %1168 = load ptr, ptr %13, align 8, !tbaa !5
  %1169 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1168, i32 0, i32 3
  %1170 = load i32, ptr %1169, align 4, !tbaa !18
  %1171 = load i32, ptr %48, align 4, !tbaa !9
  %1172 = load i32, ptr %49, align 4, !tbaa !9
  %1173 = trunc i32 %1172 to i8
  %1174 = zext i8 %1173 to i32
  %1175 = icmp eq i32 0, %1174
  br i1 %1175, label %1181, label %1176

1176:                                             ; preds = %1156
  %1177 = load i32, ptr %49, align 4, !tbaa !9
  %1178 = trunc i32 %1177 to i8
  %1179 = zext i8 %1178 to i32
  %1180 = icmp slt i32 0, %1179
  br i1 %1180, label %1181, label %1199

1181:                                             ; preds = %1176, %1156
  %1182 = load i32, ptr %49, align 4, !tbaa !9
  %1183 = zext i32 %1182 to i64
  %1184 = mul i64 1, %1183
  %1185 = icmp ult i64 %1184, 255
  br i1 %1185, label %1186, label %1190

1186:                                             ; preds = %1181
  %1187 = load i32, ptr %49, align 4, !tbaa !9
  %1188 = zext i32 %1187 to i64
  %1189 = mul i64 1, %1188
  br label %1191

1190:                                             ; preds = %1181
  br label %1191

1191:                                             ; preds = %1190, %1186
  %1192 = phi i64 [ %1189, %1186 ], [ 255, %1190 ]
  %1193 = icmp ule i64 %1192, 255
  br i1 %1193, label %1194, label %1199

1194:                                             ; preds = %1191
  %1195 = load i32, ptr %49, align 4, !tbaa !9
  %1196 = uitofp i32 %1195 to double
  %1197 = fcmp ole double 0.000000e+00, %1196
  br i1 %1197, label %1198, label %1199

1198:                                             ; preds = %1194
  br label %1200

1199:                                             ; preds = %1194, %1191, %1176
  call void @__assert_fail(ptr noundef @.str.5, ptr noundef @.str, i32 noundef 2660, ptr noundef @__PRETTY_FUNCTION__.libxsmm_compute_binary_aarch64_2d_reg_block) #5
  unreachable

1200:                                             ; preds = %1198
  %1201 = load i32, ptr %49, align 4, !tbaa !9
  %1202 = trunc i32 %1201 to i8
  %1203 = load i8, ptr %37, align 1, !tbaa !21
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %1158, i32 noundef %1161, i32 noundef %1164, i32 noundef %1167, i32 noundef %1170, i32 noundef %1171, i32 noundef 1, i32 noundef 0, i8 noundef zeroext %1202, i8 noundef zeroext %1203)
  %1204 = load ptr, ptr %14, align 8, !tbaa !5
  %1205 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1204, i32 noundef 4)
  %1206 = icmp eq i32 1, %1205
  br i1 %1206, label %1207, label %1211

1207:                                             ; preds = %1200
  %1208 = load ptr, ptr %14, align 8, !tbaa !5
  %1209 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1208, i32 noundef 1)
  %1210 = icmp eq i32 2, %1209
  br i1 %1210, label %1219, label %1211

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

1215:                                             ; preds = %1211
  %1216 = load ptr, ptr %14, align 8, !tbaa !5
  %1217 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1216, i32 noundef 1)
  %1218 = icmp eq i32 2, %1217
  br i1 %1218, label %1219, label %1224

1219:                                             ; preds = %1215, %1207
  %1220 = load ptr, ptr %11, align 8, !tbaa !5
  %1221 = load ptr, ptr %13, align 8, !tbaa !5
  %1222 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1221, i32 0, i32 29
  %1223 = load i32, ptr %1222, align 4, !tbaa !29
  call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %1220, i32 noundef %1223, i32 noundef 0)
  br label %1224

1224:                                             ; preds = %1219, %1215, %1211
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #4
  br label %1225

1225:                                             ; preds = %1224, %1068
  %1226 = load ptr, ptr %14, align 8, !tbaa !5
  %1227 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1226, i32 0, i32 10
  %1228 = load i16, ptr %1227, align 1, !tbaa !22
  %1229 = zext i16 %1228 to i32
  %1230 = icmp eq i32 %1229, 5
  br i1 %1230, label %1231, label %1421

1231:                                             ; preds = %1225
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #4
  %1232 = load ptr, ptr %14, align 8, !tbaa !5
  %1233 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1232, i32 noundef 3)
  %1234 = icmp eq i32 1, %1233
  br i1 %1234, label %1239, label %1235

1235:                                             ; preds = %1231
  %1236 = load ptr, ptr %14, align 8, !tbaa !5
  %1237 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1236, i32 noundef 3)
  %1238 = icmp eq i32 0, %1237
  br label %1239

1239:                                             ; preds = %1235, %1231
  %1240 = phi i1 [ true, %1231 ], [ %1238, %1235 ]
  %1241 = zext i1 %1240 to i64
  %1242 = select i1 %1240, i32 1, i32 0
  store i32 %1242, ptr %50, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #4
  %1243 = load i32, ptr %50, align 4, !tbaa !9
  %1244 = icmp ne i32 %1243, 0
  br i1 %1244, label %1245, label %1255

1245:                                             ; preds = %1239
  %1246 = load i32, ptr %21, align 4, !tbaa !9
  %1247 = load i32, ptr %17, align 4, !tbaa !9
  %1248 = sub i32 %1247, 1
  %1249 = icmp eq i32 %1246, %1248
  br i1 %1249, label %1250, label %1252

1250:                                             ; preds = %1245
  %1251 = load i32, ptr %19, align 4, !tbaa !9
  br label %1253

1252:                                             ; preds = %1245
  br label %1253

1253:                                             ; preds = %1252, %1250
  %1254 = phi i32 [ %1251, %1250 ], [ 0, %1252 ]
  br label %1273

1255:                                             ; preds = %1239
  %1256 = load i32, ptr %21, align 4, !tbaa !9
  %1257 = load i32, ptr %17, align 4, !tbaa !9
  %1258 = sub i32 %1257, 1
  %1259 = icmp eq i32 %1256, %1258
  br i1 %1259, label %1260, label %1269

1260:                                             ; preds = %1255
  %1261 = load i32, ptr %19, align 4, !tbaa !9
  %1262 = icmp ugt i32 %1261, 0
  br i1 %1262, label %1263, label %1265

1263:                                             ; preds = %1260
  %1264 = load i32, ptr %19, align 4, !tbaa !9
  br label %1267

1265:                                             ; preds = %1260
  %1266 = load i32, ptr %15, align 4, !tbaa !9
  br label %1267

1267:                                             ; preds = %1265, %1263
  %1268 = phi i32 [ %1264, %1263 ], [ %1266, %1265 ]
  br label %1271

1269:                                             ; preds = %1255
  %1270 = load i32, ptr %15, align 4, !tbaa !9
  br label %1271

1271:                                             ; preds = %1269, %1267
  %1272 = phi i32 [ %1268, %1267 ], [ %1270, %1269 ]
  br label %1273

1273:                                             ; preds = %1271, %1253
  %1274 = phi i32 [ %1254, %1253 ], [ %1272, %1271 ]
  store i32 %1274, ptr %51, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #4
  %1275 = load i32, ptr %50, align 4, !tbaa !9
  %1276 = icmp ne i32 %1275, 0
  br i1 %1276, label %1277, label %1290

1277:                                             ; preds = %1273
  %1278 = load i32, ptr %21, align 4, !tbaa !9
  %1279 = load i32, ptr %17, align 4, !tbaa !9
  %1280 = sub i32 %1279, 1
  %1281 = icmp eq i32 %1278, %1280
  br i1 %1281, label %1282, label %1287

1282:                                             ; preds = %1277
  %1283 = load i32, ptr %19, align 4, !tbaa !9
  %1284 = icmp ugt i32 %1283, 0
  %1285 = zext i1 %1284 to i64
  %1286 = select i1 %1284, i32 3, i32 0
  br label %1288

1287:                                             ; preds = %1277
  br label %1288

1288:                                             ; preds = %1287, %1282
  %1289 = phi i32 [ %1286, %1282 ], [ 0, %1287 ]
  br label %1303

1290:                                             ; preds = %1273
  %1291 = load i32, ptr %21, align 4, !tbaa !9
  %1292 = load i32, ptr %17, align 4, !tbaa !9
  %1293 = sub i32 %1292, 1
  %1294 = icmp eq i32 %1291, %1293
  br i1 %1294, label %1295, label %1300

1295:                                             ; preds = %1290
  %1296 = load i32, ptr %19, align 4, !tbaa !9
  %1297 = icmp ugt i32 %1296, 0
  %1298 = zext i1 %1297 to i64
  %1299 = select i1 %1297, i32 1, i32 2
  br label %1301

1300:                                             ; preds = %1290
  br label %1301

1301:                                             ; preds = %1300, %1295
  %1302 = phi i32 [ %1299, %1295 ], [ 2, %1300 ]
  br label %1303

1303:                                             ; preds = %1301, %1288
  %1304 = phi i32 [ %1289, %1288 ], [ %1302, %1301 ]
  store i32 %1304, ptr %52, align 4, !tbaa !9
  %1305 = load ptr, ptr %11, align 8, !tbaa !5
  %1306 = load ptr, ptr %12, align 8, !tbaa !5
  %1307 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1306, i32 0, i32 6
  %1308 = load i32, ptr %1307, align 4, !tbaa !33
  %1309 = load ptr, ptr %12, align 8, !tbaa !5
  %1310 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1309, i32 0, i32 36
  %1311 = load i32, ptr %1310, align 4, !tbaa !24
  %1312 = load ptr, ptr %13, align 8, !tbaa !5
  %1313 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1312, i32 0, i32 30
  %1314 = load i32, ptr %1313, align 4, !tbaa !34
  %1315 = load ptr, ptr %13, align 8, !tbaa !5
  %1316 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1315, i32 0, i32 5
  %1317 = load i32, ptr %1316, align 4, !tbaa !15
  %1318 = load i32, ptr %51, align 4, !tbaa !9
  %1319 = load i32, ptr %52, align 4, !tbaa !9
  %1320 = trunc i32 %1319 to i8
  %1321 = zext i8 %1320 to i32
  %1322 = icmp eq i32 0, %1321
  br i1 %1322, label %1328, label %1323

1323:                                             ; preds = %1303
  %1324 = load i32, ptr %52, align 4, !tbaa !9
  %1325 = trunc i32 %1324 to i8
  %1326 = zext i8 %1325 to i32
  %1327 = icmp slt i32 0, %1326
  br i1 %1327, label %1328, label %1346

1328:                                             ; preds = %1323, %1303
  %1329 = load i32, ptr %52, align 4, !tbaa !9
  %1330 = zext i32 %1329 to i64
  %1331 = mul i64 1, %1330
  %1332 = icmp ult i64 %1331, 255
  br i1 %1332, label %1333, label %1337

1333:                                             ; preds = %1328
  %1334 = load i32, ptr %52, align 4, !tbaa !9
  %1335 = zext i32 %1334 to i64
  %1336 = mul i64 1, %1335
  br label %1338

1337:                                             ; preds = %1328
  br label %1338

1338:                                             ; preds = %1337, %1333
  %1339 = phi i64 [ %1336, %1333 ], [ 255, %1337 ]
  %1340 = icmp ule i64 %1339, 255
  br i1 %1340, label %1341, label %1346

1341:                                             ; preds = %1338
  %1342 = load i32, ptr %52, align 4, !tbaa !9
  %1343 = uitofp i32 %1342 to double
  %1344 = fcmp ole double 0.000000e+00, %1343
  br i1 %1344, label %1345, label %1346

1345:                                             ; preds = %1341
  br label %1347

1346:                                             ; preds = %1341, %1338, %1323
  call void @__assert_fail(ptr noundef @.str.5, ptr noundef @.str, i32 noundef 2676, ptr noundef @__PRETTY_FUNCTION__.libxsmm_compute_binary_aarch64_2d_reg_block) #5
  unreachable

1347:                                             ; preds = %1345
  %1348 = load i32, ptr %52, align 4, !tbaa !9
  %1349 = trunc i32 %1348 to i8
  %1350 = load i8, ptr %37, align 1, !tbaa !21
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %1305, i32 noundef %1308, i32 noundef %1311, i32 noundef %1314, i32 noundef %1317, i32 noundef %1318, i32 noundef 1, i32 noundef 0, i8 noundef zeroext %1349, i8 noundef zeroext %1350)
  %1351 = load ptr, ptr %14, align 8, !tbaa !5
  %1352 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1351, i32 noundef 4)
  %1353 = icmp eq i32 1, %1352
  br i1 %1353, label %1354, label %1363

1354:                                             ; preds = %1347
  %1355 = load ptr, ptr %14, align 8, !tbaa !5
  %1356 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1355, i32 noundef 3)
  %1357 = icmp eq i32 2, %1356
  br i1 %1357, label %1358, label %1363

1358:                                             ; preds = %1354
  %1359 = load ptr, ptr %11, align 8, !tbaa !5
  %1360 = load ptr, ptr %13, align 8, !tbaa !5
  %1361 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1360, i32 0, i32 30
  %1362 = load i32, ptr %1361, align 4, !tbaa !34
  call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %1359, i32 noundef %1362, i32 noundef 0)
  br label %1363

1363:                                             ; preds = %1358, %1354, %1347
  %1364 = load i8, ptr %37, align 1, !tbaa !21
  %1365 = icmp ne i8 %1364, 0
  br i1 %1365, label %1366, label %1390

1366:                                             ; preds = %1363
  %1367 = load ptr, ptr %11, align 8, !tbaa !5
  %1368 = load i32, ptr %24, align 4, !tbaa !9
  %1369 = load i32, ptr %23, align 4, !tbaa !9
  %1370 = load ptr, ptr %13, align 8, !tbaa !5
  %1371 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1370, i32 0, i32 29
  %1372 = load i32, ptr %1371, align 4, !tbaa !29
  %1373 = load ptr, ptr %13, align 8, !tbaa !5
  %1374 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1373, i32 0, i32 30
  %1375 = load i32, ptr %1374, align 4, !tbaa !34
  %1376 = load i8, ptr %39, align 1, !tbaa !21
  %1377 = zext i8 %1376 to i32
  %1378 = load i32, ptr %41, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %1367, i32 noundef %1368, i32 noundef %1369, i32 noundef %1372, i8 noundef zeroext 0, i32 noundef %1375, i32 noundef %1377, i32 noundef %1378)
  %1379 = load ptr, ptr %11, align 8, !tbaa !5
  %1380 = load ptr, ptr %13, align 8, !tbaa !5
  %1381 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1380, i32 0, i32 30
  %1382 = load i32, ptr %1381, align 4, !tbaa !34
  %1383 = load ptr, ptr %13, align 8, !tbaa !5
  %1384 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1383, i32 0, i32 30
  %1385 = load i32, ptr %1384, align 4, !tbaa !34
  %1386 = load i32, ptr %23, align 4, !tbaa !9
  %1387 = load i8, ptr %39, align 1, !tbaa !21
  %1388 = zext i8 %1387 to i32
  %1389 = load i32, ptr %41, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %1379, i32 noundef 73412611, i32 noundef %1382, i32 noundef %1385, i8 noundef zeroext 0, i32 noundef %1386, i32 noundef %1388, i32 noundef %1389)
  br label %1420

1390:                                             ; preds = %1363
  %1391 = load ptr, ptr %11, align 8, !tbaa !5
  %1392 = load i32, ptr %24, align 4, !tbaa !9
  %1393 = load i32, ptr %23, align 4, !tbaa !9
  %1394 = load ptr, ptr %13, align 8, !tbaa !5
  %1395 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1394, i32 0, i32 29
  %1396 = load i32, ptr %1395, align 4, !tbaa !29
  %1397 = load ptr, ptr %13, align 8, !tbaa !5
  %1398 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1397, i32 0, i32 30
  %1399 = load i32, ptr %1398, align 4, !tbaa !34
  %1400 = load ptr, ptr %13, align 8, !tbaa !5
  %1401 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1400, i32 0, i32 3
  %1402 = load i32, ptr %1401, align 4, !tbaa !18
  %1403 = icmp eq i32 %1402, 4
  %1404 = zext i1 %1403 to i64
  %1405 = select i1 %1403, i32 5, i32 7
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %1391, i32 noundef %1392, i32 noundef %1393, i32 noundef %1396, i8 noundef zeroext 0, i32 noundef %1399, i32 noundef %1405)
  %1406 = load ptr, ptr %11, align 8, !tbaa !5
  %1407 = load ptr, ptr %13, align 8, !tbaa !5
  %1408 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1407, i32 0, i32 30
  %1409 = load i32, ptr %1408, align 4, !tbaa !34
  %1410 = load ptr, ptr %13, align 8, !tbaa !5
  %1411 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1410, i32 0, i32 30
  %1412 = load i32, ptr %1411, align 4, !tbaa !34
  %1413 = load i32, ptr %23, align 4, !tbaa !9
  %1414 = load ptr, ptr %13, align 8, !tbaa !5
  %1415 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1414, i32 0, i32 3
  %1416 = load i32, ptr %1415, align 4, !tbaa !18
  %1417 = icmp eq i32 %1416, 4
  %1418 = zext i1 %1417 to i64
  %1419 = select i1 %1417, i32 5, i32 7
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %1406, i32 noundef 245373971, i32 noundef %1409, i32 noundef %1412, i8 noundef zeroext 0, i32 noundef %1413, i32 noundef %1419)
  br label %1420

1420:                                             ; preds = %1390, %1366
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #4
  br label %1926

1421:                                             ; preds = %1225
  %1422 = load ptr, ptr %14, align 8, !tbaa !5
  %1423 = call i32 @libxsmm_generator_mateltwise_is_binary_cmp_op(ptr noundef %1422)
  %1424 = icmp ugt i32 %1423, 0
  br i1 %1424, label %1425, label %1896

1425:                                             ; preds = %1421
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #4
  store i8 7, ptr %53, align 1, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 1, ptr %54) #4
  store i8 6, ptr %54, align 1, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 1, ptr %55) #4
  store i8 5, ptr %55, align 1, !tbaa !21
  %1426 = load i8, ptr %37, align 1, !tbaa !21
  %1427 = icmp ne i8 %1426, 0
  br i1 %1427, label %1428, label %1594

1428:                                             ; preds = %1425
  %1429 = load ptr, ptr %11, align 8, !tbaa !5
  %1430 = load i32, ptr %24, align 4, !tbaa !9
  %1431 = load i32, ptr %36, align 4, !tbaa !9
  %1432 = icmp ugt i32 %1431, 0
  br i1 %1432, label %1433, label %1437

1433:                                             ; preds = %1428
  %1434 = load ptr, ptr %13, align 8, !tbaa !5
  %1435 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1434, i32 0, i32 29
  %1436 = load i32, ptr %1435, align 4, !tbaa !29
  br label %1439

1437:                                             ; preds = %1428
  %1438 = load i32, ptr %23, align 4, !tbaa !9
  br label %1439

1439:                                             ; preds = %1437, %1433
  %1440 = phi i32 [ %1436, %1433 ], [ %1438, %1437 ]
  %1441 = load i32, ptr %36, align 4, !tbaa !9
  %1442 = icmp ugt i32 %1441, 0
  br i1 %1442, label %1443, label %1445

1443:                                             ; preds = %1439
  %1444 = load i32, ptr %23, align 4, !tbaa !9
  br label %1449

1445:                                             ; preds = %1439
  %1446 = load ptr, ptr %13, align 8, !tbaa !5
  %1447 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1446, i32 0, i32 29
  %1448 = load i32, ptr %1447, align 4, !tbaa !29
  br label %1449

1449:                                             ; preds = %1445, %1443
  %1450 = phi i32 [ %1444, %1443 ], [ %1448, %1445 ]
  %1451 = load i8, ptr %53, align 1, !tbaa !21
  %1452 = zext i8 %1451 to i32
  %1453 = load i8, ptr %39, align 1, !tbaa !21
  %1454 = zext i8 %1453 to i32
  %1455 = load i32, ptr %41, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %1429, i32 noundef %1430, i32 noundef %1440, i32 noundef %1450, i8 noundef zeroext 0, i32 noundef %1452, i32 noundef %1454, i32 noundef %1455)
  %1456 = load ptr, ptr %11, align 8, !tbaa !5
  %1457 = load ptr, ptr %14, align 8, !tbaa !5
  %1458 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1457, i32 0, i32 0
  %1459 = load i32, ptr %1458, align 1, !tbaa !35
  %1460 = load i32, ptr %21, align 4, !tbaa !9
  %1461 = load i32, ptr %17, align 4, !tbaa !9
  %1462 = load ptr, ptr %13, align 8, !tbaa !5
  %1463 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1462, i32 0, i32 29
  %1464 = load i32, ptr %1463, align 4, !tbaa !29
  %1465 = trunc i32 %1464 to i8
  %1466 = zext i8 %1465 to i32
  %1467 = icmp eq i32 0, %1466
  br i1 %1467, label %1475, label %1468

1468:                                             ; preds = %1449
  %1469 = load ptr, ptr %13, align 8, !tbaa !5
  %1470 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1469, i32 0, i32 29
  %1471 = load i32, ptr %1470, align 4, !tbaa !29
  %1472 = trunc i32 %1471 to i8
  %1473 = zext i8 %1472 to i32
  %1474 = icmp slt i32 0, %1473
  br i1 %1474, label %1475, label %1499

1475:                                             ; preds = %1468, %1449
  %1476 = load ptr, ptr %13, align 8, !tbaa !5
  %1477 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1476, i32 0, i32 29
  %1478 = load i32, ptr %1477, align 4, !tbaa !29
  %1479 = zext i32 %1478 to i64
  %1480 = mul i64 1, %1479
  %1481 = icmp ult i64 %1480, 255
  br i1 %1481, label %1482, label %1488

1482:                                             ; preds = %1475
  %1483 = load ptr, ptr %13, align 8, !tbaa !5
  %1484 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1483, i32 0, i32 29
  %1485 = load i32, ptr %1484, align 4, !tbaa !29
  %1486 = zext i32 %1485 to i64
  %1487 = mul i64 1, %1486
  br label %1489

1488:                                             ; preds = %1475
  br label %1489

1489:                                             ; preds = %1488, %1482
  %1490 = phi i64 [ %1487, %1482 ], [ 255, %1488 ]
  %1491 = icmp ule i64 %1490, 255
  br i1 %1491, label %1492, label %1499

1492:                                             ; preds = %1489
  %1493 = load ptr, ptr %13, align 8, !tbaa !5
  %1494 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1493, i32 0, i32 29
  %1495 = load i32, ptr %1494, align 4, !tbaa !29
  %1496 = uitofp i32 %1495 to double
  %1497 = fcmp ole double 0.000000e+00, %1496
  br i1 %1497, label %1498, label %1499

1498:                                             ; preds = %1492
  br label %1500

1499:                                             ; preds = %1492, %1489, %1468
  call void @__assert_fail(ptr noundef @.str.8, ptr noundef @.str, i32 noundef 2704, ptr noundef @__PRETTY_FUNCTION__.libxsmm_compute_binary_aarch64_2d_reg_block) #5
  unreachable

1500:                                             ; preds = %1498
  %1501 = load ptr, ptr %13, align 8, !tbaa !5
  %1502 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1501, i32 0, i32 29
  %1503 = load i32, ptr %1502, align 4, !tbaa !29
  %1504 = trunc i32 %1503 to i8
  %1505 = load ptr, ptr %12, align 8, !tbaa !5
  %1506 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1505, i32 0, i32 6
  %1507 = load i32, ptr %1506, align 4, !tbaa !33
  %1508 = trunc i32 %1507 to i8
  %1509 = zext i8 %1508 to i32
  %1510 = icmp eq i32 0, %1509
  br i1 %1510, label %1518, label %1511

1511:                                             ; preds = %1500
  %1512 = load ptr, ptr %12, align 8, !tbaa !5
  %1513 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1512, i32 0, i32 6
  %1514 = load i32, ptr %1513, align 4, !tbaa !33
  %1515 = trunc i32 %1514 to i8
  %1516 = zext i8 %1515 to i32
  %1517 = icmp slt i32 0, %1516
  br i1 %1517, label %1518, label %1542

1518:                                             ; preds = %1511, %1500
  %1519 = load ptr, ptr %12, align 8, !tbaa !5
  %1520 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1519, i32 0, i32 6
  %1521 = load i32, ptr %1520, align 4, !tbaa !33
  %1522 = zext i32 %1521 to i64
  %1523 = mul i64 1, %1522
  %1524 = icmp ult i64 %1523, 255
  br i1 %1524, label %1525, label %1531

1525:                                             ; preds = %1518
  %1526 = load ptr, ptr %12, align 8, !tbaa !5
  %1527 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1526, i32 0, i32 6
  %1528 = load i32, ptr %1527, align 4, !tbaa !33
  %1529 = zext i32 %1528 to i64
  %1530 = mul i64 1, %1529
  br label %1532

1531:                                             ; preds = %1518
  br label %1532

1532:                                             ; preds = %1531, %1525
  %1533 = phi i64 [ %1530, %1525 ], [ 255, %1531 ]
  %1534 = icmp ule i64 %1533, 255
  br i1 %1534, label %1535, label %1542

1535:                                             ; preds = %1532
  %1536 = load ptr, ptr %12, align 8, !tbaa !5
  %1537 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1536, i32 0, i32 6
  %1538 = load i32, ptr %1537, align 4, !tbaa !33
  %1539 = uitofp i32 %1538 to double
  %1540 = fcmp ole double 0.000000e+00, %1539
  br i1 %1540, label %1541, label %1542

1541:                                             ; preds = %1535
  br label %1543

1542:                                             ; preds = %1535, %1532, %1511
  call void @__assert_fail(ptr noundef @.str.21, ptr noundef @.str, i32 noundef 2705, ptr noundef @__PRETTY_FUNCTION__.libxsmm_compute_binary_aarch64_2d_reg_block) #5
  unreachable

1543:                                             ; preds = %1541
  %1544 = load ptr, ptr %12, align 8, !tbaa !5
  %1545 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1544, i32 0, i32 6
  %1546 = load i32, ptr %1545, align 4, !tbaa !33
  %1547 = trunc i32 %1546 to i8
  %1548 = load i8, ptr %53, align 1, !tbaa !21
  %1549 = load i8, ptr %54, align 1, !tbaa !21
  %1550 = load i8, ptr %55, align 1, !tbaa !21
  %1551 = load ptr, ptr %12, align 8, !tbaa !5
  %1552 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1551, i32 0, i32 35
  %1553 = load i32, ptr %1552, align 4, !tbaa !27
  %1554 = trunc i32 %1553 to i8
  %1555 = zext i8 %1554 to i32
  %1556 = icmp eq i32 0, %1555
  br i1 %1556, label %1564, label %1557

1557:                                             ; preds = %1543
  %1558 = load ptr, ptr %12, align 8, !tbaa !5
  %1559 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1558, i32 0, i32 35
  %1560 = load i32, ptr %1559, align 4, !tbaa !27
  %1561 = trunc i32 %1560 to i8
  %1562 = zext i8 %1561 to i32
  %1563 = icmp slt i32 0, %1562
  br i1 %1563, label %1564, label %1588

1564:                                             ; preds = %1557, %1543
  %1565 = load ptr, ptr %12, align 8, !tbaa !5
  %1566 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1565, i32 0, i32 35
  %1567 = load i32, ptr %1566, align 4, !tbaa !27
  %1568 = zext i32 %1567 to i64
  %1569 = mul i64 1, %1568
  %1570 = icmp ult i64 %1569, 255
  br i1 %1570, label %1571, label %1577

1571:                                             ; preds = %1564
  %1572 = load ptr, ptr %12, align 8, !tbaa !5
  %1573 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1572, i32 0, i32 35
  %1574 = load i32, ptr %1573, align 4, !tbaa !27
  %1575 = zext i32 %1574 to i64
  %1576 = mul i64 1, %1575
  br label %1578

1577:                                             ; preds = %1564
  br label %1578

1578:                                             ; preds = %1577, %1571
  %1579 = phi i64 [ %1576, %1571 ], [ 255, %1577 ]
  %1580 = icmp ule i64 %1579, 255
  br i1 %1580, label %1581, label %1588

1581:                                             ; preds = %1578
  %1582 = load ptr, ptr %12, align 8, !tbaa !5
  %1583 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1582, i32 0, i32 35
  %1584 = load i32, ptr %1583, align 4, !tbaa !27
  %1585 = uitofp i32 %1584 to double
  %1586 = fcmp ole double 0.000000e+00, %1585
  br i1 %1586, label %1587, label %1588

1587:                                             ; preds = %1581
  br label %1589

1588:                                             ; preds = %1581, %1578, %1557
  call void @__assert_fail(ptr noundef @.str.12, ptr noundef @.str, i32 noundef 2707, ptr noundef @__PRETTY_FUNCTION__.libxsmm_compute_binary_aarch64_2d_reg_block) #5
  unreachable

1589:                                             ; preds = %1587
  %1590 = load ptr, ptr %12, align 8, !tbaa !5
  %1591 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1590, i32 0, i32 35
  %1592 = load i32, ptr %1591, align 4, !tbaa !27
  %1593 = trunc i32 %1592 to i8
  call void @libxsmm_generator_unary_binary_aarch64_store_bitmask_2bytemult_sve(ptr noundef %1456, i32 noundef %1459, i32 noundef %1460, i32 noundef %1461, i8 noundef zeroext %1504, i8 noundef zeroext %1547, i8 noundef zeroext %1548, i8 noundef zeroext %1549, i8 noundef zeroext %1550, i8 noundef zeroext %1593, ptr noundef %46)
  br label %1895

1594:                                             ; preds = %1425
  %1595 = load ptr, ptr %11, align 8, !tbaa !5
  %1596 = load i32, ptr %24, align 4, !tbaa !9
  %1597 = load i32, ptr %36, align 4, !tbaa !9
  %1598 = icmp ugt i32 %1597, 0
  br i1 %1598, label %1599, label %1603

1599:                                             ; preds = %1594
  %1600 = load ptr, ptr %13, align 8, !tbaa !5
  %1601 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1600, i32 0, i32 29
  %1602 = load i32, ptr %1601, align 4, !tbaa !29
  br label %1605

1603:                                             ; preds = %1594
  %1604 = load i32, ptr %23, align 4, !tbaa !9
  br label %1605

1605:                                             ; preds = %1603, %1599
  %1606 = phi i32 [ %1602, %1599 ], [ %1604, %1603 ]
  %1607 = load i32, ptr %36, align 4, !tbaa !9
  %1608 = icmp ugt i32 %1607, 0
  br i1 %1608, label %1609, label %1611

1609:                                             ; preds = %1605
  %1610 = load i32, ptr %23, align 4, !tbaa !9
  br label %1615

1611:                                             ; preds = %1605
  %1612 = load ptr, ptr %13, align 8, !tbaa !5
  %1613 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1612, i32 0, i32 29
  %1614 = load i32, ptr %1613, align 4, !tbaa !29
  br label %1615

1615:                                             ; preds = %1611, %1609
  %1616 = phi i32 [ %1610, %1609 ], [ %1614, %1611 ]
  %1617 = load ptr, ptr %13, align 8, !tbaa !5
  %1618 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1617, i32 0, i32 29
  %1619 = load i32, ptr %1618, align 4, !tbaa !29
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %1595, i32 noundef %1596, i32 noundef %1606, i32 noundef %1616, i8 noundef zeroext 0, i32 noundef %1619, i32 noundef 5)
  %1620 = load ptr, ptr %14, align 8, !tbaa !5
  %1621 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1620, i32 0, i32 10
  %1622 = load i16, ptr %1621, align 1, !tbaa !22
  %1623 = zext i16 %1622 to i32
  %1624 = icmp eq i32 %1623, 32
  br i1 %1624, label %1625, label %1633

1625:                                             ; preds = %1615
  %1626 = load ptr, ptr %11, align 8, !tbaa !5
  %1627 = load ptr, ptr %13, align 8, !tbaa !5
  %1628 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1627, i32 0, i32 29
  %1629 = load i32, ptr %1628, align 4, !tbaa !29
  %1630 = load ptr, ptr %13, align 8, !tbaa !5
  %1631 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1630, i32 0, i32 29
  %1632 = load i32, ptr %1631, align 4, !tbaa !29
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %1626, i32 noundef 773871634, i32 noundef %1629, i32 noundef 127, i8 noundef zeroext 0, i32 noundef %1632, i32 noundef 5)
  br label %1633

1633:                                             ; preds = %1625, %1615
  %1634 = load ptr, ptr %11, align 8, !tbaa !5
  %1635 = load i32, ptr %21, align 4, !tbaa !9
  %1636 = load i32, ptr %17, align 4, !tbaa !9
  %1637 = load ptr, ptr %13, align 8, !tbaa !5
  %1638 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1637, i32 0, i32 100
  %1639 = load i32, ptr %1638, align 4, !tbaa !36
  %1640 = trunc i32 %1639 to i8
  %1641 = zext i8 %1640 to i32
  %1642 = icmp eq i32 0, %1641
  br i1 %1642, label %1650, label %1643

1643:                                             ; preds = %1633
  %1644 = load ptr, ptr %13, align 8, !tbaa !5
  %1645 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1644, i32 0, i32 100
  %1646 = load i32, ptr %1645, align 4, !tbaa !36
  %1647 = trunc i32 %1646 to i8
  %1648 = zext i8 %1647 to i32
  %1649 = icmp slt i32 0, %1648
  br i1 %1649, label %1650, label %1674

1650:                                             ; preds = %1643, %1633
  %1651 = load ptr, ptr %13, align 8, !tbaa !5
  %1652 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1651, i32 0, i32 100
  %1653 = load i32, ptr %1652, align 4, !tbaa !36
  %1654 = zext i32 %1653 to i64
  %1655 = mul i64 1, %1654
  %1656 = icmp ult i64 %1655, 255
  br i1 %1656, label %1657, label %1663

1657:                                             ; preds = %1650
  %1658 = load ptr, ptr %13, align 8, !tbaa !5
  %1659 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1658, i32 0, i32 100
  %1660 = load i32, ptr %1659, align 4, !tbaa !36
  %1661 = zext i32 %1660 to i64
  %1662 = mul i64 1, %1661
  br label %1664

1663:                                             ; preds = %1650
  br label %1664

1664:                                             ; preds = %1663, %1657
  %1665 = phi i64 [ %1662, %1657 ], [ 255, %1663 ]
  %1666 = icmp ule i64 %1665, 255
  br i1 %1666, label %1667, label %1674

1667:                                             ; preds = %1664
  %1668 = load ptr, ptr %13, align 8, !tbaa !5
  %1669 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1668, i32 0, i32 100
  %1670 = load i32, ptr %1669, align 4, !tbaa !36
  %1671 = uitofp i32 %1670 to double
  %1672 = fcmp ole double 0.000000e+00, %1671
  br i1 %1672, label %1673, label %1674

1673:                                             ; preds = %1667
  br label %1675

1674:                                             ; preds = %1667, %1664, %1643
  call void @__assert_fail(ptr noundef @.str.13, ptr noundef @.str, i32 noundef 2715, ptr noundef @__PRETTY_FUNCTION__.libxsmm_compute_binary_aarch64_2d_reg_block) #5
  unreachable

1675:                                             ; preds = %1673
  %1676 = load ptr, ptr %13, align 8, !tbaa !5
  %1677 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1676, i32 0, i32 100
  %1678 = load i32, ptr %1677, align 4, !tbaa !36
  %1679 = trunc i32 %1678 to i8
  %1680 = load ptr, ptr %13, align 8, !tbaa !5
  %1681 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1680, i32 0, i32 101
  %1682 = load i32, ptr %1681, align 4, !tbaa !37
  %1683 = trunc i32 %1682 to i8
  %1684 = zext i8 %1683 to i32
  %1685 = icmp eq i32 0, %1684
  br i1 %1685, label %1693, label %1686

1686:                                             ; preds = %1675
  %1687 = load ptr, ptr %13, align 8, !tbaa !5
  %1688 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1687, i32 0, i32 101
  %1689 = load i32, ptr %1688, align 4, !tbaa !37
  %1690 = trunc i32 %1689 to i8
  %1691 = zext i8 %1690 to i32
  %1692 = icmp slt i32 0, %1691
  br i1 %1692, label %1693, label %1717

1693:                                             ; preds = %1686, %1675
  %1694 = load ptr, ptr %13, align 8, !tbaa !5
  %1695 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1694, i32 0, i32 101
  %1696 = load i32, ptr %1695, align 4, !tbaa !37
  %1697 = zext i32 %1696 to i64
  %1698 = mul i64 1, %1697
  %1699 = icmp ult i64 %1698, 255
  br i1 %1699, label %1700, label %1706

1700:                                             ; preds = %1693
  %1701 = load ptr, ptr %13, align 8, !tbaa !5
  %1702 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1701, i32 0, i32 101
  %1703 = load i32, ptr %1702, align 4, !tbaa !37
  %1704 = zext i32 %1703 to i64
  %1705 = mul i64 1, %1704
  br label %1707

1706:                                             ; preds = %1693
  br label %1707

1707:                                             ; preds = %1706, %1700
  %1708 = phi i64 [ %1705, %1700 ], [ 255, %1706 ]
  %1709 = icmp ule i64 %1708, 255
  br i1 %1709, label %1710, label %1717

1710:                                             ; preds = %1707
  %1711 = load ptr, ptr %13, align 8, !tbaa !5
  %1712 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1711, i32 0, i32 101
  %1713 = load i32, ptr %1712, align 4, !tbaa !37
  %1714 = uitofp i32 %1713 to double
  %1715 = fcmp ole double 0.000000e+00, %1714
  br i1 %1715, label %1716, label %1717

1716:                                             ; preds = %1710
  br label %1718

1717:                                             ; preds = %1710, %1707, %1686
  call void @__assert_fail(ptr noundef @.str.14, ptr noundef @.str, i32 noundef 2716, ptr noundef @__PRETTY_FUNCTION__.libxsmm_compute_binary_aarch64_2d_reg_block) #5
  unreachable

1718:                                             ; preds = %1716
  %1719 = load ptr, ptr %13, align 8, !tbaa !5
  %1720 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1719, i32 0, i32 101
  %1721 = load i32, ptr %1720, align 4, !tbaa !37
  %1722 = trunc i32 %1721 to i8
  %1723 = load ptr, ptr %13, align 8, !tbaa !5
  %1724 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1723, i32 0, i32 29
  %1725 = load i32, ptr %1724, align 4, !tbaa !29
  %1726 = trunc i32 %1725 to i8
  %1727 = zext i8 %1726 to i32
  %1728 = icmp eq i32 0, %1727
  br i1 %1728, label %1736, label %1729

1729:                                             ; preds = %1718
  %1730 = load ptr, ptr %13, align 8, !tbaa !5
  %1731 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1730, i32 0, i32 29
  %1732 = load i32, ptr %1731, align 4, !tbaa !29
  %1733 = trunc i32 %1732 to i8
  %1734 = zext i8 %1733 to i32
  %1735 = icmp slt i32 0, %1734
  br i1 %1735, label %1736, label %1760

1736:                                             ; preds = %1729, %1718
  %1737 = load ptr, ptr %13, align 8, !tbaa !5
  %1738 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1737, i32 0, i32 29
  %1739 = load i32, ptr %1738, align 4, !tbaa !29
  %1740 = zext i32 %1739 to i64
  %1741 = mul i64 1, %1740
  %1742 = icmp ult i64 %1741, 255
  br i1 %1742, label %1743, label %1749

1743:                                             ; preds = %1736
  %1744 = load ptr, ptr %13, align 8, !tbaa !5
  %1745 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1744, i32 0, i32 29
  %1746 = load i32, ptr %1745, align 4, !tbaa !29
  %1747 = zext i32 %1746 to i64
  %1748 = mul i64 1, %1747
  br label %1750

1749:                                             ; preds = %1736
  br label %1750

1750:                                             ; preds = %1749, %1743
  %1751 = phi i64 [ %1748, %1743 ], [ 255, %1749 ]
  %1752 = icmp ule i64 %1751, 255
  br i1 %1752, label %1753, label %1760

1753:                                             ; preds = %1750
  %1754 = load ptr, ptr %13, align 8, !tbaa !5
  %1755 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1754, i32 0, i32 29
  %1756 = load i32, ptr %1755, align 4, !tbaa !29
  %1757 = uitofp i32 %1756 to double
  %1758 = fcmp ole double 0.000000e+00, %1757
  br i1 %1758, label %1759, label %1760

1759:                                             ; preds = %1753
  br label %1761

1760:                                             ; preds = %1753, %1750, %1729
  call void @__assert_fail(ptr noundef @.str.8, ptr noundef @.str, i32 noundef 2717, ptr noundef @__PRETTY_FUNCTION__.libxsmm_compute_binary_aarch64_2d_reg_block) #5
  unreachable

1761:                                             ; preds = %1759
  %1762 = load ptr, ptr %13, align 8, !tbaa !5
  %1763 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1762, i32 0, i32 29
  %1764 = load i32, ptr %1763, align 4, !tbaa !29
  %1765 = trunc i32 %1764 to i8
  %1766 = load ptr, ptr %13, align 8, !tbaa !5
  %1767 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1766, i32 0, i32 30
  %1768 = load i32, ptr %1767, align 4, !tbaa !34
  %1769 = trunc i32 %1768 to i8
  %1770 = zext i8 %1769 to i32
  %1771 = icmp eq i32 0, %1770
  br i1 %1771, label %1779, label %1772

1772:                                             ; preds = %1761
  %1773 = load ptr, ptr %13, align 8, !tbaa !5
  %1774 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1773, i32 0, i32 30
  %1775 = load i32, ptr %1774, align 4, !tbaa !34
  %1776 = trunc i32 %1775 to i8
  %1777 = zext i8 %1776 to i32
  %1778 = icmp slt i32 0, %1777
  br i1 %1778, label %1779, label %1803

1779:                                             ; preds = %1772, %1761
  %1780 = load ptr, ptr %13, align 8, !tbaa !5
  %1781 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1780, i32 0, i32 30
  %1782 = load i32, ptr %1781, align 4, !tbaa !34
  %1783 = zext i32 %1782 to i64
  %1784 = mul i64 1, %1783
  %1785 = icmp ult i64 %1784, 255
  br i1 %1785, label %1786, label %1792

1786:                                             ; preds = %1779
  %1787 = load ptr, ptr %13, align 8, !tbaa !5
  %1788 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1787, i32 0, i32 30
  %1789 = load i32, ptr %1788, align 4, !tbaa !34
  %1790 = zext i32 %1789 to i64
  %1791 = mul i64 1, %1790
  br label %1793

1792:                                             ; preds = %1779
  br label %1793

1793:                                             ; preds = %1792, %1786
  %1794 = phi i64 [ %1791, %1786 ], [ 255, %1792 ]
  %1795 = icmp ule i64 %1794, 255
  br i1 %1795, label %1796, label %1803

1796:                                             ; preds = %1793
  %1797 = load ptr, ptr %13, align 8, !tbaa !5
  %1798 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1797, i32 0, i32 30
  %1799 = load i32, ptr %1798, align 4, !tbaa !34
  %1800 = uitofp i32 %1799 to double
  %1801 = fcmp ole double 0.000000e+00, %1800
  br i1 %1801, label %1802, label %1803

1802:                                             ; preds = %1796
  br label %1804

1803:                                             ; preds = %1796, %1793, %1772
  call void @__assert_fail(ptr noundef @.str.9, ptr noundef @.str, i32 noundef 2718, ptr noundef @__PRETTY_FUNCTION__.libxsmm_compute_binary_aarch64_2d_reg_block) #5
  unreachable

1804:                                             ; preds = %1802
  %1805 = load ptr, ptr %13, align 8, !tbaa !5
  %1806 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1805, i32 0, i32 30
  %1807 = load i32, ptr %1806, align 4, !tbaa !34
  %1808 = trunc i32 %1807 to i8
  %1809 = load ptr, ptr %13, align 8, !tbaa !5
  %1810 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1809, i32 0, i32 31
  %1811 = load i32, ptr %1810, align 4, !tbaa !38
  %1812 = trunc i32 %1811 to i8
  %1813 = zext i8 %1812 to i32
  %1814 = icmp eq i32 0, %1813
  br i1 %1814, label %1822, label %1815

1815:                                             ; preds = %1804
  %1816 = load ptr, ptr %13, align 8, !tbaa !5
  %1817 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1816, i32 0, i32 31
  %1818 = load i32, ptr %1817, align 4, !tbaa !38
  %1819 = trunc i32 %1818 to i8
  %1820 = zext i8 %1819 to i32
  %1821 = icmp slt i32 0, %1820
  br i1 %1821, label %1822, label %1846

1822:                                             ; preds = %1815, %1804
  %1823 = load ptr, ptr %13, align 8, !tbaa !5
  %1824 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1823, i32 0, i32 31
  %1825 = load i32, ptr %1824, align 4, !tbaa !38
  %1826 = zext i32 %1825 to i64
  %1827 = mul i64 1, %1826
  %1828 = icmp ult i64 %1827, 255
  br i1 %1828, label %1829, label %1835

1829:                                             ; preds = %1822
  %1830 = load ptr, ptr %13, align 8, !tbaa !5
  %1831 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1830, i32 0, i32 31
  %1832 = load i32, ptr %1831, align 4, !tbaa !38
  %1833 = zext i32 %1832 to i64
  %1834 = mul i64 1, %1833
  br label %1836

1835:                                             ; preds = %1822
  br label %1836

1836:                                             ; preds = %1835, %1829
  %1837 = phi i64 [ %1834, %1829 ], [ 255, %1835 ]
  %1838 = icmp ule i64 %1837, 255
  br i1 %1838, label %1839, label %1846

1839:                                             ; preds = %1836
  %1840 = load ptr, ptr %13, align 8, !tbaa !5
  %1841 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1840, i32 0, i32 31
  %1842 = load i32, ptr %1841, align 4, !tbaa !38
  %1843 = uitofp i32 %1842 to double
  %1844 = fcmp ole double 0.000000e+00, %1843
  br i1 %1844, label %1845, label %1846

1845:                                             ; preds = %1839
  br label %1847

1846:                                             ; preds = %1839, %1836, %1815
  call void @__assert_fail(ptr noundef @.str.15, ptr noundef @.str, i32 noundef 2719, ptr noundef @__PRETTY_FUNCTION__.libxsmm_compute_binary_aarch64_2d_reg_block) #5
  unreachable

1847:                                             ; preds = %1845
  %1848 = load ptr, ptr %13, align 8, !tbaa !5
  %1849 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1848, i32 0, i32 31
  %1850 = load i32, ptr %1849, align 4, !tbaa !38
  %1851 = trunc i32 %1850 to i8
  %1852 = load ptr, ptr %12, align 8, !tbaa !5
  %1853 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1852, i32 0, i32 6
  %1854 = load i32, ptr %1853, align 4, !tbaa !33
  %1855 = trunc i32 %1854 to i8
  %1856 = zext i8 %1855 to i32
  %1857 = icmp eq i32 0, %1856
  br i1 %1857, label %1865, label %1858

1858:                                             ; preds = %1847
  %1859 = load ptr, ptr %12, align 8, !tbaa !5
  %1860 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1859, i32 0, i32 6
  %1861 = load i32, ptr %1860, align 4, !tbaa !33
  %1862 = trunc i32 %1861 to i8
  %1863 = zext i8 %1862 to i32
  %1864 = icmp slt i32 0, %1863
  br i1 %1864, label %1865, label %1889

1865:                                             ; preds = %1858, %1847
  %1866 = load ptr, ptr %12, align 8, !tbaa !5
  %1867 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1866, i32 0, i32 6
  %1868 = load i32, ptr %1867, align 4, !tbaa !33
  %1869 = zext i32 %1868 to i64
  %1870 = mul i64 1, %1869
  %1871 = icmp ult i64 %1870, 255
  br i1 %1871, label %1872, label %1878

1872:                                             ; preds = %1865
  %1873 = load ptr, ptr %12, align 8, !tbaa !5
  %1874 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1873, i32 0, i32 6
  %1875 = load i32, ptr %1874, align 4, !tbaa !33
  %1876 = zext i32 %1875 to i64
  %1877 = mul i64 1, %1876
  br label %1879

1878:                                             ; preds = %1865
  br label %1879

1879:                                             ; preds = %1878, %1872
  %1880 = phi i64 [ %1877, %1872 ], [ 255, %1878 ]
  %1881 = icmp ule i64 %1880, 255
  br i1 %1881, label %1882, label %1889

1882:                                             ; preds = %1879
  %1883 = load ptr, ptr %12, align 8, !tbaa !5
  %1884 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1883, i32 0, i32 6
  %1885 = load i32, ptr %1884, align 4, !tbaa !33
  %1886 = uitofp i32 %1885 to double
  %1887 = fcmp ole double 0.000000e+00, %1886
  br i1 %1887, label %1888, label %1889

1888:                                             ; preds = %1882
  br label %1890

1889:                                             ; preds = %1882, %1879, %1858
  call void @__assert_fail(ptr noundef @.str.21, ptr noundef @.str, i32 noundef 2720, ptr noundef @__PRETTY_FUNCTION__.libxsmm_compute_binary_aarch64_2d_reg_block) #5
  unreachable

1890:                                             ; preds = %1888
  %1891 = load ptr, ptr %12, align 8, !tbaa !5
  %1892 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1891, i32 0, i32 6
  %1893 = load i32, ptr %1892, align 4, !tbaa !33
  %1894 = trunc i32 %1893 to i8
  call void @libxsmm_generator_unary_binary_aarch64_store_bitmask_2bytemult_asimd(ptr noundef %1634, i32 noundef %1635, i32 noundef %1636, i8 noundef zeroext %1679, i8 noundef zeroext %1722, i8 noundef zeroext %1765, i8 noundef zeroext %1808, i8 noundef zeroext %1851, i8 noundef zeroext %1894, ptr noundef %46)
  br label %1895

1895:                                             ; preds = %1890, %1589
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #4
  br label %1925

1896:                                             ; preds = %1421
  %1897 = load i8, ptr %37, align 1, !tbaa !21
  %1898 = icmp ne i8 %1897, 0
  br i1 %1898, label %1899, label %1910

1899:                                             ; preds = %1896
  %1900 = load ptr, ptr %11, align 8, !tbaa !5
  %1901 = load i32, ptr %24, align 4, !tbaa !9
  %1902 = load i32, ptr %23, align 4, !tbaa !9
  %1903 = load ptr, ptr %13, align 8, !tbaa !5
  %1904 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1903, i32 0, i32 29
  %1905 = load i32, ptr %1904, align 4, !tbaa !29
  %1906 = load i32, ptr %23, align 4, !tbaa !9
  %1907 = load i8, ptr %39, align 1, !tbaa !21
  %1908 = zext i8 %1907 to i32
  %1909 = load i32, ptr %41, align 4, !tbaa !9
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %1900, i32 noundef %1901, i32 noundef %1902, i32 noundef %1905, i8 noundef zeroext 0, i32 noundef %1906, i32 noundef %1908, i32 noundef %1909)
  br label %1924

1910:                                             ; preds = %1896
  %1911 = load ptr, ptr %11, align 8, !tbaa !5
  %1912 = load i32, ptr %24, align 4, !tbaa !9
  %1913 = load i32, ptr %23, align 4, !tbaa !9
  %1914 = load ptr, ptr %13, align 8, !tbaa !5
  %1915 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1914, i32 0, i32 29
  %1916 = load i32, ptr %1915, align 4, !tbaa !29
  %1917 = load i32, ptr %23, align 4, !tbaa !9
  %1918 = load ptr, ptr %13, align 8, !tbaa !5
  %1919 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1918, i32 0, i32 3
  %1920 = load i32, ptr %1919, align 4, !tbaa !18
  %1921 = icmp eq i32 %1920, 4
  %1922 = zext i1 %1921 to i64
  %1923 = select i1 %1921, i32 5, i32 7
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %1911, i32 noundef %1912, i32 noundef %1913, i32 noundef %1916, i8 noundef zeroext 0, i32 noundef %1917, i32 noundef %1923)
  br label %1924

1924:                                             ; preds = %1910, %1899
  br label %1925

1925:                                             ; preds = %1924, %1895
  br label %1926

1926:                                             ; preds = %1925, %1420
  br label %1927

1927:                                             ; preds = %1926
  %1928 = load i32, ptr %21, align 4, !tbaa !9
  %1929 = add i32 %1928, 1
  store i32 %1929, ptr %21, align 4, !tbaa !9
  br label %986, !llvm.loop !39

1930:                                             ; preds = %986
  %1931 = load i32, ptr %29, align 4, !tbaa !9
  %1932 = load i32, ptr %31, align 4, !tbaa !9
  %1933 = icmp ne i32 %1931, %1932
  br i1 %1933, label %1934, label %1956

1934:                                             ; preds = %1930
  %1935 = load ptr, ptr %14, align 8, !tbaa !5
  %1936 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1935, i32 0, i32 10
  %1937 = load i16, ptr %1936, align 1, !tbaa !22
  %1938 = zext i16 %1937 to i32
  %1939 = icmp eq i32 %1938, 5
  br i1 %1939, label %1940, label %1956

1940:                                             ; preds = %1934
  %1941 = load ptr, ptr %11, align 8, !tbaa !5
  %1942 = load ptr, ptr %12, align 8, !tbaa !5
  %1943 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1942, i32 0, i32 6
  %1944 = load i32, ptr %1943, align 4, !tbaa !33
  %1945 = load ptr, ptr %12, align 8, !tbaa !5
  %1946 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1945, i32 0, i32 35
  %1947 = load i32, ptr %1946, align 4, !tbaa !27
  %1948 = load ptr, ptr %12, align 8, !tbaa !5
  %1949 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1948, i32 0, i32 6
  %1950 = load i32, ptr %1949, align 4, !tbaa !33
  %1951 = load i32, ptr %29, align 4, !tbaa !9
  %1952 = zext i32 %1951 to i64
  %1953 = load i32, ptr %31, align 4, !tbaa !9
  %1954 = zext i32 %1953 to i64
  %1955 = sub nsw i64 %1952, %1954
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1941, i32 noundef 4096, i32 noundef %1944, i32 noundef %1947, i32 noundef %1950, i64 noundef %1955)
  br label %1956

1956:                                             ; preds = %1940, %1934, %1930
  %1957 = load ptr, ptr %14, align 8, !tbaa !5
  %1958 = call i32 @libxsmm_generator_mateltwise_is_binary_cmp_op(ptr noundef %1957)
  %1959 = icmp ugt i32 %1958, 0
  br i1 %1959, label %1960, label %1981

1960:                                             ; preds = %1956
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #4
  %1961 = load ptr, ptr %13, align 8, !tbaa !5
  %1962 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %1961, i32 0, i32 17
  %1963 = load i32, ptr %1962, align 4, !tbaa !40
  store i32 %1963, ptr %56, align 4, !tbaa !9
  %1964 = load ptr, ptr %11, align 8, !tbaa !5
  %1965 = load ptr, ptr %12, align 8, !tbaa !5
  %1966 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1965, i32 0, i32 6
  %1967 = load i32, ptr %1966, align 4, !tbaa !33
  %1968 = load ptr, ptr %12, align 8, !tbaa !5
  %1969 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1968, i32 0, i32 35
  %1970 = load i32, ptr %1969, align 4, !tbaa !27
  %1971 = load ptr, ptr %12, align 8, !tbaa !5
  %1972 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1971, i32 0, i32 6
  %1973 = load i32, ptr %1972, align 4, !tbaa !33
  %1974 = load i32, ptr %56, align 4, !tbaa !9
  %1975 = zext i32 %1974 to i64
  %1976 = load i32, ptr %46, align 4, !tbaa !9
  %1977 = zext i32 %1976 to i64
  %1978 = mul nsw i64 %1977, 8
  %1979 = sub nsw i64 %1975, %1978
  %1980 = sdiv i64 %1979, 8
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1964, i32 noundef 4096, i32 noundef %1967, i32 noundef %1970, i32 noundef %1973, i64 noundef %1980)
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #4
  br label %1981

1981:                                             ; preds = %1960, %1956
  %1982 = load i32, ptr %28, align 4, !tbaa !9
  %1983 = icmp eq i32 %1982, 0
  br i1 %1983, label %1984, label %2005

1984:                                             ; preds = %1981
  %1985 = load i32, ptr %30, align 4, !tbaa !9
  %1986 = load i32, ptr %32, align 4, !tbaa !9
  %1987 = icmp ne i32 %1985, %1986
  br i1 %1987, label %1988, label %2004

1988:                                             ; preds = %1984
  %1989 = load ptr, ptr %11, align 8, !tbaa !5
  %1990 = load ptr, ptr %12, align 8, !tbaa !5
  %1991 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1990, i32 0, i32 2
  %1992 = load i32, ptr %1991, align 4, !tbaa !28
  %1993 = load ptr, ptr %12, align 8, !tbaa !5
  %1994 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1993, i32 0, i32 35
  %1995 = load i32, ptr %1994, align 4, !tbaa !27
  %1996 = load ptr, ptr %12, align 8, !tbaa !5
  %1997 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1996, i32 0, i32 2
  %1998 = load i32, ptr %1997, align 4, !tbaa !28
  %1999 = load i32, ptr %30, align 4, !tbaa !9
  %2000 = zext i32 %1999 to i64
  %2001 = load i32, ptr %32, align 4, !tbaa !9
  %2002 = zext i32 %2001 to i64
  %2003 = sub nsw i64 %2000, %2002
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %1989, i32 noundef 4096, i32 noundef %1992, i32 noundef %1995, i32 noundef %1998, i64 noundef %2003)
  br label %2004

2004:                                             ; preds = %1988, %1984
  br label %2005

2005:                                             ; preds = %2004, %1981
  %2006 = load i32, ptr %26, align 4, !tbaa !9
  %2007 = icmp eq i32 %2006, 1
  br i1 %2007, label %2008, label %2026

2008:                                             ; preds = %2005
  %2009 = load i32, ptr %22, align 4, !tbaa !9
  %2010 = load i32, ptr %18, align 4, !tbaa !9
  %2011 = sub i32 %2010, 1
  %2012 = icmp ult i32 %2009, %2011
  br i1 %2012, label %2013, label %2026

2013:                                             ; preds = %2008
  %2014 = load ptr, ptr %11, align 8, !tbaa !5
  %2015 = load ptr, ptr %12, align 8, !tbaa !5
  %2016 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2015, i32 0, i32 2
  %2017 = load i32, ptr %2016, align 4, !tbaa !28
  %2018 = load ptr, ptr %12, align 8, !tbaa !5
  %2019 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2018, i32 0, i32 35
  %2020 = load i32, ptr %2019, align 4, !tbaa !27
  %2021 = load ptr, ptr %12, align 8, !tbaa !5
  %2022 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2021, i32 0, i32 2
  %2023 = load i32, ptr %2022, align 4, !tbaa !28
  %2024 = load i32, ptr %34, align 4, !tbaa !9
  %2025 = zext i32 %2024 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %2014, i32 noundef 4097, i32 noundef %2017, i32 noundef %2020, i32 noundef %2023, i64 noundef %2025)
  br label %2026

2026:                                             ; preds = %2013, %2008, %2005
  %2027 = load i32, ptr %25, align 4, !tbaa !9
  %2028 = icmp eq i32 %2027, 1
  br i1 %2028, label %2029, label %2049

2029:                                             ; preds = %2026
  %2030 = load ptr, ptr %11, align 8, !tbaa !5
  %2031 = load ptr, ptr %12, align 8, !tbaa !5
  %2032 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2031, i32 0, i32 2
  %2033 = load i32, ptr %2032, align 4, !tbaa !28
  %2034 = load ptr, ptr %12, align 8, !tbaa !5
  %2035 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2034, i32 0, i32 35
  %2036 = load i32, ptr %2035, align 4, !tbaa !27
  %2037 = load ptr, ptr %12, align 8, !tbaa !5
  %2038 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2037, i32 0, i32 2
  %2039 = load i32, ptr %2038, align 4, !tbaa !28
  %2040 = load ptr, ptr %14, align 8, !tbaa !5
  %2041 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %2040, i32 0, i32 4
  %2042 = load i32, ptr %2041, align 1, !tbaa !17
  %2043 = zext i32 %2042 to i64
  %2044 = load ptr, ptr %13, align 8, !tbaa !5
  %2045 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2044, i32 0, i32 3
  %2046 = load i32, ptr %2045, align 4, !tbaa !18
  %2047 = zext i32 %2046 to i64
  %2048 = mul nsw i64 %2043, %2047
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %2030, i32 noundef 4096, i32 noundef %2033, i32 noundef %2036, i32 noundef %2039, i64 noundef %2048)
  br label %2049

2049:                                             ; preds = %2029, %2026
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  br label %2050

2050:                                             ; preds = %2049
  %2051 = load i32, ptr %22, align 4, !tbaa !9
  %2052 = add i32 %2051, 1
  store i32 %2052, ptr %22, align 4, !tbaa !9
  br label %981, !llvm.loop !41

2053:                                             ; preds = %981
  %2054 = load ptr, ptr %11, align 8, !tbaa !5
  %2055 = load ptr, ptr %12, align 8, !tbaa !5
  %2056 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2055, i32 0, i32 2
  %2057 = load i32, ptr %2056, align 4, !tbaa !28
  %2058 = load ptr, ptr %12, align 8, !tbaa !5
  %2059 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2058, i32 0, i32 35
  %2060 = load i32, ptr %2059, align 4, !tbaa !27
  %2061 = load ptr, ptr %12, align 8, !tbaa !5
  %2062 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2061, i32 0, i32 2
  %2063 = load i32, ptr %2062, align 4, !tbaa !28
  %2064 = load i32, ptr %34, align 4, !tbaa !9
  %2065 = zext i32 %2064 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %2054, i32 noundef 4097, i32 noundef %2057, i32 noundef %2060, i32 noundef %2063, i64 noundef %2065)
  %2066 = load ptr, ptr %14, align 8, !tbaa !5
  %2067 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %2066, i32 0, i32 10
  %2068 = load i16, ptr %2067, align 1, !tbaa !22
  %2069 = zext i16 %2068 to i32
  %2070 = icmp eq i32 %2069, 5
  br i1 %2070, label %2071, label %2084

2071:                                             ; preds = %2053
  %2072 = load ptr, ptr %11, align 8, !tbaa !5
  %2073 = load ptr, ptr %12, align 8, !tbaa !5
  %2074 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2073, i32 0, i32 6
  %2075 = load i32, ptr %2074, align 4, !tbaa !33
  %2076 = load ptr, ptr %12, align 8, !tbaa !5
  %2077 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2076, i32 0, i32 35
  %2078 = load i32, ptr %2077, align 4, !tbaa !27
  %2079 = load ptr, ptr %12, align 8, !tbaa !5
  %2080 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2079, i32 0, i32 6
  %2081 = load i32, ptr %2080, align 4, !tbaa !33
  %2082 = load i32, ptr %33, align 4, !tbaa !9
  %2083 = zext i32 %2082 to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %2072, i32 noundef 4097, i32 noundef %2075, i32 noundef %2078, i32 noundef %2081, i64 noundef %2083)
  br label %2084

2084:                                             ; preds = %2071, %2053
  %2085 = load ptr, ptr %14, align 8, !tbaa !5
  %2086 = call i32 @libxsmm_generator_mateltwise_is_binary_cmp_op(ptr noundef %2085)
  %2087 = icmp ugt i32 %2086, 0
  br i1 %2087, label %2088, label %2108

2088:                                             ; preds = %2084
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #4
  %2089 = load ptr, ptr %13, align 8, !tbaa !5
  %2090 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %2089, i32 0, i32 17
  %2091 = load i32, ptr %2090, align 4, !tbaa !40
  store i32 %2091, ptr %57, align 4, !tbaa !9
  %2092 = load ptr, ptr %11, align 8, !tbaa !5
  %2093 = load ptr, ptr %12, align 8, !tbaa !5
  %2094 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2093, i32 0, i32 6
  %2095 = load i32, ptr %2094, align 4, !tbaa !33
  %2096 = load ptr, ptr %12, align 8, !tbaa !5
  %2097 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2096, i32 0, i32 35
  %2098 = load i32, ptr %2097, align 4, !tbaa !27
  %2099 = load ptr, ptr %12, align 8, !tbaa !5
  %2100 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %2099, i32 0, i32 6
  %2101 = load i32, ptr %2100, align 4, !tbaa !33
  %2102 = load i32, ptr %18, align 4, !tbaa !9
  %2103 = zext i32 %2102 to i64
  %2104 = load i32, ptr %57, align 4, !tbaa !9
  %2105 = udiv i32 %2104, 8
  %2106 = zext i32 %2105 to i64
  %2107 = mul nsw i64 %2103, %2106
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %2092, i32 noundef 4097, i32 noundef %2095, i32 noundef %2098, i32 noundef %2101, i64 noundef %2107)
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  br label %2108

2108:                                             ; preds = %2088, %2084
  store i32 0, ptr %45, align 4
  br label %2109

2109:                                             ; preds = %2108, %979
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #4
  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 4, 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
  %2110 = load i32, ptr %45, align 4
  switch i32 %2110, label %2112 [
    i32 0, label %2111
    i32 1, label %2111
  ]

2111:                                             ; preds = %2109, %2109
  ret void

2112:                                             ; preds = %2109
  unreachable
}

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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, !13, i64 27}
!12 = !{!"libxsmm_meltw_descriptor", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !7, i64 24, !7, i64 25, !7, i64 26, !13, i64 27, !13, i64 29, !7, i64 31}
!13 = !{!"short", !7, i64 0}
!14 = !{!12, !10, i64 12}
!15 = !{!16, !10, i64 20}
!16 = !{!"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}
!17 = !{!12, !10, i64 16}
!18 = !{!16, !10, i64 12}
!19 = !{!20, !10, i64 28}
!20 = !{!"libxsmm_generated_code", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28}
!21 = !{!7, !7, i64 0}
!22 = !{!12, !13, i64 29}
!23 = !{!12, !7, i64 31}
!24 = !{!25, !10, i64 144}
!25 = !{!"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}
!26 = !{!16, !10, i64 8}
!27 = !{!25, !10, i64 140}
!28 = !{!25, !10, i64 8}
!29 = !{!16, !10, i64 116}
!30 = distinct !{!30, !31}
!31 = !{!"llvm.loop.mustprogress"}
!32 = distinct !{!32, !31}
!33 = !{!25, !10, i64 24}
!34 = !{!16, !10, i64 120}
!35 = !{!12, !10, i64 0}
!36 = !{!16, !10, i64 400}
!37 = !{!16, !10, i64 404}
!38 = !{!16, !10, i64 124}
!39 = distinct !{!39, !31}
!40 = !{!16, !10, i64 68}
!41 = distinct !{!41, !31}


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

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

declare i32 @libxsmm_generator_mateltwise_is_binary_cmp_op(ptr noundef) local_unnamed_addr #1

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

; Function Attrs: mustprogress 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) local_unnamed_addr #1

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

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

declare void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #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) local_unnamed_addr #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) local_unnamed_addr #1

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 #1

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

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 #1

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_unary_binary_aarch64_store_bitmask_2bytemult_sve(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i8 noundef zeroext, i8 noundef zeroext, i8 noundef zeroext, i8 noundef zeroext, i8 noundef zeroext, i8 noundef zeroext, ptr noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_unary_binary_aarch64_store_bitmask_2bytemult_asimd(ptr noundef, i32 noundef, i32 noundef, i8 noundef zeroext, i8 noundef zeroext, i8 noundef zeroext, i8 noundef zeroext, i8 noundef zeroext, i8 noundef zeroext, ptr noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_compute_binary_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 #3 {
  %11 = alloca i32, align 4
  %12 = getelementptr inbounds i8, ptr %3, i64 27
  %13 = load i16, ptr %12, align 1, !tbaa !5
  %.fr674 = freeze i16 %13
  %14 = zext i16 %.fr674 to i32
  %15 = and i32 %14, 2
  %.not595 = icmp eq i32 %15, 0
  %16 = and i32 %14, 8
  %17 = icmp ne i32 %16, 0
  %18 = and i32 %14, 32
  %.not624 = icmp eq i32 %18, 0
  %19 = and i32 %14, 42
  %spec.select = icmp ne i32 %19, 0
  %20 = getelementptr inbounds i8, ptr %3, i64 12
  %21 = load i32, ptr %20, align 1, !tbaa !11
  %22 = getelementptr inbounds i8, ptr %2, i64 20
  %23 = load i32, ptr %22, align 4, !tbaa !12
  %24 = mul i32 %23, %21
  %25 = getelementptr inbounds i8, ptr %3, i64 16
  %26 = load i32, ptr %25, align 1, !tbaa !14
  %27 = getelementptr inbounds i8, ptr %2, i64 12
  %28 = load i32, ptr %27, align 4, !tbaa !15
  %29 = mul i32 %28, %26
  %30 = icmp eq i32 %8, 0
  br i1 %30, label %31, label %35

31:                                               ; preds = %10
  %32 = mul i32 %6, %4
  %33 = mul i32 %32, %23
  %34 = mul i32 %32, %28
  br label %41

35:                                               ; preds = %10
  %36 = add i32 %6, -1
  %37 = mul i32 %36, %4
  %38 = add i32 %37, %8
  %39 = mul i32 %23, %38
  %40 = mul i32 %28, %38
  br label %41

41:                                               ; preds = %35, %31
  %42 = phi i32 [ %33, %31 ], [ %39, %35 ]
  %43 = phi i32 [ %34, %31 ], [ %40, %35 ]
  %44 = getelementptr inbounds i8, ptr %0, i64 28
  %45 = load i32, ptr %44, align 4, !tbaa !16
  %46 = add i32 %45, -2201
  %spec.select596 = icmp ult i32 %46, 799
  %47 = zext i1 %spec.select596 to i8
  %48 = getelementptr inbounds i8, ptr %3, i64 29
  %49 = load i16, ptr %48, align 1, !tbaa !19
  %switch.tableidx = add i16 %49, -4
  %50 = icmp ult i16 %switch.tableidx, 7
  br i1 %50, label %switch.hole_check, label %51

51:                                               ; preds = %switch.hole_check, %41
  %52 = tail call i32 @libxsmm_generator_mateltwise_is_binary_cmp_op(ptr noundef nonnull %3) #4
  %53 = icmp ne i32 %52, 0
  br label %switch.lookup

switch.hole_check:                                ; preds = %41
  %switch.maskindex = trunc nuw i16 %switch.tableidx to i8
  %switch.shifted = lshr i8 99, %switch.maskindex
  %switch.lobit = trunc i8 %switch.shifted to i1
  br i1 %switch.lobit, label %switch.lookup, label %51

switch.lookup:                                    ; preds = %switch.hole_check, %51
  %54 = phi i1 [ %53, %51 ], [ true, %switch.hole_check ]
  %55 = and i32 %9, 255
  %56 = getelementptr inbounds i8, ptr %3, i64 31
  %57 = load i8, ptr %56, align 1, !tbaa !20
  %58 = icmp eq i8 %57, 2
  br i1 %58, label %59, label %.critedge

59:                                               ; preds = %switch.lookup
  %60 = load i16, ptr %48, align 1, !tbaa !19
  %61 = icmp eq i16 %60, 26
  br i1 %61, label %62, label %.critedge

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

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

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

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

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

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

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

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

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

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

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

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

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

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

104:                                              ; preds = %101
  tail call void @__assert_fail(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str, i32 noundef 2513, ptr noundef nonnull @__PRETTY_FUNCTION__.libxsmm_compute_binary_aarch64_2d_reg_block) #5
  unreachable

.critedge:                                        ; preds = %switch.lookup, %59
  %105 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #4
  %106 = icmp eq i32 %105, 0
  br i1 %106, label %147, label %107

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

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

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

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

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

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

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

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

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

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

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

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

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

146:                                              ; preds = %143
  tail call void @__assert_fail(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str, i32 noundef 2514, ptr noundef nonnull @__PRETTY_FUNCTION__.libxsmm_compute_binary_aarch64_2d_reg_block) #5
  unreachable

147:                                              ; preds = %.critedge, %110, %116, %122, %128, %134, %140, %143, %137, %131, %125, %119, %113, %107, %62, %68, %74, %80, %86, %92, %98, %101, %95, %89, %83, %77, %71, %65
  %.sink = phi i8 [ 8, %62 ], [ 4, %65 ], [ 2, %68 ], [ 2, %71 ], [ 1, %74 ], [ 1, %77 ], [ 8, %80 ], [ 8, %83 ], [ 4, %86 ], [ 4, %89 ], [ 2, %92 ], [ 2, %95 ], [ 1, %98 ], [ 1, %101 ], [ 8, %.critedge ], [ 4, %107 ], [ 2, %110 ], [ 2, %113 ], [ 1, %116 ], [ 1, %119 ], [ 8, %122 ], [ 8, %125 ], [ 4, %128 ], [ 4, %131 ], [ 2, %134 ], [ 2, %137 ], [ 1, %140 ], [ 1, %143 ]
  %148 = tail call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext %.sink) #4
  %149 = load i16, ptr %48, align 1, !tbaa !19
  switch i16 %149, label %164 [
    i16 1, label %150
    i16 2, label %152
    i16 3, label %154
    i16 4, label %156
    i16 5, label %158
    i16 9, label %160
    i16 10, label %162
  ]

150:                                              ; preds = %147
  %151 = select i1 %spec.select596, i32 1694498819, i32 237032459
  br label %164

152:                                              ; preds = %147
  %153 = select i1 %spec.select596, i32 1694500867, i32 773905419
  br label %164

154:                                              ; preds = %147
  %155 = select i1 %spec.select596, i32 1694499843, i32 245421067
  br label %164

156:                                              ; preds = %147
  %157 = select i1 %spec.select596, i32 1695383714, i32 773913611
  br label %164

158:                                              ; preds = %147
  %159 = select i1 %spec.select596, i32 1696596099, i32 237030411
  br label %164

160:                                              ; preds = %147
  %161 = select i1 %spec.select596, i32 1694924962, i32 237040651
  br label %164

162:                                              ; preds = %147
  %163 = select i1 %spec.select596, i32 1694990498, i32 245429259
  br label %164

164:                                              ; preds = %147, %162, %160, %158, %156, %154, %152, %150
  %.0545 = phi i32 [ 0, %147 ], [ %163, %162 ], [ %161, %160 ], [ %159, %158 ], [ %157, %156 ], [ %155, %154 ], [ %153, %152 ], [ %151, %150 ]
  %165 = tail call i32 @libxsmm_generator_mateltwise_is_binary_cmp_op(ptr noundef nonnull %3) #4
  %.not = icmp eq i32 %165, 0
  br i1 %.not, label %181, label %166

166:                                              ; preds = %164
  %167 = load i16, ptr %48, align 1, !tbaa !19
  switch i16 %167, label %180 [
    i16 27, label %168
    i16 28, label %170
    i16 29, label %172
    i16 30, label %174
    i16 31, label %176
    i16 32, label %178
  ]

168:                                              ; preds = %166
  %169 = select i1 %spec.select596, i32 1694515347, i32 782296075
  br label %180

170:                                              ; preds = %166
  %171 = select i1 %spec.select596, i32 1694515331, i32 773907467
  br label %180

172:                                              ; preds = %166
  %173 = select i1 %spec.select596, i32 1694515347, i32 782296075
  br label %180

174:                                              ; preds = %166
  %175 = select i1 %spec.select596, i32 1694515331, i32 773907467
  br label %180

176:                                              ; preds = %166
  %177 = select i1 %spec.select596, i32 1694523523, i32 237036555
  br label %180

178:                                              ; preds = %166
  %179 = select i1 %spec.select596, i32 1694523539, i32 237036555
  br label %180

180:                                              ; preds = %166, %178, %176, %174, %172, %170, %168
  %.1546 = phi i32 [ %.0545, %166 ], [ %179, %178 ], [ %177, %176 ], [ %175, %174 ], [ %173, %172 ], [ %171, %170 ], [ %169, %168 ]
  %.off = add i16 %167, -29
  %switch = icmp ult i16 %.off, 2
  br label %181

181:                                              ; preds = %180, %164
  %182 = phi i1 [ false, %164 ], [ %switch, %180 ]
  %.2 = phi i32 [ %.0545, %164 ], [ %.1546, %180 ]
  %or.cond4 = select i1 %spec.select596, i1 %54, i1 false
  br i1 %or.cond4, label %.thread, label %183

.thread:                                          ; preds = %181
  tail call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef nonnull %0, i32 noundef %55, i32 noundef -1, i32 noundef 0) #4
  br label %184

183:                                              ; preds = %181
  br i1 %spec.select596, label %184, label %.thread603

184:                                              ; preds = %.thread, %183
  %185 = load i32, ptr %27, align 4, !tbaa !15
  %186 = mul i32 %185, %8
  %187 = getelementptr inbounds i8, ptr %1, i64 144
  %188 = load i32, ptr %187, align 4, !tbaa !21
  tail call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef nonnull %0, i32 noundef 1, i32 noundef %186, i32 noundef %188) #4
  %189 = load i16, ptr %48, align 1, !tbaa !19
  %190 = icmp eq i16 %189, 5
  br i1 %190, label %191, label %195

191:                                              ; preds = %184
  %192 = load i32, ptr %22, align 4, !tbaa !12
  %193 = mul i32 %192, %8
  %194 = load i32, ptr %187, align 4, !tbaa !21
  tail call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef nonnull %0, i32 noundef 3, i32 noundef %193, i32 noundef %194) #4
  br label %195

195:                                              ; preds = %191, %184
  %196 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 1) #4
  %197 = icmp eq i32 %196, 2
  br i1 %197, label %204, label %198

198:                                              ; preds = %195
  %199 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 2) #4
  %200 = icmp eq i32 %199, 2
  br i1 %200, label %204, label %201

201:                                              ; preds = %198
  %202 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #4
  %203 = icmp eq i32 %202, 2
  br i1 %203, label %204, label %207

204:                                              ; preds = %201, %198, %195
  %205 = shl i32 %4, 1
  %206 = load i32, ptr %187, align 4, !tbaa !21
  tail call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef nonnull %0, i32 noundef 2, i32 noundef %205, i32 noundef %206) #4
  br label %207

207:                                              ; preds = %201, %204
  %208 = load i16, ptr %48, align 1, !tbaa !19
  %209 = icmp eq i16 %208, 26
  br i1 %209, label %238, label %.preheader625

.thread603:                                       ; preds = %183
  %210 = load i16, ptr %48, align 1, !tbaa !19
  %211 = icmp eq i16 %210, 26
  br i1 %211, label %.thread604, label %.preheader625

.preheader625:                                    ; preds = %207, %.thread603
  %.not668 = icmp eq i32 %7, 0
  br i1 %.not668, label %._crit_edge636, label %.lr.ph635

.lr.ph635:                                        ; preds = %.preheader625
  %.not669 = icmp eq i32 %6, 0
  %212 = and i32 %14, 34
  %or.cond10.not = icmp eq i32 %212, 0
  %213 = mul i32 %24, %7
  %214 = getelementptr inbounds i8, ptr %1, i64 8
  %215 = getelementptr inbounds i8, ptr %1, i64 144
  %216 = getelementptr inbounds i8, ptr %2, i64 116
  %217 = add i32 %6, -1
  %218 = xor i1 %spec.select, true
  %or.cond12 = or i1 %17, %218
  %219 = select i1 %30, i32 %4, i32 %8
  %220 = select i1 %30, i8 2, i8 1
  %.not586 = icmp ne i32 %8, 0
  %221 = mul i32 %29, %7
  %222 = select i1 %17, i32 %43, i32 %221
  %223 = getelementptr inbounds i8, ptr %2, i64 400
  %224 = getelementptr inbounds i8, ptr %2, i64 404
  %225 = getelementptr inbounds i8, ptr %2, i64 120
  %226 = getelementptr inbounds i8, ptr %2, i64 124
  %227 = getelementptr inbounds i8, ptr %1, i64 24
  %228 = getelementptr inbounds i8, ptr %1, i64 140
  %229 = select i1 %30, i8 0, i8 3
  %.not581 = icmp eq i32 %24, %42
  %230 = zext i32 %24 to i64
  %231 = zext i32 %42 to i64
  %232 = sub nsw i64 %230, %231
  %233 = getelementptr inbounds i8, ptr %2, i64 68
  %.not583 = icmp eq i32 %29, %43
  %or.cond599 = select i1 %spec.select, i1 true, i1 %.not583
  %234 = zext i32 %29 to i64
  %235 = zext i32 %43 to i64
  %236 = sub nsw i64 %234, %235
  %237 = add i32 %7, -1
  br label %365

238:                                              ; preds = %207
  %239 = mul i32 %29, %7
  tail call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef nonnull %0, i32 noundef %55, i32 noundef -1, i32 noundef 0) #4
  %240 = getelementptr inbounds i8, ptr %2, i64 8
  %241 = load i32, ptr %240, align 4, !tbaa !23
  %242 = mul i32 %241, %4
  %243 = getelementptr inbounds i8, ptr %1, i64 140
  %244 = load i32, ptr %243, align 4, !tbaa !24
  tail call void @libxsmm_generator_set_p_register_aarch64_sve(ptr noundef nonnull %0, i32 noundef 2, i32 noundef %242, i32 noundef %244) #4
  %.not670 = icmp eq i32 %7, 0
  br i1 %.not670, label %._crit_edge646, label %.preheader.lr.ph

.preheader.lr.ph:                                 ; preds = %238
  %.not671 = icmp eq i32 %6, 0
  %245 = add i32 %6, -1
  %246 = select i1 %30, i32 %4, i32 %8
  %247 = select i1 %30, i8 2, i8 1
  %.not594 = icmp ne i32 %8, 0
  %248 = xor i1 %spec.select, true
  %or.cond6 = or i1 %17, %248
  %249 = and i32 %14, 34
  %or.cond8.not = icmp eq i32 %249, 0
  %250 = getelementptr inbounds i8, ptr %1, i64 8
  %251 = getelementptr inbounds i8, ptr %2, i64 116
  %252 = select i1 %17, i32 %43, i32 %239
  %.not591 = icmp eq i32 %29, %43
  %or.cond = select i1 %spec.select, i1 true, i1 %.not591
  %253 = zext i32 %29 to i64
  %254 = zext i32 %43 to i64
  %255 = sub nsw i64 %253, %254
  %256 = add i32 %7, -1
  br i1 %.not671, label %.preheader.lr.ph.split, label %.preheader.us

.preheader.us:                                    ; preds = %.preheader.lr.ph, %277
  %.0543645.us = phi i32 [ %278, %277 ], [ 0, %.preheader.lr.ph ]
  %.0547644.us = phi i32 [ %.us-phi.us, %277 ], [ %239, %.preheader.lr.ph ]
  %257 = mul i32 %.0543645.us, %6
  %258 = add i32 %257, %5
  br i1 %or.cond6, label %.lr.ph641.split.us.us, label %.lr.ph641.split.us651

259:                                              ; preds = %._crit_edge642.us
  %260 = load i32, ptr %250, align 4, !tbaa !25
  %261 = load i32, ptr %243, align 4, !tbaa !24
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %260, i32 noundef %261, i32 noundef %260, i64 noundef %255) #4
  br label %262

262:                                              ; preds = %259, %._crit_edge642.us
  %263 = icmp ult i32 %.0543645.us, %256
  %or.cond598.us = and i1 %17, %263
  br i1 %or.cond598.us, label %264, label %268

264:                                              ; preds = %262
  %265 = load i32, ptr %250, align 4, !tbaa !25
  %266 = load i32, ptr %243, align 4, !tbaa !24
  %267 = zext i32 %.us-phi.us to i64
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4097, i32 noundef %265, i32 noundef %266, i32 noundef %265, i64 noundef %267) #4
  br label %268

268:                                              ; preds = %264, %262
  br i1 %.not595, label %277, label %269

269:                                              ; preds = %268
  %270 = load i32, ptr %250, align 4, !tbaa !25
  %271 = load i32, ptr %243, align 4, !tbaa !24
  %272 = load i32, ptr %25, align 1, !tbaa !14
  %273 = zext i32 %272 to i64
  %274 = load i32, ptr %27, align 4, !tbaa !15
  %275 = zext i32 %274 to i64
  %276 = mul nuw nsw i64 %275, %273
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %270, i32 noundef %271, i32 noundef %270, i64 noundef %276) #4
  br label %277

277:                                              ; preds = %269, %268
  %278 = add nuw i32 %.0543645.us, 1
  %exitcond685.not = icmp eq i32 %278, %7
  br i1 %exitcond685.not, label %._crit_edge646, label %.preheader.us, !llvm.loop !26

.lr.ph641.split.us651:                            ; preds = %.preheader.us, %300
  %.0640.us648 = phi i32 [ %302, %300 ], [ 0, %.preheader.us ]
  %.1548639.us = phi i32 [ %.2549.us, %300 ], [ %.0547644.us, %.preheader.us ]
  %279 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 0) #4
  %280 = icmp eq i32 %279, 1
  br i1 %280, label %.thread605.us649, label %281

281:                                              ; preds = %.lr.ph641.split.us651
  %282 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 0) #4
  br label %.thread605.us649

.thread605.us649:                                 ; preds = %.lr.ph641.split.us651, %281
  %283 = add i32 %258, %.0640.us648
  br i1 %or.cond8.not, label %300, label %284

284:                                              ; preds = %.thread605.us649
  %.pre690 = load i32, ptr %27, align 4, !tbaa !15
  br i1 %.not624, label %285, label %289

285:                                              ; preds = %284
  %286 = load i32, ptr %25, align 1, !tbaa !14
  %287 = mul i32 %.pre690, %7
  %288 = mul i32 %287, %286
  br label %289

289:                                              ; preds = %285, %284
  %290 = phi i32 [ %288, %285 ], [ 0, %284 ]
  %291 = load i32, ptr %250, align 4, !tbaa !25
  %292 = load i32, ptr %187, align 4, !tbaa !21
  %293 = load i32, ptr %251, align 4, !tbaa !28
  %294 = icmp eq i32 %.0640.us648, %245
  %295 = select i1 %294, i32 %8, i32 0
  tail call void @libxsmm_generator_bcastload_masked_vreg_aarch64_asimd(ptr noundef %0, i32 noundef %291, i32 noundef %292, i32 noundef %293, i32 noundef %.pre690, i32 noundef %295, i32 noundef 0) #4
  %296 = load i32, ptr %251, align 4, !tbaa !28
  %297 = tail call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4) #4
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 87177218, i32 noundef %296, i32 noundef 127, i8 noundef zeroext 0, i32 noundef %296, i32 noundef 0, i32 noundef %297) #4
  %298 = load i32, ptr %251, align 4, !tbaa !28
  %299 = tail call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4) #4
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 69245958, i32 noundef %298, i32 noundef 127, i8 noundef zeroext 16, i32 noundef %298, i32 noundef 0, i32 noundef %299) #4
  br label %300

300:                                              ; preds = %289, %.thread605.us649
  %.2549.us = phi i32 [ %290, %289 ], [ %.1548639.us, %.thread605.us649 ]
  %301 = load i32, ptr %251, align 4, !tbaa !28
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 73412611, i32 noundef %283, i32 noundef %301, i8 noundef zeroext 0, i32 noundef %283, i32 noundef %55, i32 noundef %148) #4
  %302 = add nuw i32 %.0640.us648, 1
  %exitcond683.not = icmp eq i32 %302, %6
  br i1 %exitcond683.not, label %._crit_edge642.us, label %.lr.ph641.split.us651, !llvm.loop !29

._crit_edge642.us:                                ; preds = %300, %312
  %.us-phi.us = phi i32 [ %252, %312 ], [ %.2549.us, %300 ]
  br i1 %or.cond, label %262, label %259

.lr.ph641.split.us.us:                            ; preds = %.preheader.us, %312
  %.0640.us.us = phi i32 [ %325, %312 ], [ 0, %.preheader.us ]
  %303 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 0) #4
  %304 = icmp eq i32 %303, 1
  br i1 %304, label %.thread605.us.us, label %305

305:                                              ; preds = %.lr.ph641.split.us.us
  %306 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 0) #4
  %307 = icmp eq i32 %306, 0
  br i1 %307, label %.thread605.us.us, label %308

308:                                              ; preds = %305
  %309 = icmp eq i32 %.0640.us.us, %245
  %spec.select617.us.us = select i1 %309, i32 %246, i32 %4
  %spec.select621.us.us = select i1 %309, i8 %247, i8 2
  br label %312

.thread605.us.us:                                 ; preds = %305, %.lr.ph641.split.us.us
  %310 = icmp eq i32 %.0640.us.us, %245
  %311 = select i1 %310, i32 %8, i32 0
  %narrow675 = and i1 %310, %.not594
  %spec.select666 = zext i1 %narrow675 to i8
  br label %312

312:                                              ; preds = %.thread605.us.us, %308
  %313 = phi i32 [ %spec.select617.us.us, %308 ], [ %311, %.thread605.us.us ]
  %314 = phi i8 [ %spec.select621.us.us, %308 ], [ %spec.select666, %.thread605.us.us ]
  %315 = add i32 %258, %.0640.us.us
  %316 = load i32, ptr %250, align 4, !tbaa !25
  %317 = load i32, ptr %187, align 4, !tbaa !21
  %318 = load i32, ptr %251, align 4, !tbaa !28
  %319 = load i32, ptr %240, align 4, !tbaa !23
  tail call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef %316, i32 noundef %317, i32 noundef %318, i32 noundef %319, i32 noundef %313, i32 noundef 1, i32 noundef 0, i8 noundef zeroext %314, i8 noundef zeroext %47) #4
  %320 = load i32, ptr %251, align 4, !tbaa !28
  %321 = tail call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4) #4
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 87177218, i32 noundef %320, i32 noundef 127, i8 noundef zeroext 0, i32 noundef %320, i32 noundef 0, i32 noundef %321) #4
  %322 = load i32, ptr %251, align 4, !tbaa !28
  %323 = tail call i32 @libxsmm_generator_aarch64_get_sve_type(i8 noundef zeroext 4) #4
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 69245958, i32 noundef %322, i32 noundef 127, i8 noundef zeroext 16, i32 noundef %322, i32 noundef 0, i32 noundef %323) #4
  %324 = load i32, ptr %251, align 4, !tbaa !28
  tail call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 73412611, i32 noundef %315, i32 noundef %324, i8 noundef zeroext 0, i32 noundef %315, i32 noundef %55, i32 noundef %148) #4
  %325 = add nuw i32 %.0640.us.us, 1
  %exitcond684.not = icmp eq i32 %325, %6
  br i1 %exitcond684.not, label %._crit_edge642.us, label %.lr.ph641.split.us.us, !llvm.loop !29

.preheader.lr.ph.split:                           ; preds = %.preheader.lr.ph
  %326 = zext i32 %239 to i64
  br i1 %.not595, label %.preheader.lr.ph.split.split.us, label %.preheader

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

.preheader.lr.ph.split.split.us.split.us:         ; preds = %.preheader.lr.ph.split.split.us
  br i1 %17, label %.preheader.us653.us, label %._crit_edge646

.preheader.us653.us:                              ; preds = %.preheader.lr.ph.split.split.us.split.us, %331
  %.0543645.us654.us = phi i32 [ %332, %331 ], [ 0, %.preheader.lr.ph.split.split.us.split.us ]
  %327 = icmp ult i32 %.0543645.us654.us, %256
  br i1 %327, label %328, label %331

328:                                              ; preds = %.preheader.us653.us
  %329 = load i32, ptr %250, align 4, !tbaa !25
  %330 = load i32, ptr %243, align 4, !tbaa !24
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4097, i32 noundef %329, i32 noundef %330, i32 noundef %329, i64 noundef %326) #4
  br label %331

331:                                              ; preds = %328, %.preheader.us653.us
  %332 = add nuw i32 %.0543645.us654.us, 1
  %exitcond689.not = icmp eq i32 %332, %7
  br i1 %exitcond689.not, label %._crit_edge646, label %.preheader.us653.us, !llvm.loop !26

.preheader.lr.ph.split.split.us.split:            ; preds = %.preheader.lr.ph.split.split.us
  br i1 %17, label %.preheader.us653, label %.preheader.us653.us658

.preheader.us653.us658:                           ; preds = %.preheader.lr.ph.split.split.us.split, %.preheader.us653.us658
  %.0543645.us654.us659 = phi i32 [ %335, %.preheader.us653.us658 ], [ 0, %.preheader.lr.ph.split.split.us.split ]
  %333 = load i32, ptr %250, align 4, !tbaa !25
  %334 = load i32, ptr %243, align 4, !tbaa !24
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %333, i32 noundef %334, i32 noundef %333, i64 noundef %255) #4
  %335 = add nuw i32 %.0543645.us654.us659, 1
  %exitcond687.not = icmp eq i32 %335, %7
  br i1 %exitcond687.not, label %._crit_edge646, label %.preheader.us653.us658, !llvm.loop !26

.preheader.us653:                                 ; preds = %.preheader.lr.ph.split.split.us.split, %342
  %.0543645.us654 = phi i32 [ %343, %342 ], [ 0, %.preheader.lr.ph.split.split.us.split ]
  %336 = load i32, ptr %250, align 4, !tbaa !25
  %337 = load i32, ptr %243, align 4, !tbaa !24
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %336, i32 noundef %337, i32 noundef %336, i64 noundef %255) #4
  %338 = icmp ult i32 %.0543645.us654, %256
  br i1 %338, label %339, label %342

339:                                              ; preds = %.preheader.us653
  %340 = load i32, ptr %250, align 4, !tbaa !25
  %341 = load i32, ptr %243, align 4, !tbaa !24
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4097, i32 noundef %340, i32 noundef %341, i32 noundef %340, i64 noundef %326) #4
  br label %342

342:                                              ; preds = %339, %.preheader.us653
  %343 = add nuw i32 %.0543645.us654, 1
  %exitcond688.not = icmp eq i32 %343, %7
  br i1 %exitcond688.not, label %._crit_edge646, label %.preheader.us653, !llvm.loop !26

.preheader:                                       ; preds = %.preheader.lr.ph.split, %352
  %.0543645 = phi i32 [ %360, %352 ], [ 0, %.preheader.lr.ph.split ]
  br i1 %or.cond, label %347, label %344

344:                                              ; preds = %.preheader
  %345 = load i32, ptr %250, align 4, !tbaa !25
  %346 = load i32, ptr %243, align 4, !tbaa !24
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %345, i32 noundef %346, i32 noundef %345, i64 noundef %255) #4
  br label %347

347:                                              ; preds = %344, %.preheader
  %348 = icmp ult i32 %.0543645, %256
  %or.cond598 = and i1 %17, %348
  br i1 %or.cond598, label %349, label %352

349:                                              ; preds = %347
  %350 = load i32, ptr %250, align 4, !tbaa !25
  %351 = load i32, ptr %243, align 4, !tbaa !24
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4097, i32 noundef %350, i32 noundef %351, i32 noundef %350, i64 noundef %326) #4
  br label %352

352:                                              ; preds = %349, %347
  %353 = load i32, ptr %250, align 4, !tbaa !25
  %354 = load i32, ptr %243, align 4, !tbaa !24
  %355 = load i32, ptr %25, align 1, !tbaa !14
  %356 = zext i32 %355 to i64
  %357 = load i32, ptr %27, align 4, !tbaa !15
  %358 = zext i32 %357 to i64
  %359 = mul nuw nsw i64 %358, %356
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %353, i32 noundef %354, i32 noundef %353, i64 noundef %359) #4
  %360 = add nuw i32 %.0543645, 1
  %exitcond686.not = icmp eq i32 %360, %7
  br i1 %exitcond686.not, label %._crit_edge646, label %.preheader, !llvm.loop !26

._crit_edge646:                                   ; preds = %277, %352, %.preheader.us653.us658, %342, %331, %.preheader.lr.ph.split.split.us.split.us, %238
  %.0547.lcssa = phi i32 [ 0, %238 ], [ %239, %.preheader.lr.ph.split.split.us.split.us ], [ %239, %331 ], [ %239, %342 ], [ %239, %.preheader.us653.us658 ], [ %239, %352 ], [ %.us-phi.us, %277 ]
  %361 = getelementptr inbounds i8, ptr %1, i64 8
  %362 = load i32, ptr %361, align 4, !tbaa !25
  %363 = load i32, ptr %243, align 4, !tbaa !24
  %364 = zext i32 %.0547.lcssa to i64
  tail call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4097, i32 noundef %362, i32 noundef %363, i32 noundef %362, i64 noundef %364) #4
  br label %.thread604

365:                                              ; preds = %.lr.ph635, %541
  %.1544634 = phi i32 [ 0, %.lr.ph635 ], [ %542, %541 ]
  %.3633 = phi i32 [ 0, %.lr.ph635 ], [ %.4.lcssa, %541 ]
  %.0550632 = phi i32 [ 0, %.lr.ph635 ], [ %.1551.lcssa, %541 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #4
  store i32 0, ptr %11, align 4, !tbaa !30
  br i1 %.not669, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %365
  %366 = mul i32 %.1544634, %6
  %367 = add i32 %366, %5
  br label %368

368:                                              ; preds = %.lr.ph, %502
  %.1628 = phi i32 [ 0, %.lr.ph ], [ %503, %502 ]
  %.4627 = phi i32 [ %.3633, %.lr.ph ], [ %.6, %502 ]
  %.1551626 = phi i32 [ %.0550632, %.lr.ph ], [ %.3553, %502 ]
  %369 = add i32 %367, %.1628
  br i1 %or.cond10.not, label %395, label %370

370:                                              ; preds = %368
  %.pre = load i32, ptr %27, align 4, !tbaa !15
  br i1 %.not624, label %371, label %375

371:                                              ; preds = %370
  %372 = load i32, ptr %25, align 1, !tbaa !14
  %373 = mul i32 %.pre, %7
  %374 = mul i32 %373, %372
  br label %375

375:                                              ; preds = %370, %371
  %376 = phi i32 [ %374, %371 ], [ 0, %370 ]
  %377 = load i32, ptr %214, align 4, !tbaa !25
  %378 = load i32, ptr %215, align 4, !tbaa !21
  %379 = load i32, ptr %216, align 4, !tbaa !28
  %380 = icmp eq i32 %.1628, %217
  %381 = select i1 %380, i32 %8, i32 0
  call void @libxsmm_generator_bcastload_masked_vreg_aarch64_asimd(ptr noundef %0, i32 noundef %377, i32 noundef %378, i32 noundef %379, i32 noundef %.pre, i32 noundef %381, i32 noundef 0) #4
  %382 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 4) #4
  %383 = icmp eq i32 %382, 1
  br i1 %383, label %384, label %387

384:                                              ; preds = %375
  %385 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 1) #4
  %386 = icmp eq i32 %385, 2
  br i1 %386, label %393, label %387

387:                                              ; preds = %384, %375
  %388 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 3) #4
  %389 = icmp eq i32 %388, 1
  br i1 %389, label %390, label %395

390:                                              ; preds = %387
  %391 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 1) #4
  %392 = icmp eq i32 %391, 2
  br i1 %392, label %393, label %395

393:                                              ; preds = %390, %384
  %394 = load i32, ptr %216, align 4, !tbaa !28
  call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %0, i32 noundef %394, i32 noundef 0) #4
  br label %395

395:                                              ; preds = %387, %390, %393, %368
  %.2552 = phi i32 [ %376, %393 ], [ %376, %390 ], [ %376, %387 ], [ %.1551626, %368 ]
  %.5 = phi i32 [ %213, %393 ], [ %213, %390 ], [ %213, %387 ], [ %.4627, %368 ]
  br i1 %or.cond12, label %396, label %426

396:                                              ; preds = %395
  %397 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 1) #4
  %398 = icmp eq i32 %397, 1
  br i1 %398, label %.thread607, label %399

399:                                              ; preds = %396
  %400 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 1) #4
  %401 = icmp eq i32 %400, 0
  br i1 %401, label %.thread607, label %402

402:                                              ; preds = %399
  %403 = icmp eq i32 %.1628, %217
  %spec.select618 = select i1 %403, i32 %219, i32 %4
  %spec.select622 = select i1 %403, i8 %220, i8 2
  br label %406

.thread607:                                       ; preds = %396, %399
  %404 = icmp eq i32 %.1628, %217
  %405 = select i1 %404, i32 %8, i32 0
  %narrow = and i1 %404, %.not586
  %spec.select667 = zext i1 %narrow to i8
  br label %406

406:                                              ; preds = %.thread607, %402
  %407 = phi i32 [ %spec.select618, %402 ], [ %405, %.thread607 ]
  %408 = phi i8 [ %spec.select622, %402 ], [ %spec.select667, %.thread607 ]
  %409 = load i32, ptr %214, align 4, !tbaa !25
  %410 = load i32, ptr %215, align 4, !tbaa !21
  %411 = load i32, ptr %216, align 4, !tbaa !28
  %412 = load i32, ptr %27, align 4, !tbaa !15
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef %409, i32 noundef %410, i32 noundef %411, i32 noundef %412, i32 noundef %407, i32 noundef 1, i32 noundef 0, i8 noundef zeroext %408, i8 noundef zeroext %47) #4
  %413 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 4) #4
  %414 = icmp eq i32 %413, 1
  br i1 %414, label %415, label %418

415:                                              ; preds = %406
  %416 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 1) #4
  %417 = icmp eq i32 %416, 2
  br i1 %417, label %424, label %418

418:                                              ; preds = %415, %406
  %419 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 3) #4
  %420 = icmp eq i32 %419, 1
  br i1 %420, label %421, label %426

421:                                              ; preds = %418
  %422 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %3, i32 noundef 1) #4
  %423 = icmp eq i32 %422, 2
  br i1 %423, label %424, label %426

424:                                              ; preds = %421, %415
  %425 = load i32, ptr %216, align 4, !tbaa !28
  call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %0, i32 noundef %425, i32 noundef 0) #4
  br label %426

426:                                              ; preds = %418, %421, %424, %395
  %.3553 = phi i32 [ %.2552, %395 ], [ %222, %424 ], [ %222, %421 ], [ %222, %418 ]
  %.6 = phi i32 [ %.5, %395 ], [ %213, %424 ], [ %213, %421 ], [ %213, %418 ]
  %427 = load i16, ptr %48, align 1, !tbaa !19
  %428 = icmp eq i16 %427, 5
  br i1 %428, label %429, label %466

429:                                              ; preds = %426
  %430 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #4
  %431 = icmp eq i32 %430, 1
  br i1 %431, label %.thread611, label %432

432:                                              ; preds = %429
  %433 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #4
  %434 = icmp eq i32 %433, 0
  br i1 %434, label %.thread611, label %435

435:                                              ; preds = %432
  %436 = icmp eq i32 %.1628, %217
  %spec.select619 = select i1 %436, i32 %219, i32 %4
  %spec.select623 = select i1 %436, i8 %220, i8 2
  br label %439

.thread611:                                       ; preds = %429, %432
  %437 = icmp eq i32 %.1628, %217
  %438 = select i1 %437, i32 %8, i32 0
  %spec.select620 = select i1 %437, i8 %229, i8 0
  br label %439

439:                                              ; preds = %435, %.thread611
  %440 = phi i32 [ %438, %.thread611 ], [ %spec.select619, %435 ]
  %441 = phi i8 [ %spec.select620, %.thread611 ], [ %spec.select623, %435 ]
  %442 = load i32, ptr %227, align 4, !tbaa !31
  %443 = load i32, ptr %215, align 4, !tbaa !21
  %444 = load i32, ptr %225, align 4, !tbaa !32
  %445 = load i32, ptr %22, align 4, !tbaa !12
  call void @libxsmm_generator_vloadstore_masked_vreg_aarch64(ptr noundef %0, i32 noundef %442, i32 noundef %443, i32 noundef %444, i32 noundef %445, i32 noundef %440, i32 noundef 1, i32 noundef 0, i8 noundef zeroext %441, i8 noundef zeroext %47) #4
  %446 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 4) #4
  %447 = icmp eq i32 %446, 1
  br i1 %447, label %448, label %453

448:                                              ; preds = %439
  %449 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %3, i32 noundef 3) #4
  %450 = icmp eq i32 %449, 2
  br i1 %450, label %451, label %453

451:                                              ; preds = %448
  %452 = load i32, ptr %225, align 4, !tbaa !32
  call void @libxsmm_generator_vcvt_bf16f32_aarch64(ptr noundef %0, i32 noundef %452, i32 noundef 0) #4
  br label %453

453:                                              ; preds = %451, %448, %439
  %454 = load i32, ptr %216, align 4, !tbaa !28
  %455 = load i32, ptr %225, align 4, !tbaa !32
  br i1 %spec.select596, label %456, label %458

456:                                              ; preds = %453
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.2, i32 noundef %369, i32 noundef %454, i8 noundef zeroext 0, i32 noundef %455, i32 noundef %55, i32 noundef %148) #4
  %457 = load i32, ptr %225, align 4, !tbaa !32
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef 73412611, i32 noundef %457, i32 noundef %457, i8 noundef zeroext 0, i32 noundef %369, i32 noundef %55, i32 noundef %148) #4
  br label %502

458:                                              ; preds = %453
  %459 = load i32, ptr %27, align 4, !tbaa !15
  %460 = icmp eq i32 %459, 4
  %461 = select i1 %460, i32 5, i32 7
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef %.2, i32 noundef %369, i32 noundef %454, i8 noundef zeroext 0, i32 noundef %455, i32 noundef %461) #4
  %462 = load i32, ptr %225, align 4, !tbaa !32
  %463 = load i32, ptr %27, align 4, !tbaa !15
  %464 = icmp eq i32 %463, 4
  %465 = select i1 %464, i32 5, i32 7
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef 245373971, i32 noundef %462, i32 noundef %462, i8 noundef zeroext 0, i32 noundef %369, i32 noundef %465) #4
  br label %502

466:                                              ; preds = %426
  %467 = call i32 @libxsmm_generator_mateltwise_is_binary_cmp_op(ptr noundef nonnull %3) #4
  %.not587 = icmp eq i32 %467, 0
  %468 = load i32, ptr %216, align 4, !tbaa !28
  br i1 %.not587, label %496, label %469

469:                                              ; preds = %466
  %. = select i1 %182, i32 %468, i32 %369
  %.696 = select i1 %182, i32 %369, i32 %468
  br i1 %spec.select596, label %470, label %478

470:                                              ; preds = %469
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.2, i32 noundef %., i32 noundef %.696, i8 noundef zeroext 0, i32 noundef 7, i32 noundef %55, i32 noundef %148) #4
  %471 = load i32, ptr %3, align 1, !tbaa !33
  %472 = load i32, ptr %216, align 4, !tbaa !28
  %473 = trunc i32 %472 to i8
  %474 = load i32, ptr %227, align 4, !tbaa !31
  %475 = trunc i32 %474 to i8
  %476 = load i32, ptr %228, align 4, !tbaa !24
  %477 = trunc i32 %476 to i8
  call void @libxsmm_generator_unary_binary_aarch64_store_bitmask_2bytemult_sve(ptr noundef %0, i32 noundef %471, i32 noundef %.1628, i32 noundef %6, i8 noundef zeroext %473, i8 noundef zeroext %475, i8 noundef zeroext 7, i8 noundef zeroext 6, i8 noundef zeroext 5, i8 noundef zeroext %477, ptr noundef nonnull %11)
  br label %502

478:                                              ; preds = %469
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef %.2, i32 noundef %., i32 noundef %.696, i8 noundef zeroext 0, i32 noundef %468, i32 noundef 5) #4
  %479 = load i16, ptr %48, align 1, !tbaa !19
  %480 = icmp eq i16 %479, 32
  br i1 %480, label %481, label %483

481:                                              ; preds = %478
  %482 = load i32, ptr %216, align 4, !tbaa !28
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef 773871634, i32 noundef %482, i32 noundef 127, i8 noundef zeroext 0, i32 noundef %482, i32 noundef 5) #4
  br label %483

483:                                              ; preds = %481, %478
  %484 = load i32, ptr %223, align 4, !tbaa !34
  %485 = trunc i32 %484 to i8
  %486 = load i32, ptr %224, align 4, !tbaa !35
  %487 = trunc i32 %486 to i8
  %488 = load i32, ptr %216, align 4, !tbaa !28
  %489 = trunc i32 %488 to i8
  %490 = load i32, ptr %225, align 4, !tbaa !32
  %491 = trunc i32 %490 to i8
  %492 = load i32, ptr %226, align 4, !tbaa !36
  %493 = trunc i32 %492 to i8
  %494 = load i32, ptr %227, align 4, !tbaa !31
  %495 = trunc i32 %494 to i8
  call void @libxsmm_generator_unary_binary_aarch64_store_bitmask_2bytemult_asimd(ptr noundef %0, i32 noundef %.1628, i32 noundef %6, i8 noundef zeroext %485, i8 noundef zeroext %487, i8 noundef zeroext %489, i8 noundef zeroext %491, i8 noundef zeroext %493, i8 noundef zeroext %495, ptr noundef nonnull %11)
  br label %502

496:                                              ; preds = %466
  br i1 %spec.select596, label %497, label %498

497:                                              ; preds = %496
  call void @libxsmm_aarch64_instruction_sve_compute(ptr noundef %0, i32 noundef %.2, i32 noundef %369, i32 noundef %468, i8 noundef zeroext 0, i32 noundef %369, i32 noundef %55, i32 noundef %148) #4
  br label %502

498:                                              ; preds = %496
  %499 = load i32, ptr %27, align 4, !tbaa !15
  %500 = icmp eq i32 %499, 4
  %501 = select i1 %500, i32 5, i32 7
  call void @libxsmm_aarch64_instruction_asimd_compute(ptr noundef %0, i32 noundef %.2, i32 noundef %369, i32 noundef %468, i8 noundef zeroext 0, i32 noundef %369, i32 noundef %501) #4
  br label %502

502:                                              ; preds = %470, %483, %456, %458, %497, %498
  %503 = add nuw i32 %.1628, 1
  %exitcond.not = icmp eq i32 %503, %6
  br i1 %exitcond.not, label %._crit_edge, label %368, !llvm.loop !37

._crit_edge:                                      ; preds = %502, %365
  %.1551.lcssa = phi i32 [ %.0550632, %365 ], [ %.3553, %502 ]
  %.4.lcssa = phi i32 [ %.3633, %365 ], [ %.6, %502 ]
  br i1 %.not581, label %510, label %504

504:                                              ; preds = %._crit_edge
  %505 = load i16, ptr %48, align 1, !tbaa !19
  %506 = icmp eq i16 %505, 5
  br i1 %506, label %507, label %510

507:                                              ; preds = %504
  %508 = load i32, ptr %227, align 4, !tbaa !31
  %509 = load i32, ptr %228, align 4, !tbaa !24
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %508, i32 noundef %509, i32 noundef %508, i64 noundef %232) #4
  br label %510

510:                                              ; preds = %507, %504, %._crit_edge
  %511 = call i32 @libxsmm_generator_mateltwise_is_binary_cmp_op(ptr noundef %3) #4
  %.not582 = icmp eq i32 %511, 0
  br i1 %.not582, label %522, label %512

512:                                              ; preds = %510
  %513 = load i32, ptr %233, align 4, !tbaa !38
  %514 = load i32, ptr %227, align 4, !tbaa !31
  %515 = load i32, ptr %228, align 4, !tbaa !24
  %516 = zext i32 %513 to i64
  %517 = load i32, ptr %11, align 4, !tbaa !30
  %518 = zext i32 %517 to i64
  %519 = shl nuw nsw i64 %518, 3
  %520 = sub nsw i64 %516, %519
  %521 = sdiv i64 %520, 8
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %514, i32 noundef %515, i32 noundef %514, i64 noundef %521) #4
  br label %522

522:                                              ; preds = %512, %510
  br i1 %or.cond599, label %526, label %523

523:                                              ; preds = %522
  %524 = load i32, ptr %214, align 4, !tbaa !25
  %525 = load i32, ptr %228, align 4, !tbaa !24
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %524, i32 noundef %525, i32 noundef %524, i64 noundef %236) #4
  br label %526

526:                                              ; preds = %523, %522
  %527 = icmp ult i32 %.1544634, %237
  %or.cond601 = and i1 %17, %527
  br i1 %or.cond601, label %528, label %532

528:                                              ; preds = %526
  %529 = load i32, ptr %214, align 4, !tbaa !25
  %530 = load i32, ptr %228, align 4, !tbaa !24
  %531 = zext i32 %.1551.lcssa to i64
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4097, i32 noundef %529, i32 noundef %530, i32 noundef %529, i64 noundef %531) #4
  br label %532

532:                                              ; preds = %528, %526
  br i1 %.not595, label %541, label %533

533:                                              ; preds = %532
  %534 = load i32, ptr %214, align 4, !tbaa !25
  %535 = load i32, ptr %228, align 4, !tbaa !24
  %536 = load i32, ptr %25, align 1, !tbaa !14
  %537 = zext i32 %536 to i64
  %538 = load i32, ptr %27, align 4, !tbaa !15
  %539 = zext i32 %538 to i64
  %540 = mul nuw nsw i64 %539, %537
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4096, i32 noundef %534, i32 noundef %535, i32 noundef %534, i64 noundef %540) #4
  br label %541

541:                                              ; preds = %533, %532
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #4
  %542 = add nuw i32 %.1544634, 1
  %exitcond682.not = icmp eq i32 %542, %7
  br i1 %exitcond682.not, label %._crit_edge636.loopexit, label %365, !llvm.loop !39

._crit_edge636.loopexit:                          ; preds = %541
  %543 = zext i32 %.1551.lcssa to i64
  %544 = zext i32 %.4.lcssa to i64
  br label %._crit_edge636

._crit_edge636:                                   ; preds = %._crit_edge636.loopexit, %.preheader625
  %.0550.lcssa = phi i64 [ 0, %.preheader625 ], [ %543, %._crit_edge636.loopexit ]
  %.3.lcssa = phi i64 [ 0, %.preheader625 ], [ %544, %._crit_edge636.loopexit ]
  %545 = getelementptr inbounds i8, ptr %1, i64 8
  %546 = load i32, ptr %545, align 4, !tbaa !25
  %547 = getelementptr inbounds i8, ptr %1, i64 140
  %548 = load i32, ptr %547, align 4, !tbaa !24
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4097, i32 noundef %546, i32 noundef %548, i32 noundef %546, i64 noundef %.0550.lcssa) #4
  %549 = load i16, ptr %48, align 1, !tbaa !19
  %550 = icmp eq i16 %549, 5
  br i1 %550, label %551, label %555

551:                                              ; preds = %._crit_edge636
  %552 = getelementptr inbounds i8, ptr %1, i64 24
  %553 = load i32, ptr %552, align 4, !tbaa !31
  %554 = load i32, ptr %547, align 4, !tbaa !24
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4097, i32 noundef %553, i32 noundef %554, i32 noundef %553, i64 noundef %.3.lcssa) #4
  br label %555

555:                                              ; preds = %551, %._crit_edge636
  %556 = call i32 @libxsmm_generator_mateltwise_is_binary_cmp_op(ptr noundef nonnull %3) #4
  %.not580 = icmp eq i32 %556, 0
  br i1 %.not580, label %.thread604, label %557

557:                                              ; preds = %555
  %558 = getelementptr inbounds i8, ptr %2, i64 68
  %559 = load i32, ptr %558, align 4, !tbaa !38
  %560 = getelementptr inbounds i8, ptr %1, i64 24
  %561 = load i32, ptr %560, align 4, !tbaa !31
  %562 = load i32, ptr %547, align 4, !tbaa !24
  %563 = zext i32 %7 to i64
  %564 = lshr i32 %559, 3
  %565 = zext nneg i32 %564 to i64
  %566 = mul nuw nsw i64 %565, %563
  call void @libxsmm_aarch64_instruction_alu_compute_imm64(ptr noundef %0, i32 noundef 4097, i32 noundef %561, i32 noundef %562, i32 noundef %561, i64 noundef %566) #4
  br label %.thread604

.thread604:                                       ; preds = %.thread603, %555, %557, %._crit_edge646
  ret void
}

attributes #0 = { mustprogress 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, !10, i64 27}
!6 = !{!"libxsmm_meltw_descriptor", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !8, i64 24, !8, i64 25, !8, i64 26, !10, i64 27, !10, i64 29, !8, i64 31}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"short", !8, i64 0}
!11 = !{!6, !7, i64 12}
!12 = !{!13, !7, i64 20}
!13 = !{!"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}
!14 = !{!6, !7, i64 16}
!15 = !{!13, !7, i64 12}
!16 = !{!17, !7, i64 28}
!17 = !{!"libxsmm_generated_code", !18, i64 0, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28}
!18 = !{!"any pointer", !8, i64 0}
!19 = !{!6, !10, i64 29}
!20 = !{!6, !8, i64 31}
!21 = !{!22, !7, i64 144}
!22 = !{!"libxsmm_mateltwise_gp_reg_mapping_struct", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !7, i64 64, !7, i64 68, !7, i64 72, !7, i64 76, !7, i64 80, !7, i64 84, !7, i64 88, !7, i64 92, !7, i64 96, !7, i64 100, !7, i64 104, !7, i64 108, !7, i64 112, !7, i64 116, !7, i64 120, !7, i64 124, !7, i64 128, !7, i64 132, !7, i64 136, !7, i64 140, !7, i64 144}
!23 = !{!13, !7, i64 8}
!24 = !{!22, !7, i64 140}
!25 = !{!22, !7, i64 8}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.mustprogress"}
!28 = !{!13, !7, i64 116}
!29 = distinct !{!29, !27}
!30 = !{!7, !7, i64 0}
!31 = !{!22, !7, i64 24}
!32 = !{!13, !7, i64 120}
!33 = !{!6, !7, i64 0}
!34 = !{!13, !7, i64 400}
!35 = !{!13, !7, i64 404}
!36 = !{!13, !7, i64 124}
!37 = distinct !{!37, !27}
!38 = !{!13, !7, i64 68}
!39 = distinct !{!39, !27}


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