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

; 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_descriptor_blob = type { [96 x 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_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 }
%struct.libxsmm_meltw_descriptor = type <{ i32, i32, i32, i32, i32, i32, i8, i8, i8, i16, i16, i8 }>
%struct.libxsmm_generated_code = type { ptr, i32, i32, i32, i32, i32, i32 }

@.str = external hidden unnamed_addr constant [98 x i8], align 1
@libxsmm_ninit = external global i32, align 4
@libxsmm_verbosity = external global i32, align 4
@__func__.libxsmm_generator_transform_aarch64_sve_microkernel = external hidden unnamed_addr constant [52 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

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

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_transform_norm_to_vnni2_16bit_aarch64_sve_microkernel(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef) #1

declare void @libxsmm_handle_error(ptr noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) #2

declare void @libxsmm_aarch64_instruction_alu_move(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_transform_norm_to_vnni4_16bit_aarch64_sve_microkernel(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_transform_vnni2_to_vnni2t_16bit_aarch64_sve_microkernel(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_transform_vnni4_to_vnni4t_16bit_aarch64_sve_microkernel(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_transform_aarch64_sve_microkernel(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4) #1 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca %struct.libxsmm_descriptor_blob, align 1
  %15 = alloca ptr, align 8
  %16 = alloca %struct.libxsmm_mateltwise_kernel_config_struct, align 4
  %17 = alloca %struct.libxsmm_descriptor_blob, align 1
  %18 = alloca ptr, align 8
  %19 = alloca %struct.libxsmm_mateltwise_kernel_config_struct, align 4
  %20 = alloca %struct.libxsmm_descriptor_blob, align 1
  %21 = alloca ptr, align 8
  %22 = alloca %struct.libxsmm_mateltwise_kernel_config_struct, align 4
  %23 = alloca %struct.libxsmm_descriptor_blob, align 1
  %24 = alloca ptr, align 8
  %25 = alloca %struct.libxsmm_mateltwise_kernel_config_struct, align 4
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  store ptr %4, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #3
  store i32 32, ptr %11, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #3
  store i32 80, ptr %12, align 4, !tbaa !9
  %26 = load ptr, ptr %8, align 8, !tbaa !5
  %27 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %26, i32 0, i32 1
  store i32 40, ptr %27, align 4, !tbaa !11
  %28 = load ptr, ptr %8, align 8, !tbaa !5
  %29 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %28, i32 0, i32 6
  store i32 41, ptr %29, align 4, !tbaa !13
  %30 = load ptr, ptr %8, align 8, !tbaa !5
  %31 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %30, i32 0, i32 24
  store i32 42, ptr %31, align 4, !tbaa !14
  %32 = load ptr, ptr %8, align 8, !tbaa !5
  %33 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %32, i32 0, i32 25
  store i32 43, ptr %33, align 4, !tbaa !15
  %34 = load ptr, ptr %8, align 8, !tbaa !5
  %35 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %34, i32 0, i32 35
  store i32 38, ptr %35, align 4, !tbaa !16
  %36 = load ptr, ptr %8, align 8, !tbaa !5
  %37 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %36, i32 0, i32 36
  store i32 39, ptr %37, align 4, !tbaa !17
  %38 = load ptr, ptr %6, align 8, !tbaa !5
  %39 = load ptr, ptr %8, align 8, !tbaa !5
  %40 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %39, i32 0, i32 0
  %41 = load i32, ptr %40, align 4, !tbaa !18
  %42 = load i32, ptr %11, align 4, !tbaa !9
  %43 = load ptr, ptr %8, align 8, !tbaa !5
  %44 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %43, i32 0, i32 1
  %45 = load i32, ptr %44, align 4, !tbaa !11
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %38, i32 noundef -1186988026, i32 noundef %41, i32 noundef 127, i32 noundef %42, i32 noundef %45)
  %46 = load ptr, ptr %6, align 8, !tbaa !5
  %47 = load ptr, ptr %8, align 8, !tbaa !5
  %48 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %47, i32 0, i32 0
  %49 = load i32, ptr %48, align 4, !tbaa !18
  %50 = load i32, ptr %12, align 4, !tbaa !9
  %51 = load ptr, ptr %8, align 8, !tbaa !5
  %52 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %51, i32 0, i32 6
  %53 = load i32, ptr %52, align 4, !tbaa !13
  call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %46, i32 noundef -1186988026, i32 noundef %49, i32 noundef 127, i32 noundef %50, i32 noundef %53)
  %54 = load ptr, ptr %10, align 8, !tbaa !5
  %55 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %54, i32 0, i32 10
  %56 = load i16, ptr %55, align 1, !tbaa !19
  %57 = zext i16 %56 to i32
  %58 = icmp eq i32 %57, 29
  br i1 %58, label %65, label %59

59:                                               ; preds = %5
  %60 = load ptr, ptr %10, align 8, !tbaa !5
  %61 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %60, i32 0, i32 10
  %62 = load i16, ptr %61, align 1, !tbaa !19
  %63 = zext i16 %62 to i32
  %64 = icmp eq i32 %63, 30
  br i1 %64, label %65, label %100

65:                                               ; preds = %59, %5
  %66 = load ptr, ptr %10, align 8, !tbaa !5
  %67 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %66, i32 0, i32 0
  %68 = load i32, ptr %67, align 1, !tbaa !22
  %69 = load ptr, ptr %10, align 8, !tbaa !5
  %70 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %69, i32 0, i32 2
  %71 = load i32, ptr %70, align 1, !tbaa !23
  %72 = icmp ugt i32 %68, %71
  br i1 %72, label %73, label %82

73:                                               ; preds = %65
  %74 = load ptr, ptr %6, align 8, !tbaa !5
  %75 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %76 = icmp ult i32 1, %75
  br i1 %76, label %77, label %79

77:                                               ; preds = %73
  %78 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %80

79:                                               ; preds = %73
  br label %80

80:                                               ; preds = %79, %77
  %81 = phi i32 [ %78, %77 ], [ 1, %79 ]
  call void @libxsmm_handle_error(ptr noundef %74, i32 noundef 90007, ptr noundef @__func__.libxsmm_generator_transform_aarch64_sve_microkernel, ptr noundef @.str, i32 noundef 689, i32 noundef %81)
  store i32 1, ptr %13, align 4
  br label %1057

82:                                               ; preds = %65
  %83 = load ptr, ptr %10, align 8, !tbaa !5
  %84 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %83, i32 0, i32 1
  %85 = load i32, ptr %84, align 1, !tbaa !24
  %86 = load ptr, ptr %10, align 8, !tbaa !5
  %87 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %86, i32 0, i32 3
  %88 = load i32, ptr %87, align 1, !tbaa !25
  %89 = icmp ugt i32 %85, %88
  br i1 %89, label %90, label %99

90:                                               ; preds = %82
  %91 = load ptr, ptr %6, align 8, !tbaa !5
  %92 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %93 = icmp ult i32 1, %92
  br i1 %93, label %94, label %96

94:                                               ; preds = %90
  %95 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %97

96:                                               ; preds = %90
  br label %97

97:                                               ; preds = %96, %94
  %98 = phi i32 [ %95, %94 ], [ 1, %96 ]
  call void @libxsmm_handle_error(ptr noundef %91, i32 noundef 90008, ptr noundef @__func__.libxsmm_generator_transform_aarch64_sve_microkernel, ptr noundef @.str, i32 noundef 693, i32 noundef %98)
  store i32 1, ptr %13, align 4
  br label %1057

99:                                               ; preds = %82
  br label %203

100:                                              ; preds = %59
  %101 = load ptr, ptr %10, align 8, !tbaa !5
  %102 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %101, i32 0, i32 10
  %103 = load i16, ptr %102, align 1, !tbaa !19
  %104 = zext i16 %103 to i32
  %105 = icmp eq i32 %104, 28
  br i1 %105, label %130, label %106

106:                                              ; preds = %100
  %107 = load ptr, ptr %10, align 8, !tbaa !5
  %108 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %107, i32 0, i32 10
  %109 = load i16, ptr %108, align 1, !tbaa !19
  %110 = zext i16 %109 to i32
  %111 = icmp eq i32 %110, 32
  br i1 %111, label %130, label %112

112:                                              ; preds = %106
  %113 = load ptr, ptr %10, align 8, !tbaa !5
  %114 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %113, i32 0, i32 10
  %115 = load i16, ptr %114, align 1, !tbaa !19
  %116 = zext i16 %115 to i32
  %117 = icmp eq i32 %116, 40
  br i1 %117, label %130, label %118

118:                                              ; preds = %112
  %119 = load ptr, ptr %10, align 8, !tbaa !5
  %120 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %119, i32 0, i32 10
  %121 = load i16, ptr %120, align 1, !tbaa !19
  %122 = zext i16 %121 to i32
  %123 = icmp eq i32 %122, 39
  br i1 %123, label %130, label %124

124:                                              ; preds = %118
  %125 = load ptr, ptr %10, align 8, !tbaa !5
  %126 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %125, i32 0, i32 10
  %127 = load i16, ptr %126, align 1, !tbaa !19
  %128 = zext i16 %127 to i32
  %129 = icmp eq i32 %128, 41
  br i1 %129, label %130, label %201

130:                                              ; preds = %124, %118, %112, %106, %100
  %131 = load ptr, ptr %10, align 8, !tbaa !5
  %132 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %131, i32 0, i32 0
  %133 = load i32, ptr %132, align 1, !tbaa !22
  %134 = load ptr, ptr %10, align 8, !tbaa !5
  %135 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %134, i32 0, i32 2
  %136 = load i32, ptr %135, align 1, !tbaa !23
  %137 = icmp ugt i32 %133, %136
  br i1 %137, label %138, label %147

138:                                              ; preds = %130
  %139 = load ptr, ptr %6, align 8, !tbaa !5
  %140 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %141 = icmp ult i32 1, %140
  br i1 %141, label %142, label %144

142:                                              ; preds = %138
  %143 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %145

144:                                              ; preds = %138
  br label %145

145:                                              ; preds = %144, %142
  %146 = phi i32 [ %143, %142 ], [ 1, %144 ]
  call void @libxsmm_handle_error(ptr noundef %139, i32 noundef 90007, ptr noundef @__func__.libxsmm_generator_transform_aarch64_sve_microkernel, ptr noundef @.str, i32 noundef 702, i32 noundef %146)
  store i32 1, ptr %13, align 4
  br label %1057

147:                                              ; preds = %130
  %148 = load ptr, ptr %10, align 8, !tbaa !5
  %149 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %148, i32 0, i32 10
  %150 = load i16, ptr %149, align 1, !tbaa !19
  %151 = zext i16 %150 to i32
  %152 = icmp eq i32 %151, 39
  br i1 %152, label %159, label %153

153:                                              ; preds = %147
  %154 = load ptr, ptr %10, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %154, i32 0, i32 10
  %156 = load i16, ptr %155, align 1, !tbaa !19
  %157 = zext i16 %156 to i32
  %158 = icmp eq i32 %157, 41
  br i1 %158, label %159, label %182

159:                                              ; preds = %153, %147
  %160 = load ptr, ptr %10, align 8, !tbaa !5
  %161 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %160, i32 0, i32 0
  %162 = load i32, ptr %161, align 1, !tbaa !22
  %163 = load ptr, ptr %10, align 8, !tbaa !5
  %164 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %163, i32 0, i32 0
  %165 = load i32, ptr %164, align 1, !tbaa !22
  %166 = urem i32 %165, 2
  %167 = add i32 %162, %166
  %168 = load ptr, ptr %10, align 8, !tbaa !5
  %169 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %168, i32 0, i32 3
  %170 = load i32, ptr %169, align 1, !tbaa !25
  %171 = icmp ugt i32 %167, %170
  br i1 %171, label %172, label %181

172:                                              ; preds = %159
  %173 = load ptr, ptr %6, align 8, !tbaa !5
  %174 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %175 = icmp ult i32 1, %174
  br i1 %175, label %176, label %178

176:                                              ; preds = %172
  %177 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %179

178:                                              ; preds = %172
  br label %179

179:                                              ; preds = %178, %176
  %180 = phi i32 [ %177, %176 ], [ 1, %178 ]
  call void @libxsmm_handle_error(ptr noundef %173, i32 noundef 90008, ptr noundef @__func__.libxsmm_generator_transform_aarch64_sve_microkernel, ptr noundef @.str, i32 noundef 708, i32 noundef %180)
  store i32 1, ptr %13, align 4
  br label %1057

181:                                              ; preds = %159
  br label %200

182:                                              ; preds = %153
  %183 = load ptr, ptr %10, align 8, !tbaa !5
  %184 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %183, i32 0, i32 0
  %185 = load i32, ptr %184, align 1, !tbaa !22
  %186 = load ptr, ptr %10, align 8, !tbaa !5
  %187 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %186, i32 0, i32 3
  %188 = load i32, ptr %187, align 1, !tbaa !25
  %189 = icmp ugt i32 %185, %188
  br i1 %189, label %190, label %199

190:                                              ; preds = %182
  %191 = load ptr, ptr %6, align 8, !tbaa !5
  %192 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %193 = icmp ult i32 1, %192
  br i1 %193, label %194, label %196

194:                                              ; preds = %190
  %195 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %197

196:                                              ; preds = %190
  br label %197

197:                                              ; preds = %196, %194
  %198 = phi i32 [ %195, %194 ], [ 1, %196 ]
  call void @libxsmm_handle_error(ptr noundef %191, i32 noundef 90008, ptr noundef @__func__.libxsmm_generator_transform_aarch64_sve_microkernel, ptr noundef @.str, i32 noundef 713, i32 noundef %198)
  store i32 1, ptr %13, align 4
  br label %1057

199:                                              ; preds = %182
  br label %200

200:                                              ; preds = %199, %181
  br label %202

201:                                              ; preds = %124
  br label %202

202:                                              ; preds = %201, %200
  br label %203

203:                                              ; preds = %202, %99
  %204 = load ptr, ptr %10, align 8, !tbaa !5
  %205 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %204, i32 noundef 0)
  %206 = icmp eq i32 6, %205
  br i1 %206, label %207, label %211

207:                                              ; preds = %203
  %208 = load ptr, ptr %10, align 8, !tbaa !5
  %209 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %208, i32 noundef 3)
  %210 = icmp eq i32 6, %209
  br i1 %210, label %219, label %211

211:                                              ; preds = %207, %203
  %212 = load ptr, ptr %10, align 8, !tbaa !5
  %213 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %212, i32 noundef 0)
  %214 = icmp eq i32 0, %213
  br i1 %214, label %215, label %255

215:                                              ; preds = %211
  %216 = load ptr, ptr %10, align 8, !tbaa !5
  %217 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %216, i32 noundef 3)
  %218 = icmp eq i32 0, %217
  br i1 %218, label %219, label %255

219:                                              ; preds = %215, %207
  %220 = load ptr, ptr %10, align 8, !tbaa !5
  %221 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %220, i32 0, i32 10
  %222 = load i16, ptr %221, align 1, !tbaa !19
  %223 = zext i16 %222 to i32
  %224 = icmp eq i32 %223, 29
  br i1 %224, label %225, label %245

225:                                              ; preds = %219
  %226 = load ptr, ptr %6, align 8, !tbaa !5
  %227 = load ptr, ptr %7, align 8, !tbaa !5
  %228 = load ptr, ptr %8, align 8, !tbaa !5
  %229 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %228, i32 0, i32 1
  %230 = load i32, ptr %229, align 4, !tbaa !11
  %231 = load ptr, ptr %8, align 8, !tbaa !5
  %232 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %231, i32 0, i32 6
  %233 = load i32, ptr %232, align 4, !tbaa !13
  %234 = load ptr, ptr %8, align 8, !tbaa !5
  %235 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %234, i32 0, i32 24
  %236 = load i32, ptr %235, align 4, !tbaa !14
  %237 = load ptr, ptr %8, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %237, i32 0, i32 25
  %239 = load i32, ptr %238, align 4, !tbaa !15
  %240 = load ptr, ptr %8, align 8, !tbaa !5
  %241 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %240, i32 0, i32 35
  %242 = load i32, ptr %241, align 4, !tbaa !16
  %243 = load ptr, ptr %9, align 8, !tbaa !5
  %244 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_normt_64bit_aarch64_asimd_microkernel(ptr noundef %226, ptr noundef %227, i32 noundef %230, i32 noundef %233, i32 noundef %236, i32 noundef %239, i32 noundef %242, ptr noundef %243, ptr noundef %244)
  br label %254

245:                                              ; preds = %219
  %246 = load ptr, ptr %6, align 8, !tbaa !5
  %247 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %248 = icmp ult i32 1, %247
  br i1 %248, label %249, label %251

249:                                              ; preds = %245
  %250 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %252

251:                                              ; preds = %245
  br label %252

252:                                              ; preds = %251, %249
  %253 = phi i32 [ %250, %249 ], [ 1, %251 ]
  call void @libxsmm_handle_error(ptr noundef %246, i32 noundef 90000, ptr noundef @__func__.libxsmm_generator_transform_aarch64_sve_microkernel, ptr noundef @.str, i32 noundef 731, i32 noundef %253)
  store i32 1, ptr %13, align 4
  br label %1057

254:                                              ; preds = %225
  br label %1056

255:                                              ; preds = %215, %211
  %256 = load ptr, ptr %10, align 8, !tbaa !5
  %257 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %256, i32 noundef 0)
  %258 = icmp eq i32 8, %257
  br i1 %258, label %259, label %263

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

263:                                              ; preds = %259, %255
  %264 = load ptr, ptr %10, align 8, !tbaa !5
  %265 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %264, i32 noundef 0)
  %266 = icmp eq i32 1, %265
  br i1 %266, label %267, label %307

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

271:                                              ; preds = %267, %259
  %272 = load ptr, ptr %10, align 8, !tbaa !5
  %273 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %272, i32 0, i32 10
  %274 = load i16, ptr %273, align 1, !tbaa !19
  %275 = zext i16 %274 to i32
  %276 = icmp eq i32 %275, 29
  br i1 %276, label %277, label %297

277:                                              ; preds = %271
  %278 = load ptr, ptr %6, align 8, !tbaa !5
  %279 = load ptr, ptr %7, align 8, !tbaa !5
  %280 = load ptr, ptr %8, align 8, !tbaa !5
  %281 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %280, i32 0, i32 1
  %282 = load i32, ptr %281, align 4, !tbaa !11
  %283 = load ptr, ptr %8, align 8, !tbaa !5
  %284 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %283, i32 0, i32 6
  %285 = load i32, ptr %284, align 4, !tbaa !13
  %286 = load ptr, ptr %8, align 8, !tbaa !5
  %287 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %286, i32 0, i32 24
  %288 = load i32, ptr %287, align 4, !tbaa !14
  %289 = load ptr, ptr %8, align 8, !tbaa !5
  %290 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %289, i32 0, i32 25
  %291 = load i32, ptr %290, align 4, !tbaa !15
  %292 = load ptr, ptr %8, align 8, !tbaa !5
  %293 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %292, i32 0, i32 35
  %294 = load i32, ptr %293, align 4, !tbaa !16
  %295 = load ptr, ptr %9, align 8, !tbaa !5
  %296 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_normt_32bit_aarch64_asimd_microkernel(ptr noundef %278, ptr noundef %279, i32 noundef %282, i32 noundef %285, i32 noundef %288, i32 noundef %291, i32 noundef %294, ptr noundef %295, ptr noundef %296)
  br label %306

297:                                              ; preds = %271
  %298 = load ptr, ptr %6, align 8, !tbaa !5
  %299 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %300 = icmp ult i32 1, %299
  br i1 %300, label %301, label %303

301:                                              ; preds = %297
  %302 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %304

303:                                              ; preds = %297
  br label %304

304:                                              ; preds = %303, %301
  %305 = phi i32 [ %302, %301 ], [ 1, %303 ]
  call void @libxsmm_handle_error(ptr noundef %298, i32 noundef 90000, ptr noundef @__func__.libxsmm_generator_transform_aarch64_sve_microkernel, ptr noundef @.str, i32 noundef 744, i32 noundef %305)
  store i32 1, ptr %13, align 4
  br label %1057

306:                                              ; preds = %277
  br label %1055

307:                                              ; preds = %267, %263
  %308 = load ptr, ptr %10, align 8, !tbaa !5
  %309 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %308, i32 noundef 0)
  %310 = icmp eq i32 10, %309
  br i1 %310, label %311, label %315

311:                                              ; preds = %307
  %312 = load ptr, ptr %10, align 8, !tbaa !5
  %313 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %312, i32 noundef 3)
  %314 = icmp eq i32 10, %313
  br i1 %314, label %331, label %315

315:                                              ; preds = %311, %307
  %316 = load ptr, ptr %10, align 8, !tbaa !5
  %317 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %316, i32 noundef 0)
  %318 = icmp eq i32 3, %317
  br i1 %318, label %319, label %323

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

323:                                              ; preds = %319, %315
  %324 = load ptr, ptr %10, align 8, !tbaa !5
  %325 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %324, i32 noundef 0)
  %326 = icmp eq i32 2, %325
  br i1 %326, label %327, label %938

327:                                              ; preds = %323
  %328 = load ptr, ptr %10, align 8, !tbaa !5
  %329 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %328, i32 noundef 3)
  %330 = icmp eq i32 2, %329
  br i1 %330, label %331, label %938

331:                                              ; preds = %327, %319, %311
  %332 = load ptr, ptr %10, align 8, !tbaa !5
  %333 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %332, i32 0, i32 10
  %334 = load i16, ptr %333, align 1, !tbaa !19
  %335 = zext i16 %334 to i32
  %336 = icmp eq i32 %335, 29
  br i1 %336, label %337, label %357

337:                                              ; preds = %331
  %338 = load ptr, ptr %6, align 8, !tbaa !5
  %339 = load ptr, ptr %7, align 8, !tbaa !5
  %340 = load ptr, ptr %8, align 8, !tbaa !5
  %341 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %340, i32 0, i32 1
  %342 = load i32, ptr %341, align 4, !tbaa !11
  %343 = load ptr, ptr %8, align 8, !tbaa !5
  %344 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %343, i32 0, i32 6
  %345 = load i32, ptr %344, align 4, !tbaa !13
  %346 = load ptr, ptr %8, align 8, !tbaa !5
  %347 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %346, i32 0, i32 24
  %348 = load i32, ptr %347, align 4, !tbaa !14
  %349 = load ptr, ptr %8, align 8, !tbaa !5
  %350 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %349, i32 0, i32 25
  %351 = load i32, ptr %350, align 4, !tbaa !15
  %352 = load ptr, ptr %8, align 8, !tbaa !5
  %353 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %352, i32 0, i32 35
  %354 = load i32, ptr %353, align 4, !tbaa !16
  %355 = load ptr, ptr %9, align 8, !tbaa !5
  %356 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_normt_16bit_aarch64_asimd_microkernel(ptr noundef %338, ptr noundef %339, i32 noundef %342, i32 noundef %345, i32 noundef %348, i32 noundef %351, i32 noundef %354, ptr noundef %355, ptr noundef %356)
  br label %937

357:                                              ; preds = %331
  %358 = load ptr, ptr %10, align 8, !tbaa !5
  %359 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %358, i32 0, i32 10
  %360 = load i16, ptr %359, align 1, !tbaa !19
  %361 = zext i16 %360 to i32
  %362 = icmp eq i32 %361, 56
  br i1 %362, label %363, label %399

363:                                              ; preds = %357
  call void @llvm.lifetime.start.p0(i64 96, ptr %14) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #3
  %364 = load ptr, ptr %10, align 8, !tbaa !5
  %365 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %364, i32 0, i32 0
  %366 = load i32, ptr %365, align 1, !tbaa !22
  %367 = udiv i32 %366, 4
  %368 = load ptr, ptr %10, align 8, !tbaa !5
  %369 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %368, i32 0, i32 1
  %370 = load i32, ptr %369, align 1, !tbaa !24
  %371 = load ptr, ptr %10, align 8, !tbaa !5
  %372 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %371, i32 0, i32 2
  %373 = load i32, ptr %372, align 1, !tbaa !23
  %374 = udiv i32 %373, 4
  %375 = load ptr, ptr %10, align 8, !tbaa !5
  %376 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %375, i32 0, i32 3
  %377 = load i32, ptr %376, align 1, !tbaa !25
  %378 = call ptr @libxsmm_meltw_descriptor_init2(ptr noundef %14, i32 noundef 0, i32 noundef 15, i32 noundef 15, i32 noundef 0, i32 noundef 0, i32 noundef %367, i32 noundef %370, i32 noundef %374, i32 noundef %377, i32 noundef 0, i32 noundef 0, i16 noundef zeroext 0, i16 noundef zeroext 29, i8 noundef zeroext 1)
  store ptr %378, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 516, ptr %16) #3
  %379 = load ptr, ptr %6, align 8, !tbaa !5
  %380 = load ptr, ptr %15, align 8, !tbaa !5
  call void @libxsmm_generator_mateltwise_aarch64_init_micro_kernel_config_fullvector(ptr noundef %379, ptr noundef %16, ptr noundef %380)
  %381 = load ptr, ptr %6, align 8, !tbaa !5
  %382 = load ptr, ptr %7, align 8, !tbaa !5
  %383 = load ptr, ptr %8, align 8, !tbaa !5
  %384 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %383, i32 0, i32 1
  %385 = load i32, ptr %384, align 4, !tbaa !11
  %386 = load ptr, ptr %8, align 8, !tbaa !5
  %387 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %386, i32 0, i32 6
  %388 = load i32, ptr %387, align 4, !tbaa !13
  %389 = load ptr, ptr %8, align 8, !tbaa !5
  %390 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %389, i32 0, i32 24
  %391 = load i32, ptr %390, align 4, !tbaa !14
  %392 = load ptr, ptr %8, align 8, !tbaa !5
  %393 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %392, i32 0, i32 25
  %394 = load i32, ptr %393, align 4, !tbaa !15
  %395 = load ptr, ptr %8, align 8, !tbaa !5
  %396 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %395, i32 0, i32 35
  %397 = load i32, ptr %396, align 4, !tbaa !16
  %398 = load ptr, ptr %15, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_normt_64bit_aarch64_asimd_microkernel(ptr noundef %381, ptr noundef %382, i32 noundef %385, i32 noundef %388, i32 noundef %391, i32 noundef %394, i32 noundef %397, ptr noundef %16, ptr noundef %398)
  call void @llvm.lifetime.end.p0(i64 516, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #3
  call void @llvm.lifetime.end.p0(i64 96, ptr %14) #3
  br label %936

399:                                              ; preds = %357
  %400 = load ptr, ptr %10, align 8, !tbaa !5
  %401 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %400, i32 0, i32 10
  %402 = load i16, ptr %401, align 1, !tbaa !19
  %403 = zext i16 %402 to i32
  %404 = icmp eq i32 %403, 31
  br i1 %404, label %405, label %441

405:                                              ; preds = %399
  call void @llvm.lifetime.start.p0(i64 96, ptr %17) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #3
  %406 = load ptr, ptr %10, align 8, !tbaa !5
  %407 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %406, i32 0, i32 0
  %408 = load i32, ptr %407, align 1, !tbaa !22
  %409 = udiv i32 %408, 2
  %410 = load ptr, ptr %10, align 8, !tbaa !5
  %411 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %410, i32 0, i32 1
  %412 = load i32, ptr %411, align 1, !tbaa !24
  %413 = load ptr, ptr %10, align 8, !tbaa !5
  %414 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %413, i32 0, i32 2
  %415 = load i32, ptr %414, align 1, !tbaa !23
  %416 = udiv i32 %415, 2
  %417 = load ptr, ptr %10, align 8, !tbaa !5
  %418 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %417, i32 0, i32 3
  %419 = load i32, ptr %418, align 1, !tbaa !25
  %420 = call ptr @libxsmm_meltw_descriptor_init2(ptr noundef %17, i32 noundef 1, i32 noundef 15, i32 noundef 15, i32 noundef 1, i32 noundef 1, i32 noundef %409, i32 noundef %412, i32 noundef %416, i32 noundef %419, i32 noundef 0, i32 noundef 0, i16 noundef zeroext 0, i16 noundef zeroext 29, i8 noundef zeroext 1)
  store ptr %420, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 516, ptr %19) #3
  %421 = load ptr, ptr %6, align 8, !tbaa !5
  %422 = load ptr, ptr %18, align 8, !tbaa !5
  call void @libxsmm_generator_mateltwise_aarch64_init_micro_kernel_config_fullvector(ptr noundef %421, ptr noundef %19, ptr noundef %422)
  %423 = load ptr, ptr %6, align 8, !tbaa !5
  %424 = load ptr, ptr %7, align 8, !tbaa !5
  %425 = load ptr, ptr %8, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %425, i32 0, i32 1
  %427 = load i32, ptr %426, align 4, !tbaa !11
  %428 = load ptr, ptr %8, align 8, !tbaa !5
  %429 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %428, i32 0, i32 6
  %430 = load i32, ptr %429, align 4, !tbaa !13
  %431 = load ptr, ptr %8, align 8, !tbaa !5
  %432 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %431, i32 0, i32 24
  %433 = load i32, ptr %432, align 4, !tbaa !14
  %434 = load ptr, ptr %8, align 8, !tbaa !5
  %435 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %434, i32 0, i32 25
  %436 = load i32, ptr %435, align 4, !tbaa !15
  %437 = load ptr, ptr %8, align 8, !tbaa !5
  %438 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %437, i32 0, i32 35
  %439 = load i32, ptr %438, align 4, !tbaa !16
  %440 = load ptr, ptr %18, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_normt_32bit_aarch64_asimd_microkernel(ptr noundef %423, ptr noundef %424, i32 noundef %427, i32 noundef %430, i32 noundef %433, i32 noundef %436, i32 noundef %439, ptr noundef %19, ptr noundef %440)
  call void @llvm.lifetime.end.p0(i64 516, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #3
  call void @llvm.lifetime.end.p0(i64 96, ptr %17) #3
  br label %935

441:                                              ; preds = %399
  %442 = load ptr, ptr %10, align 8, !tbaa !5
  %443 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %442, i32 0, i32 10
  %444 = load i16, ptr %443, align 1, !tbaa !19
  %445 = zext i16 %444 to i32
  %446 = icmp eq i32 %445, 66
  br i1 %446, label %447, label %483

447:                                              ; preds = %441
  call void @llvm.lifetime.start.p0(i64 96, ptr %20) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #3
  %448 = load ptr, ptr %10, align 8, !tbaa !5
  %449 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %448, i32 0, i32 0
  %450 = load i32, ptr %449, align 1, !tbaa !22
  %451 = load ptr, ptr %10, align 8, !tbaa !5
  %452 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %451, i32 0, i32 1
  %453 = load i32, ptr %452, align 1, !tbaa !24
  %454 = udiv i32 %453, 4
  %455 = load ptr, ptr %10, align 8, !tbaa !5
  %456 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %455, i32 0, i32 2
  %457 = load i32, ptr %456, align 1, !tbaa !23
  %458 = load ptr, ptr %10, align 8, !tbaa !5
  %459 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %458, i32 0, i32 3
  %460 = load i32, ptr %459, align 1, !tbaa !25
  %461 = udiv i32 %460, 4
  %462 = call ptr @libxsmm_meltw_descriptor_init2(ptr noundef %20, i32 noundef 0, i32 noundef 15, i32 noundef 15, i32 noundef 0, i32 noundef 0, i32 noundef %450, i32 noundef %454, i32 noundef %457, i32 noundef %461, i32 noundef 0, i32 noundef 0, i16 noundef zeroext 0, i16 noundef zeroext 29, i8 noundef zeroext 1)
  store ptr %462, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 516, ptr %22) #3
  %463 = load ptr, ptr %6, align 8, !tbaa !5
  %464 = load ptr, ptr %21, align 8, !tbaa !5
  call void @libxsmm_generator_mateltwise_aarch64_init_micro_kernel_config_fullvector(ptr noundef %463, ptr noundef %22, ptr noundef %464)
  %465 = load ptr, ptr %6, align 8, !tbaa !5
  %466 = load ptr, ptr %7, align 8, !tbaa !5
  %467 = load ptr, ptr %8, align 8, !tbaa !5
  %468 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %467, i32 0, i32 1
  %469 = load i32, ptr %468, align 4, !tbaa !11
  %470 = load ptr, ptr %8, align 8, !tbaa !5
  %471 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %470, i32 0, i32 6
  %472 = load i32, ptr %471, align 4, !tbaa !13
  %473 = load ptr, ptr %8, align 8, !tbaa !5
  %474 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %473, i32 0, i32 24
  %475 = load i32, ptr %474, align 4, !tbaa !14
  %476 = load ptr, ptr %8, align 8, !tbaa !5
  %477 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %476, i32 0, i32 25
  %478 = load i32, ptr %477, align 4, !tbaa !15
  %479 = load ptr, ptr %8, align 8, !tbaa !5
  %480 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %479, i32 0, i32 35
  %481 = load i32, ptr %480, align 4, !tbaa !16
  %482 = load ptr, ptr %21, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_normt_64bit_aarch64_asimd_microkernel(ptr noundef %465, ptr noundef %466, i32 noundef %469, i32 noundef %472, i32 noundef %475, i32 noundef %478, i32 noundef %481, ptr noundef %22, ptr noundef %482)
  call void @llvm.lifetime.end.p0(i64 516, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 96, ptr %20) #3
  br label %934

483:                                              ; preds = %441
  %484 = load ptr, ptr %10, align 8, !tbaa !5
  %485 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %484, i32 0, i32 10
  %486 = load i16, ptr %485, align 1, !tbaa !19
  %487 = zext i16 %486 to i32
  %488 = icmp eq i32 %487, 67
  br i1 %488, label %489, label %525

489:                                              ; preds = %483
  call void @llvm.lifetime.start.p0(i64 96, ptr %23) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #3
  %490 = load ptr, ptr %10, align 8, !tbaa !5
  %491 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %490, i32 0, i32 0
  %492 = load i32, ptr %491, align 1, !tbaa !22
  %493 = load ptr, ptr %10, align 8, !tbaa !5
  %494 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %493, i32 0, i32 1
  %495 = load i32, ptr %494, align 1, !tbaa !24
  %496 = udiv i32 %495, 2
  %497 = load ptr, ptr %10, align 8, !tbaa !5
  %498 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %497, i32 0, i32 2
  %499 = load i32, ptr %498, align 1, !tbaa !23
  %500 = load ptr, ptr %10, align 8, !tbaa !5
  %501 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %500, i32 0, i32 3
  %502 = load i32, ptr %501, align 1, !tbaa !25
  %503 = udiv i32 %502, 2
  %504 = call ptr @libxsmm_meltw_descriptor_init2(ptr noundef %23, i32 noundef 1, i32 noundef 15, i32 noundef 15, i32 noundef 1, i32 noundef 1, i32 noundef %492, i32 noundef %496, i32 noundef %499, i32 noundef %503, i32 noundef 0, i32 noundef 0, i16 noundef zeroext 0, i16 noundef zeroext 29, i8 noundef zeroext 1)
  store ptr %504, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 516, ptr %25) #3
  %505 = load ptr, ptr %6, align 8, !tbaa !5
  %506 = load ptr, ptr %24, align 8, !tbaa !5
  call void @libxsmm_generator_mateltwise_aarch64_init_micro_kernel_config_fullvector(ptr noundef %505, ptr noundef %25, ptr noundef %506)
  %507 = load ptr, ptr %6, align 8, !tbaa !5
  %508 = load ptr, ptr %7, align 8, !tbaa !5
  %509 = load ptr, ptr %8, align 8, !tbaa !5
  %510 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %509, i32 0, i32 1
  %511 = load i32, ptr %510, align 4, !tbaa !11
  %512 = load ptr, ptr %8, align 8, !tbaa !5
  %513 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %512, i32 0, i32 6
  %514 = load i32, ptr %513, align 4, !tbaa !13
  %515 = load ptr, ptr %8, align 8, !tbaa !5
  %516 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %515, i32 0, i32 24
  %517 = load i32, ptr %516, align 4, !tbaa !14
  %518 = load ptr, ptr %8, align 8, !tbaa !5
  %519 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %518, i32 0, i32 25
  %520 = load i32, ptr %519, align 4, !tbaa !15
  %521 = load ptr, ptr %8, align 8, !tbaa !5
  %522 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %521, i32 0, i32 35
  %523 = load i32, ptr %522, align 4, !tbaa !16
  %524 = load ptr, ptr %24, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_normt_32bit_aarch64_asimd_microkernel(ptr noundef %507, ptr noundef %508, i32 noundef %511, i32 noundef %514, i32 noundef %517, i32 noundef %520, i32 noundef %523, ptr noundef %25, ptr noundef %524)
  call void @llvm.lifetime.end.p0(i64 516, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 96, ptr %23) #3
  br label %933

525:                                              ; preds = %483
  %526 = load ptr, ptr %10, align 8, !tbaa !5
  %527 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %526, i32 0, i32 10
  %528 = load i16, ptr %527, align 1, !tbaa !19
  %529 = zext i16 %528 to i32
  %530 = icmp eq i32 %529, 30
  br i1 %530, label %531, label %582

531:                                              ; preds = %525
  %532 = load ptr, ptr %6, align 8, !tbaa !5
  %533 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %532, i32 0, i32 6
  %534 = load i32, ptr %533, align 4, !tbaa !26
  %535 = icmp uge i32 %534, 2301
  br i1 %535, label %536, label %561

536:                                              ; preds = %531
  %537 = load ptr, ptr %6, align 8, !tbaa !5
  %538 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %537, i32 0, i32 6
  %539 = load i32, ptr %538, align 4, !tbaa !26
  %540 = icmp ult i32 %539, 2401
  br i1 %540, label %541, label %561

541:                                              ; preds = %536
  %542 = load ptr, ptr %6, align 8, !tbaa !5
  %543 = load ptr, ptr %7, align 8, !tbaa !5
  %544 = load ptr, ptr %8, align 8, !tbaa !5
  %545 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %544, i32 0, i32 1
  %546 = load i32, ptr %545, align 4, !tbaa !11
  %547 = load ptr, ptr %8, align 8, !tbaa !5
  %548 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %547, i32 0, i32 6
  %549 = load i32, ptr %548, align 4, !tbaa !13
  %550 = load ptr, ptr %8, align 8, !tbaa !5
  %551 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %550, i32 0, i32 24
  %552 = load i32, ptr %551, align 4, !tbaa !14
  %553 = load ptr, ptr %8, align 8, !tbaa !5
  %554 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %553, i32 0, i32 25
  %555 = load i32, ptr %554, align 4, !tbaa !15
  %556 = load ptr, ptr %8, align 8, !tbaa !5
  %557 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %556, i32 0, i32 35
  %558 = load i32, ptr %557, align 4, !tbaa !16
  %559 = load ptr, ptr %9, align 8, !tbaa !5
  %560 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_vnni2_to_vnni2t_16bit_aarch64_sve_microkernel(ptr noundef %542, ptr noundef %543, i32 noundef %546, i32 noundef %549, i32 noundef %552, i32 noundef %555, i32 noundef %558, ptr noundef %559, ptr noundef %560)
  br label %581

561:                                              ; preds = %536, %531
  %562 = load ptr, ptr %6, align 8, !tbaa !5
  %563 = load ptr, ptr %7, align 8, !tbaa !5
  %564 = load ptr, ptr %8, align 8, !tbaa !5
  %565 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %564, i32 0, i32 1
  %566 = load i32, ptr %565, align 4, !tbaa !11
  %567 = load ptr, ptr %8, align 8, !tbaa !5
  %568 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %567, i32 0, i32 6
  %569 = load i32, ptr %568, align 4, !tbaa !13
  %570 = load ptr, ptr %8, align 8, !tbaa !5
  %571 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %570, i32 0, i32 24
  %572 = load i32, ptr %571, align 4, !tbaa !14
  %573 = load ptr, ptr %8, align 8, !tbaa !5
  %574 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %573, i32 0, i32 25
  %575 = load i32, ptr %574, align 4, !tbaa !15
  %576 = load ptr, ptr %8, align 8, !tbaa !5
  %577 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %576, i32 0, i32 35
  %578 = load i32, ptr %577, align 4, !tbaa !16
  %579 = load ptr, ptr %9, align 8, !tbaa !5
  %580 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_vnni2_to_vnni2t_16bit_aarch64_asimd_microkernel(ptr noundef %562, ptr noundef %563, i32 noundef %566, i32 noundef %569, i32 noundef %572, i32 noundef %575, i32 noundef %578, ptr noundef %579, ptr noundef %580)
  br label %581

581:                                              ; preds = %561, %541
  br label %932

582:                                              ; preds = %525
  %583 = load ptr, ptr %10, align 8, !tbaa !5
  %584 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %583, i32 0, i32 10
  %585 = load i16, ptr %584, align 1, !tbaa !19
  %586 = zext i16 %585 to i32
  %587 = icmp eq i32 %586, 55
  br i1 %587, label %588, label %639

588:                                              ; preds = %582
  %589 = load ptr, ptr %6, align 8, !tbaa !5
  %590 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %589, i32 0, i32 6
  %591 = load i32, ptr %590, align 4, !tbaa !26
  %592 = icmp uge i32 %591, 2301
  br i1 %592, label %593, label %618

593:                                              ; preds = %588
  %594 = load ptr, ptr %6, align 8, !tbaa !5
  %595 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %594, i32 0, i32 6
  %596 = load i32, ptr %595, align 4, !tbaa !26
  %597 = icmp ult i32 %596, 2401
  br i1 %597, label %598, label %618

598:                                              ; preds = %593
  %599 = load ptr, ptr %6, align 8, !tbaa !5
  %600 = load ptr, ptr %7, align 8, !tbaa !5
  %601 = load ptr, ptr %8, align 8, !tbaa !5
  %602 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %601, i32 0, i32 1
  %603 = load i32, ptr %602, align 4, !tbaa !11
  %604 = load ptr, ptr %8, align 8, !tbaa !5
  %605 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %604, i32 0, i32 6
  %606 = load i32, ptr %605, align 4, !tbaa !13
  %607 = load ptr, ptr %8, align 8, !tbaa !5
  %608 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %607, i32 0, i32 24
  %609 = load i32, ptr %608, align 4, !tbaa !14
  %610 = load ptr, ptr %8, align 8, !tbaa !5
  %611 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %610, i32 0, i32 25
  %612 = load i32, ptr %611, align 4, !tbaa !15
  %613 = load ptr, ptr %8, align 8, !tbaa !5
  %614 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %613, i32 0, i32 35
  %615 = load i32, ptr %614, align 4, !tbaa !16
  %616 = load ptr, ptr %9, align 8, !tbaa !5
  %617 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_vnni4_to_vnni4t_16bit_aarch64_sve_microkernel(ptr noundef %599, ptr noundef %600, i32 noundef %603, i32 noundef %606, i32 noundef %609, i32 noundef %612, i32 noundef %615, ptr noundef %616, ptr noundef %617)
  br label %638

618:                                              ; preds = %593, %588
  %619 = load ptr, ptr %6, align 8, !tbaa !5
  %620 = load ptr, ptr %7, align 8, !tbaa !5
  %621 = load ptr, ptr %8, align 8, !tbaa !5
  %622 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %621, i32 0, i32 1
  %623 = load i32, ptr %622, align 4, !tbaa !11
  %624 = load ptr, ptr %8, align 8, !tbaa !5
  %625 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %624, i32 0, i32 6
  %626 = load i32, ptr %625, align 4, !tbaa !13
  %627 = load ptr, ptr %8, align 8, !tbaa !5
  %628 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %627, i32 0, i32 24
  %629 = load i32, ptr %628, align 4, !tbaa !14
  %630 = load ptr, ptr %8, align 8, !tbaa !5
  %631 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %630, i32 0, i32 25
  %632 = load i32, ptr %631, align 4, !tbaa !15
  %633 = load ptr, ptr %8, align 8, !tbaa !5
  %634 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %633, i32 0, i32 35
  %635 = load i32, ptr %634, align 4, !tbaa !16
  %636 = load ptr, ptr %9, align 8, !tbaa !5
  %637 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_vnni4_to_vnni4t_16bit_aarch64_asimd_microkernel(ptr noundef %619, ptr noundef %620, i32 noundef %623, i32 noundef %626, i32 noundef %629, i32 noundef %632, i32 noundef %635, ptr noundef %636, ptr noundef %637)
  br label %638

638:                                              ; preds = %618, %598
  br label %931

639:                                              ; preds = %582
  %640 = load ptr, ptr %10, align 8, !tbaa !5
  %641 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %640, i32 0, i32 10
  %642 = load i16, ptr %641, align 1, !tbaa !19
  %643 = zext i16 %642 to i32
  %644 = icmp eq i32 %643, 28
  br i1 %644, label %645, label %699

645:                                              ; preds = %639
  %646 = load ptr, ptr %6, align 8, !tbaa !5
  %647 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %646, i32 0, i32 6
  %648 = load i32, ptr %647, align 4, !tbaa !26
  %649 = icmp uge i32 %648, 2301
  br i1 %649, label %650, label %678

650:                                              ; preds = %645
  %651 = load ptr, ptr %6, align 8, !tbaa !5
  %652 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %651, i32 0, i32 6
  %653 = load i32, ptr %652, align 4, !tbaa !26
  %654 = icmp ult i32 %653, 2401
  br i1 %654, label %655, label %678

655:                                              ; preds = %650
  %656 = load ptr, ptr %6, align 8, !tbaa !5
  %657 = load ptr, ptr %7, align 8, !tbaa !5
  %658 = load ptr, ptr %8, align 8, !tbaa !5
  %659 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %658, i32 0, i32 0
  %660 = load i32, ptr %659, align 4, !tbaa !18
  %661 = load ptr, ptr %8, align 8, !tbaa !5
  %662 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %661, i32 0, i32 1
  %663 = load i32, ptr %662, align 4, !tbaa !11
  %664 = load ptr, ptr %8, align 8, !tbaa !5
  %665 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %664, i32 0, i32 6
  %666 = load i32, ptr %665, align 4, !tbaa !13
  %667 = load ptr, ptr %8, align 8, !tbaa !5
  %668 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %667, i32 0, i32 24
  %669 = load i32, ptr %668, align 4, !tbaa !14
  %670 = load ptr, ptr %8, align 8, !tbaa !5
  %671 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %670, i32 0, i32 25
  %672 = load i32, ptr %671, align 4, !tbaa !15
  %673 = load ptr, ptr %8, align 8, !tbaa !5
  %674 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %673, i32 0, i32 35
  %675 = load i32, ptr %674, align 4, !tbaa !16
  %676 = load ptr, ptr %9, align 8, !tbaa !5
  %677 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_vnni2_16bit_aarch64_sve_microkernel(ptr noundef %656, ptr noundef %657, i32 noundef %660, i32 noundef %663, i32 noundef %666, i32 noundef %669, i32 noundef %672, i32 noundef %675, ptr noundef %676, ptr noundef %677, i32 noundef 0)
  br label %698

678:                                              ; preds = %650, %645
  %679 = load ptr, ptr %6, align 8, !tbaa !5
  %680 = load ptr, ptr %7, align 8, !tbaa !5
  %681 = load ptr, ptr %8, align 8, !tbaa !5
  %682 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %681, i32 0, i32 1
  %683 = load i32, ptr %682, align 4, !tbaa !11
  %684 = load ptr, ptr %8, align 8, !tbaa !5
  %685 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %684, i32 0, i32 6
  %686 = load i32, ptr %685, align 4, !tbaa !13
  %687 = load ptr, ptr %8, align 8, !tbaa !5
  %688 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %687, i32 0, i32 24
  %689 = load i32, ptr %688, align 4, !tbaa !14
  %690 = load ptr, ptr %8, align 8, !tbaa !5
  %691 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %690, i32 0, i32 25
  %692 = load i32, ptr %691, align 4, !tbaa !15
  %693 = load ptr, ptr %8, align 8, !tbaa !5
  %694 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %693, i32 0, i32 35
  %695 = load i32, ptr %694, align 4, !tbaa !16
  %696 = load ptr, ptr %9, align 8, !tbaa !5
  %697 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_vnni2_16bit_aarch64_asimd_microkernel(ptr noundef %679, ptr noundef %680, i32 noundef %683, i32 noundef %686, i32 noundef %689, i32 noundef %692, i32 noundef %695, ptr noundef %696, ptr noundef %697, i32 noundef 0)
  br label %698

698:                                              ; preds = %678, %655
  br label %930

699:                                              ; preds = %639
  %700 = load ptr, ptr %10, align 8, !tbaa !5
  %701 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %700, i32 0, i32 10
  %702 = load i16, ptr %701, align 1, !tbaa !19
  %703 = zext i16 %702 to i32
  %704 = icmp eq i32 %703, 32
  br i1 %704, label %705, label %759

705:                                              ; preds = %699
  %706 = load ptr, ptr %6, align 8, !tbaa !5
  %707 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %706, i32 0, i32 6
  %708 = load i32, ptr %707, align 4, !tbaa !26
  %709 = icmp uge i32 %708, 2301
  br i1 %709, label %710, label %738

710:                                              ; preds = %705
  %711 = load ptr, ptr %6, align 8, !tbaa !5
  %712 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %711, i32 0, i32 6
  %713 = load i32, ptr %712, align 4, !tbaa !26
  %714 = icmp ult i32 %713, 2401
  br i1 %714, label %715, label %738

715:                                              ; preds = %710
  %716 = load ptr, ptr %6, align 8, !tbaa !5
  %717 = load ptr, ptr %7, align 8, !tbaa !5
  %718 = load ptr, ptr %8, align 8, !tbaa !5
  %719 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %718, i32 0, i32 0
  %720 = load i32, ptr %719, align 4, !tbaa !18
  %721 = load ptr, ptr %8, align 8, !tbaa !5
  %722 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %721, i32 0, i32 1
  %723 = load i32, ptr %722, align 4, !tbaa !11
  %724 = load ptr, ptr %8, align 8, !tbaa !5
  %725 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %724, i32 0, i32 6
  %726 = load i32, ptr %725, align 4, !tbaa !13
  %727 = load ptr, ptr %8, align 8, !tbaa !5
  %728 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %727, i32 0, i32 24
  %729 = load i32, ptr %728, align 4, !tbaa !14
  %730 = load ptr, ptr %8, align 8, !tbaa !5
  %731 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %730, i32 0, i32 25
  %732 = load i32, ptr %731, align 4, !tbaa !15
  %733 = load ptr, ptr %8, align 8, !tbaa !5
  %734 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %733, i32 0, i32 35
  %735 = load i32, ptr %734, align 4, !tbaa !16
  %736 = load ptr, ptr %9, align 8, !tbaa !5
  %737 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_vnni2_16bit_aarch64_sve_microkernel(ptr noundef %716, ptr noundef %717, i32 noundef %720, i32 noundef %723, i32 noundef %726, i32 noundef %729, i32 noundef %732, i32 noundef %735, ptr noundef %736, ptr noundef %737, i32 noundef 1)
  br label %758

738:                                              ; preds = %710, %705
  %739 = load ptr, ptr %6, align 8, !tbaa !5
  %740 = load ptr, ptr %7, align 8, !tbaa !5
  %741 = load ptr, ptr %8, align 8, !tbaa !5
  %742 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %741, i32 0, i32 1
  %743 = load i32, ptr %742, align 4, !tbaa !11
  %744 = load ptr, ptr %8, align 8, !tbaa !5
  %745 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %744, i32 0, i32 6
  %746 = load i32, ptr %745, align 4, !tbaa !13
  %747 = load ptr, ptr %8, align 8, !tbaa !5
  %748 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %747, i32 0, i32 24
  %749 = load i32, ptr %748, align 4, !tbaa !14
  %750 = load ptr, ptr %8, align 8, !tbaa !5
  %751 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %750, i32 0, i32 25
  %752 = load i32, ptr %751, align 4, !tbaa !15
  %753 = load ptr, ptr %8, align 8, !tbaa !5
  %754 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %753, i32 0, i32 35
  %755 = load i32, ptr %754, align 4, !tbaa !16
  %756 = load ptr, ptr %9, align 8, !tbaa !5
  %757 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_vnni2_16bit_aarch64_asimd_microkernel(ptr noundef %739, ptr noundef %740, i32 noundef %743, i32 noundef %746, i32 noundef %749, i32 noundef %752, i32 noundef %755, ptr noundef %756, ptr noundef %757, i32 noundef 1)
  br label %758

758:                                              ; preds = %738, %715
  br label %929

759:                                              ; preds = %699
  %760 = load ptr, ptr %10, align 8, !tbaa !5
  %761 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %760, i32 0, i32 10
  %762 = load i16, ptr %761, align 1, !tbaa !19
  %763 = zext i16 %762 to i32
  %764 = icmp eq i32 %763, 54
  br i1 %764, label %765, label %819

765:                                              ; preds = %759
  %766 = load ptr, ptr %6, align 8, !tbaa !5
  %767 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %766, i32 0, i32 6
  %768 = load i32, ptr %767, align 4, !tbaa !26
  %769 = icmp uge i32 %768, 2301
  br i1 %769, label %770, label %798

770:                                              ; preds = %765
  %771 = load ptr, ptr %6, align 8, !tbaa !5
  %772 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %771, i32 0, i32 6
  %773 = load i32, ptr %772, align 4, !tbaa !26
  %774 = icmp ult i32 %773, 2401
  br i1 %774, label %775, label %798

775:                                              ; preds = %770
  %776 = load ptr, ptr %6, align 8, !tbaa !5
  %777 = load ptr, ptr %7, align 8, !tbaa !5
  %778 = load ptr, ptr %8, align 8, !tbaa !5
  %779 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %778, i32 0, i32 0
  %780 = load i32, ptr %779, align 4, !tbaa !18
  %781 = load ptr, ptr %8, align 8, !tbaa !5
  %782 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %781, i32 0, i32 1
  %783 = load i32, ptr %782, align 4, !tbaa !11
  %784 = load ptr, ptr %8, align 8, !tbaa !5
  %785 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %784, i32 0, i32 6
  %786 = load i32, ptr %785, align 4, !tbaa !13
  %787 = load ptr, ptr %8, align 8, !tbaa !5
  %788 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %787, i32 0, i32 24
  %789 = load i32, ptr %788, align 4, !tbaa !14
  %790 = load ptr, ptr %8, align 8, !tbaa !5
  %791 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %790, i32 0, i32 25
  %792 = load i32, ptr %791, align 4, !tbaa !15
  %793 = load ptr, ptr %8, align 8, !tbaa !5
  %794 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %793, i32 0, i32 35
  %795 = load i32, ptr %794, align 4, !tbaa !16
  %796 = load ptr, ptr %9, align 8, !tbaa !5
  %797 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_vnni4_16bit_aarch64_sve_microkernel(ptr noundef %776, ptr noundef %777, i32 noundef %780, i32 noundef %783, i32 noundef %786, i32 noundef %789, i32 noundef %792, i32 noundef %795, ptr noundef %796, ptr noundef %797, i32 noundef 0)
  br label %818

798:                                              ; preds = %770, %765
  %799 = load ptr, ptr %6, align 8, !tbaa !5
  %800 = load ptr, ptr %7, align 8, !tbaa !5
  %801 = load ptr, ptr %8, align 8, !tbaa !5
  %802 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %801, i32 0, i32 1
  %803 = load i32, ptr %802, align 4, !tbaa !11
  %804 = load ptr, ptr %8, align 8, !tbaa !5
  %805 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %804, i32 0, i32 6
  %806 = load i32, ptr %805, align 4, !tbaa !13
  %807 = load ptr, ptr %8, align 8, !tbaa !5
  %808 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %807, i32 0, i32 24
  %809 = load i32, ptr %808, align 4, !tbaa !14
  %810 = load ptr, ptr %8, align 8, !tbaa !5
  %811 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %810, i32 0, i32 25
  %812 = load i32, ptr %811, align 4, !tbaa !15
  %813 = load ptr, ptr %8, align 8, !tbaa !5
  %814 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %813, i32 0, i32 35
  %815 = load i32, ptr %814, align 4, !tbaa !16
  %816 = load ptr, ptr %9, align 8, !tbaa !5
  %817 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_vnni4_16bit_aarch64_asimd_microkernel(ptr noundef %799, ptr noundef %800, i32 noundef %803, i32 noundef %806, i32 noundef %809, i32 noundef %812, i32 noundef %815, ptr noundef %816, ptr noundef %817, i32 noundef 0)
  br label %818

818:                                              ; preds = %798, %775
  br label %928

819:                                              ; preds = %759
  %820 = load ptr, ptr %10, align 8, !tbaa !5
  %821 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %820, i32 0, i32 10
  %822 = load i16, ptr %821, align 1, !tbaa !19
  %823 = zext i16 %822 to i32
  %824 = icmp eq i32 %823, 57
  br i1 %824, label %825, label %879

825:                                              ; preds = %819
  %826 = load ptr, ptr %6, align 8, !tbaa !5
  %827 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %826, i32 0, i32 6
  %828 = load i32, ptr %827, align 4, !tbaa !26
  %829 = icmp uge i32 %828, 2301
  br i1 %829, label %830, label %858

830:                                              ; preds = %825
  %831 = load ptr, ptr %6, align 8, !tbaa !5
  %832 = getelementptr inbounds %struct.libxsmm_generated_code, ptr %831, i32 0, i32 6
  %833 = load i32, ptr %832, align 4, !tbaa !26
  %834 = icmp ult i32 %833, 2401
  br i1 %834, label %835, label %858

835:                                              ; preds = %830
  %836 = load ptr, ptr %6, align 8, !tbaa !5
  %837 = load ptr, ptr %7, align 8, !tbaa !5
  %838 = load ptr, ptr %8, align 8, !tbaa !5
  %839 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %838, i32 0, i32 0
  %840 = load i32, ptr %839, align 4, !tbaa !18
  %841 = load ptr, ptr %8, align 8, !tbaa !5
  %842 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %841, i32 0, i32 1
  %843 = load i32, ptr %842, align 4, !tbaa !11
  %844 = load ptr, ptr %8, align 8, !tbaa !5
  %845 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %844, i32 0, i32 6
  %846 = load i32, ptr %845, align 4, !tbaa !13
  %847 = load ptr, ptr %8, align 8, !tbaa !5
  %848 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %847, i32 0, i32 24
  %849 = load i32, ptr %848, align 4, !tbaa !14
  %850 = load ptr, ptr %8, align 8, !tbaa !5
  %851 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %850, i32 0, i32 25
  %852 = load i32, ptr %851, align 4, !tbaa !15
  %853 = load ptr, ptr %8, align 8, !tbaa !5
  %854 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %853, i32 0, i32 35
  %855 = load i32, ptr %854, align 4, !tbaa !16
  %856 = load ptr, ptr %9, align 8, !tbaa !5
  %857 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_vnni4_16bit_aarch64_sve_microkernel(ptr noundef %836, ptr noundef %837, i32 noundef %840, i32 noundef %843, i32 noundef %846, i32 noundef %849, i32 noundef %852, i32 noundef %855, ptr noundef %856, ptr noundef %857, i32 noundef 1)
  br label %878

858:                                              ; preds = %830, %825
  %859 = load ptr, ptr %6, align 8, !tbaa !5
  %860 = load ptr, ptr %7, align 8, !tbaa !5
  %861 = load ptr, ptr %8, align 8, !tbaa !5
  %862 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %861, i32 0, i32 1
  %863 = load i32, ptr %862, align 4, !tbaa !11
  %864 = load ptr, ptr %8, align 8, !tbaa !5
  %865 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %864, i32 0, i32 6
  %866 = load i32, ptr %865, align 4, !tbaa !13
  %867 = load ptr, ptr %8, align 8, !tbaa !5
  %868 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %867, i32 0, i32 24
  %869 = load i32, ptr %868, align 4, !tbaa !14
  %870 = load ptr, ptr %8, align 8, !tbaa !5
  %871 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %870, i32 0, i32 25
  %872 = load i32, ptr %871, align 4, !tbaa !15
  %873 = load ptr, ptr %8, align 8, !tbaa !5
  %874 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %873, i32 0, i32 35
  %875 = load i32, ptr %874, align 4, !tbaa !16
  %876 = load ptr, ptr %9, align 8, !tbaa !5
  %877 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_vnni4_16bit_aarch64_asimd_microkernel(ptr noundef %859, ptr noundef %860, i32 noundef %863, i32 noundef %866, i32 noundef %869, i32 noundef %872, i32 noundef %875, ptr noundef %876, ptr noundef %877, i32 noundef 1)
  br label %878

878:                                              ; preds = %858, %835
  br label %927

879:                                              ; preds = %819
  %880 = load ptr, ptr %10, align 8, !tbaa !5
  %881 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %880, i32 0, i32 10
  %882 = load i16, ptr %881, align 1, !tbaa !19
  %883 = zext i16 %882 to i32
  %884 = icmp eq i32 %883, 40
  br i1 %884, label %897, label %885

885:                                              ; preds = %879
  %886 = load ptr, ptr %10, align 8, !tbaa !5
  %887 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %886, i32 0, i32 10
  %888 = load i16, ptr %887, align 1, !tbaa !19
  %889 = zext i16 %888 to i32
  %890 = icmp eq i32 %889, 39
  br i1 %890, label %897, label %891

891:                                              ; preds = %885
  %892 = load ptr, ptr %10, align 8, !tbaa !5
  %893 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %892, i32 0, i32 10
  %894 = load i16, ptr %893, align 1, !tbaa !19
  %895 = zext i16 %894 to i32
  %896 = icmp eq i32 %895, 41
  br i1 %896, label %897, label %917

897:                                              ; preds = %891, %885, %879
  %898 = load ptr, ptr %6, align 8, !tbaa !5
  %899 = load ptr, ptr %7, align 8, !tbaa !5
  %900 = load ptr, ptr %8, align 8, !tbaa !5
  %901 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %900, i32 0, i32 1
  %902 = load i32, ptr %901, align 4, !tbaa !11
  %903 = load ptr, ptr %8, align 8, !tbaa !5
  %904 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %903, i32 0, i32 6
  %905 = load i32, ptr %904, align 4, !tbaa !13
  %906 = load ptr, ptr %8, align 8, !tbaa !5
  %907 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %906, i32 0, i32 24
  %908 = load i32, ptr %907, align 4, !tbaa !14
  %909 = load ptr, ptr %8, align 8, !tbaa !5
  %910 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %909, i32 0, i32 25
  %911 = load i32, ptr %910, align 4, !tbaa !15
  %912 = load ptr, ptr %8, align 8, !tbaa !5
  %913 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %912, i32 0, i32 35
  %914 = load i32, ptr %913, align 4, !tbaa !16
  %915 = load ptr, ptr %9, align 8, !tbaa !5
  %916 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_padnm_mod2_16bit_aarch64_asimd_microkernel(ptr noundef %898, ptr noundef %899, i32 noundef %902, i32 noundef %905, i32 noundef %908, i32 noundef %911, i32 noundef %914, ptr noundef %915, ptr noundef %916)
  br label %926

917:                                              ; preds = %891
  %918 = load ptr, ptr %6, align 8, !tbaa !5
  %919 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %920 = icmp ult i32 1, %919
  br i1 %920, label %921, label %923

921:                                              ; preds = %917
  %922 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %924

923:                                              ; preds = %917
  br label %924

924:                                              ; preds = %923, %921
  %925 = phi i32 [ %922, %921 ], [ 1, %923 ]
  call void @libxsmm_handle_error(ptr noundef %918, i32 noundef 90000, ptr noundef @__func__.libxsmm_generator_transform_aarch64_sve_microkernel, ptr noundef @.str, i32 noundef 891, i32 noundef %925)
  store i32 1, ptr %13, align 4
  br label %1057

926:                                              ; preds = %897
  br label %927

927:                                              ; preds = %926, %878
  br label %928

928:                                              ; preds = %927, %818
  br label %929

929:                                              ; preds = %928, %758
  br label %930

930:                                              ; preds = %929, %698
  br label %931

931:                                              ; preds = %930, %638
  br label %932

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

933:                                              ; preds = %932, %489
  br label %934

934:                                              ; preds = %933, %447
  br label %935

935:                                              ; preds = %934, %405
  br label %936

936:                                              ; preds = %935, %363
  br label %937

937:                                              ; preds = %936, %337
  br label %1054

938:                                              ; preds = %327, %323
  %939 = load ptr, ptr %10, align 8, !tbaa !5
  %940 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %939, i32 noundef 0)
  %941 = icmp eq i32 12, %940
  br i1 %941, label %942, label %946

942:                                              ; preds = %938
  %943 = load ptr, ptr %10, align 8, !tbaa !5
  %944 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %943, i32 noundef 3)
  %945 = icmp eq i32 12, %944
  br i1 %945, label %954, label %946

946:                                              ; preds = %942, %938
  %947 = load ptr, ptr %10, align 8, !tbaa !5
  %948 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %947, i32 noundef 0)
  %949 = icmp eq i32 4, %948
  br i1 %949, label %950, label %1044

950:                                              ; preds = %946
  %951 = load ptr, ptr %10, align 8, !tbaa !5
  %952 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %951, i32 noundef 3)
  %953 = icmp eq i32 4, %952
  br i1 %953, label %954, label %1044

954:                                              ; preds = %950, %942
  %955 = load ptr, ptr %10, align 8, !tbaa !5
  %956 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %955, i32 0, i32 10
  %957 = load i16, ptr %956, align 1, !tbaa !19
  %958 = zext i16 %957 to i32
  %959 = icmp eq i32 %958, 29
  br i1 %959, label %960, label %980

960:                                              ; preds = %954
  %961 = load ptr, ptr %6, align 8, !tbaa !5
  %962 = load ptr, ptr %7, align 8, !tbaa !5
  %963 = load ptr, ptr %8, align 8, !tbaa !5
  %964 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %963, i32 0, i32 1
  %965 = load i32, ptr %964, align 4, !tbaa !11
  %966 = load ptr, ptr %8, align 8, !tbaa !5
  %967 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %966, i32 0, i32 6
  %968 = load i32, ptr %967, align 4, !tbaa !13
  %969 = load ptr, ptr %8, align 8, !tbaa !5
  %970 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %969, i32 0, i32 24
  %971 = load i32, ptr %970, align 4, !tbaa !14
  %972 = load ptr, ptr %8, align 8, !tbaa !5
  %973 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %972, i32 0, i32 25
  %974 = load i32, ptr %973, align 4, !tbaa !15
  %975 = load ptr, ptr %8, align 8, !tbaa !5
  %976 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %975, i32 0, i32 35
  %977 = load i32, ptr %976, align 4, !tbaa !16
  %978 = load ptr, ptr %9, align 8, !tbaa !5
  %979 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_normt_08bit_aarch64_asimd_microkernel(ptr noundef %961, ptr noundef %962, i32 noundef %965, i32 noundef %968, i32 noundef %971, i32 noundef %974, i32 noundef %977, ptr noundef %978, ptr noundef %979)
  br label %1043

980:                                              ; preds = %954
  %981 = load ptr, ptr %10, align 8, !tbaa !5
  %982 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %981, i32 0, i32 10
  %983 = load i16, ptr %982, align 1, !tbaa !19
  %984 = zext i16 %983 to i32
  %985 = icmp eq i32 %984, 54
  br i1 %985, label %986, label %1006

986:                                              ; preds = %980
  %987 = load ptr, ptr %6, align 8, !tbaa !5
  %988 = load ptr, ptr %7, align 8, !tbaa !5
  %989 = load ptr, ptr %8, align 8, !tbaa !5
  %990 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %989, i32 0, i32 1
  %991 = load i32, ptr %990, align 4, !tbaa !11
  %992 = load ptr, ptr %8, align 8, !tbaa !5
  %993 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %992, i32 0, i32 6
  %994 = load i32, ptr %993, align 4, !tbaa !13
  %995 = load ptr, ptr %8, align 8, !tbaa !5
  %996 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %995, i32 0, i32 24
  %997 = load i32, ptr %996, align 4, !tbaa !14
  %998 = load ptr, ptr %8, align 8, !tbaa !5
  %999 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %998, i32 0, i32 25
  %1000 = load i32, ptr %999, align 4, !tbaa !15
  %1001 = load ptr, ptr %8, align 8, !tbaa !5
  %1002 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1001, i32 0, i32 35
  %1003 = load i32, ptr %1002, align 4, !tbaa !16
  %1004 = load ptr, ptr %9, align 8, !tbaa !5
  %1005 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_vnni4_08bit_aarch64_asimd_microkernel(ptr noundef %987, ptr noundef %988, i32 noundef %991, i32 noundef %994, i32 noundef %997, i32 noundef %1000, i32 noundef %1003, ptr noundef %1004, ptr noundef %1005, i32 noundef 0)
  br label %1042

1006:                                             ; preds = %980
  %1007 = load ptr, ptr %10, align 8, !tbaa !5
  %1008 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %1007, i32 0, i32 10
  %1009 = load i16, ptr %1008, align 1, !tbaa !19
  %1010 = zext i16 %1009 to i32
  %1011 = icmp eq i32 %1010, 57
  br i1 %1011, label %1012, label %1032

1012:                                             ; preds = %1006
  %1013 = load ptr, ptr %6, align 8, !tbaa !5
  %1014 = load ptr, ptr %7, align 8, !tbaa !5
  %1015 = load ptr, ptr %8, align 8, !tbaa !5
  %1016 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1015, i32 0, i32 1
  %1017 = load i32, ptr %1016, align 4, !tbaa !11
  %1018 = load ptr, ptr %8, align 8, !tbaa !5
  %1019 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1018, i32 0, i32 6
  %1020 = load i32, ptr %1019, align 4, !tbaa !13
  %1021 = load ptr, ptr %8, align 8, !tbaa !5
  %1022 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1021, i32 0, i32 24
  %1023 = load i32, ptr %1022, align 4, !tbaa !14
  %1024 = load ptr, ptr %8, align 8, !tbaa !5
  %1025 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1024, i32 0, i32 25
  %1026 = load i32, ptr %1025, align 4, !tbaa !15
  %1027 = load ptr, ptr %8, align 8, !tbaa !5
  %1028 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %1027, i32 0, i32 35
  %1029 = load i32, ptr %1028, align 4, !tbaa !16
  %1030 = load ptr, ptr %9, align 8, !tbaa !5
  %1031 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_vnni4_08bit_aarch64_asimd_microkernel(ptr noundef %1013, ptr noundef %1014, i32 noundef %1017, i32 noundef %1020, i32 noundef %1023, i32 noundef %1026, i32 noundef %1029, ptr noundef %1030, ptr noundef %1031, i32 noundef 1)
  br label %1041

1032:                                             ; preds = %1006
  %1033 = load ptr, ptr %6, align 8, !tbaa !5
  %1034 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %1035 = icmp ult i32 1, %1034
  br i1 %1035, label %1036, label %1038

1036:                                             ; preds = %1032
  %1037 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %1039

1038:                                             ; preds = %1032
  br label %1039

1039:                                             ; preds = %1038, %1036
  %1040 = phi i32 [ %1037, %1036 ], [ 1, %1038 ]
  call void @libxsmm_handle_error(ptr noundef %1033, i32 noundef 90000, ptr noundef @__func__.libxsmm_generator_transform_aarch64_sve_microkernel, ptr noundef @.str, i32 noundef 914, i32 noundef %1040)
  store i32 1, ptr %13, align 4
  br label %1057

1041:                                             ; preds = %1012
  br label %1042

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

1043:                                             ; preds = %1042, %960
  br label %1053

1044:                                             ; preds = %950, %946
  %1045 = load ptr, ptr %6, align 8, !tbaa !5
  %1046 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %1047 = icmp ult i32 1, %1046
  br i1 %1047, label %1048, label %1050

1048:                                             ; preds = %1044
  %1049 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %1051

1050:                                             ; preds = %1044
  br label %1051

1051:                                             ; preds = %1050, %1048
  %1052 = phi i32 [ %1049, %1048 ], [ 1, %1050 ]
  call void @libxsmm_handle_error(ptr noundef %1045, i32 noundef 90000, ptr noundef @__func__.libxsmm_generator_transform_aarch64_sve_microkernel, ptr noundef @.str, i32 noundef 918, i32 noundef %1052)
  store i32 1, ptr %13, align 4
  br label %1057

1053:                                             ; preds = %1043
  br label %1054

1054:                                             ; preds = %1053, %937
  br label %1055

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

1056:                                             ; preds = %1055, %254
  store i32 0, ptr %13, align 4
  br label %1057

1057:                                             ; preds = %1056, %1051, %1039, %924, %304, %252, %197, %179, %145, %97, %80
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #3
  %1058 = load i32, ptr %13, align 4
  switch i32 %1058, label %1060 [
    i32 0, label %1059
    i32 1, label %1059
  ]

1059:                                             ; preds = %1057, %1057
  ret void

1060:                                             ; preds = %1057
  unreachable
}

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

declare void @libxsmm_generator_transform_norm_to_normt_64bit_aarch64_asimd_microkernel(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef) #2

declare void @libxsmm_generator_transform_norm_to_normt_32bit_aarch64_asimd_microkernel(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef) #2

declare void @libxsmm_generator_transform_norm_to_normt_16bit_aarch64_asimd_microkernel(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef) #2

declare ptr @libxsmm_meltw_descriptor_init2(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i16 noundef zeroext, i16 noundef zeroext, i8 noundef zeroext) #2

declare void @libxsmm_generator_mateltwise_aarch64_init_micro_kernel_config_fullvector(ptr noundef, ptr noundef, ptr noundef) #2

declare void @libxsmm_generator_transform_vnni2_to_vnni2t_16bit_aarch64_asimd_microkernel(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef) #2

declare void @libxsmm_generator_transform_vnni4_to_vnni4t_16bit_aarch64_asimd_microkernel(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef) #2

declare void @libxsmm_generator_transform_norm_to_vnni2_16bit_aarch64_asimd_microkernel(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef) #2

declare void @libxsmm_generator_transform_norm_to_vnni4_16bit_aarch64_asimd_microkernel(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef) #2

declare void @libxsmm_generator_transform_norm_padnm_mod2_16bit_aarch64_asimd_microkernel(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef) #2

declare void @libxsmm_generator_transform_norm_to_normt_08bit_aarch64_asimd_microkernel(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef) #2

declare void @libxsmm_generator_transform_norm_to_vnni4_08bit_aarch64_asimd_microkernel(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef) #2

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

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

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


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

%struct.libxsmm_descriptor_blob = type { [96 x 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 }

@.str = external hidden unnamed_addr constant [98 x i8], align 1
@libxsmm_ninit = external local_unnamed_addr global i32, align 4
@libxsmm_verbosity = external local_unnamed_addr global i32, align 4
@__func__.libxsmm_generator_transform_aarch64_sve_microkernel = external hidden unnamed_addr constant [52 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

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

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_transform_norm_to_vnni2_16bit_aarch64_sve_microkernel(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @libxsmm_handle_error(ptr noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare void @libxsmm_aarch64_instruction_alu_move(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_transform_norm_to_vnni4_16bit_aarch64_sve_microkernel(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_transform_vnni2_to_vnni2t_16bit_aarch64_sve_microkernel(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_generator_transform_vnni4_to_vnni4t_16bit_aarch64_sve_microkernel(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_transform_aarch64_sve_microkernel(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4) local_unnamed_addr #1 {
  %6 = alloca %struct.libxsmm_descriptor_blob, align 1
  %7 = alloca %struct.libxsmm_mateltwise_kernel_config_struct, align 4
  %8 = alloca %struct.libxsmm_descriptor_blob, align 1
  %9 = alloca %struct.libxsmm_mateltwise_kernel_config_struct, align 4
  %10 = alloca %struct.libxsmm_descriptor_blob, align 1
  %11 = alloca %struct.libxsmm_mateltwise_kernel_config_struct, align 4
  %12 = alloca %struct.libxsmm_descriptor_blob, align 1
  %13 = alloca %struct.libxsmm_mateltwise_kernel_config_struct, align 4
  %14 = getelementptr inbounds i8, ptr %2, i64 4
  store i32 40, ptr %14, align 4, !tbaa !5
  %15 = getelementptr inbounds i8, ptr %2, i64 24
  store i32 41, ptr %15, align 4, !tbaa !10
  %16 = getelementptr inbounds i8, ptr %2, i64 96
  store i32 42, ptr %16, align 4, !tbaa !11
  %17 = getelementptr inbounds i8, ptr %2, i64 100
  store i32 43, ptr %17, align 4, !tbaa !12
  %18 = getelementptr inbounds i8, ptr %2, i64 140
  store i32 38, ptr %18, align 4, !tbaa !13
  %19 = getelementptr inbounds i8, ptr %2, i64 144
  store i32 39, ptr %19, align 4, !tbaa !14
  %20 = load i32, ptr %2, align 4, !tbaa !15
  tail call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %0, i32 noundef -1186988026, i32 noundef %20, i32 noundef 127, i32 noundef 32, i32 noundef 40) #3
  %21 = load i32, ptr %2, align 4, !tbaa !15
  %22 = load i32, ptr %15, align 4, !tbaa !10
  tail call void @libxsmm_aarch64_instruction_alu_move(ptr noundef %0, i32 noundef -1186988026, i32 noundef %21, i32 noundef 127, i32 noundef 80, i32 noundef %22) #3
  %23 = getelementptr inbounds i8, ptr %4, i64 29
  %24 = load i16, ptr %23, align 1, !tbaa !16
  switch i16 %24, label %77 [
    i16 29, label %25
    i16 30, label %25
    i16 28, label %46
    i16 32, label %46
    i16 40, label %46
    i16 39, label %46
    i16 41, label %46
  ]

25:                                               ; preds = %5, %5
  %26 = load i32, ptr %4, align 1, !tbaa !19
  %27 = getelementptr inbounds i8, ptr %4, i64 8
  %28 = load i32, ptr %27, align 1, !tbaa !20
  %29 = icmp ugt i32 %26, %28
  br i1 %29, label %30, label %35

30:                                               ; preds = %25
  %31 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !21
  %32 = icmp ugt i32 %31, 1
  %33 = load i32, ptr @libxsmm_verbosity, align 4
  %34 = select i1 %32, i32 %33, i32 1
  tail call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90007, ptr noundef nonnull @__func__.libxsmm_generator_transform_aarch64_sve_microkernel, ptr noundef nonnull @.str, i32 noundef 689, i32 noundef %34) #3
  br label %362

35:                                               ; preds = %25
  %36 = getelementptr inbounds i8, ptr %4, i64 4
  %37 = load i32, ptr %36, align 1, !tbaa !22
  %38 = getelementptr inbounds i8, ptr %4, i64 12
  %39 = load i32, ptr %38, align 1, !tbaa !23
  %40 = icmp ugt i32 %37, %39
  br i1 %40, label %41, label %77

41:                                               ; preds = %35
  %42 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !21
  %43 = icmp ugt i32 %42, 1
  %44 = load i32, ptr @libxsmm_verbosity, align 4
  %45 = select i1 %43, i32 %44, i32 1
  tail call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90008, ptr noundef nonnull @__func__.libxsmm_generator_transform_aarch64_sve_microkernel, ptr noundef nonnull @.str, i32 noundef 693, i32 noundef %45) #3
  br label %362

46:                                               ; preds = %5, %5, %5, %5, %5
  %47 = load i32, ptr %4, align 1, !tbaa !19
  %48 = getelementptr inbounds i8, ptr %4, i64 8
  %49 = load i32, ptr %48, align 1, !tbaa !20
  %50 = icmp ugt i32 %47, %49
  br i1 %50, label %51, label %56

51:                                               ; preds = %46
  %52 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !21
  %53 = icmp ugt i32 %52, 1
  %54 = load i32, ptr @libxsmm_verbosity, align 4
  %55 = select i1 %53, i32 %54, i32 1
  tail call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90007, ptr noundef nonnull @__func__.libxsmm_generator_transform_aarch64_sve_microkernel, ptr noundef nonnull @.str, i32 noundef 702, i32 noundef %55) #3
  br label %362

56:                                               ; preds = %46
  switch i16 %24, label %68 [
    i16 39, label %57
    i16 41, label %57
  ]

57:                                               ; preds = %56, %56
  %58 = and i32 %47, 1
  %59 = add i32 %58, %47
  %60 = getelementptr inbounds i8, ptr %4, i64 12
  %61 = load i32, ptr %60, align 1, !tbaa !23
  %62 = icmp ugt i32 %59, %61
  br i1 %62, label %63, label %77

63:                                               ; preds = %57
  %64 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !21
  %65 = icmp ugt i32 %64, 1
  %66 = load i32, ptr @libxsmm_verbosity, align 4
  %67 = select i1 %65, i32 %66, i32 1
  tail call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90008, ptr noundef nonnull @__func__.libxsmm_generator_transform_aarch64_sve_microkernel, ptr noundef nonnull @.str, i32 noundef 708, i32 noundef %67) #3
  br label %362

68:                                               ; preds = %56
  %69 = getelementptr inbounds i8, ptr %4, i64 12
  %70 = load i32, ptr %69, align 1, !tbaa !23
  %71 = icmp ugt i32 %47, %70
  br i1 %71, label %72, label %77

72:                                               ; preds = %68
  %73 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !21
  %74 = icmp ugt i32 %73, 1
  %75 = load i32, ptr @libxsmm_verbosity, align 4
  %76 = select i1 %74, i32 %75, i32 1
  tail call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90008, ptr noundef nonnull @__func__.libxsmm_generator_transform_aarch64_sve_microkernel, ptr noundef nonnull @.str, i32 noundef 713, i32 noundef %76) #3
  br label %362

77:                                               ; preds = %5, %68, %57, %35
  %78 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #3
  %79 = icmp eq i32 %78, 6
  br i1 %79, label %80, label %83

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

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

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

89:                                               ; preds = %86, %80
  %90 = load i16, ptr %23, align 1, !tbaa !16
  %91 = icmp eq i16 %90, 29
  br i1 %91, label %92, label %98

92:                                               ; preds = %89
  %93 = load i32, ptr %14, align 4, !tbaa !5
  %94 = load i32, ptr %15, align 4, !tbaa !10
  %95 = load i32, ptr %16, align 4, !tbaa !11
  %96 = load i32, ptr %17, align 4, !tbaa !12
  %97 = load i32, ptr %18, align 4, !tbaa !13
  tail call void @libxsmm_generator_transform_norm_to_normt_64bit_aarch64_asimd_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef %93, i32 noundef %94, i32 noundef %95, i32 noundef %96, i32 noundef %97, ptr noundef %3, ptr noundef nonnull %4) #3
  br label %362

98:                                               ; preds = %89
  %99 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !21
  %100 = icmp ugt i32 %99, 1
  %101 = load i32, ptr @libxsmm_verbosity, align 4
  %102 = select i1 %100, i32 %101, i32 1
  tail call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90000, ptr noundef nonnull @__func__.libxsmm_generator_transform_aarch64_sve_microkernel, ptr noundef nonnull @.str, i32 noundef 731, i32 noundef %102) #3
  br label %362

103:                                              ; preds = %86, %83
  %104 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #3
  %105 = icmp eq i32 %104, 8
  br i1 %105, label %106, label %109

106:                                              ; preds = %103
  %107 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #3
  %108 = icmp eq i32 %107, 8
  br i1 %108, label %115, label %109

109:                                              ; preds = %106, %103
  %110 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #3
  %111 = icmp eq i32 %110, 1
  br i1 %111, label %112, label %129

112:                                              ; preds = %109
  %113 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 3) #3
  %114 = icmp eq i32 %113, 1
  br i1 %114, label %115, label %129

115:                                              ; preds = %112, %106
  %116 = load i16, ptr %23, align 1, !tbaa !16
  %117 = icmp eq i16 %116, 29
  br i1 %117, label %118, label %124

118:                                              ; preds = %115
  %119 = load i32, ptr %14, align 4, !tbaa !5
  %120 = load i32, ptr %15, align 4, !tbaa !10
  %121 = load i32, ptr %16, align 4, !tbaa !11
  %122 = load i32, ptr %17, align 4, !tbaa !12
  %123 = load i32, ptr %18, align 4, !tbaa !13
  tail call void @libxsmm_generator_transform_norm_to_normt_32bit_aarch64_asimd_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef %119, i32 noundef %120, i32 noundef %121, i32 noundef %122, i32 noundef %123, ptr noundef %3, ptr noundef nonnull %4) #3
  br label %362

124:                                              ; preds = %115
  %125 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !21
  %126 = icmp ugt i32 %125, 1
  %127 = load i32, ptr @libxsmm_verbosity, align 4
  %128 = select i1 %126, i32 %127, i32 1
  tail call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90000, ptr noundef nonnull @__func__.libxsmm_generator_transform_aarch64_sve_microkernel, ptr noundef nonnull @.str, i32 noundef 744, i32 noundef %128) #3
  br label %362

129:                                              ; preds = %112, %109
  %130 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #3
  %131 = icmp eq i32 %130, 10
  br i1 %131, label %132, label %135

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

135:                                              ; preds = %132, %129
  %136 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #3
  %137 = icmp eq i32 %136, 3
  br i1 %137, label %138, label %141

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

141:                                              ; preds = %138, %135
  %142 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #3
  %143 = icmp eq i32 %142, 2
  br i1 %143, label %144, label %320

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

147:                                              ; preds = %144, %138, %132
  %148 = load i16, ptr %23, align 1, !tbaa !16
  switch i16 %148, label %315 [
    i16 29, label %149
    i16 56, label %155
    i16 31, label %171
    i16 66, label %187
    i16 67, label %203
    i16 30, label %219
    i16 55, label %230
    i16 28, label %241
    i16 32, label %258
    i16 54, label %275
    i16 57, label %292
    i16 40, label %309
    i16 39, label %309
    i16 41, label %309
  ]

149:                                              ; preds = %147
  %150 = load i32, ptr %14, align 4, !tbaa !5
  %151 = load i32, ptr %15, align 4, !tbaa !10
  %152 = load i32, ptr %16, align 4, !tbaa !11
  %153 = load i32, ptr %17, align 4, !tbaa !12
  %154 = load i32, ptr %18, align 4, !tbaa !13
  tail call void @libxsmm_generator_transform_norm_to_normt_16bit_aarch64_asimd_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef %150, i32 noundef %151, i32 noundef %152, i32 noundef %153, i32 noundef %154, ptr noundef %3, ptr noundef nonnull %4) #3
  br label %362

155:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %6) #3
  %156 = load i32, ptr %4, align 1, !tbaa !19
  %157 = lshr i32 %156, 2
  %158 = getelementptr inbounds i8, ptr %4, i64 4
  %159 = load i32, ptr %158, align 1, !tbaa !22
  %160 = getelementptr inbounds i8, ptr %4, i64 8
  %161 = load i32, ptr %160, align 1, !tbaa !20
  %162 = lshr i32 %161, 2
  %163 = getelementptr inbounds i8, ptr %4, i64 12
  %164 = load i32, ptr %163, align 1, !tbaa !23
  %165 = call ptr @libxsmm_meltw_descriptor_init2(ptr noundef nonnull %6, i32 noundef 0, i32 noundef 15, i32 noundef 15, i32 noundef 0, i32 noundef 0, i32 noundef %157, i32 noundef %159, i32 noundef %162, i32 noundef %164, i32 noundef 0, i32 noundef 0, i16 noundef zeroext 0, i16 noundef zeroext 29, i8 noundef zeroext 1) #3
  call void @llvm.lifetime.start.p0(i64 516, ptr nonnull %7) #3
  call void @libxsmm_generator_mateltwise_aarch64_init_micro_kernel_config_fullvector(ptr noundef %0, ptr noundef nonnull %7, ptr noundef %165) #3
  %166 = load i32, ptr %14, align 4, !tbaa !5
  %167 = load i32, ptr %15, align 4, !tbaa !10
  %168 = load i32, ptr %16, align 4, !tbaa !11
  %169 = load i32, ptr %17, align 4, !tbaa !12
  %170 = load i32, ptr %18, align 4, !tbaa !13
  call void @libxsmm_generator_transform_norm_to_normt_64bit_aarch64_asimd_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef %166, i32 noundef %167, i32 noundef %168, i32 noundef %169, i32 noundef %170, ptr noundef nonnull %7, ptr noundef %165) #3
  call void @llvm.lifetime.end.p0(i64 516, ptr nonnull %7) #3
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %6) #3
  br label %362

171:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %8) #3
  %172 = load i32, ptr %4, align 1, !tbaa !19
  %173 = lshr i32 %172, 1
  %174 = getelementptr inbounds i8, ptr %4, i64 4
  %175 = load i32, ptr %174, align 1, !tbaa !22
  %176 = getelementptr inbounds i8, ptr %4, i64 8
  %177 = load i32, ptr %176, align 1, !tbaa !20
  %178 = lshr i32 %177, 1
  %179 = getelementptr inbounds i8, ptr %4, i64 12
  %180 = load i32, ptr %179, align 1, !tbaa !23
  %181 = call ptr @libxsmm_meltw_descriptor_init2(ptr noundef nonnull %8, i32 noundef 1, i32 noundef 15, i32 noundef 15, i32 noundef 1, i32 noundef 1, i32 noundef %173, i32 noundef %175, i32 noundef %178, i32 noundef %180, i32 noundef 0, i32 noundef 0, i16 noundef zeroext 0, i16 noundef zeroext 29, i8 noundef zeroext 1) #3
  call void @llvm.lifetime.start.p0(i64 516, ptr nonnull %9) #3
  call void @libxsmm_generator_mateltwise_aarch64_init_micro_kernel_config_fullvector(ptr noundef %0, ptr noundef nonnull %9, ptr noundef %181) #3
  %182 = load i32, ptr %14, align 4, !tbaa !5
  %183 = load i32, ptr %15, align 4, !tbaa !10
  %184 = load i32, ptr %16, align 4, !tbaa !11
  %185 = load i32, ptr %17, align 4, !tbaa !12
  %186 = load i32, ptr %18, align 4, !tbaa !13
  call void @libxsmm_generator_transform_norm_to_normt_32bit_aarch64_asimd_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef %182, i32 noundef %183, i32 noundef %184, i32 noundef %185, i32 noundef %186, ptr noundef nonnull %9, ptr noundef %181) #3
  call void @llvm.lifetime.end.p0(i64 516, ptr nonnull %9) #3
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %8) #3
  br label %362

187:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %10) #3
  %188 = load i32, ptr %4, align 1, !tbaa !19
  %189 = getelementptr inbounds i8, ptr %4, i64 4
  %190 = load i32, ptr %189, align 1, !tbaa !22
  %191 = lshr i32 %190, 2
  %192 = getelementptr inbounds i8, ptr %4, i64 8
  %193 = load i32, ptr %192, align 1, !tbaa !20
  %194 = getelementptr inbounds i8, ptr %4, i64 12
  %195 = load i32, ptr %194, align 1, !tbaa !23
  %196 = lshr i32 %195, 2
  %197 = call ptr @libxsmm_meltw_descriptor_init2(ptr noundef nonnull %10, i32 noundef 0, i32 noundef 15, i32 noundef 15, i32 noundef 0, i32 noundef 0, i32 noundef %188, i32 noundef %191, i32 noundef %193, i32 noundef %196, i32 noundef 0, i32 noundef 0, i16 noundef zeroext 0, i16 noundef zeroext 29, i8 noundef zeroext 1) #3
  call void @llvm.lifetime.start.p0(i64 516, ptr nonnull %11) #3
  call void @libxsmm_generator_mateltwise_aarch64_init_micro_kernel_config_fullvector(ptr noundef %0, ptr noundef nonnull %11, ptr noundef %197) #3
  %198 = load i32, ptr %14, align 4, !tbaa !5
  %199 = load i32, ptr %15, align 4, !tbaa !10
  %200 = load i32, ptr %16, align 4, !tbaa !11
  %201 = load i32, ptr %17, align 4, !tbaa !12
  %202 = load i32, ptr %18, align 4, !tbaa !13
  call void @libxsmm_generator_transform_norm_to_normt_64bit_aarch64_asimd_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef %198, i32 noundef %199, i32 noundef %200, i32 noundef %201, i32 noundef %202, ptr noundef nonnull %11, ptr noundef %197) #3
  call void @llvm.lifetime.end.p0(i64 516, ptr nonnull %11) #3
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %10) #3
  br label %362

203:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %12) #3
  %204 = load i32, ptr %4, align 1, !tbaa !19
  %205 = getelementptr inbounds i8, ptr %4, i64 4
  %206 = load i32, ptr %205, align 1, !tbaa !22
  %207 = lshr i32 %206, 1
  %208 = getelementptr inbounds i8, ptr %4, i64 8
  %209 = load i32, ptr %208, align 1, !tbaa !20
  %210 = getelementptr inbounds i8, ptr %4, i64 12
  %211 = load i32, ptr %210, align 1, !tbaa !23
  %212 = lshr i32 %211, 1
  %213 = call ptr @libxsmm_meltw_descriptor_init2(ptr noundef nonnull %12, i32 noundef 1, i32 noundef 15, i32 noundef 15, i32 noundef 1, i32 noundef 1, i32 noundef %204, i32 noundef %207, i32 noundef %209, i32 noundef %212, i32 noundef 0, i32 noundef 0, i16 noundef zeroext 0, i16 noundef zeroext 29, i8 noundef zeroext 1) #3
  call void @llvm.lifetime.start.p0(i64 516, ptr nonnull %13) #3
  call void @libxsmm_generator_mateltwise_aarch64_init_micro_kernel_config_fullvector(ptr noundef %0, ptr noundef nonnull %13, ptr noundef %213) #3
  %214 = load i32, ptr %14, align 4, !tbaa !5
  %215 = load i32, ptr %15, align 4, !tbaa !10
  %216 = load i32, ptr %16, align 4, !tbaa !11
  %217 = load i32, ptr %17, align 4, !tbaa !12
  %218 = load i32, ptr %18, align 4, !tbaa !13
  call void @libxsmm_generator_transform_norm_to_normt_32bit_aarch64_asimd_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef %214, i32 noundef %215, i32 noundef %216, i32 noundef %217, i32 noundef %218, ptr noundef nonnull %13, ptr noundef %213) #3
  call void @llvm.lifetime.end.p0(i64 516, ptr nonnull %13) #3
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %12) #3
  br label %362

219:                                              ; preds = %147
  %220 = getelementptr inbounds i8, ptr %0, i64 28
  %221 = load i32, ptr %220, align 4, !tbaa !24
  %222 = add i32 %221, -2301
  %or.cond = icmp ult i32 %222, 100
  %223 = load i32, ptr %14, align 4, !tbaa !5
  %224 = load i32, ptr %15, align 4, !tbaa !10
  %225 = load i32, ptr %16, align 4, !tbaa !11
  %226 = load i32, ptr %17, align 4, !tbaa !12
  %227 = load i32, ptr %18, align 4, !tbaa !13
  br i1 %or.cond, label %228, label %229

228:                                              ; preds = %219
  tail call void @libxsmm_generator_transform_vnni2_to_vnni2t_16bit_aarch64_sve_microkernel(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %223, i32 noundef %224, i32 noundef %225, i32 noundef %226, i32 noundef %227, ptr noundef %3, ptr noundef nonnull %4)
  br label %362

229:                                              ; preds = %219
  tail call void @libxsmm_generator_transform_vnni2_to_vnni2t_16bit_aarch64_asimd_microkernel(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %223, i32 noundef %224, i32 noundef %225, i32 noundef %226, i32 noundef %227, ptr noundef %3, ptr noundef nonnull %4) #3
  br label %362

230:                                              ; preds = %147
  %231 = getelementptr inbounds i8, ptr %0, i64 28
  %232 = load i32, ptr %231, align 4, !tbaa !24
  %233 = add i32 %232, -2301
  %or.cond333 = icmp ult i32 %233, 100
  %234 = load i32, ptr %14, align 4, !tbaa !5
  %235 = load i32, ptr %15, align 4, !tbaa !10
  %236 = load i32, ptr %16, align 4, !tbaa !11
  %237 = load i32, ptr %17, align 4, !tbaa !12
  %238 = load i32, ptr %18, align 4, !tbaa !13
  br i1 %or.cond333, label %239, label %240

239:                                              ; preds = %230
  tail call void @libxsmm_generator_transform_vnni4_to_vnni4t_16bit_aarch64_sve_microkernel(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %234, i32 noundef %235, i32 noundef %236, i32 noundef %237, i32 noundef %238, ptr noundef %3, ptr noundef nonnull %4)
  br label %362

240:                                              ; preds = %230
  tail call void @libxsmm_generator_transform_vnni4_to_vnni4t_16bit_aarch64_asimd_microkernel(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %234, i32 noundef %235, i32 noundef %236, i32 noundef %237, i32 noundef %238, ptr noundef %3, ptr noundef nonnull %4) #3
  br label %362

241:                                              ; preds = %147
  %242 = getelementptr inbounds i8, ptr %0, i64 28
  %243 = load i32, ptr %242, align 4, !tbaa !24
  %244 = add i32 %243, -2301
  %or.cond334 = icmp ult i32 %244, 100
  br i1 %or.cond334, label %245, label %252

245:                                              ; preds = %241
  %246 = load i32, ptr %2, align 4, !tbaa !15
  %247 = load i32, ptr %14, align 4, !tbaa !5
  %248 = load i32, ptr %15, align 4, !tbaa !10
  %249 = load i32, ptr %16, align 4, !tbaa !11
  %250 = load i32, ptr %17, align 4, !tbaa !12
  %251 = load i32, ptr %18, align 4, !tbaa !13
  tail call void @libxsmm_generator_transform_norm_to_vnni2_16bit_aarch64_sve_microkernel(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %246, i32 noundef %247, i32 noundef %248, i32 noundef %249, i32 noundef %250, i32 noundef %251, ptr noundef %3, ptr noundef nonnull %4, i32 noundef 0)
  br label %362

252:                                              ; preds = %241
  %253 = load i32, ptr %14, align 4, !tbaa !5
  %254 = load i32, ptr %15, align 4, !tbaa !10
  %255 = load i32, ptr %16, align 4, !tbaa !11
  %256 = load i32, ptr %17, align 4, !tbaa !12
  %257 = load i32, ptr %18, align 4, !tbaa !13
  tail call void @libxsmm_generator_transform_norm_to_vnni2_16bit_aarch64_asimd_microkernel(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %253, i32 noundef %254, i32 noundef %255, i32 noundef %256, i32 noundef %257, ptr noundef %3, ptr noundef nonnull %4, i32 noundef 0) #3
  br label %362

258:                                              ; preds = %147
  %259 = getelementptr inbounds i8, ptr %0, i64 28
  %260 = load i32, ptr %259, align 4, !tbaa !24
  %261 = add i32 %260, -2301
  %or.cond335 = icmp ult i32 %261, 100
  br i1 %or.cond335, label %262, label %269

262:                                              ; preds = %258
  %263 = load i32, ptr %2, align 4, !tbaa !15
  %264 = load i32, ptr %14, align 4, !tbaa !5
  %265 = load i32, ptr %15, align 4, !tbaa !10
  %266 = load i32, ptr %16, align 4, !tbaa !11
  %267 = load i32, ptr %17, align 4, !tbaa !12
  %268 = load i32, ptr %18, align 4, !tbaa !13
  tail call void @libxsmm_generator_transform_norm_to_vnni2_16bit_aarch64_sve_microkernel(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %263, i32 noundef %264, i32 noundef %265, i32 noundef %266, i32 noundef %267, i32 noundef %268, ptr noundef %3, ptr noundef nonnull %4, i32 noundef 1)
  br label %362

269:                                              ; preds = %258
  %270 = load i32, ptr %14, align 4, !tbaa !5
  %271 = load i32, ptr %15, align 4, !tbaa !10
  %272 = load i32, ptr %16, align 4, !tbaa !11
  %273 = load i32, ptr %17, align 4, !tbaa !12
  %274 = load i32, ptr %18, align 4, !tbaa !13
  tail call void @libxsmm_generator_transform_norm_to_vnni2_16bit_aarch64_asimd_microkernel(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %270, i32 noundef %271, i32 noundef %272, i32 noundef %273, i32 noundef %274, ptr noundef %3, ptr noundef nonnull %4, i32 noundef 1) #3
  br label %362

275:                                              ; preds = %147
  %276 = getelementptr inbounds i8, ptr %0, i64 28
  %277 = load i32, ptr %276, align 4, !tbaa !24
  %278 = add i32 %277, -2301
  %or.cond336 = icmp ult i32 %278, 100
  br i1 %or.cond336, label %279, label %286

279:                                              ; preds = %275
  %280 = load i32, ptr %2, align 4, !tbaa !15
  %281 = load i32, ptr %14, align 4, !tbaa !5
  %282 = load i32, ptr %15, align 4, !tbaa !10
  %283 = load i32, ptr %16, align 4, !tbaa !11
  %284 = load i32, ptr %17, align 4, !tbaa !12
  %285 = load i32, ptr %18, align 4, !tbaa !13
  tail call void @libxsmm_generator_transform_norm_to_vnni4_16bit_aarch64_sve_microkernel(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %280, i32 noundef %281, i32 noundef %282, i32 noundef %283, i32 noundef %284, i32 noundef %285, ptr noundef %3, ptr noundef nonnull %4, i32 noundef 0)
  br label %362

286:                                              ; preds = %275
  %287 = load i32, ptr %14, align 4, !tbaa !5
  %288 = load i32, ptr %15, align 4, !tbaa !10
  %289 = load i32, ptr %16, align 4, !tbaa !11
  %290 = load i32, ptr %17, align 4, !tbaa !12
  %291 = load i32, ptr %18, align 4, !tbaa !13
  tail call void @libxsmm_generator_transform_norm_to_vnni4_16bit_aarch64_asimd_microkernel(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %287, i32 noundef %288, i32 noundef %289, i32 noundef %290, i32 noundef %291, ptr noundef %3, ptr noundef nonnull %4, i32 noundef 0) #3
  br label %362

292:                                              ; preds = %147
  %293 = getelementptr inbounds i8, ptr %0, i64 28
  %294 = load i32, ptr %293, align 4, !tbaa !24
  %295 = add i32 %294, -2301
  %or.cond337 = icmp ult i32 %295, 100
  br i1 %or.cond337, label %296, label %303

296:                                              ; preds = %292
  %297 = load i32, ptr %2, align 4, !tbaa !15
  %298 = load i32, ptr %14, align 4, !tbaa !5
  %299 = load i32, ptr %15, align 4, !tbaa !10
  %300 = load i32, ptr %16, align 4, !tbaa !11
  %301 = load i32, ptr %17, align 4, !tbaa !12
  %302 = load i32, ptr %18, align 4, !tbaa !13
  tail call void @libxsmm_generator_transform_norm_to_vnni4_16bit_aarch64_sve_microkernel(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %297, i32 noundef %298, i32 noundef %299, i32 noundef %300, i32 noundef %301, i32 noundef %302, ptr noundef %3, ptr noundef nonnull %4, i32 noundef 1)
  br label %362

303:                                              ; preds = %292
  %304 = load i32, ptr %14, align 4, !tbaa !5
  %305 = load i32, ptr %15, align 4, !tbaa !10
  %306 = load i32, ptr %16, align 4, !tbaa !11
  %307 = load i32, ptr %17, align 4, !tbaa !12
  %308 = load i32, ptr %18, align 4, !tbaa !13
  tail call void @libxsmm_generator_transform_norm_to_vnni4_16bit_aarch64_asimd_microkernel(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %304, i32 noundef %305, i32 noundef %306, i32 noundef %307, i32 noundef %308, ptr noundef %3, ptr noundef nonnull %4, i32 noundef 1) #3
  br label %362

309:                                              ; preds = %147, %147, %147
  %310 = load i32, ptr %14, align 4, !tbaa !5
  %311 = load i32, ptr %15, align 4, !tbaa !10
  %312 = load i32, ptr %16, align 4, !tbaa !11
  %313 = load i32, ptr %17, align 4, !tbaa !12
  %314 = load i32, ptr %18, align 4, !tbaa !13
  tail call void @libxsmm_generator_transform_norm_padnm_mod2_16bit_aarch64_asimd_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef %310, i32 noundef %311, i32 noundef %312, i32 noundef %313, i32 noundef %314, ptr noundef %3, ptr noundef nonnull %4) #3
  br label %362

315:                                              ; preds = %147
  %316 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !21
  %317 = icmp ugt i32 %316, 1
  %318 = load i32, ptr @libxsmm_verbosity, align 4
  %319 = select i1 %317, i32 %318, i32 1
  tail call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90000, ptr noundef nonnull @__func__.libxsmm_generator_transform_aarch64_sve_microkernel, ptr noundef nonnull @.str, i32 noundef 891, i32 noundef %319) #3
  br label %362

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

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

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

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

332:                                              ; preds = %329, %323
  %333 = load i16, ptr %23, align 1, !tbaa !16
  switch i16 %333, label %352 [
    i16 29, label %334
    i16 54, label %340
    i16 57, label %346
  ]

334:                                              ; preds = %332
  %335 = load i32, ptr %14, align 4, !tbaa !5
  %336 = load i32, ptr %15, align 4, !tbaa !10
  %337 = load i32, ptr %16, align 4, !tbaa !11
  %338 = load i32, ptr %17, align 4, !tbaa !12
  %339 = load i32, ptr %18, align 4, !tbaa !13
  tail call void @libxsmm_generator_transform_norm_to_normt_08bit_aarch64_asimd_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef %335, i32 noundef %336, i32 noundef %337, i32 noundef %338, i32 noundef %339, ptr noundef %3, ptr noundef nonnull %4) #3
  br label %362

340:                                              ; preds = %332
  %341 = load i32, ptr %14, align 4, !tbaa !5
  %342 = load i32, ptr %15, align 4, !tbaa !10
  %343 = load i32, ptr %16, align 4, !tbaa !11
  %344 = load i32, ptr %17, align 4, !tbaa !12
  %345 = load i32, ptr %18, align 4, !tbaa !13
  tail call void @libxsmm_generator_transform_norm_to_vnni4_08bit_aarch64_asimd_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef %341, i32 noundef %342, i32 noundef %343, i32 noundef %344, i32 noundef %345, ptr noundef %3, ptr noundef nonnull %4, i32 noundef 0) #3
  br label %362

346:                                              ; preds = %332
  %347 = load i32, ptr %14, align 4, !tbaa !5
  %348 = load i32, ptr %15, align 4, !tbaa !10
  %349 = load i32, ptr %16, align 4, !tbaa !11
  %350 = load i32, ptr %17, align 4, !tbaa !12
  %351 = load i32, ptr %18, align 4, !tbaa !13
  tail call void @libxsmm_generator_transform_norm_to_vnni4_08bit_aarch64_asimd_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef %347, i32 noundef %348, i32 noundef %349, i32 noundef %350, i32 noundef %351, ptr noundef %3, ptr noundef nonnull %4, i32 noundef 1) #3
  br label %362

352:                                              ; preds = %332
  %353 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !21
  %354 = icmp ugt i32 %353, 1
  %355 = load i32, ptr @libxsmm_verbosity, align 4
  %356 = select i1 %354, i32 %355, i32 1
  tail call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90000, ptr noundef nonnull @__func__.libxsmm_generator_transform_aarch64_sve_microkernel, ptr noundef nonnull @.str, i32 noundef 914, i32 noundef %356) #3
  br label %362

357:                                              ; preds = %329, %326
  %358 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !21
  %359 = icmp ugt i32 %358, 1
  %360 = load i32, ptr @libxsmm_verbosity, align 4
  %361 = select i1 %359, i32 %360, i32 1
  tail call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90000, ptr noundef nonnull @__func__.libxsmm_generator_transform_aarch64_sve_microkernel, ptr noundef nonnull @.str, i32 noundef 918, i32 noundef %361) #3
  br label %362

362:                                              ; preds = %92, %155, %187, %229, %228, %252, %245, %286, %279, %296, %303, %309, %262, %269, %239, %240, %203, %171, %149, %334, %346, %340, %118, %357, %352, %315, %124, %98, %72, %63, %51, %41, %30
  ret void
}

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

declare void @libxsmm_generator_transform_norm_to_normt_64bit_aarch64_asimd_microkernel(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @libxsmm_generator_transform_norm_to_normt_32bit_aarch64_asimd_microkernel(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @libxsmm_generator_transform_norm_to_normt_16bit_aarch64_asimd_microkernel(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare ptr @libxsmm_meltw_descriptor_init2(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i16 noundef zeroext, i16 noundef zeroext, i8 noundef zeroext) local_unnamed_addr #2

declare void @libxsmm_generator_mateltwise_aarch64_init_micro_kernel_config_fullvector(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @libxsmm_generator_transform_vnni2_to_vnni2t_16bit_aarch64_asimd_microkernel(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @libxsmm_generator_transform_vnni4_to_vnni4t_16bit_aarch64_asimd_microkernel(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @libxsmm_generator_transform_norm_to_vnni2_16bit_aarch64_asimd_microkernel(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

declare void @libxsmm_generator_transform_norm_to_vnni4_16bit_aarch64_asimd_microkernel(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

declare void @libxsmm_generator_transform_norm_padnm_mod2_16bit_aarch64_asimd_microkernel(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @libxsmm_generator_transform_norm_to_normt_08bit_aarch64_asimd_microkernel(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @libxsmm_generator_transform_norm_to_vnni4_08bit_aarch64_asimd_microkernel(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

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

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

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


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass