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

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

@.str = external hidden unnamed_addr constant [90 x i8], align 1
@libxsmm_ninit = external global i32, align 4
@libxsmm_verbosity = external global i32, align 4
@__func__.libxsmm_generator_transform_avx_microkernel = external hidden unnamed_addr constant [44 x i8], align 1

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

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

; 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_normt_128bit_avx_microkernel(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_transform_avx_microkernel(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4) #2 {
  %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 i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca %struct.libxsmm_descriptor_blob, align 1
  %19 = alloca ptr, align 8
  %20 = alloca %struct.libxsmm_mateltwise_kernel_config_struct, align 4
  %21 = alloca %struct.libxsmm_descriptor_blob, align 1
  %22 = alloca ptr, align 8
  %23 = alloca %struct.libxsmm_mateltwise_kernel_config_struct, align 4
  %24 = alloca %struct.libxsmm_descriptor_blob, align 1
  %25 = alloca ptr, align 8
  %26 = alloca %struct.libxsmm_mateltwise_kernel_config_struct, align 4
  %27 = alloca %struct.libxsmm_descriptor_blob, align 1
  %28 = alloca ptr, align 8
  %29 = alloca %struct.libxsmm_mateltwise_kernel_config_struct, align 4
  %30 = alloca %struct.libxsmm_descriptor_blob, align 1
  %31 = alloca ptr, align 8
  %32 = alloca %struct.libxsmm_mateltwise_kernel_config_struct, align 4
  %33 = alloca %struct.libxsmm_descriptor_blob, align 1
  %34 = alloca ptr, align 8
  %35 = 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 8, ptr %11, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #3
  store i32 9, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #3
  store i32 0, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #3
  store i32 2, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #3
  store i32 32, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #3
  store i32 80, ptr %16, align 4, !tbaa !9
  %36 = load ptr, ptr %6, align 8, !tbaa !5
  %37 = load ptr, ptr %9, align 8, !tbaa !5
  %38 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %37, i32 0, i32 14
  %39 = load i32, ptr %38, align 4, !tbaa !11
  %40 = load ptr, ptr %8, align 8, !tbaa !5
  %41 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %40, i32 0, i32 0
  %42 = load i32, ptr %41, align 4, !tbaa !13
  %43 = load i32, ptr %15, align 4, !tbaa !9
  %44 = load i32, ptr %11, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %36, i32 noundef %39, i32 noundef %42, i32 noundef 127, i32 noundef 0, i32 noundef %43, i32 noundef %44, i32 noundef 0)
  %45 = load ptr, ptr %6, align 8, !tbaa !5
  %46 = load ptr, ptr %9, align 8, !tbaa !5
  %47 = getelementptr inbounds %struct.libxsmm_mateltwise_kernel_config_struct, ptr %46, i32 0, i32 14
  %48 = load i32, ptr %47, align 4, !tbaa !11
  %49 = load ptr, ptr %8, align 8, !tbaa !5
  %50 = getelementptr inbounds %struct.libxsmm_mateltwise_gp_reg_mapping_struct, ptr %49, i32 0, i32 0
  %51 = load i32, ptr %50, align 4, !tbaa !13
  %52 = load i32, ptr %16, align 4, !tbaa !9
  %53 = load i32, ptr %12, align 4, !tbaa !9
  call void @libxsmm_x86_instruction_alu_mem(ptr noundef %45, i32 noundef %48, i32 noundef %51, i32 noundef 127, i32 noundef 0, i32 noundef %52, i32 noundef %53, i32 noundef 0)
  %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 !15
  %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 !15
  %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 !18
  %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 !19
  %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_avx_microkernel, ptr noundef @.str, i32 noundef 776, i32 noundef %81)
  store i32 1, ptr %17, align 4
  br label %900

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 !20
  %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 !21
  %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_avx_microkernel, ptr noundef @.str, i32 noundef 780, i32 noundef %98)
  store i32 1, ptr %17, align 4
  br label %900

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 !15
  %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 !15
  %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 !15
  %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 !15
  %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 !15
  %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 !18
  %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 !19
  %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_avx_microkernel, ptr noundef @.str, i32 noundef 789, i32 noundef %146)
  store i32 1, ptr %17, align 4
  br label %900

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 !15
  %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 !15
  %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 !18
  %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 !18
  %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 !21
  %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_avx_microkernel, ptr noundef @.str, i32 noundef 795, i32 noundef %180)
  store i32 1, ptr %17, align 4
  br label %900

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 !18
  %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 !21
  %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_avx_microkernel, ptr noundef @.str, i32 noundef 800, i32 noundef %198)
  store i32 1, ptr %17, align 4
  br label %900

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 %244

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 %244

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 !15
  %223 = zext i16 %222 to i32
  %224 = icmp eq i32 %223, 29
  br i1 %224, label %225, label %234

225:                                              ; preds = %219
  %226 = load ptr, ptr %6, align 8, !tbaa !5
  %227 = load ptr, ptr %7, align 8, !tbaa !5
  %228 = load i32, ptr %11, align 4, !tbaa !9
  %229 = load i32, ptr %12, align 4, !tbaa !9
  %230 = load i32, ptr %13, align 4, !tbaa !9
  %231 = load i32, ptr %14, align 4, !tbaa !9
  %232 = load ptr, ptr %9, align 8, !tbaa !5
  %233 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_normt_64bit_avx_microkernel(ptr noundef %226, ptr noundef %227, i32 noundef %228, i32 noundef %229, i32 noundef %230, i32 noundef %231, ptr noundef %232, ptr noundef %233)
  br label %243

234:                                              ; preds = %219
  %235 = load ptr, ptr %6, align 8, !tbaa !5
  %236 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %237 = icmp ult i32 1, %236
  br i1 %237, label %238, label %240

238:                                              ; preds = %234
  %239 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %241

240:                                              ; preds = %234
  br label %241

241:                                              ; preds = %240, %238
  %242 = phi i32 [ %239, %238 ], [ 1, %240 ]
  call void @libxsmm_handle_error(ptr noundef %235, i32 noundef 90000, ptr noundef @__func__.libxsmm_generator_transform_avx_microkernel, ptr noundef @.str, i32 noundef 817, i32 noundef %242)
  store i32 1, ptr %17, align 4
  br label %900

243:                                              ; preds = %225
  br label %899

244:                                              ; preds = %215, %211
  %245 = load ptr, ptr %10, align 8, !tbaa !5
  %246 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %245, i32 noundef 0)
  %247 = icmp eq i32 8, %246
  br i1 %247, label %248, label %252

248:                                              ; preds = %244
  %249 = load ptr, ptr %10, align 8, !tbaa !5
  %250 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %249, i32 noundef 3)
  %251 = icmp eq i32 8, %250
  br i1 %251, label %260, label %252

252:                                              ; preds = %248, %244
  %253 = load ptr, ptr %10, align 8, !tbaa !5
  %254 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %253, i32 noundef 0)
  %255 = icmp eq i32 1, %254
  br i1 %255, label %256, label %285

256:                                              ; preds = %252
  %257 = load ptr, ptr %10, align 8, !tbaa !5
  %258 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %257, i32 noundef 3)
  %259 = icmp eq i32 1, %258
  br i1 %259, label %260, label %285

260:                                              ; preds = %256, %248
  %261 = load ptr, ptr %10, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %261, i32 0, i32 10
  %263 = load i16, ptr %262, align 1, !tbaa !15
  %264 = zext i16 %263 to i32
  %265 = icmp eq i32 %264, 29
  br i1 %265, label %266, label %275

266:                                              ; preds = %260
  %267 = load ptr, ptr %6, align 8, !tbaa !5
  %268 = load ptr, ptr %7, align 8, !tbaa !5
  %269 = load i32, ptr %11, align 4, !tbaa !9
  %270 = load i32, ptr %12, align 4, !tbaa !9
  %271 = load i32, ptr %13, align 4, !tbaa !9
  %272 = load i32, ptr %14, align 4, !tbaa !9
  %273 = load ptr, ptr %9, align 8, !tbaa !5
  %274 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_normt_32bit_avx_microkernel(ptr noundef %267, ptr noundef %268, i32 noundef %269, i32 noundef %270, i32 noundef %271, i32 noundef %272, ptr noundef %273, ptr noundef %274)
  br label %284

275:                                              ; preds = %260
  %276 = load ptr, ptr %6, align 8, !tbaa !5
  %277 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %278 = icmp ult i32 1, %277
  br i1 %278, label %279, label %281

279:                                              ; preds = %275
  %280 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %282

281:                                              ; preds = %275
  br label %282

282:                                              ; preds = %281, %279
  %283 = phi i32 [ %280, %279 ], [ 1, %281 ]
  call void @libxsmm_handle_error(ptr noundef %276, i32 noundef 90000, ptr noundef @__func__.libxsmm_generator_transform_avx_microkernel, ptr noundef @.str, i32 noundef 829, i32 noundef %283)
  store i32 1, ptr %17, align 4
  br label %900

284:                                              ; preds = %266
  br label %898

285:                                              ; preds = %256, %252
  %286 = load ptr, ptr %10, align 8, !tbaa !5
  %287 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %286, i32 noundef 0)
  %288 = icmp eq i32 10, %287
  br i1 %288, label %289, label %293

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

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

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

301:                                              ; preds = %297, %293
  %302 = load ptr, ptr %10, align 8, !tbaa !5
  %303 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %302, i32 noundef 0)
  %304 = icmp eq i32 2, %303
  br i1 %304, label %305, label %682

305:                                              ; preds = %301
  %306 = load ptr, ptr %10, align 8, !tbaa !5
  %307 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %306, i32 noundef 3)
  %308 = icmp eq i32 2, %307
  br i1 %308, label %309, label %682

309:                                              ; preds = %305, %297, %289
  %310 = load ptr, ptr %10, align 8, !tbaa !5
  %311 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %310, i32 0, i32 10
  %312 = load i16, ptr %311, align 1, !tbaa !15
  %313 = zext i16 %312 to i32
  %314 = icmp eq i32 %313, 29
  br i1 %314, label %315, label %324

315:                                              ; preds = %309
  %316 = load ptr, ptr %6, align 8, !tbaa !5
  %317 = load ptr, ptr %7, align 8, !tbaa !5
  %318 = load i32, ptr %11, align 4, !tbaa !9
  %319 = load i32, ptr %12, align 4, !tbaa !9
  %320 = load i32, ptr %13, align 4, !tbaa !9
  %321 = load i32, ptr %14, align 4, !tbaa !9
  %322 = load ptr, ptr %9, align 8, !tbaa !5
  %323 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_normt_16bit_avx_microkernel(ptr noundef %316, ptr noundef %317, i32 noundef %318, i32 noundef %319, i32 noundef %320, i32 noundef %321, ptr noundef %322, ptr noundef %323)
  br label %681

324:                                              ; preds = %309
  %325 = load ptr, ptr %10, align 8, !tbaa !5
  %326 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %325, i32 0, i32 10
  %327 = load i16, ptr %326, align 1, !tbaa !15
  %328 = zext i16 %327 to i32
  %329 = icmp eq i32 %328, 73
  br i1 %329, label %330, label %355

330:                                              ; preds = %324
  call void @llvm.lifetime.start.p0(i64 96, ptr %18) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #3
  %331 = load ptr, ptr %10, align 8, !tbaa !5
  %332 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %331, i32 0, i32 0
  %333 = load i32, ptr %332, align 1, !tbaa !18
  %334 = udiv i32 %333, 8
  %335 = load ptr, ptr %10, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %335, i32 0, i32 1
  %337 = load i32, ptr %336, align 1, !tbaa !20
  %338 = load ptr, ptr %10, align 8, !tbaa !5
  %339 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %338, i32 0, i32 2
  %340 = load i32, ptr %339, align 1, !tbaa !19
  %341 = udiv i32 %340, 8
  %342 = load ptr, ptr %10, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %342, i32 0, i32 3
  %344 = load i32, ptr %343, align 1, !tbaa !21
  %345 = call ptr @libxsmm_meltw_descriptor_init2(ptr noundef %18, i32 noundef 0, i32 noundef 15, i32 noundef 15, i32 noundef 0, i32 noundef 0, i32 noundef %334, i32 noundef %337, i32 noundef %341, i32 noundef %344, i32 noundef 0, i32 noundef 0, i16 noundef zeroext 0, i16 noundef zeroext 29, i8 noundef zeroext 1)
  store ptr %345, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 516, ptr %20) #3
  %346 = load ptr, ptr %6, align 8, !tbaa !5
  %347 = load ptr, ptr %19, align 8, !tbaa !5
  call void @libxsmm_generator_mateltwise_init_micro_kernel_config_fullvector(ptr noundef %346, ptr noundef %20, ptr noundef %347)
  %348 = load ptr, ptr %6, align 8, !tbaa !5
  %349 = load ptr, ptr %7, align 8, !tbaa !5
  %350 = load i32, ptr %11, align 4, !tbaa !9
  %351 = load i32, ptr %12, align 4, !tbaa !9
  %352 = load i32, ptr %13, align 4, !tbaa !9
  %353 = load i32, ptr %14, align 4, !tbaa !9
  %354 = load ptr, ptr %19, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_normt_128bit_avx_microkernel(ptr noundef %348, ptr noundef %349, i32 noundef %350, i32 noundef %351, i32 noundef %352, i32 noundef %353, ptr noundef %20, ptr noundef %354)
  call void @llvm.lifetime.end.p0(i64 516, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 96, ptr %18) #3
  br label %680

355:                                              ; preds = %324
  %356 = load ptr, ptr %10, align 8, !tbaa !5
  %357 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %356, i32 0, i32 10
  %358 = load i16, ptr %357, align 1, !tbaa !15
  %359 = zext i16 %358 to i32
  %360 = icmp eq i32 %359, 56
  br i1 %360, label %361, label %386

361:                                              ; preds = %355
  call void @llvm.lifetime.start.p0(i64 96, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #3
  %362 = load ptr, ptr %10, align 8, !tbaa !5
  %363 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %362, i32 0, i32 0
  %364 = load i32, ptr %363, align 1, !tbaa !18
  %365 = udiv i32 %364, 4
  %366 = load ptr, ptr %10, align 8, !tbaa !5
  %367 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %366, i32 0, i32 1
  %368 = load i32, ptr %367, align 1, !tbaa !20
  %369 = load ptr, ptr %10, align 8, !tbaa !5
  %370 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %369, i32 0, i32 2
  %371 = load i32, ptr %370, align 1, !tbaa !19
  %372 = udiv i32 %371, 4
  %373 = load ptr, ptr %10, align 8, !tbaa !5
  %374 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %373, i32 0, i32 3
  %375 = load i32, ptr %374, align 1, !tbaa !21
  %376 = call ptr @libxsmm_meltw_descriptor_init2(ptr noundef %21, i32 noundef 0, i32 noundef 15, i32 noundef 15, i32 noundef 0, i32 noundef 0, i32 noundef %365, i32 noundef %368, i32 noundef %372, i32 noundef %375, i32 noundef 0, i32 noundef 0, i16 noundef zeroext 0, i16 noundef zeroext 29, i8 noundef zeroext 1)
  store ptr %376, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 516, ptr %23) #3
  %377 = load ptr, ptr %6, align 8, !tbaa !5
  %378 = load ptr, ptr %22, align 8, !tbaa !5
  call void @libxsmm_generator_mateltwise_init_micro_kernel_config_fullvector(ptr noundef %377, ptr noundef %23, ptr noundef %378)
  %379 = load ptr, ptr %6, align 8, !tbaa !5
  %380 = load ptr, ptr %7, align 8, !tbaa !5
  %381 = load i32, ptr %11, align 4, !tbaa !9
  %382 = load i32, ptr %12, align 4, !tbaa !9
  %383 = load i32, ptr %13, align 4, !tbaa !9
  %384 = load i32, ptr %14, align 4, !tbaa !9
  %385 = load ptr, ptr %22, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_normt_64bit_avx_microkernel(ptr noundef %379, ptr noundef %380, i32 noundef %381, i32 noundef %382, i32 noundef %383, i32 noundef %384, ptr noundef %23, ptr noundef %385)
  call void @llvm.lifetime.end.p0(i64 516, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 96, ptr %21) #3
  br label %679

386:                                              ; preds = %355
  %387 = load ptr, ptr %10, align 8, !tbaa !5
  %388 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %387, i32 0, i32 10
  %389 = load i16, ptr %388, align 1, !tbaa !15
  %390 = zext i16 %389 to i32
  %391 = icmp eq i32 %390, 31
  br i1 %391, label %392, label %417

392:                                              ; preds = %386
  call void @llvm.lifetime.start.p0(i64 96, ptr %24) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #3
  %393 = load ptr, ptr %10, align 8, !tbaa !5
  %394 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %393, i32 0, i32 0
  %395 = load i32, ptr %394, align 1, !tbaa !18
  %396 = udiv i32 %395, 2
  %397 = load ptr, ptr %10, align 8, !tbaa !5
  %398 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %397, i32 0, i32 1
  %399 = load i32, ptr %398, align 1, !tbaa !20
  %400 = load ptr, ptr %10, align 8, !tbaa !5
  %401 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %400, i32 0, i32 2
  %402 = load i32, ptr %401, align 1, !tbaa !19
  %403 = udiv i32 %402, 2
  %404 = load ptr, ptr %10, align 8, !tbaa !5
  %405 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %404, i32 0, i32 3
  %406 = load i32, ptr %405, align 1, !tbaa !21
  %407 = call ptr @libxsmm_meltw_descriptor_init2(ptr noundef %24, i32 noundef 1, i32 noundef 15, i32 noundef 15, i32 noundef 1, i32 noundef 1, i32 noundef %396, i32 noundef %399, i32 noundef %403, i32 noundef %406, i32 noundef 0, i32 noundef 0, i16 noundef zeroext 0, i16 noundef zeroext 29, i8 noundef zeroext 1)
  store ptr %407, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 516, ptr %26) #3
  %408 = load ptr, ptr %6, align 8, !tbaa !5
  %409 = load ptr, ptr %25, align 8, !tbaa !5
  call void @libxsmm_generator_mateltwise_init_micro_kernel_config_fullvector(ptr noundef %408, ptr noundef %26, ptr noundef %409)
  %410 = load ptr, ptr %6, align 8, !tbaa !5
  %411 = load ptr, ptr %7, align 8, !tbaa !5
  %412 = load i32, ptr %11, align 4, !tbaa !9
  %413 = load i32, ptr %12, align 4, !tbaa !9
  %414 = load i32, ptr %13, align 4, !tbaa !9
  %415 = load i32, ptr %14, align 4, !tbaa !9
  %416 = load ptr, ptr %25, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_normt_32bit_avx_microkernel(ptr noundef %410, ptr noundef %411, i32 noundef %412, i32 noundef %413, i32 noundef %414, i32 noundef %415, ptr noundef %26, ptr noundef %416)
  call void @llvm.lifetime.end.p0(i64 516, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 96, ptr %24) #3
  br label %678

417:                                              ; preds = %386
  %418 = load ptr, ptr %10, align 8, !tbaa !5
  %419 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %418, i32 0, i32 10
  %420 = load i16, ptr %419, align 1, !tbaa !15
  %421 = zext i16 %420 to i32
  %422 = icmp eq i32 %421, 75
  br i1 %422, label %423, label %448

423:                                              ; preds = %417
  call void @llvm.lifetime.start.p0(i64 96, ptr %27) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #3
  %424 = load ptr, ptr %10, align 8, !tbaa !5
  %425 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %424, i32 0, i32 0
  %426 = load i32, ptr %425, align 1, !tbaa !18
  %427 = load ptr, ptr %10, align 8, !tbaa !5
  %428 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %427, i32 0, i32 1
  %429 = load i32, ptr %428, align 1, !tbaa !20
  %430 = udiv i32 %429, 8
  %431 = load ptr, ptr %10, align 8, !tbaa !5
  %432 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %431, i32 0, i32 2
  %433 = load i32, ptr %432, align 1, !tbaa !19
  %434 = load ptr, ptr %10, align 8, !tbaa !5
  %435 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %434, i32 0, i32 3
  %436 = load i32, ptr %435, align 1, !tbaa !21
  %437 = udiv i32 %436, 8
  %438 = call ptr @libxsmm_meltw_descriptor_init2(ptr noundef %27, i32 noundef 0, i32 noundef 15, i32 noundef 15, i32 noundef 0, i32 noundef 0, i32 noundef %426, i32 noundef %430, i32 noundef %433, i32 noundef %437, i32 noundef 0, i32 noundef 0, i16 noundef zeroext 0, i16 noundef zeroext 29, i8 noundef zeroext 1)
  store ptr %438, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 516, ptr %29) #3
  %439 = load ptr, ptr %6, align 8, !tbaa !5
  %440 = load ptr, ptr %28, align 8, !tbaa !5
  call void @libxsmm_generator_mateltwise_init_micro_kernel_config_fullvector(ptr noundef %439, ptr noundef %29, ptr noundef %440)
  %441 = load ptr, ptr %6, align 8, !tbaa !5
  %442 = load ptr, ptr %7, align 8, !tbaa !5
  %443 = load i32, ptr %11, align 4, !tbaa !9
  %444 = load i32, ptr %12, align 4, !tbaa !9
  %445 = load i32, ptr %13, align 4, !tbaa !9
  %446 = load i32, ptr %14, align 4, !tbaa !9
  %447 = load ptr, ptr %28, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_normt_128bit_avx_microkernel(ptr noundef %441, ptr noundef %442, i32 noundef %443, i32 noundef %444, i32 noundef %445, i32 noundef %446, ptr noundef %29, ptr noundef %447)
  call void @llvm.lifetime.end.p0(i64 516, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 96, ptr %27) #3
  br label %677

448:                                              ; preds = %417
  %449 = load ptr, ptr %10, align 8, !tbaa !5
  %450 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %449, i32 0, i32 10
  %451 = load i16, ptr %450, align 1, !tbaa !15
  %452 = zext i16 %451 to i32
  %453 = icmp eq i32 %452, 66
  br i1 %453, label %454, label %479

454:                                              ; preds = %448
  call void @llvm.lifetime.start.p0(i64 96, ptr %30) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #3
  %455 = load ptr, ptr %10, align 8, !tbaa !5
  %456 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %455, i32 0, i32 0
  %457 = load i32, ptr %456, align 1, !tbaa !18
  %458 = load ptr, ptr %10, align 8, !tbaa !5
  %459 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %458, i32 0, i32 1
  %460 = load i32, ptr %459, align 1, !tbaa !20
  %461 = udiv i32 %460, 4
  %462 = load ptr, ptr %10, align 8, !tbaa !5
  %463 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %462, i32 0, i32 2
  %464 = load i32, ptr %463, align 1, !tbaa !19
  %465 = load ptr, ptr %10, align 8, !tbaa !5
  %466 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %465, i32 0, i32 3
  %467 = load i32, ptr %466, align 1, !tbaa !21
  %468 = udiv i32 %467, 4
  %469 = call ptr @libxsmm_meltw_descriptor_init2(ptr noundef %30, i32 noundef 0, i32 noundef 15, i32 noundef 15, i32 noundef 0, i32 noundef 0, i32 noundef %457, i32 noundef %461, i32 noundef %464, i32 noundef %468, i32 noundef 0, i32 noundef 0, i16 noundef zeroext 0, i16 noundef zeroext 29, i8 noundef zeroext 1)
  store ptr %469, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 516, ptr %32) #3
  %470 = load ptr, ptr %6, align 8, !tbaa !5
  %471 = load ptr, ptr %31, align 8, !tbaa !5
  call void @libxsmm_generator_mateltwise_init_micro_kernel_config_fullvector(ptr noundef %470, ptr noundef %32, ptr noundef %471)
  %472 = load ptr, ptr %6, align 8, !tbaa !5
  %473 = load ptr, ptr %7, align 8, !tbaa !5
  %474 = load i32, ptr %11, align 4, !tbaa !9
  %475 = load i32, ptr %12, align 4, !tbaa !9
  %476 = load i32, ptr %13, align 4, !tbaa !9
  %477 = load i32, ptr %14, align 4, !tbaa !9
  %478 = load ptr, ptr %31, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_normt_64bit_avx_microkernel(ptr noundef %472, ptr noundef %473, i32 noundef %474, i32 noundef %475, i32 noundef %476, i32 noundef %477, ptr noundef %32, ptr noundef %478)
  call void @llvm.lifetime.end.p0(i64 516, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 96, ptr %30) #3
  br label %676

479:                                              ; preds = %448
  %480 = load ptr, ptr %10, align 8, !tbaa !5
  %481 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %480, i32 0, i32 10
  %482 = load i16, ptr %481, align 1, !tbaa !15
  %483 = zext i16 %482 to i32
  %484 = icmp eq i32 %483, 67
  br i1 %484, label %485, label %510

485:                                              ; preds = %479
  call void @llvm.lifetime.start.p0(i64 96, ptr %33) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #3
  %486 = load ptr, ptr %10, align 8, !tbaa !5
  %487 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %486, i32 0, i32 0
  %488 = load i32, ptr %487, align 1, !tbaa !18
  %489 = load ptr, ptr %10, align 8, !tbaa !5
  %490 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %489, i32 0, i32 1
  %491 = load i32, ptr %490, align 1, !tbaa !20
  %492 = udiv i32 %491, 2
  %493 = load ptr, ptr %10, align 8, !tbaa !5
  %494 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %493, i32 0, i32 2
  %495 = load i32, ptr %494, align 1, !tbaa !19
  %496 = load ptr, ptr %10, align 8, !tbaa !5
  %497 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %496, i32 0, i32 3
  %498 = load i32, ptr %497, align 1, !tbaa !21
  %499 = udiv i32 %498, 2
  %500 = call ptr @libxsmm_meltw_descriptor_init2(ptr noundef %33, i32 noundef 1, i32 noundef 15, i32 noundef 15, i32 noundef 1, i32 noundef 1, i32 noundef %488, i32 noundef %492, i32 noundef %495, i32 noundef %499, i32 noundef 0, i32 noundef 0, i16 noundef zeroext 0, i16 noundef zeroext 29, i8 noundef zeroext 1)
  store ptr %500, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 516, ptr %35) #3
  %501 = load ptr, ptr %6, align 8, !tbaa !5
  %502 = load ptr, ptr %34, align 8, !tbaa !5
  call void @libxsmm_generator_mateltwise_init_micro_kernel_config_fullvector(ptr noundef %501, ptr noundef %35, ptr noundef %502)
  %503 = load ptr, ptr %6, align 8, !tbaa !5
  %504 = load ptr, ptr %7, align 8, !tbaa !5
  %505 = load i32, ptr %11, align 4, !tbaa !9
  %506 = load i32, ptr %12, align 4, !tbaa !9
  %507 = load i32, ptr %13, align 4, !tbaa !9
  %508 = load i32, ptr %14, align 4, !tbaa !9
  %509 = load ptr, ptr %34, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_normt_32bit_avx_microkernel(ptr noundef %503, ptr noundef %504, i32 noundef %505, i32 noundef %506, i32 noundef %507, i32 noundef %508, ptr noundef %35, ptr noundef %509)
  call void @llvm.lifetime.end.p0(i64 516, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 96, ptr %33) #3
  br label %675

510:                                              ; preds = %479
  %511 = load ptr, ptr %10, align 8, !tbaa !5
  %512 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %511, i32 0, i32 10
  %513 = load i16, ptr %512, align 1, !tbaa !15
  %514 = zext i16 %513 to i32
  %515 = icmp eq i32 %514, 30
  br i1 %515, label %516, label %525

516:                                              ; preds = %510
  %517 = load ptr, ptr %6, align 8, !tbaa !5
  %518 = load ptr, ptr %7, align 8, !tbaa !5
  %519 = load i32, ptr %11, align 4, !tbaa !9
  %520 = load i32, ptr %12, align 4, !tbaa !9
  %521 = load i32, ptr %13, align 4, !tbaa !9
  %522 = load i32, ptr %14, align 4, !tbaa !9
  %523 = load ptr, ptr %9, align 8, !tbaa !5
  %524 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_vnni2_to_vnni2t_16bit_avx_microkernel(ptr noundef %517, ptr noundef %518, i32 noundef %519, i32 noundef %520, i32 noundef %521, i32 noundef %522, ptr noundef %523, ptr noundef %524)
  br label %674

525:                                              ; preds = %510
  %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 !15
  %529 = zext i16 %528 to i32
  %530 = icmp eq i32 %529, 55
  br i1 %530, label %531, label %540

531:                                              ; preds = %525
  %532 = load ptr, ptr %6, align 8, !tbaa !5
  %533 = load ptr, ptr %7, align 8, !tbaa !5
  %534 = load i32, ptr %11, align 4, !tbaa !9
  %535 = load i32, ptr %12, align 4, !tbaa !9
  %536 = load i32, ptr %13, align 4, !tbaa !9
  %537 = load i32, ptr %14, align 4, !tbaa !9
  %538 = load ptr, ptr %9, align 8, !tbaa !5
  %539 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_vnni4_to_vnni4t_16bit_avx_microkernel(ptr noundef %532, ptr noundef %533, i32 noundef %534, i32 noundef %535, i32 noundef %536, i32 noundef %537, ptr noundef %538, ptr noundef %539)
  br label %673

540:                                              ; preds = %525
  %541 = load ptr, ptr %10, align 8, !tbaa !5
  %542 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %541, i32 0, i32 10
  %543 = load i16, ptr %542, align 1, !tbaa !15
  %544 = zext i16 %543 to i32
  %545 = icmp eq i32 %544, 72
  br i1 %545, label %546, label %555

546:                                              ; preds = %540
  %547 = load ptr, ptr %6, align 8, !tbaa !5
  %548 = load ptr, ptr %7, align 8, !tbaa !5
  %549 = load i32, ptr %11, align 4, !tbaa !9
  %550 = load i32, ptr %12, align 4, !tbaa !9
  %551 = load i32, ptr %13, align 4, !tbaa !9
  %552 = load i32, ptr %14, align 4, !tbaa !9
  %553 = load ptr, ptr %9, align 8, !tbaa !5
  %554 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_vnni8_to_vnni8t_16bit_avx_microkernel(ptr noundef %547, ptr noundef %548, i32 noundef %549, i32 noundef %550, i32 noundef %551, i32 noundef %552, ptr noundef %553, ptr noundef %554)
  br label %672

555:                                              ; preds = %540
  %556 = load ptr, ptr %10, align 8, !tbaa !5
  %557 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %556, i32 0, i32 10
  %558 = load i16, ptr %557, align 1, !tbaa !15
  %559 = zext i16 %558 to i32
  %560 = icmp eq i32 %559, 28
  br i1 %560, label %561, label %570

561:                                              ; preds = %555
  %562 = load ptr, ptr %6, align 8, !tbaa !5
  %563 = load ptr, ptr %7, align 8, !tbaa !5
  %564 = load i32, ptr %11, align 4, !tbaa !9
  %565 = load i32, ptr %12, align 4, !tbaa !9
  %566 = load i32, ptr %13, align 4, !tbaa !9
  %567 = load i32, ptr %14, align 4, !tbaa !9
  %568 = load ptr, ptr %9, align 8, !tbaa !5
  %569 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_vnni2_16bit_avx_microkernel(ptr noundef %562, ptr noundef %563, i32 noundef %564, i32 noundef %565, i32 noundef %566, i32 noundef %567, ptr noundef %568, ptr noundef %569, i32 noundef 0)
  br label %671

570:                                              ; preds = %555
  %571 = load ptr, ptr %10, align 8, !tbaa !5
  %572 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %571, i32 0, i32 10
  %573 = load i16, ptr %572, align 1, !tbaa !15
  %574 = zext i16 %573 to i32
  %575 = icmp eq i32 %574, 32
  br i1 %575, label %576, label %585

576:                                              ; preds = %570
  %577 = load ptr, ptr %6, align 8, !tbaa !5
  %578 = load ptr, ptr %7, align 8, !tbaa !5
  %579 = load i32, ptr %11, align 4, !tbaa !9
  %580 = load i32, ptr %12, align 4, !tbaa !9
  %581 = load i32, ptr %13, align 4, !tbaa !9
  %582 = load i32, ptr %14, align 4, !tbaa !9
  %583 = load ptr, ptr %9, align 8, !tbaa !5
  %584 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_vnni2_16bit_avx_microkernel(ptr noundef %577, ptr noundef %578, i32 noundef %579, i32 noundef %580, i32 noundef %581, i32 noundef %582, ptr noundef %583, ptr noundef %584, i32 noundef 1)
  br label %670

585:                                              ; preds = %570
  %586 = load ptr, ptr %10, align 8, !tbaa !5
  %587 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %586, i32 0, i32 10
  %588 = load i16, ptr %587, align 1, !tbaa !15
  %589 = zext i16 %588 to i32
  %590 = icmp eq i32 %589, 54
  br i1 %590, label %591, label %600

591:                                              ; preds = %585
  %592 = load ptr, ptr %6, align 8, !tbaa !5
  %593 = load ptr, ptr %7, align 8, !tbaa !5
  %594 = load i32, ptr %11, align 4, !tbaa !9
  %595 = load i32, ptr %12, align 4, !tbaa !9
  %596 = load i32, ptr %13, align 4, !tbaa !9
  %597 = load i32, ptr %14, align 4, !tbaa !9
  %598 = load ptr, ptr %9, align 8, !tbaa !5
  %599 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_vnni4_16bit_avx_microkernel(ptr noundef %592, ptr noundef %593, i32 noundef %594, i32 noundef %595, i32 noundef %596, i32 noundef %597, ptr noundef %598, ptr noundef %599, i32 noundef 0)
  br label %669

600:                                              ; preds = %585
  %601 = load ptr, ptr %10, align 8, !tbaa !5
  %602 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %601, i32 0, i32 10
  %603 = load i16, ptr %602, align 1, !tbaa !15
  %604 = zext i16 %603 to i32
  %605 = icmp eq i32 %604, 57
  br i1 %605, label %606, label %615

606:                                              ; preds = %600
  %607 = load ptr, ptr %6, align 8, !tbaa !5
  %608 = load ptr, ptr %7, align 8, !tbaa !5
  %609 = load i32, ptr %11, align 4, !tbaa !9
  %610 = load i32, ptr %12, align 4, !tbaa !9
  %611 = load i32, ptr %13, align 4, !tbaa !9
  %612 = load i32, ptr %14, align 4, !tbaa !9
  %613 = load ptr, ptr %9, align 8, !tbaa !5
  %614 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_vnni4_16bit_avx_microkernel(ptr noundef %607, ptr noundef %608, i32 noundef %609, i32 noundef %610, i32 noundef %611, i32 noundef %612, ptr noundef %613, ptr noundef %614, i32 noundef 1)
  br label %668

615:                                              ; preds = %600
  %616 = load ptr, ptr %10, align 8, !tbaa !5
  %617 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %616, i32 0, i32 10
  %618 = load i16, ptr %617, align 1, !tbaa !15
  %619 = zext i16 %618 to i32
  %620 = icmp eq i32 %619, 71
  br i1 %620, label %621, label %630

621:                                              ; preds = %615
  %622 = load ptr, ptr %6, align 8, !tbaa !5
  %623 = load ptr, ptr %7, align 8, !tbaa !5
  %624 = load i32, ptr %11, align 4, !tbaa !9
  %625 = load i32, ptr %12, align 4, !tbaa !9
  %626 = load i32, ptr %13, align 4, !tbaa !9
  %627 = load i32, ptr %14, align 4, !tbaa !9
  %628 = load ptr, ptr %9, align 8, !tbaa !5
  %629 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_vnni8_16bit_avx_microkernel(ptr noundef %622, ptr noundef %623, i32 noundef %624, i32 noundef %625, i32 noundef %626, i32 noundef %627, ptr noundef %628, ptr noundef %629, i32 noundef 0)
  br label %667

630:                                              ; preds = %615
  %631 = load ptr, ptr %10, align 8, !tbaa !5
  %632 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %631, i32 0, i32 10
  %633 = load i16, ptr %632, align 1, !tbaa !15
  %634 = zext i16 %633 to i32
  %635 = icmp eq i32 %634, 40
  br i1 %635, label %648, label %636

636:                                              ; preds = %630
  %637 = load ptr, ptr %10, align 8, !tbaa !5
  %638 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %637, i32 0, i32 10
  %639 = load i16, ptr %638, align 1, !tbaa !15
  %640 = zext i16 %639 to i32
  %641 = icmp eq i32 %640, 39
  br i1 %641, label %648, label %642

642:                                              ; preds = %636
  %643 = load ptr, ptr %10, align 8, !tbaa !5
  %644 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %643, i32 0, i32 10
  %645 = load i16, ptr %644, align 1, !tbaa !15
  %646 = zext i16 %645 to i32
  %647 = icmp eq i32 %646, 41
  br i1 %647, label %648, label %657

648:                                              ; preds = %642, %636, %630
  %649 = load ptr, ptr %6, align 8, !tbaa !5
  %650 = load ptr, ptr %7, align 8, !tbaa !5
  %651 = load i32, ptr %11, align 4, !tbaa !9
  %652 = load i32, ptr %12, align 4, !tbaa !9
  %653 = load i32, ptr %13, align 4, !tbaa !9
  %654 = load i32, ptr %14, align 4, !tbaa !9
  %655 = load ptr, ptr %9, align 8, !tbaa !5
  %656 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_padnm_mod2_16bit_avx_microkernel(ptr noundef %649, ptr noundef %650, i32 noundef %651, i32 noundef %652, i32 noundef %653, i32 noundef %654, ptr noundef %655, ptr noundef %656)
  br label %666

657:                                              ; preds = %642
  %658 = load ptr, ptr %6, align 8, !tbaa !5
  %659 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %660 = icmp ult i32 1, %659
  br i1 %660, label %661, label %663

661:                                              ; preds = %657
  %662 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %664

663:                                              ; preds = %657
  br label %664

664:                                              ; preds = %663, %661
  %665 = phi i32 [ %662, %661 ], [ 1, %663 ]
  call void @libxsmm_handle_error(ptr noundef %658, i32 noundef 90000, ptr noundef @__func__.libxsmm_generator_transform_avx_microkernel, ptr noundef @.str, i32 noundef 953, i32 noundef %665)
  store i32 1, ptr %17, align 4
  br label %900

666:                                              ; preds = %648
  br label %667

667:                                              ; preds = %666, %621
  br label %668

668:                                              ; preds = %667, %606
  br label %669

669:                                              ; preds = %668, %591
  br label %670

670:                                              ; preds = %669, %576
  br label %671

671:                                              ; preds = %670, %561
  br label %672

672:                                              ; preds = %671, %546
  br label %673

673:                                              ; preds = %672, %531
  br label %674

674:                                              ; preds = %673, %516
  br label %675

675:                                              ; preds = %674, %485
  br label %676

676:                                              ; preds = %675, %454
  br label %677

677:                                              ; preds = %676, %423
  br label %678

678:                                              ; preds = %677, %392
  br label %679

679:                                              ; preds = %678, %361
  br label %680

680:                                              ; preds = %679, %330
  br label %681

681:                                              ; preds = %680, %315
  br label %897

682:                                              ; preds = %305, %301
  %683 = load ptr, ptr %10, align 8, !tbaa !5
  %684 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %683, i32 noundef 0)
  %685 = icmp eq i32 12, %684
  br i1 %685, label %686, label %690

686:                                              ; preds = %682
  %687 = load ptr, ptr %10, align 8, !tbaa !5
  %688 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %687, i32 noundef 3)
  %689 = icmp eq i32 12, %688
  br i1 %689, label %706, label %690

690:                                              ; preds = %686, %682
  %691 = load ptr, ptr %10, align 8, !tbaa !5
  %692 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %691, i32 noundef 0)
  %693 = icmp eq i32 4, %692
  br i1 %693, label %694, label %698

694:                                              ; preds = %690
  %695 = load ptr, ptr %10, align 8, !tbaa !5
  %696 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %695, i32 noundef 3)
  %697 = icmp eq i32 4, %696
  br i1 %697, label %706, label %698

698:                                              ; preds = %694, %690
  %699 = load ptr, ptr %10, align 8, !tbaa !5
  %700 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %699, i32 noundef 0)
  %701 = icmp eq i32 5, %700
  br i1 %701, label %702, label %887

702:                                              ; preds = %698
  %703 = load ptr, ptr %10, align 8, !tbaa !5
  %704 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %703, i32 noundef 3)
  %705 = icmp eq i32 5, %704
  br i1 %705, label %706, label %887

706:                                              ; preds = %702, %694, %686
  %707 = load ptr, ptr %10, align 8, !tbaa !5
  %708 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %707, i32 0, i32 10
  %709 = load i16, ptr %708, align 1, !tbaa !15
  %710 = zext i16 %709 to i32
  %711 = icmp eq i32 %710, 29
  br i1 %711, label %712, label %721

712:                                              ; preds = %706
  %713 = load ptr, ptr %6, align 8, !tbaa !5
  %714 = load ptr, ptr %7, align 8, !tbaa !5
  %715 = load i32, ptr %11, align 4, !tbaa !9
  %716 = load i32, ptr %12, align 4, !tbaa !9
  %717 = load i32, ptr %13, align 4, !tbaa !9
  %718 = load i32, ptr %14, align 4, !tbaa !9
  %719 = load ptr, ptr %9, align 8, !tbaa !5
  %720 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_normt_08bit_avx_microkernel(ptr noundef %713, ptr noundef %714, i32 noundef %715, i32 noundef %716, i32 noundef %717, i32 noundef %718, ptr noundef %719, ptr noundef %720)
  br label %886

721:                                              ; preds = %706
  %722 = load ptr, ptr %10, align 8, !tbaa !5
  %723 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %722, i32 0, i32 10
  %724 = load i16, ptr %723, align 1, !tbaa !15
  %725 = zext i16 %724 to i32
  %726 = icmp eq i32 %725, 55
  br i1 %726, label %727, label %736

727:                                              ; preds = %721
  %728 = load ptr, ptr %6, align 8, !tbaa !5
  %729 = load ptr, ptr %7, align 8, !tbaa !5
  %730 = load i32, ptr %11, align 4, !tbaa !9
  %731 = load i32, ptr %12, align 4, !tbaa !9
  %732 = load i32, ptr %13, align 4, !tbaa !9
  %733 = load i32, ptr %14, align 4, !tbaa !9
  %734 = load ptr, ptr %9, align 8, !tbaa !5
  %735 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_vnni4_to_vnni4t_08bit_avx_microkernel(ptr noundef %728, ptr noundef %729, i32 noundef %730, i32 noundef %731, i32 noundef %732, i32 noundef %733, ptr noundef %734, ptr noundef %735)
  br label %885

736:                                              ; preds = %721
  %737 = load ptr, ptr %10, align 8, !tbaa !5
  %738 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %737, i32 0, i32 10
  %739 = load i16, ptr %738, align 1, !tbaa !15
  %740 = zext i16 %739 to i32
  %741 = icmp eq i32 %740, 61
  br i1 %741, label %742, label %751

742:                                              ; preds = %736
  %743 = load ptr, ptr %6, align 8, !tbaa !5
  %744 = load ptr, ptr %7, align 8, !tbaa !5
  %745 = load i32, ptr %11, align 4, !tbaa !9
  %746 = load i32, ptr %12, align 4, !tbaa !9
  %747 = load i32, ptr %13, align 4, !tbaa !9
  %748 = load i32, ptr %14, align 4, !tbaa !9
  %749 = load ptr, ptr %9, align 8, !tbaa !5
  %750 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_vnni4_to_norm_08bit_avx_microkernel(ptr noundef %743, ptr noundef %744, i32 noundef %745, i32 noundef %746, i32 noundef %747, i32 noundef %748, ptr noundef %749, ptr noundef %750)
  br label %884

751:                                              ; preds = %736
  %752 = load ptr, ptr %10, align 8, !tbaa !5
  %753 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %752, i32 0, i32 10
  %754 = load i16, ptr %753, align 1, !tbaa !15
  %755 = zext i16 %754 to i32
  %756 = icmp eq i32 %755, 72
  br i1 %756, label %757, label %766

757:                                              ; preds = %751
  %758 = load ptr, ptr %6, align 8, !tbaa !5
  %759 = load ptr, ptr %7, align 8, !tbaa !5
  %760 = load i32, ptr %11, align 4, !tbaa !9
  %761 = load i32, ptr %12, align 4, !tbaa !9
  %762 = load i32, ptr %13, align 4, !tbaa !9
  %763 = load i32, ptr %14, align 4, !tbaa !9
  %764 = load ptr, ptr %9, align 8, !tbaa !5
  %765 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_vnni8_to_vnni8t_08bit_avx_microkernel(ptr noundef %758, ptr noundef %759, i32 noundef %760, i32 noundef %761, i32 noundef %762, i32 noundef %763, ptr noundef %764, ptr noundef %765)
  br label %883

766:                                              ; preds = %751
  %767 = load ptr, ptr %10, align 8, !tbaa !5
  %768 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %767, i32 0, i32 10
  %769 = load i16, ptr %768, align 1, !tbaa !15
  %770 = zext i16 %769 to i32
  %771 = icmp eq i32 %770, 76
  br i1 %771, label %772, label %781

772:                                              ; preds = %766
  %773 = load ptr, ptr %6, align 8, !tbaa !5
  %774 = load ptr, ptr %7, align 8, !tbaa !5
  %775 = load i32, ptr %11, align 4, !tbaa !9
  %776 = load i32, ptr %12, align 4, !tbaa !9
  %777 = load i32, ptr %13, align 4, !tbaa !9
  %778 = load i32, ptr %14, align 4, !tbaa !9
  %779 = load ptr, ptr %9, align 8, !tbaa !5
  %780 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_vnni8_to_norm_08bit_avx_microkernel(ptr noundef %773, ptr noundef %774, i32 noundef %775, i32 noundef %776, i32 noundef %777, i32 noundef %778, ptr noundef %779, ptr noundef %780)
  br label %882

781:                                              ; preds = %766
  %782 = load ptr, ptr %10, align 8, !tbaa !5
  %783 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %782, i32 0, i32 10
  %784 = load i16, ptr %783, align 1, !tbaa !15
  %785 = zext i16 %784 to i32
  %786 = icmp eq i32 %785, 62
  br i1 %786, label %787, label %796

787:                                              ; preds = %781
  %788 = load ptr, ptr %6, align 8, !tbaa !5
  %789 = load ptr, ptr %7, align 8, !tbaa !5
  %790 = load i32, ptr %11, align 4, !tbaa !9
  %791 = load i32, ptr %12, align 4, !tbaa !9
  %792 = load i32, ptr %13, align 4, !tbaa !9
  %793 = load i32, ptr %14, align 4, !tbaa !9
  %794 = load ptr, ptr %9, align 8, !tbaa !5
  %795 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_vnni4_to_vnni2_08bit_avx_microkernel(ptr noundef %788, ptr noundef %789, i32 noundef %790, i32 noundef %791, i32 noundef %792, i32 noundef %793, ptr noundef %794, ptr noundef %795)
  br label %881

796:                                              ; preds = %781
  %797 = load ptr, ptr %10, align 8, !tbaa !5
  %798 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %797, i32 0, i32 10
  %799 = load i16, ptr %798, align 1, !tbaa !15
  %800 = zext i16 %799 to i32
  %801 = icmp eq i32 %800, 54
  br i1 %801, label %802, label %811

802:                                              ; preds = %796
  %803 = load ptr, ptr %6, align 8, !tbaa !5
  %804 = load ptr, ptr %7, align 8, !tbaa !5
  %805 = load i32, ptr %11, align 4, !tbaa !9
  %806 = load i32, ptr %12, align 4, !tbaa !9
  %807 = load i32, ptr %13, align 4, !tbaa !9
  %808 = load i32, ptr %14, align 4, !tbaa !9
  %809 = load ptr, ptr %9, align 8, !tbaa !5
  %810 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_vnni4_08bit_avx_microkernel(ptr noundef %803, ptr noundef %804, i32 noundef %805, i32 noundef %806, i32 noundef %807, i32 noundef %808, ptr noundef %809, ptr noundef %810, i32 noundef 0)
  br label %880

811:                                              ; preds = %796
  %812 = load ptr, ptr %10, align 8, !tbaa !5
  %813 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %812, i32 0, i32 10
  %814 = load i16, ptr %813, align 1, !tbaa !15
  %815 = zext i16 %814 to i32
  %816 = icmp eq i32 %815, 57
  br i1 %816, label %817, label %826

817:                                              ; preds = %811
  %818 = load ptr, ptr %6, align 8, !tbaa !5
  %819 = load ptr, ptr %7, align 8, !tbaa !5
  %820 = load i32, ptr %11, align 4, !tbaa !9
  %821 = load i32, ptr %12, align 4, !tbaa !9
  %822 = load i32, ptr %13, align 4, !tbaa !9
  %823 = load i32, ptr %14, align 4, !tbaa !9
  %824 = load ptr, ptr %9, align 8, !tbaa !5
  %825 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_vnni4_08bit_avx_microkernel(ptr noundef %818, ptr noundef %819, i32 noundef %820, i32 noundef %821, i32 noundef %822, i32 noundef %823, ptr noundef %824, ptr noundef %825, i32 noundef 1)
  br label %879

826:                                              ; preds = %811
  %827 = load ptr, ptr %10, align 8, !tbaa !5
  %828 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %827, i32 0, i32 10
  %829 = load i16, ptr %828, align 1, !tbaa !15
  %830 = zext i16 %829 to i32
  %831 = icmp eq i32 %830, 71
  br i1 %831, label %832, label %841

832:                                              ; preds = %826
  %833 = load ptr, ptr %6, align 8, !tbaa !5
  %834 = load ptr, ptr %7, align 8, !tbaa !5
  %835 = load i32, ptr %11, align 4, !tbaa !9
  %836 = load i32, ptr %12, align 4, !tbaa !9
  %837 = load i32, ptr %13, align 4, !tbaa !9
  %838 = load i32, ptr %14, align 4, !tbaa !9
  %839 = load ptr, ptr %9, align 8, !tbaa !5
  %840 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_vnni8_08bit_avx_microkernel(ptr noundef %833, ptr noundef %834, i32 noundef %835, i32 noundef %836, i32 noundef %837, i32 noundef %838, ptr noundef %839, ptr noundef %840, i32 noundef 0)
  br label %878

841:                                              ; preds = %826
  %842 = load ptr, ptr %10, align 8, !tbaa !5
  %843 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %842, i32 0, i32 10
  %844 = load i16, ptr %843, align 1, !tbaa !15
  %845 = zext i16 %844 to i32
  %846 = icmp eq i32 %845, 59
  br i1 %846, label %859, label %847

847:                                              ; preds = %841
  %848 = load ptr, ptr %10, align 8, !tbaa !5
  %849 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %848, i32 0, i32 10
  %850 = load i16, ptr %849, align 1, !tbaa !15
  %851 = zext i16 %850 to i32
  %852 = icmp eq i32 %851, 58
  br i1 %852, label %859, label %853

853:                                              ; preds = %847
  %854 = load ptr, ptr %10, align 8, !tbaa !5
  %855 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %854, i32 0, i32 10
  %856 = load i16, ptr %855, align 1, !tbaa !15
  %857 = zext i16 %856 to i32
  %858 = icmp eq i32 %857, 60
  br i1 %858, label %859, label %868

859:                                              ; preds = %853, %847, %841
  %860 = load ptr, ptr %6, align 8, !tbaa !5
  %861 = load ptr, ptr %7, align 8, !tbaa !5
  %862 = load i32, ptr %11, align 4, !tbaa !9
  %863 = load i32, ptr %12, align 4, !tbaa !9
  %864 = load i32, ptr %13, align 4, !tbaa !9
  %865 = load i32, ptr %14, align 4, !tbaa !9
  %866 = load ptr, ptr %9, align 8, !tbaa !5
  %867 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_padnm_mod4_08bit_avx_microkernel(ptr noundef %860, ptr noundef %861, i32 noundef %862, i32 noundef %863, i32 noundef %864, i32 noundef %865, ptr noundef %866, ptr noundef %867)
  br label %877

868:                                              ; preds = %853
  %869 = load ptr, ptr %6, align 8, !tbaa !5
  %870 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %871 = icmp ult i32 1, %870
  br i1 %871, label %872, label %874

872:                                              ; preds = %868
  %873 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %875

874:                                              ; preds = %868
  br label %875

875:                                              ; preds = %874, %872
  %876 = phi i32 [ %873, %872 ], [ 1, %874 ]
  call void @libxsmm_handle_error(ptr noundef %869, i32 noundef 90000, ptr noundef @__func__.libxsmm_generator_transform_avx_microkernel, ptr noundef @.str, i32 noundef 1005, i32 noundef %876)
  store i32 1, ptr %17, align 4
  br label %900

877:                                              ; preds = %859
  br label %878

878:                                              ; preds = %877, %832
  br label %879

879:                                              ; preds = %878, %817
  br label %880

880:                                              ; preds = %879, %802
  br label %881

881:                                              ; preds = %880, %787
  br label %882

882:                                              ; preds = %881, %772
  br label %883

883:                                              ; preds = %882, %757
  br label %884

884:                                              ; preds = %883, %742
  br label %885

885:                                              ; preds = %884, %727
  br label %886

886:                                              ; preds = %885, %712
  br label %896

887:                                              ; preds = %702, %698
  %888 = load ptr, ptr %6, align 8, !tbaa !5
  %889 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %890 = icmp ult i32 1, %889
  br i1 %890, label %891, label %893

891:                                              ; preds = %887
  %892 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %894

893:                                              ; preds = %887
  br label %894

894:                                              ; preds = %893, %891
  %895 = phi i32 [ %892, %891 ], [ 1, %893 ]
  call void @libxsmm_handle_error(ptr noundef %888, i32 noundef 90000, ptr noundef @__func__.libxsmm_generator_transform_avx_microkernel, ptr noundef @.str, i32 noundef 1009, i32 noundef %895)
  store i32 1, ptr %17, align 4
  br label %900

896:                                              ; preds = %886
  br label %897

897:                                              ; preds = %896, %681
  br label %898

898:                                              ; preds = %897, %284
  br label %899

899:                                              ; preds = %898, %243
  store i32 0, ptr %17, align 4
  br label %900

900:                                              ; preds = %899, %894, %875, %664, %282, %241, %197, %179, %145, %97, %80
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #3
  %901 = load i32, ptr %17, align 4
  switch i32 %901, label %903 [
    i32 0, label %902
    i32 1, label %902
  ]

902:                                              ; preds = %900, %900
  ret void

903:                                              ; preds = %900
  unreachable
}

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

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

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

declare void @libxsmm_generator_mateltwise_init_micro_kernel_config_fullvector(ptr noundef, ptr noundef, ptr noundef) #1

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_generator_transform_avx_microkernel(ptr noundef %0, ptr noundef %1, ptr nocapture noundef readonly %2, ptr noundef %3, ptr noundef %4) local_unnamed_addr #2 {
  %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 = alloca %struct.libxsmm_descriptor_blob, align 1
  %15 = alloca %struct.libxsmm_mateltwise_kernel_config_struct, align 4
  %16 = alloca %struct.libxsmm_descriptor_blob, align 1
  %17 = alloca %struct.libxsmm_mateltwise_kernel_config_struct, align 4
  %18 = getelementptr inbounds i8, ptr %3, i64 56
  %19 = load i32, ptr %18, align 4, !tbaa !5
  %20 = load i32, ptr %2, align 4, !tbaa !10
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %19, i32 noundef %20, i32 noundef 127, i32 noundef 0, i32 noundef 32, i32 noundef 8, i32 noundef 0) #3
  %21 = load i32, ptr %18, align 4, !tbaa !5
  %22 = load i32, ptr %2, align 4, !tbaa !10
  tail call void @libxsmm_x86_instruction_alu_mem(ptr noundef %0, i32 noundef %21, i32 noundef %22, i32 noundef 127, i32 noundef 0, i32 noundef 80, i32 noundef 9, i32 noundef 0) #3
  %23 = getelementptr inbounds i8, ptr %4, i64 29
  %24 = load i16, ptr %23, align 1, !tbaa !12
  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 !15
  %27 = getelementptr inbounds i8, ptr %4, i64 8
  %28 = load i32, ptr %27, align 1, !tbaa !16
  %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 !17
  %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_avx_microkernel, ptr noundef nonnull @.str, i32 noundef 776, i32 noundef %34) #3
  br label %260

35:                                               ; preds = %25
  %36 = getelementptr inbounds i8, ptr %4, i64 4
  %37 = load i32, ptr %36, align 1, !tbaa !18
  %38 = getelementptr inbounds i8, ptr %4, i64 12
  %39 = load i32, ptr %38, align 1, !tbaa !19
  %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 !17
  %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_avx_microkernel, ptr noundef nonnull @.str, i32 noundef 780, i32 noundef %45) #3
  br label %260

46:                                               ; preds = %5, %5, %5, %5, %5
  %47 = load i32, ptr %4, align 1, !tbaa !15
  %48 = getelementptr inbounds i8, ptr %4, i64 8
  %49 = load i32, ptr %48, align 1, !tbaa !16
  %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 !17
  %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_avx_microkernel, ptr noundef nonnull @.str, i32 noundef 789, i32 noundef %55) #3
  br label %260

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 !19
  %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 !17
  %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_avx_microkernel, ptr noundef nonnull @.str, i32 noundef 795, i32 noundef %67) #3
  br label %260

68:                                               ; preds = %56
  %69 = getelementptr inbounds i8, ptr %4, i64 12
  %70 = load i32, ptr %69, align 1, !tbaa !19
  %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 !17
  %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_avx_microkernel, ptr noundef nonnull @.str, i32 noundef 800, i32 noundef %76) #3
  br label %260

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 %98

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 %98

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

92:                                               ; preds = %89
  tail call void @libxsmm_generator_transform_norm_to_normt_64bit_avx_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef 8, i32 noundef 9, i32 noundef 0, i32 noundef 2, ptr noundef nonnull %3, ptr noundef nonnull %4)
  br label %260

93:                                               ; preds = %89
  %94 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !17
  %95 = icmp ugt i32 %94, 1
  %96 = load i32, ptr @libxsmm_verbosity, align 4
  %97 = select i1 %95, i32 %96, i32 1
  tail call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90000, ptr noundef nonnull @__func__.libxsmm_generator_transform_avx_microkernel, ptr noundef nonnull @.str, i32 noundef 817, i32 noundef %97) #3
  br label %260

98:                                               ; preds = %86, %83
  %99 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #3
  %100 = icmp eq i32 %99, 8
  br i1 %100, label %101, label %104

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

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

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

110:                                              ; preds = %107, %101
  %111 = load i16, ptr %23, align 1, !tbaa !12
  %112 = icmp eq i16 %111, 29
  br i1 %112, label %113, label %114

113:                                              ; preds = %110
  tail call void @libxsmm_generator_transform_norm_to_normt_32bit_avx_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef 8, i32 noundef 9, i32 noundef 0, i32 noundef 2, ptr noundef nonnull %3, ptr noundef nonnull %4)
  br label %260

114:                                              ; preds = %110
  %115 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !17
  %116 = icmp ugt i32 %115, 1
  %117 = load i32, ptr @libxsmm_verbosity, align 4
  %118 = select i1 %116, i32 %117, i32 1
  tail call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90000, ptr noundef nonnull @__func__.libxsmm_generator_transform_avx_microkernel, ptr noundef nonnull @.str, i32 noundef 829, i32 noundef %118) #3
  br label %260

119:                                              ; preds = %107, %104
  %120 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #3
  %121 = icmp eq i32 %120, 10
  br i1 %121, label %122, label %125

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

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

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

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

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

137:                                              ; preds = %134, %128, %122
  %138 = load i16, ptr %23, align 1, !tbaa !12
  switch i16 %138, label %215 [
    i16 29, label %139
    i16 73, label %140
    i16 56, label %151
    i16 31, label %162
    i16 75, label %173
    i16 66, label %184
    i16 67, label %195
    i16 30, label %206
    i16 55, label %207
    i16 72, label %208
    i16 28, label %209
    i16 32, label %210
    i16 54, label %211
    i16 57, label %212
    i16 71, label %213
    i16 40, label %214
    i16 39, label %214
    i16 41, label %214
  ]

139:                                              ; preds = %137
  tail call void @libxsmm_generator_transform_norm_to_normt_16bit_avx_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef 8, i32 noundef 9, i32 noundef 0, i32 noundef 2, ptr noundef nonnull %3, ptr noundef nonnull %4)
  br label %260

140:                                              ; preds = %137
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %6) #3
  %141 = load i32, ptr %4, align 1, !tbaa !15
  %142 = lshr i32 %141, 3
  %143 = getelementptr inbounds i8, ptr %4, i64 4
  %144 = load i32, ptr %143, align 1, !tbaa !18
  %145 = getelementptr inbounds i8, ptr %4, i64 8
  %146 = load i32, ptr %145, align 1, !tbaa !16
  %147 = lshr i32 %146, 3
  %148 = getelementptr inbounds i8, ptr %4, i64 12
  %149 = load i32, ptr %148, align 1, !tbaa !19
  %150 = 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 %142, i32 noundef %144, i32 noundef %147, i32 noundef %149, 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_init_micro_kernel_config_fullvector(ptr noundef %0, ptr noundef nonnull %7, ptr noundef %150) #3
  call void @libxsmm_generator_transform_norm_to_normt_128bit_avx_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef 8, i32 noundef 9, i32 noundef 0, i32 noundef 2, ptr noundef nonnull %7, ptr noundef %150)
  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 %260

151:                                              ; preds = %137
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %8) #3
  %152 = load i32, ptr %4, align 1, !tbaa !15
  %153 = lshr i32 %152, 2
  %154 = getelementptr inbounds i8, ptr %4, i64 4
  %155 = load i32, ptr %154, align 1, !tbaa !18
  %156 = getelementptr inbounds i8, ptr %4, i64 8
  %157 = load i32, ptr %156, align 1, !tbaa !16
  %158 = lshr i32 %157, 2
  %159 = getelementptr inbounds i8, ptr %4, i64 12
  %160 = load i32, ptr %159, align 1, !tbaa !19
  %161 = call ptr @libxsmm_meltw_descriptor_init2(ptr noundef nonnull %8, i32 noundef 0, i32 noundef 15, i32 noundef 15, i32 noundef 0, i32 noundef 0, i32 noundef %153, i32 noundef %155, i32 noundef %158, i32 noundef %160, 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_init_micro_kernel_config_fullvector(ptr noundef %0, ptr noundef nonnull %9, ptr noundef %161) #3
  call void @libxsmm_generator_transform_norm_to_normt_64bit_avx_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef 8, i32 noundef 9, i32 noundef 0, i32 noundef 2, ptr noundef nonnull %9, ptr noundef %161)
  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 %260

162:                                              ; preds = %137
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %10) #3
  %163 = load i32, ptr %4, align 1, !tbaa !15
  %164 = lshr i32 %163, 1
  %165 = getelementptr inbounds i8, ptr %4, i64 4
  %166 = load i32, ptr %165, align 1, !tbaa !18
  %167 = getelementptr inbounds i8, ptr %4, i64 8
  %168 = load i32, ptr %167, align 1, !tbaa !16
  %169 = lshr i32 %168, 1
  %170 = getelementptr inbounds i8, ptr %4, i64 12
  %171 = load i32, ptr %170, align 1, !tbaa !19
  %172 = call ptr @libxsmm_meltw_descriptor_init2(ptr noundef nonnull %10, i32 noundef 1, i32 noundef 15, i32 noundef 15, i32 noundef 1, i32 noundef 1, i32 noundef %164, i32 noundef %166, i32 noundef %169, i32 noundef %171, 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_init_micro_kernel_config_fullvector(ptr noundef %0, ptr noundef nonnull %11, ptr noundef %172) #3
  call void @libxsmm_generator_transform_norm_to_normt_32bit_avx_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef 8, i32 noundef 9, i32 noundef 0, i32 noundef 2, ptr noundef nonnull %11, ptr noundef %172)
  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 %260

173:                                              ; preds = %137
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %12) #3
  %174 = load i32, ptr %4, align 1, !tbaa !15
  %175 = getelementptr inbounds i8, ptr %4, i64 4
  %176 = load i32, ptr %175, align 1, !tbaa !18
  %177 = lshr i32 %176, 3
  %178 = getelementptr inbounds i8, ptr %4, i64 8
  %179 = load i32, ptr %178, align 1, !tbaa !16
  %180 = getelementptr inbounds i8, ptr %4, i64 12
  %181 = load i32, ptr %180, align 1, !tbaa !19
  %182 = lshr i32 %181, 3
  %183 = call ptr @libxsmm_meltw_descriptor_init2(ptr noundef nonnull %12, i32 noundef 0, i32 noundef 15, i32 noundef 15, i32 noundef 0, i32 noundef 0, i32 noundef %174, i32 noundef %177, i32 noundef %179, i32 noundef %182, 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_init_micro_kernel_config_fullvector(ptr noundef %0, ptr noundef nonnull %13, ptr noundef %183) #3
  call void @libxsmm_generator_transform_norm_to_normt_128bit_avx_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef 8, i32 noundef 9, i32 noundef 0, i32 noundef 2, ptr noundef nonnull %13, ptr noundef %183)
  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 %260

184:                                              ; preds = %137
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %14) #3
  %185 = load i32, ptr %4, align 1, !tbaa !15
  %186 = getelementptr inbounds i8, ptr %4, i64 4
  %187 = load i32, ptr %186, align 1, !tbaa !18
  %188 = lshr i32 %187, 2
  %189 = getelementptr inbounds i8, ptr %4, i64 8
  %190 = load i32, ptr %189, align 1, !tbaa !16
  %191 = getelementptr inbounds i8, ptr %4, i64 12
  %192 = load i32, ptr %191, align 1, !tbaa !19
  %193 = lshr i32 %192, 2
  %194 = call ptr @libxsmm_meltw_descriptor_init2(ptr noundef nonnull %14, i32 noundef 0, i32 noundef 15, i32 noundef 15, i32 noundef 0, i32 noundef 0, i32 noundef %185, i32 noundef %188, i32 noundef %190, i32 noundef %193, 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 %15) #3
  call void @libxsmm_generator_mateltwise_init_micro_kernel_config_fullvector(ptr noundef %0, ptr noundef nonnull %15, ptr noundef %194) #3
  call void @libxsmm_generator_transform_norm_to_normt_64bit_avx_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef 8, i32 noundef 9, i32 noundef 0, i32 noundef 2, ptr noundef nonnull %15, ptr noundef %194)
  call void @llvm.lifetime.end.p0(i64 516, ptr nonnull %15) #3
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %14) #3
  br label %260

195:                                              ; preds = %137
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %16) #3
  %196 = load i32, ptr %4, align 1, !tbaa !15
  %197 = getelementptr inbounds i8, ptr %4, i64 4
  %198 = load i32, ptr %197, align 1, !tbaa !18
  %199 = lshr i32 %198, 1
  %200 = getelementptr inbounds i8, ptr %4, i64 8
  %201 = load i32, ptr %200, align 1, !tbaa !16
  %202 = getelementptr inbounds i8, ptr %4, i64 12
  %203 = load i32, ptr %202, align 1, !tbaa !19
  %204 = lshr i32 %203, 1
  %205 = call ptr @libxsmm_meltw_descriptor_init2(ptr noundef nonnull %16, i32 noundef 1, i32 noundef 15, i32 noundef 15, i32 noundef 1, i32 noundef 1, i32 noundef %196, i32 noundef %199, i32 noundef %201, i32 noundef %204, 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 %17) #3
  call void @libxsmm_generator_mateltwise_init_micro_kernel_config_fullvector(ptr noundef %0, ptr noundef nonnull %17, ptr noundef %205) #3
  call void @libxsmm_generator_transform_norm_to_normt_32bit_avx_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef 8, i32 noundef 9, i32 noundef 0, i32 noundef 2, ptr noundef nonnull %17, ptr noundef %205)
  call void @llvm.lifetime.end.p0(i64 516, ptr nonnull %17) #3
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %16) #3
  br label %260

206:                                              ; preds = %137
  tail call void @libxsmm_generator_transform_vnni2_to_vnni2t_16bit_avx_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef 8, i32 noundef 9, i32 noundef 0, i32 noundef 2, ptr noundef nonnull %3, ptr noundef nonnull %4)
  br label %260

207:                                              ; preds = %137
  tail call void @libxsmm_generator_transform_vnni4_to_vnni4t_16bit_avx_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef 8, i32 noundef 9, i32 noundef 0, i32 noundef 2, ptr noundef nonnull %3, ptr noundef nonnull %4)
  br label %260

208:                                              ; preds = %137
  tail call void @libxsmm_generator_transform_vnni8_to_vnni8t_16bit_avx_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef 8, i32 noundef 9, i32 noundef 0, i32 noundef 2, ptr noundef nonnull %3, ptr noundef nonnull %4)
  br label %260

209:                                              ; preds = %137
  tail call void @libxsmm_generator_transform_norm_to_vnni2_16bit_avx_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef 8, i32 noundef 9, i32 noundef 0, i32 noundef 2, ptr noundef nonnull %3, ptr noundef nonnull %4, i32 noundef 0)
  br label %260

210:                                              ; preds = %137
  tail call void @libxsmm_generator_transform_norm_to_vnni2_16bit_avx_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef 8, i32 noundef 9, i32 noundef 0, i32 noundef 2, ptr noundef nonnull %3, ptr noundef nonnull %4, i32 noundef 1)
  br label %260

211:                                              ; preds = %137
  tail call void @libxsmm_generator_transform_norm_to_vnni4_16bit_avx_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef 8, i32 noundef 9, i32 noundef 0, i32 noundef 2, ptr noundef nonnull %3, ptr noundef nonnull %4, i32 noundef 0)
  br label %260

212:                                              ; preds = %137
  tail call void @libxsmm_generator_transform_norm_to_vnni4_16bit_avx_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef 8, i32 noundef 9, i32 noundef 0, i32 noundef 2, ptr noundef nonnull %3, ptr noundef nonnull %4, i32 noundef 1)
  br label %260

213:                                              ; preds = %137
  tail call void @libxsmm_generator_transform_norm_to_vnni8_16bit_avx_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef 8, i32 noundef 9, i32 noundef 0, i32 noundef 2, ptr noundef nonnull %3, ptr noundef nonnull %4, i32 noundef 0)
  br label %260

214:                                              ; preds = %137, %137, %137
  tail call void @libxsmm_generator_transform_norm_padnm_mod2_16bit_avx_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef 8, i32 noundef 9, i32 noundef 0, i32 noundef 2, ptr noundef nonnull %3, ptr noundef nonnull %4)
  br label %260

215:                                              ; preds = %137
  %216 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !17
  %217 = icmp ugt i32 %216, 1
  %218 = load i32, ptr @libxsmm_verbosity, align 4
  %219 = select i1 %217, i32 %218, i32 1
  tail call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90000, ptr noundef nonnull @__func__.libxsmm_generator_transform_avx_microkernel, ptr noundef nonnull @.str, i32 noundef 953, i32 noundef %219) #3
  br label %260

220:                                              ; preds = %134, %131
  %221 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #3
  %222 = icmp eq i32 %221, 12
  br i1 %222, label %223, label %226

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

226:                                              ; preds = %223, %220
  %227 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #3
  %228 = icmp eq i32 %227, 4
  br i1 %228, label %229, label %232

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

232:                                              ; preds = %229, %226
  %233 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #3
  %234 = icmp eq i32 %233, 5
  br i1 %234, label %235, label %255

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

238:                                              ; preds = %235, %229, %223
  %239 = load i16, ptr %23, align 1, !tbaa !12
  switch i16 %239, label %250 [
    i16 29, label %240
    i16 55, label %241
    i16 61, label %242
    i16 72, label %243
    i16 76, label %244
    i16 62, label %245
    i16 54, label %246
    i16 57, label %247
    i16 71, label %248
    i16 59, label %249
    i16 58, label %249
    i16 60, label %249
  ]

240:                                              ; preds = %238
  tail call void @libxsmm_generator_transform_norm_to_normt_08bit_avx_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef 8, i32 noundef 9, i32 noundef 0, i32 noundef 2, ptr noundef nonnull %3, ptr noundef nonnull %4)
  br label %260

241:                                              ; preds = %238
  tail call void @libxsmm_generator_transform_vnni4_to_vnni4t_08bit_avx_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef 8, i32 noundef 9, i32 noundef 0, i32 noundef 2, ptr noundef nonnull %3, ptr noundef nonnull %4)
  br label %260

242:                                              ; preds = %238
  tail call void @libxsmm_generator_transform_vnni4_to_norm_08bit_avx_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef 8, i32 noundef 9, i32 noundef 0, i32 noundef 2, ptr noundef nonnull %3, ptr noundef nonnull %4)
  br label %260

243:                                              ; preds = %238
  tail call void @libxsmm_generator_transform_vnni8_to_vnni8t_08bit_avx_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef 8, i32 noundef 9, i32 noundef 0, i32 noundef 2, ptr noundef nonnull %3, ptr noundef nonnull %4)
  br label %260

244:                                              ; preds = %238
  tail call void @libxsmm_generator_transform_vnni8_to_norm_08bit_avx_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef 8, i32 noundef 9, i32 noundef 0, i32 noundef 2, ptr noundef nonnull %3, ptr noundef nonnull %4)
  br label %260

245:                                              ; preds = %238
  tail call void @libxsmm_generator_transform_vnni4_to_vnni2_08bit_avx_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef 8, i32 noundef 9, i32 noundef 0, i32 noundef 2, ptr noundef nonnull %3, ptr noundef nonnull %4)
  br label %260

246:                                              ; preds = %238
  tail call void @libxsmm_generator_transform_norm_to_vnni4_08bit_avx_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef 8, i32 noundef 9, i32 noundef 0, i32 noundef 2, ptr noundef nonnull %3, ptr noundef nonnull %4, i32 noundef 0)
  br label %260

247:                                              ; preds = %238
  tail call void @libxsmm_generator_transform_norm_to_vnni4_08bit_avx_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef 8, i32 noundef 9, i32 noundef 0, i32 noundef 2, ptr noundef nonnull %3, ptr noundef nonnull %4, i32 noundef 1)
  br label %260

248:                                              ; preds = %238
  tail call void @libxsmm_generator_transform_norm_to_vnni8_08bit_avx_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef 8, i32 noundef 9, i32 noundef 0, i32 noundef 2, ptr noundef nonnull %3, ptr noundef nonnull %4, i32 noundef 0)
  br label %260

249:                                              ; preds = %238, %238, %238
  tail call void @libxsmm_generator_transform_norm_padnm_mod4_08bit_avx_microkernel(ptr noundef %0, ptr noundef %1, i32 noundef 8, i32 noundef 9, i32 noundef 0, i32 noundef 2, ptr noundef nonnull %3, ptr noundef nonnull %4)
  br label %260

250:                                              ; preds = %238
  %251 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !17
  %252 = icmp ugt i32 %251, 1
  %253 = load i32, ptr @libxsmm_verbosity, align 4
  %254 = select i1 %252, i32 %253, i32 1
  tail call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90000, ptr noundef nonnull @__func__.libxsmm_generator_transform_avx_microkernel, ptr noundef nonnull @.str, i32 noundef 1005, i32 noundef %254) #3
  br label %260

255:                                              ; preds = %235, %232
  %256 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !17
  %257 = icmp ugt i32 %256, 1
  %258 = load i32, ptr @libxsmm_verbosity, align 4
  %259 = select i1 %257, i32 %258, i32 1
  tail call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90000, ptr noundef nonnull @__func__.libxsmm_generator_transform_avx_microkernel, ptr noundef nonnull @.str, i32 noundef 1009, i32 noundef %259) #3
  br label %260

260:                                              ; preds = %92, %140, %162, %184, %206, %208, %210, %212, %214, %213, %211, %209, %207, %195, %173, %151, %139, %240, %242, %244, %246, %248, %249, %247, %245, %243, %241, %113, %255, %250, %215, %114, %93, %72, %63, %51, %41, %30
  ret void
}

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

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

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

declare void @libxsmm_generator_mateltwise_init_micro_kernel_config_fullvector(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

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

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

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


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