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

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

declare void @libxsmm_x86_instruction_alu_mem(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 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_sse_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_sse_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_sse_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_sse_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_sse_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_sse_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_sse_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_sse_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_sse_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_sse_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_sse_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_sse_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_sse_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_sse_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_sse_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_sse_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_sse_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_sse_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_sse_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_sse_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_sse_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_sse_microkernel, ptr noundef @.str, i32 noundef 1797, i32 noundef %81)
  store i32 1, ptr %17, align 4
  br label %956

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_sse_microkernel, ptr noundef @.str, i32 noundef 1801, i32 noundef %98)
  store i32 1, ptr %17, align 4
  br label %956

99:                                               ; preds = %82
  br label %227

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 %154, 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 %154, 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, 54
  br i1 %117, label %154, 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, 57
  br i1 %123, label %154, 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, 71
  br i1 %129, label %154, label %130

130:                                              ; preds = %124
  %131 = load ptr, ptr %10, align 8, !tbaa !5
  %132 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %131, i32 0, i32 10
  %133 = load i16, ptr %132, align 1, !tbaa !15
  %134 = zext i16 %133 to i32
  %135 = icmp eq i32 %134, 74
  br i1 %135, label %154, label %136

136:                                              ; preds = %130
  %137 = load ptr, ptr %10, align 8, !tbaa !5
  %138 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %137, i32 0, i32 10
  %139 = load i16, ptr %138, align 1, !tbaa !15
  %140 = zext i16 %139 to i32
  %141 = icmp eq i32 %140, 40
  br i1 %141, label %154, label %142

142:                                              ; preds = %136
  %143 = load ptr, ptr %10, align 8, !tbaa !5
  %144 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %143, i32 0, i32 10
  %145 = load i16, ptr %144, align 1, !tbaa !15
  %146 = zext i16 %145 to i32
  %147 = icmp eq i32 %146, 39
  br i1 %147, label %154, label %148

148:                                              ; preds = %142
  %149 = load ptr, ptr %10, align 8, !tbaa !5
  %150 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %149, i32 0, i32 10
  %151 = load i16, ptr %150, align 1, !tbaa !15
  %152 = zext i16 %151 to i32
  %153 = icmp eq i32 %152, 41
  br i1 %153, label %154, label %225

154:                                              ; preds = %148, %142, %136, %130, %124, %118, %112, %106, %100
  %155 = load ptr, ptr %10, align 8, !tbaa !5
  %156 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %155, i32 0, i32 0
  %157 = load i32, ptr %156, align 1, !tbaa !18
  %158 = load ptr, ptr %10, align 8, !tbaa !5
  %159 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %158, i32 0, i32 2
  %160 = load i32, ptr %159, align 1, !tbaa !19
  %161 = icmp ugt i32 %157, %160
  br i1 %161, label %162, label %171

162:                                              ; preds = %154
  %163 = load ptr, ptr %6, align 8, !tbaa !5
  %164 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %165 = icmp ult i32 1, %164
  br i1 %165, label %166, label %168

166:                                              ; preds = %162
  %167 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %169

168:                                              ; preds = %162
  br label %169

169:                                              ; preds = %168, %166
  %170 = phi i32 [ %167, %166 ], [ 1, %168 ]
  call void @libxsmm_handle_error(ptr noundef %163, i32 noundef 90007, ptr noundef @__func__.libxsmm_generator_transform_sse_microkernel, ptr noundef @.str, i32 noundef 1814, i32 noundef %170)
  store i32 1, ptr %17, align 4
  br label %956

171:                                              ; preds = %154
  %172 = load ptr, ptr %10, align 8, !tbaa !5
  %173 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %172, i32 0, i32 10
  %174 = load i16, ptr %173, align 1, !tbaa !15
  %175 = zext i16 %174 to i32
  %176 = icmp eq i32 %175, 39
  br i1 %176, label %183, label %177

177:                                              ; preds = %171
  %178 = load ptr, ptr %10, align 8, !tbaa !5
  %179 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %178, i32 0, i32 10
  %180 = load i16, ptr %179, align 1, !tbaa !15
  %181 = zext i16 %180 to i32
  %182 = icmp eq i32 %181, 41
  br i1 %182, label %183, label %206

183:                                              ; preds = %177, %171
  %184 = load ptr, ptr %10, align 8, !tbaa !5
  %185 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %184, i32 0, i32 0
  %186 = load i32, ptr %185, align 1, !tbaa !18
  %187 = load ptr, ptr %10, align 8, !tbaa !5
  %188 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %187, i32 0, i32 0
  %189 = load i32, ptr %188, align 1, !tbaa !18
  %190 = urem i32 %189, 2
  %191 = add i32 %186, %190
  %192 = load ptr, ptr %10, align 8, !tbaa !5
  %193 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %192, i32 0, i32 3
  %194 = load i32, ptr %193, align 1, !tbaa !21
  %195 = icmp ugt i32 %191, %194
  br i1 %195, label %196, label %205

196:                                              ; preds = %183
  %197 = load ptr, ptr %6, align 8, !tbaa !5
  %198 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %199 = icmp ult i32 1, %198
  br i1 %199, label %200, label %202

200:                                              ; preds = %196
  %201 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %203

202:                                              ; preds = %196
  br label %203

203:                                              ; preds = %202, %200
  %204 = phi i32 [ %201, %200 ], [ 1, %202 ]
  call void @libxsmm_handle_error(ptr noundef %197, i32 noundef 90008, ptr noundef @__func__.libxsmm_generator_transform_sse_microkernel, ptr noundef @.str, i32 noundef 1820, i32 noundef %204)
  store i32 1, ptr %17, align 4
  br label %956

205:                                              ; preds = %183
  br label %224

206:                                              ; preds = %177
  %207 = load ptr, ptr %10, align 8, !tbaa !5
  %208 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %207, i32 0, i32 0
  %209 = load i32, ptr %208, align 1, !tbaa !18
  %210 = load ptr, ptr %10, align 8, !tbaa !5
  %211 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %210, i32 0, i32 3
  %212 = load i32, ptr %211, align 1, !tbaa !21
  %213 = icmp ugt i32 %209, %212
  br i1 %213, label %214, label %223

214:                                              ; preds = %206
  %215 = load ptr, ptr %6, align 8, !tbaa !5
  %216 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %217 = icmp ult i32 1, %216
  br i1 %217, label %218, label %220

218:                                              ; preds = %214
  %219 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %221

220:                                              ; preds = %214
  br label %221

221:                                              ; preds = %220, %218
  %222 = phi i32 [ %219, %218 ], [ 1, %220 ]
  call void @libxsmm_handle_error(ptr noundef %215, i32 noundef 90008, ptr noundef @__func__.libxsmm_generator_transform_sse_microkernel, ptr noundef @.str, i32 noundef 1825, i32 noundef %222)
  store i32 1, ptr %17, align 4
  br label %956

223:                                              ; preds = %206
  br label %224

224:                                              ; preds = %223, %205
  br label %226

225:                                              ; preds = %148
  br label %226

226:                                              ; preds = %225, %224
  br label %227

227:                                              ; preds = %226, %99
  %228 = load ptr, ptr %10, align 8, !tbaa !5
  %229 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %228, i32 noundef 0)
  %230 = icmp eq i32 6, %229
  br i1 %230, label %231, label %235

231:                                              ; preds = %227
  %232 = load ptr, ptr %10, align 8, !tbaa !5
  %233 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %232, i32 noundef 3)
  %234 = icmp eq i32 6, %233
  br i1 %234, label %243, label %235

235:                                              ; preds = %231, %227
  %236 = load ptr, ptr %10, align 8, !tbaa !5
  %237 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %236, i32 noundef 0)
  %238 = icmp eq i32 0, %237
  br i1 %238, label %239, label %268

239:                                              ; preds = %235
  %240 = load ptr, ptr %10, align 8, !tbaa !5
  %241 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %240, i32 noundef 3)
  %242 = icmp eq i32 0, %241
  br i1 %242, label %243, label %268

243:                                              ; preds = %239, %231
  %244 = load ptr, ptr %10, align 8, !tbaa !5
  %245 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %244, i32 0, i32 10
  %246 = load i16, ptr %245, align 1, !tbaa !15
  %247 = zext i16 %246 to i32
  %248 = icmp eq i32 %247, 29
  br i1 %248, label %249, label %258

249:                                              ; preds = %243
  %250 = load ptr, ptr %6, align 8, !tbaa !5
  %251 = load ptr, ptr %7, align 8, !tbaa !5
  %252 = load i32, ptr %11, align 4, !tbaa !9
  %253 = load i32, ptr %12, align 4, !tbaa !9
  %254 = load i32, ptr %13, align 4, !tbaa !9
  %255 = load i32, ptr %14, align 4, !tbaa !9
  %256 = load ptr, ptr %9, align 8, !tbaa !5
  %257 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_normt_64bit_sse_microkernel(ptr noundef %250, ptr noundef %251, i32 noundef %252, i32 noundef %253, i32 noundef %254, i32 noundef %255, ptr noundef %256, ptr noundef %257)
  br label %267

258:                                              ; preds = %243
  %259 = load ptr, ptr %6, align 8, !tbaa !5
  %260 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %261 = icmp ult i32 1, %260
  br i1 %261, label %262, label %264

262:                                              ; preds = %258
  %263 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %265

264:                                              ; preds = %258
  br label %265

265:                                              ; preds = %264, %262
  %266 = phi i32 [ %263, %262 ], [ 1, %264 ]
  call void @libxsmm_handle_error(ptr noundef %259, i32 noundef 90000, ptr noundef @__func__.libxsmm_generator_transform_sse_microkernel, ptr noundef @.str, i32 noundef 1842, i32 noundef %266)
  store i32 1, ptr %17, align 4
  br label %956

267:                                              ; preds = %249
  br label %955

268:                                              ; preds = %239, %235
  %269 = load ptr, ptr %10, align 8, !tbaa !5
  %270 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %269, i32 noundef 0)
  %271 = icmp eq i32 8, %270
  br i1 %271, label %272, label %276

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

276:                                              ; preds = %272, %268
  %277 = load ptr, ptr %10, align 8, !tbaa !5
  %278 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %277, i32 noundef 0)
  %279 = icmp eq i32 1, %278
  br i1 %279, label %280, label %309

280:                                              ; preds = %276
  %281 = load ptr, ptr %10, align 8, !tbaa !5
  %282 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %281, i32 noundef 3)
  %283 = icmp eq i32 1, %282
  br i1 %283, label %284, label %309

284:                                              ; preds = %280, %272
  %285 = load ptr, ptr %10, align 8, !tbaa !5
  %286 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %285, i32 0, i32 10
  %287 = load i16, ptr %286, align 1, !tbaa !15
  %288 = zext i16 %287 to i32
  %289 = icmp eq i32 %288, 29
  br i1 %289, label %290, label %299

290:                                              ; preds = %284
  %291 = load ptr, ptr %6, align 8, !tbaa !5
  %292 = load ptr, ptr %7, align 8, !tbaa !5
  %293 = load i32, ptr %11, align 4, !tbaa !9
  %294 = load i32, ptr %12, align 4, !tbaa !9
  %295 = load i32, ptr %13, align 4, !tbaa !9
  %296 = load i32, ptr %14, align 4, !tbaa !9
  %297 = load ptr, ptr %9, align 8, !tbaa !5
  %298 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_normt_32bit_sse_microkernel(ptr noundef %291, ptr noundef %292, i32 noundef %293, i32 noundef %294, i32 noundef %295, i32 noundef %296, ptr noundef %297, ptr noundef %298)
  br label %308

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

303:                                              ; preds = %299
  %304 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %306

305:                                              ; preds = %299
  br label %306

306:                                              ; preds = %305, %303
  %307 = phi i32 [ %304, %303 ], [ 1, %305 ]
  call void @libxsmm_handle_error(ptr noundef %300, i32 noundef 90000, ptr noundef @__func__.libxsmm_generator_transform_sse_microkernel, ptr noundef @.str, i32 noundef 1854, i32 noundef %307)
  store i32 1, ptr %17, align 4
  br label %956

308:                                              ; preds = %290
  br label %954

309:                                              ; preds = %280, %276
  %310 = load ptr, ptr %10, align 8, !tbaa !5
  %311 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %310, i32 noundef 0)
  %312 = icmp eq i32 10, %311
  br i1 %312, label %313, label %317

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

317:                                              ; preds = %313, %309
  %318 = load ptr, ptr %10, align 8, !tbaa !5
  %319 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %318, i32 noundef 0)
  %320 = icmp eq i32 3, %319
  br i1 %320, label %321, label %325

321:                                              ; preds = %317
  %322 = load ptr, ptr %10, align 8, !tbaa !5
  %323 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %322, i32 noundef 3)
  %324 = icmp eq i32 3, %323
  br i1 %324, label %333, label %325

325:                                              ; preds = %321, %317
  %326 = load ptr, ptr %10, align 8, !tbaa !5
  %327 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %326, i32 noundef 0)
  %328 = icmp eq i32 2, %327
  br i1 %328, label %329, label %722

329:                                              ; preds = %325
  %330 = load ptr, ptr %10, align 8, !tbaa !5
  %331 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %330, i32 noundef 3)
  %332 = icmp eq i32 2, %331
  br i1 %332, label %333, label %722

333:                                              ; preds = %329, %321, %313
  %334 = load ptr, ptr %10, align 8, !tbaa !5
  %335 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %334, i32 0, i32 10
  %336 = load i16, ptr %335, align 1, !tbaa !15
  %337 = zext i16 %336 to i32
  %338 = icmp eq i32 %337, 29
  br i1 %338, label %339, label %348

339:                                              ; preds = %333
  %340 = load ptr, ptr %6, align 8, !tbaa !5
  %341 = load ptr, ptr %7, align 8, !tbaa !5
  %342 = load i32, ptr %11, align 4, !tbaa !9
  %343 = load i32, ptr %12, align 4, !tbaa !9
  %344 = load i32, ptr %13, align 4, !tbaa !9
  %345 = load i32, ptr %14, align 4, !tbaa !9
  %346 = load ptr, ptr %9, align 8, !tbaa !5
  %347 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_normt_16bit_sse_microkernel(ptr noundef %340, ptr noundef %341, i32 noundef %342, i32 noundef %343, i32 noundef %344, i32 noundef %345, ptr noundef %346, ptr noundef %347)
  br label %721

348:                                              ; preds = %333
  %349 = load ptr, ptr %10, align 8, !tbaa !5
  %350 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %349, i32 0, i32 10
  %351 = load i16, ptr %350, align 1, !tbaa !15
  %352 = zext i16 %351 to i32
  %353 = icmp eq i32 %352, 73
  br i1 %353, label %354, label %379

354:                                              ; preds = %348
  call void @llvm.lifetime.start.p0(i64 96, ptr %18) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #3
  %355 = load ptr, ptr %10, align 8, !tbaa !5
  %356 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %355, i32 0, i32 0
  %357 = load i32, ptr %356, align 1, !tbaa !18
  %358 = udiv i32 %357, 8
  %359 = load ptr, ptr %10, align 8, !tbaa !5
  %360 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %359, i32 0, i32 1
  %361 = load i32, ptr %360, align 1, !tbaa !20
  %362 = load ptr, ptr %10, align 8, !tbaa !5
  %363 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %362, i32 0, i32 2
  %364 = load i32, ptr %363, align 1, !tbaa !19
  %365 = udiv i32 %364, 8
  %366 = load ptr, ptr %10, align 8, !tbaa !5
  %367 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %366, i32 0, i32 3
  %368 = load i32, ptr %367, align 1, !tbaa !21
  %369 = 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 %358, i32 noundef %361, i32 noundef %365, i32 noundef %368, i32 noundef 0, i32 noundef 0, i16 noundef zeroext 0, i16 noundef zeroext 29, i8 noundef zeroext 1)
  store ptr %369, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 516, ptr %20) #3
  %370 = load ptr, ptr %6, align 8, !tbaa !5
  %371 = load ptr, ptr %19, align 8, !tbaa !5
  call void @libxsmm_generator_mateltwise_init_micro_kernel_config_fullvector(ptr noundef %370, ptr noundef %20, ptr noundef %371)
  %372 = load ptr, ptr %6, align 8, !tbaa !5
  %373 = load ptr, ptr %7, align 8, !tbaa !5
  %374 = load i32, ptr %11, align 4, !tbaa !9
  %375 = load i32, ptr %12, align 4, !tbaa !9
  %376 = load i32, ptr %13, align 4, !tbaa !9
  %377 = load i32, ptr %14, align 4, !tbaa !9
  %378 = load ptr, ptr %19, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_normt_128bit_sse_microkernel(ptr noundef %372, ptr noundef %373, i32 noundef %374, i32 noundef %375, i32 noundef %376, i32 noundef %377, ptr noundef %20, ptr noundef %378)
  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 %720

379:                                              ; preds = %348
  %380 = load ptr, ptr %10, align 8, !tbaa !5
  %381 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %380, i32 0, i32 10
  %382 = load i16, ptr %381, align 1, !tbaa !15
  %383 = zext i16 %382 to i32
  %384 = icmp eq i32 %383, 56
  br i1 %384, label %385, label %410

385:                                              ; preds = %379
  call void @llvm.lifetime.start.p0(i64 96, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #3
  %386 = load ptr, ptr %10, align 8, !tbaa !5
  %387 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %386, i32 0, i32 0
  %388 = load i32, ptr %387, align 1, !tbaa !18
  %389 = udiv i32 %388, 4
  %390 = load ptr, ptr %10, align 8, !tbaa !5
  %391 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %390, i32 0, i32 1
  %392 = load i32, ptr %391, align 1, !tbaa !20
  %393 = load ptr, ptr %10, align 8, !tbaa !5
  %394 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %393, i32 0, i32 2
  %395 = load i32, ptr %394, align 1, !tbaa !19
  %396 = udiv i32 %395, 4
  %397 = load ptr, ptr %10, align 8, !tbaa !5
  %398 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %397, i32 0, i32 3
  %399 = load i32, ptr %398, align 1, !tbaa !21
  %400 = 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 %389, i32 noundef %392, i32 noundef %396, i32 noundef %399, i32 noundef 0, i32 noundef 0, i16 noundef zeroext 0, i16 noundef zeroext 29, i8 noundef zeroext 1)
  store ptr %400, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 516, ptr %23) #3
  %401 = load ptr, ptr %6, align 8, !tbaa !5
  %402 = load ptr, ptr %22, align 8, !tbaa !5
  call void @libxsmm_generator_mateltwise_init_micro_kernel_config_fullvector(ptr noundef %401, ptr noundef %23, ptr noundef %402)
  %403 = load ptr, ptr %6, align 8, !tbaa !5
  %404 = load ptr, ptr %7, align 8, !tbaa !5
  %405 = load i32, ptr %11, align 4, !tbaa !9
  %406 = load i32, ptr %12, align 4, !tbaa !9
  %407 = load i32, ptr %13, align 4, !tbaa !9
  %408 = load i32, ptr %14, align 4, !tbaa !9
  %409 = load ptr, ptr %22, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_normt_64bit_sse_microkernel(ptr noundef %403, ptr noundef %404, i32 noundef %405, i32 noundef %406, i32 noundef %407, i32 noundef %408, ptr noundef %23, ptr noundef %409)
  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 %719

410:                                              ; preds = %379
  %411 = load ptr, ptr %10, align 8, !tbaa !5
  %412 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %411, i32 0, i32 10
  %413 = load i16, ptr %412, align 1, !tbaa !15
  %414 = zext i16 %413 to i32
  %415 = icmp eq i32 %414, 31
  br i1 %415, label %416, label %441

416:                                              ; preds = %410
  call void @llvm.lifetime.start.p0(i64 96, ptr %24) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #3
  %417 = load ptr, ptr %10, align 8, !tbaa !5
  %418 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %417, i32 0, i32 0
  %419 = load i32, ptr %418, align 1, !tbaa !18
  %420 = udiv i32 %419, 2
  %421 = load ptr, ptr %10, align 8, !tbaa !5
  %422 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %421, i32 0, i32 1
  %423 = load i32, ptr %422, align 1, !tbaa !20
  %424 = load ptr, ptr %10, align 8, !tbaa !5
  %425 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %424, i32 0, i32 2
  %426 = load i32, ptr %425, align 1, !tbaa !19
  %427 = udiv i32 %426, 2
  %428 = load ptr, ptr %10, align 8, !tbaa !5
  %429 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %428, i32 0, i32 3
  %430 = load i32, ptr %429, align 1, !tbaa !21
  %431 = 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 %420, i32 noundef %423, i32 noundef %427, i32 noundef %430, i32 noundef 0, i32 noundef 0, i16 noundef zeroext 0, i16 noundef zeroext 29, i8 noundef zeroext 1)
  store ptr %431, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 516, ptr %26) #3
  %432 = load ptr, ptr %6, align 8, !tbaa !5
  %433 = load ptr, ptr %25, align 8, !tbaa !5
  call void @libxsmm_generator_mateltwise_init_micro_kernel_config_fullvector(ptr noundef %432, ptr noundef %26, ptr noundef %433)
  %434 = load ptr, ptr %6, align 8, !tbaa !5
  %435 = load ptr, ptr %7, align 8, !tbaa !5
  %436 = load i32, ptr %11, align 4, !tbaa !9
  %437 = load i32, ptr %12, align 4, !tbaa !9
  %438 = load i32, ptr %13, align 4, !tbaa !9
  %439 = load i32, ptr %14, align 4, !tbaa !9
  %440 = load ptr, ptr %25, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_normt_32bit_sse_microkernel(ptr noundef %434, ptr noundef %435, i32 noundef %436, i32 noundef %437, i32 noundef %438, i32 noundef %439, ptr noundef %26, ptr noundef %440)
  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 %718

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

447:                                              ; preds = %441
  call void @llvm.lifetime.start.p0(i64 96, ptr %27) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #3
  %448 = load ptr, ptr %10, align 8, !tbaa !5
  %449 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %448, i32 0, i32 0
  %450 = load i32, ptr %449, align 1, !tbaa !18
  %451 = load ptr, ptr %10, align 8, !tbaa !5
  %452 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %451, i32 0, i32 1
  %453 = load i32, ptr %452, align 1, !tbaa !20
  %454 = udiv i32 %453, 8
  %455 = load ptr, ptr %10, align 8, !tbaa !5
  %456 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %455, i32 0, i32 2
  %457 = load i32, ptr %456, align 1, !tbaa !19
  %458 = load ptr, ptr %10, align 8, !tbaa !5
  %459 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %458, i32 0, i32 3
  %460 = load i32, ptr %459, align 1, !tbaa !21
  %461 = udiv i32 %460, 8
  %462 = 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 %450, i32 noundef %454, i32 noundef %457, i32 noundef %461, i32 noundef 0, i32 noundef 0, i16 noundef zeroext 0, i16 noundef zeroext 29, i8 noundef zeroext 1)
  store ptr %462, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 516, ptr %29) #3
  %463 = load ptr, ptr %6, align 8, !tbaa !5
  %464 = load ptr, ptr %28, align 8, !tbaa !5
  call void @libxsmm_generator_mateltwise_init_micro_kernel_config_fullvector(ptr noundef %463, ptr noundef %29, ptr noundef %464)
  %465 = load ptr, ptr %6, align 8, !tbaa !5
  %466 = load ptr, ptr %7, align 8, !tbaa !5
  %467 = load i32, ptr %11, align 4, !tbaa !9
  %468 = load i32, ptr %12, align 4, !tbaa !9
  %469 = load i32, ptr %13, align 4, !tbaa !9
  %470 = load i32, ptr %14, align 4, !tbaa !9
  %471 = load ptr, ptr %28, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_normt_128bit_sse_microkernel(ptr noundef %465, ptr noundef %466, i32 noundef %467, i32 noundef %468, i32 noundef %469, i32 noundef %470, ptr noundef %29, ptr noundef %471)
  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 %717

472:                                              ; preds = %441
  %473 = load ptr, ptr %10, align 8, !tbaa !5
  %474 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %473, i32 0, i32 10
  %475 = load i16, ptr %474, align 1, !tbaa !15
  %476 = zext i16 %475 to i32
  %477 = icmp eq i32 %476, 66
  br i1 %477, label %478, label %503

478:                                              ; preds = %472
  call void @llvm.lifetime.start.p0(i64 96, ptr %30) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #3
  %479 = load ptr, ptr %10, align 8, !tbaa !5
  %480 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %479, i32 0, i32 0
  %481 = load i32, ptr %480, align 1, !tbaa !18
  %482 = load ptr, ptr %10, align 8, !tbaa !5
  %483 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %482, i32 0, i32 1
  %484 = load i32, ptr %483, align 1, !tbaa !20
  %485 = udiv i32 %484, 4
  %486 = load ptr, ptr %10, align 8, !tbaa !5
  %487 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %486, i32 0, i32 2
  %488 = load i32, ptr %487, align 1, !tbaa !19
  %489 = load ptr, ptr %10, align 8, !tbaa !5
  %490 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %489, i32 0, i32 3
  %491 = load i32, ptr %490, align 1, !tbaa !21
  %492 = udiv i32 %491, 4
  %493 = 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 %481, i32 noundef %485, i32 noundef %488, i32 noundef %492, i32 noundef 0, i32 noundef 0, i16 noundef zeroext 0, i16 noundef zeroext 29, i8 noundef zeroext 1)
  store ptr %493, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 516, ptr %32) #3
  %494 = load ptr, ptr %6, align 8, !tbaa !5
  %495 = load ptr, ptr %31, align 8, !tbaa !5
  call void @libxsmm_generator_mateltwise_init_micro_kernel_config_fullvector(ptr noundef %494, ptr noundef %32, ptr noundef %495)
  %496 = load ptr, ptr %6, align 8, !tbaa !5
  %497 = load ptr, ptr %7, align 8, !tbaa !5
  %498 = load i32, ptr %11, align 4, !tbaa !9
  %499 = load i32, ptr %12, align 4, !tbaa !9
  %500 = load i32, ptr %13, align 4, !tbaa !9
  %501 = load i32, ptr %14, align 4, !tbaa !9
  %502 = load ptr, ptr %31, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_normt_64bit_sse_microkernel(ptr noundef %496, ptr noundef %497, i32 noundef %498, i32 noundef %499, i32 noundef %500, i32 noundef %501, ptr noundef %32, ptr noundef %502)
  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 %716

503:                                              ; preds = %472
  %504 = load ptr, ptr %10, align 8, !tbaa !5
  %505 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %504, i32 0, i32 10
  %506 = load i16, ptr %505, align 1, !tbaa !15
  %507 = zext i16 %506 to i32
  %508 = icmp eq i32 %507, 67
  br i1 %508, label %509, label %534

509:                                              ; preds = %503
  call void @llvm.lifetime.start.p0(i64 96, ptr %33) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #3
  %510 = load ptr, ptr %10, align 8, !tbaa !5
  %511 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %510, i32 0, i32 0
  %512 = load i32, ptr %511, align 1, !tbaa !18
  %513 = load ptr, ptr %10, align 8, !tbaa !5
  %514 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %513, i32 0, i32 1
  %515 = load i32, ptr %514, align 1, !tbaa !20
  %516 = udiv i32 %515, 2
  %517 = load ptr, ptr %10, align 8, !tbaa !5
  %518 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %517, i32 0, i32 2
  %519 = load i32, ptr %518, align 1, !tbaa !19
  %520 = load ptr, ptr %10, align 8, !tbaa !5
  %521 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %520, i32 0, i32 3
  %522 = load i32, ptr %521, align 1, !tbaa !21
  %523 = udiv i32 %522, 2
  %524 = 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 %512, i32 noundef %516, i32 noundef %519, i32 noundef %523, i32 noundef 0, i32 noundef 0, i16 noundef zeroext 0, i16 noundef zeroext 29, i8 noundef zeroext 1)
  store ptr %524, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 516, ptr %35) #3
  %525 = load ptr, ptr %6, align 8, !tbaa !5
  %526 = load ptr, ptr %34, align 8, !tbaa !5
  call void @libxsmm_generator_mateltwise_init_micro_kernel_config_fullvector(ptr noundef %525, ptr noundef %35, ptr noundef %526)
  %527 = load ptr, ptr %6, align 8, !tbaa !5
  %528 = load ptr, ptr %7, align 8, !tbaa !5
  %529 = load i32, ptr %11, align 4, !tbaa !9
  %530 = load i32, ptr %12, align 4, !tbaa !9
  %531 = load i32, ptr %13, align 4, !tbaa !9
  %532 = load i32, ptr %14, align 4, !tbaa !9
  %533 = load ptr, ptr %34, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_normt_32bit_sse_microkernel(ptr noundef %527, ptr noundef %528, i32 noundef %529, i32 noundef %530, i32 noundef %531, i32 noundef %532, ptr noundef %35, ptr noundef %533)
  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 %715

534:                                              ; preds = %503
  %535 = load ptr, ptr %10, align 8, !tbaa !5
  %536 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %535, i32 0, i32 10
  %537 = load i16, ptr %536, align 1, !tbaa !15
  %538 = zext i16 %537 to i32
  %539 = icmp eq i32 %538, 30
  br i1 %539, label %540, label %549

540:                                              ; preds = %534
  %541 = load ptr, ptr %6, align 8, !tbaa !5
  %542 = load ptr, ptr %7, align 8, !tbaa !5
  %543 = load i32, ptr %11, align 4, !tbaa !9
  %544 = load i32, ptr %12, align 4, !tbaa !9
  %545 = load i32, ptr %13, align 4, !tbaa !9
  %546 = load i32, ptr %14, align 4, !tbaa !9
  %547 = load ptr, ptr %9, align 8, !tbaa !5
  %548 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_vnni2_to_vnni2t_16bit_sse_microkernel(ptr noundef %541, ptr noundef %542, i32 noundef %543, i32 noundef %544, i32 noundef %545, i32 noundef %546, ptr noundef %547, ptr noundef %548)
  br label %714

549:                                              ; preds = %534
  %550 = load ptr, ptr %10, align 8, !tbaa !5
  %551 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %550, i32 0, i32 10
  %552 = load i16, ptr %551, align 1, !tbaa !15
  %553 = zext i16 %552 to i32
  %554 = icmp eq i32 %553, 55
  br i1 %554, label %555, label %564

555:                                              ; preds = %549
  %556 = load ptr, ptr %6, align 8, !tbaa !5
  %557 = load ptr, ptr %7, align 8, !tbaa !5
  %558 = load i32, ptr %11, align 4, !tbaa !9
  %559 = load i32, ptr %12, align 4, !tbaa !9
  %560 = load i32, ptr %13, align 4, !tbaa !9
  %561 = load i32, ptr %14, align 4, !tbaa !9
  %562 = load ptr, ptr %9, align 8, !tbaa !5
  %563 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_vnni4_to_vnni4t_16bit_sse_microkernel(ptr noundef %556, ptr noundef %557, i32 noundef %558, i32 noundef %559, i32 noundef %560, i32 noundef %561, ptr noundef %562, ptr noundef %563)
  br label %713

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

570:                                              ; preds = %564
  %571 = load ptr, ptr %6, align 8, !tbaa !5
  %572 = load ptr, ptr %7, align 8, !tbaa !5
  %573 = load i32, ptr %11, align 4, !tbaa !9
  %574 = load i32, ptr %12, align 4, !tbaa !9
  %575 = load i32, ptr %13, align 4, !tbaa !9
  %576 = load i32, ptr %14, align 4, !tbaa !9
  %577 = load ptr, ptr %9, align 8, !tbaa !5
  %578 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_vnni8_to_vnni8t_16bit_sse_microkernel(ptr noundef %571, ptr noundef %572, i32 noundef %573, i32 noundef %574, i32 noundef %575, i32 noundef %576, ptr noundef %577, ptr noundef %578)
  br label %712

579:                                              ; preds = %564
  %580 = load ptr, ptr %10, align 8, !tbaa !5
  %581 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %580, i32 0, i32 10
  %582 = load i16, ptr %581, align 1, !tbaa !15
  %583 = zext i16 %582 to i32
  %584 = icmp eq i32 %583, 28
  br i1 %584, label %585, label %594

585:                                              ; preds = %579
  %586 = load ptr, ptr %6, align 8, !tbaa !5
  %587 = load ptr, ptr %7, align 8, !tbaa !5
  %588 = load i32, ptr %11, align 4, !tbaa !9
  %589 = load i32, ptr %12, align 4, !tbaa !9
  %590 = load i32, ptr %13, align 4, !tbaa !9
  %591 = load i32, ptr %14, align 4, !tbaa !9
  %592 = load ptr, ptr %9, align 8, !tbaa !5
  %593 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_vnni2_16bit_sse_microkernel(ptr noundef %586, ptr noundef %587, i32 noundef %588, i32 noundef %589, i32 noundef %590, i32 noundef %591, ptr noundef %592, ptr noundef %593, i32 noundef 0)
  br label %711

594:                                              ; preds = %579
  %595 = load ptr, ptr %10, align 8, !tbaa !5
  %596 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %595, i32 0, i32 10
  %597 = load i16, ptr %596, align 1, !tbaa !15
  %598 = zext i16 %597 to i32
  %599 = icmp eq i32 %598, 32
  br i1 %599, label %600, label %609

600:                                              ; preds = %594
  %601 = load ptr, ptr %6, align 8, !tbaa !5
  %602 = load ptr, ptr %7, align 8, !tbaa !5
  %603 = load i32, ptr %11, align 4, !tbaa !9
  %604 = load i32, ptr %12, align 4, !tbaa !9
  %605 = load i32, ptr %13, align 4, !tbaa !9
  %606 = load i32, ptr %14, align 4, !tbaa !9
  %607 = load ptr, ptr %9, align 8, !tbaa !5
  %608 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_vnni2_16bit_sse_microkernel(ptr noundef %601, ptr noundef %602, i32 noundef %603, i32 noundef %604, i32 noundef %605, i32 noundef %606, ptr noundef %607, ptr noundef %608, i32 noundef 1)
  br label %710

609:                                              ; preds = %594
  %610 = load ptr, ptr %10, align 8, !tbaa !5
  %611 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %610, i32 0, i32 10
  %612 = load i16, ptr %611, align 1, !tbaa !15
  %613 = zext i16 %612 to i32
  %614 = icmp eq i32 %613, 54
  br i1 %614, label %615, label %624

615:                                              ; preds = %609
  %616 = load ptr, ptr %6, align 8, !tbaa !5
  %617 = load ptr, ptr %7, align 8, !tbaa !5
  %618 = load i32, ptr %11, align 4, !tbaa !9
  %619 = load i32, ptr %12, align 4, !tbaa !9
  %620 = load i32, ptr %13, align 4, !tbaa !9
  %621 = load i32, ptr %14, align 4, !tbaa !9
  %622 = load ptr, ptr %9, align 8, !tbaa !5
  %623 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_vnni4_16bit_sse_microkernel(ptr noundef %616, ptr noundef %617, i32 noundef %618, i32 noundef %619, i32 noundef %620, i32 noundef %621, ptr noundef %622, ptr noundef %623, i32 noundef 0)
  br label %709

624:                                              ; preds = %609
  %625 = load ptr, ptr %10, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %625, i32 0, i32 10
  %627 = load i16, ptr %626, align 1, !tbaa !15
  %628 = zext i16 %627 to i32
  %629 = icmp eq i32 %628, 57
  br i1 %629, label %630, label %639

630:                                              ; preds = %624
  %631 = load ptr, ptr %6, align 8, !tbaa !5
  %632 = load ptr, ptr %7, align 8, !tbaa !5
  %633 = load i32, ptr %11, align 4, !tbaa !9
  %634 = load i32, ptr %12, align 4, !tbaa !9
  %635 = load i32, ptr %13, align 4, !tbaa !9
  %636 = load i32, ptr %14, align 4, !tbaa !9
  %637 = load ptr, ptr %9, align 8, !tbaa !5
  %638 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_vnni4_16bit_sse_microkernel(ptr noundef %631, ptr noundef %632, i32 noundef %633, i32 noundef %634, i32 noundef %635, i32 noundef %636, ptr noundef %637, ptr noundef %638, i32 noundef 1)
  br label %708

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

645:                                              ; preds = %639
  %646 = load ptr, ptr %6, align 8, !tbaa !5
  %647 = load ptr, ptr %7, align 8, !tbaa !5
  %648 = load i32, ptr %11, align 4, !tbaa !9
  %649 = load i32, ptr %12, align 4, !tbaa !9
  %650 = load i32, ptr %13, align 4, !tbaa !9
  %651 = load i32, ptr %14, align 4, !tbaa !9
  %652 = load ptr, ptr %9, align 8, !tbaa !5
  %653 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_vnni8_16bit_sse_microkernel(ptr noundef %646, ptr noundef %647, i32 noundef %648, i32 noundef %649, i32 noundef %650, i32 noundef %651, ptr noundef %652, ptr noundef %653, i32 noundef 0)
  br label %707

654:                                              ; preds = %639
  %655 = load ptr, ptr %10, align 8, !tbaa !5
  %656 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %655, i32 0, i32 10
  %657 = load i16, ptr %656, align 1, !tbaa !15
  %658 = zext i16 %657 to i32
  %659 = icmp eq i32 %658, 74
  br i1 %659, label %660, label %669

660:                                              ; preds = %654
  %661 = load ptr, ptr %6, align 8, !tbaa !5
  %662 = load ptr, ptr %7, align 8, !tbaa !5
  %663 = load i32, ptr %11, align 4, !tbaa !9
  %664 = load i32, ptr %12, align 4, !tbaa !9
  %665 = load i32, ptr %13, align 4, !tbaa !9
  %666 = load i32, ptr %14, align 4, !tbaa !9
  %667 = load ptr, ptr %9, align 8, !tbaa !5
  %668 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_vnni8_16bit_sse_microkernel(ptr noundef %661, ptr noundef %662, i32 noundef %663, i32 noundef %664, i32 noundef %665, i32 noundef %666, ptr noundef %667, ptr noundef %668, i32 noundef 1)
  br label %706

669:                                              ; preds = %654
  %670 = load ptr, ptr %10, align 8, !tbaa !5
  %671 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %670, i32 0, i32 10
  %672 = load i16, ptr %671, align 1, !tbaa !15
  %673 = zext i16 %672 to i32
  %674 = icmp eq i32 %673, 40
  br i1 %674, label %687, label %675

675:                                              ; preds = %669
  %676 = load ptr, ptr %10, align 8, !tbaa !5
  %677 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %676, i32 0, i32 10
  %678 = load i16, ptr %677, align 1, !tbaa !15
  %679 = zext i16 %678 to i32
  %680 = icmp eq i32 %679, 39
  br i1 %680, label %687, label %681

681:                                              ; preds = %675
  %682 = load ptr, ptr %10, align 8, !tbaa !5
  %683 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %682, i32 0, i32 10
  %684 = load i16, ptr %683, align 1, !tbaa !15
  %685 = zext i16 %684 to i32
  %686 = icmp eq i32 %685, 41
  br i1 %686, label %687, label %696

687:                                              ; preds = %681, %675, %669
  %688 = load ptr, ptr %6, align 8, !tbaa !5
  %689 = load ptr, ptr %7, align 8, !tbaa !5
  %690 = load i32, ptr %11, align 4, !tbaa !9
  %691 = load i32, ptr %12, align 4, !tbaa !9
  %692 = load i32, ptr %13, align 4, !tbaa !9
  %693 = load i32, ptr %14, align 4, !tbaa !9
  %694 = load ptr, ptr %9, align 8, !tbaa !5
  %695 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_padnm_mod2_16bit_sse_microkernel(ptr noundef %688, ptr noundef %689, i32 noundef %690, i32 noundef %691, i32 noundef %692, i32 noundef %693, ptr noundef %694, ptr noundef %695)
  br label %705

696:                                              ; preds = %681
  %697 = load ptr, ptr %6, align 8, !tbaa !5
  %698 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %699 = icmp ult i32 1, %698
  br i1 %699, label %700, label %702

700:                                              ; preds = %696
  %701 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %703

702:                                              ; preds = %696
  br label %703

703:                                              ; preds = %702, %700
  %704 = phi i32 [ %701, %700 ], [ 1, %702 ]
  call void @libxsmm_handle_error(ptr noundef %697, i32 noundef 90000, ptr noundef @__func__.libxsmm_generator_transform_sse_microkernel, ptr noundef @.str, i32 noundef 1982, i32 noundef %704)
  store i32 1, ptr %17, align 4
  br label %956

705:                                              ; preds = %687
  br label %706

706:                                              ; preds = %705, %660
  br label %707

707:                                              ; preds = %706, %645
  br label %708

708:                                              ; preds = %707, %630
  br label %709

709:                                              ; preds = %708, %615
  br label %710

710:                                              ; preds = %709, %600
  br label %711

711:                                              ; preds = %710, %585
  br label %712

712:                                              ; preds = %711, %570
  br label %713

713:                                              ; preds = %712, %555
  br label %714

714:                                              ; preds = %713, %540
  br label %715

715:                                              ; preds = %714, %509
  br label %716

716:                                              ; preds = %715, %478
  br label %717

717:                                              ; preds = %716, %447
  br label %718

718:                                              ; preds = %717, %416
  br label %719

719:                                              ; preds = %718, %385
  br label %720

720:                                              ; preds = %719, %354
  br label %721

721:                                              ; preds = %720, %339
  br label %953

722:                                              ; preds = %329, %325
  %723 = load ptr, ptr %10, align 8, !tbaa !5
  %724 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %723, i32 noundef 0)
  %725 = icmp eq i32 12, %724
  br i1 %725, label %726, label %730

726:                                              ; preds = %722
  %727 = load ptr, ptr %10, align 8, !tbaa !5
  %728 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %727, i32 noundef 3)
  %729 = icmp eq i32 12, %728
  br i1 %729, label %746, label %730

730:                                              ; preds = %726, %722
  %731 = load ptr, ptr %10, align 8, !tbaa !5
  %732 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %731, i32 noundef 0)
  %733 = icmp eq i32 4, %732
  br i1 %733, label %734, label %738

734:                                              ; preds = %730
  %735 = load ptr, ptr %10, align 8, !tbaa !5
  %736 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %735, i32 noundef 3)
  %737 = icmp eq i32 4, %736
  br i1 %737, label %746, label %738

738:                                              ; preds = %734, %730
  %739 = load ptr, ptr %10, align 8, !tbaa !5
  %740 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %739, i32 noundef 0)
  %741 = icmp eq i32 5, %740
  br i1 %741, label %742, label %943

742:                                              ; preds = %738
  %743 = load ptr, ptr %10, align 8, !tbaa !5
  %744 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %743, i32 noundef 3)
  %745 = icmp eq i32 5, %744
  br i1 %745, label %746, label %943

746:                                              ; preds = %742, %734, %726
  %747 = load ptr, ptr %10, align 8, !tbaa !5
  %748 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %747, i32 0, i32 10
  %749 = load i16, ptr %748, align 1, !tbaa !15
  %750 = zext i16 %749 to i32
  %751 = icmp eq i32 %750, 29
  br i1 %751, label %752, label %761

752:                                              ; preds = %746
  %753 = load ptr, ptr %6, align 8, !tbaa !5
  %754 = load ptr, ptr %7, align 8, !tbaa !5
  %755 = load i32, ptr %11, align 4, !tbaa !9
  %756 = load i32, ptr %12, align 4, !tbaa !9
  %757 = load i32, ptr %13, align 4, !tbaa !9
  %758 = load i32, ptr %14, align 4, !tbaa !9
  %759 = load ptr, ptr %9, align 8, !tbaa !5
  %760 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_normt_08bit_sse_microkernel(ptr noundef %753, ptr noundef %754, i32 noundef %755, i32 noundef %756, i32 noundef %757, i32 noundef %758, ptr noundef %759, ptr noundef %760)
  br label %942

761:                                              ; preds = %746
  %762 = load ptr, ptr %10, align 8, !tbaa !5
  %763 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %762, i32 0, i32 10
  %764 = load i16, ptr %763, align 1, !tbaa !15
  %765 = zext i16 %764 to i32
  %766 = icmp eq i32 %765, 55
  br i1 %766, label %767, label %776

767:                                              ; preds = %761
  %768 = load ptr, ptr %6, align 8, !tbaa !5
  %769 = load ptr, ptr %7, align 8, !tbaa !5
  %770 = load i32, ptr %11, align 4, !tbaa !9
  %771 = load i32, ptr %12, align 4, !tbaa !9
  %772 = load i32, ptr %13, align 4, !tbaa !9
  %773 = load i32, ptr %14, align 4, !tbaa !9
  %774 = load ptr, ptr %9, align 8, !tbaa !5
  %775 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_vnni4_to_vnni4t_08bit_sse_microkernel(ptr noundef %768, ptr noundef %769, i32 noundef %770, i32 noundef %771, i32 noundef %772, i32 noundef %773, ptr noundef %774, ptr noundef %775)
  br label %941

776:                                              ; preds = %761
  %777 = load ptr, ptr %10, align 8, !tbaa !5
  %778 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %777, i32 0, i32 10
  %779 = load i16, ptr %778, align 1, !tbaa !15
  %780 = zext i16 %779 to i32
  %781 = icmp eq i32 %780, 72
  br i1 %781, label %782, label %791

782:                                              ; preds = %776
  %783 = load ptr, ptr %6, align 8, !tbaa !5
  %784 = load ptr, ptr %7, align 8, !tbaa !5
  %785 = load i32, ptr %11, align 4, !tbaa !9
  %786 = load i32, ptr %12, align 4, !tbaa !9
  %787 = load i32, ptr %13, align 4, !tbaa !9
  %788 = load i32, ptr %14, align 4, !tbaa !9
  %789 = load ptr, ptr %9, align 8, !tbaa !5
  %790 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_vnni8_to_vnni8t_08bit_sse_microkernel(ptr noundef %783, ptr noundef %784, i32 noundef %785, i32 noundef %786, i32 noundef %787, i32 noundef %788, ptr noundef %789, ptr noundef %790)
  br label %940

791:                                              ; preds = %776
  %792 = load ptr, ptr %10, align 8, !tbaa !5
  %793 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %792, i32 0, i32 10
  %794 = load i16, ptr %793, align 1, !tbaa !15
  %795 = zext i16 %794 to i32
  %796 = icmp eq i32 %795, 61
  br i1 %796, label %797, label %806

797:                                              ; preds = %791
  %798 = load ptr, ptr %6, align 8, !tbaa !5
  %799 = load ptr, ptr %7, align 8, !tbaa !5
  %800 = load i32, ptr %11, align 4, !tbaa !9
  %801 = load i32, ptr %12, align 4, !tbaa !9
  %802 = load i32, ptr %13, align 4, !tbaa !9
  %803 = load i32, ptr %14, align 4, !tbaa !9
  %804 = load ptr, ptr %9, align 8, !tbaa !5
  %805 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_vnni4_to_norm_08bit_sse_microkernel(ptr noundef %798, ptr noundef %799, i32 noundef %800, i32 noundef %801, i32 noundef %802, i32 noundef %803, ptr noundef %804, ptr noundef %805)
  br label %939

806:                                              ; preds = %791
  %807 = load ptr, ptr %10, align 8, !tbaa !5
  %808 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %807, i32 0, i32 10
  %809 = load i16, ptr %808, align 1, !tbaa !15
  %810 = zext i16 %809 to i32
  %811 = icmp eq i32 %810, 62
  br i1 %811, label %812, label %821

812:                                              ; preds = %806
  %813 = load ptr, ptr %6, align 8, !tbaa !5
  %814 = load ptr, ptr %7, align 8, !tbaa !5
  %815 = load i32, ptr %11, align 4, !tbaa !9
  %816 = load i32, ptr %12, align 4, !tbaa !9
  %817 = load i32, ptr %13, align 4, !tbaa !9
  %818 = load i32, ptr %14, align 4, !tbaa !9
  %819 = load ptr, ptr %9, align 8, !tbaa !5
  %820 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_vnni4_to_vnni2_08bit_sse_microkernel(ptr noundef %813, ptr noundef %814, i32 noundef %815, i32 noundef %816, i32 noundef %817, i32 noundef %818, ptr noundef %819, ptr noundef %820)
  br label %938

821:                                              ; preds = %806
  %822 = load ptr, ptr %10, align 8, !tbaa !5
  %823 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %822, i32 0, i32 10
  %824 = load i16, ptr %823, align 1, !tbaa !15
  %825 = zext i16 %824 to i32
  %826 = icmp eq i32 %825, 54
  br i1 %826, label %827, label %836

827:                                              ; preds = %821
  %828 = load ptr, ptr %6, align 8, !tbaa !5
  %829 = load ptr, ptr %7, align 8, !tbaa !5
  %830 = load i32, ptr %11, align 4, !tbaa !9
  %831 = load i32, ptr %12, align 4, !tbaa !9
  %832 = load i32, ptr %13, align 4, !tbaa !9
  %833 = load i32, ptr %14, align 4, !tbaa !9
  %834 = load ptr, ptr %9, align 8, !tbaa !5
  %835 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_vnni4_08bit_sse_microkernel(ptr noundef %828, ptr noundef %829, i32 noundef %830, i32 noundef %831, i32 noundef %832, i32 noundef %833, ptr noundef %834, ptr noundef %835, i32 noundef 0)
  br label %937

836:                                              ; preds = %821
  %837 = load ptr, ptr %10, align 8, !tbaa !5
  %838 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %837, i32 0, i32 10
  %839 = load i16, ptr %838, align 1, !tbaa !15
  %840 = zext i16 %839 to i32
  %841 = icmp eq i32 %840, 57
  br i1 %841, label %842, label %851

842:                                              ; preds = %836
  %843 = load ptr, ptr %6, align 8, !tbaa !5
  %844 = load ptr, ptr %7, align 8, !tbaa !5
  %845 = load i32, ptr %11, align 4, !tbaa !9
  %846 = load i32, ptr %12, align 4, !tbaa !9
  %847 = load i32, ptr %13, align 4, !tbaa !9
  %848 = load i32, ptr %14, align 4, !tbaa !9
  %849 = load ptr, ptr %9, align 8, !tbaa !5
  %850 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_vnni4_08bit_sse_microkernel(ptr noundef %843, ptr noundef %844, i32 noundef %845, i32 noundef %846, i32 noundef %847, i32 noundef %848, ptr noundef %849, ptr noundef %850, i32 noundef 1)
  br label %936

851:                                              ; preds = %836
  %852 = load ptr, ptr %10, align 8, !tbaa !5
  %853 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %852, i32 0, i32 10
  %854 = load i16, ptr %853, align 1, !tbaa !15
  %855 = zext i16 %854 to i32
  %856 = icmp eq i32 %855, 76
  br i1 %856, label %857, label %866

857:                                              ; preds = %851
  %858 = load ptr, ptr %6, align 8, !tbaa !5
  %859 = load ptr, ptr %7, align 8, !tbaa !5
  %860 = load i32, ptr %11, align 4, !tbaa !9
  %861 = load i32, ptr %12, align 4, !tbaa !9
  %862 = load i32, ptr %13, align 4, !tbaa !9
  %863 = load i32, ptr %14, align 4, !tbaa !9
  %864 = load ptr, ptr %9, align 8, !tbaa !5
  %865 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_vnni8_to_norm_08bit_sse_microkernel(ptr noundef %858, ptr noundef %859, i32 noundef %860, i32 noundef %861, i32 noundef %862, i32 noundef %863, ptr noundef %864, ptr noundef %865)
  br label %935

866:                                              ; preds = %851
  %867 = load ptr, ptr %10, align 8, !tbaa !5
  %868 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %867, i32 0, i32 10
  %869 = load i16, ptr %868, align 1, !tbaa !15
  %870 = zext i16 %869 to i32
  %871 = icmp eq i32 %870, 71
  br i1 %871, label %872, label %881

872:                                              ; preds = %866
  %873 = load ptr, ptr %6, align 8, !tbaa !5
  %874 = load ptr, ptr %7, align 8, !tbaa !5
  %875 = load i32, ptr %11, align 4, !tbaa !9
  %876 = load i32, ptr %12, align 4, !tbaa !9
  %877 = load i32, ptr %13, align 4, !tbaa !9
  %878 = load i32, ptr %14, align 4, !tbaa !9
  %879 = load ptr, ptr %9, align 8, !tbaa !5
  %880 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_vnni8_08bit_sse_microkernel(ptr noundef %873, ptr noundef %874, i32 noundef %875, i32 noundef %876, i32 noundef %877, i32 noundef %878, ptr noundef %879, ptr noundef %880, i32 noundef 0)
  br label %934

881:                                              ; preds = %866
  %882 = load ptr, ptr %10, align 8, !tbaa !5
  %883 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %882, i32 0, i32 10
  %884 = load i16, ptr %883, align 1, !tbaa !15
  %885 = zext i16 %884 to i32
  %886 = icmp eq i32 %885, 74
  br i1 %886, label %887, label %896

887:                                              ; preds = %881
  %888 = load ptr, ptr %6, align 8, !tbaa !5
  %889 = load ptr, ptr %7, align 8, !tbaa !5
  %890 = load i32, ptr %11, align 4, !tbaa !9
  %891 = load i32, ptr %12, align 4, !tbaa !9
  %892 = load i32, ptr %13, align 4, !tbaa !9
  %893 = load i32, ptr %14, align 4, !tbaa !9
  %894 = load ptr, ptr %9, align 8, !tbaa !5
  %895 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_to_vnni8_08bit_sse_microkernel(ptr noundef %888, ptr noundef %889, i32 noundef %890, i32 noundef %891, i32 noundef %892, i32 noundef %893, ptr noundef %894, ptr noundef %895, i32 noundef 1)
  br label %933

896:                                              ; preds = %881
  %897 = load ptr, ptr %10, align 8, !tbaa !5
  %898 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %897, i32 0, i32 10
  %899 = load i16, ptr %898, align 1, !tbaa !15
  %900 = zext i16 %899 to i32
  %901 = icmp eq i32 %900, 59
  br i1 %901, label %914, label %902

902:                                              ; preds = %896
  %903 = load ptr, ptr %10, align 8, !tbaa !5
  %904 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %903, i32 0, i32 10
  %905 = load i16, ptr %904, align 1, !tbaa !15
  %906 = zext i16 %905 to i32
  %907 = icmp eq i32 %906, 58
  br i1 %907, label %914, label %908

908:                                              ; preds = %902
  %909 = load ptr, ptr %10, align 8, !tbaa !5
  %910 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %909, i32 0, i32 10
  %911 = load i16, ptr %910, align 1, !tbaa !15
  %912 = zext i16 %911 to i32
  %913 = icmp eq i32 %912, 60
  br i1 %913, label %914, label %923

914:                                              ; preds = %908, %902, %896
  %915 = load ptr, ptr %6, align 8, !tbaa !5
  %916 = load ptr, ptr %7, align 8, !tbaa !5
  %917 = load i32, ptr %11, align 4, !tbaa !9
  %918 = load i32, ptr %12, align 4, !tbaa !9
  %919 = load i32, ptr %13, align 4, !tbaa !9
  %920 = load i32, ptr %14, align 4, !tbaa !9
  %921 = load ptr, ptr %9, align 8, !tbaa !5
  %922 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libxsmm_generator_transform_norm_padnm_mod4_08bit_sse_microkernel(ptr noundef %915, ptr noundef %916, i32 noundef %917, i32 noundef %918, i32 noundef %919, i32 noundef %920, ptr noundef %921, ptr noundef %922)
  br label %932

923:                                              ; preds = %908
  %924 = load ptr, ptr %6, align 8, !tbaa !5
  %925 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %926 = icmp ult i32 1, %925
  br i1 %926, label %927, label %929

927:                                              ; preds = %923
  %928 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %930

929:                                              ; preds = %923
  br label %930

930:                                              ; preds = %929, %927
  %931 = phi i32 [ %928, %927 ], [ 1, %929 ]
  call void @libxsmm_handle_error(ptr noundef %924, i32 noundef 90000, ptr noundef @__func__.libxsmm_generator_transform_sse_microkernel, ptr noundef @.str, i32 noundef 2038, i32 noundef %931)
  store i32 1, ptr %17, align 4
  br label %956

932:                                              ; preds = %914
  br label %933

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

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

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

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

937:                                              ; preds = %936, %827
  br label %938

938:                                              ; preds = %937, %812
  br label %939

939:                                              ; preds = %938, %797
  br label %940

940:                                              ; preds = %939, %782
  br label %941

941:                                              ; preds = %940, %767
  br label %942

942:                                              ; preds = %941, %752
  br label %952

943:                                              ; preds = %742, %738
  %944 = load ptr, ptr %6, align 8, !tbaa !5
  %945 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !9
  %946 = icmp ult i32 1, %945
  br i1 %946, label %947, label %949

947:                                              ; preds = %943
  %948 = load i32, ptr @libxsmm_verbosity, align 4, !tbaa !9
  br label %950

949:                                              ; preds = %943
  br label %950

950:                                              ; preds = %949, %947
  %951 = phi i32 [ %948, %947 ], [ 1, %949 ]
  call void @libxsmm_handle_error(ptr noundef %944, i32 noundef 90000, ptr noundef @__func__.libxsmm_generator_transform_sse_microkernel, ptr noundef @.str, i32 noundef 2042, i32 noundef %951)
  store i32 1, ptr %17, align 4
  br label %956

952:                                              ; preds = %942
  br label %953

953:                                              ; preds = %952, %721
  br label %954

954:                                              ; preds = %953, %308
  br label %955

955:                                              ; preds = %954, %267
  store i32 0, ptr %17, align 4
  br label %956

956:                                              ; preds = %955, %950, %930, %703, %306, %265, %221, %203, %169, %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
  %957 = load i32, ptr %17, align 4
  switch i32 %957, label %959 [
    i32 0, label %958
    i32 1, label %958
  ]

958:                                              ; preds = %956, %956
  ret void

959:                                              ; preds = %956
  unreachable
}

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_sse_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

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

; 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_sse_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_sse_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_sse_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_sse_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_sse_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_sse_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_sse_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_sse_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_sse_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_sse_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_sse_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_sse_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_sse_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_sse_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_sse_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_sse_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_sse_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_sse_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_sse_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_sse_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_sse_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 54, label %46
    i16 57, label %46
    i16 71, label %46
    i16 74, 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_sse_microkernel, ptr noundef nonnull @.str, i32 noundef 1797, i32 noundef %34) #3
  br label %262

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_sse_microkernel, ptr noundef nonnull @.str, i32 noundef 1801, i32 noundef %45) #3
  br label %262

46:                                               ; preds = %5, %5, %5, %5, %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_sse_microkernel, ptr noundef nonnull @.str, i32 noundef 1814, i32 noundef %55) #3
  br label %262

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_sse_microkernel, ptr noundef nonnull @.str, i32 noundef 1820, i32 noundef %67) #3
  br label %262

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_sse_microkernel, ptr noundef nonnull @.str, i32 noundef 1825, i32 noundef %76) #3
  br label %262

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_sse_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 %262

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_sse_microkernel, ptr noundef nonnull @.str, i32 noundef 1842, i32 noundef %97) #3
  br label %262

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_sse_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 %262

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_sse_microkernel, ptr noundef nonnull @.str, i32 noundef 1854, i32 noundef %118) #3
  br label %262

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

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

137:                                              ; preds = %134, %128, %122
  %138 = load i16, ptr %23, align 1, !tbaa !12
  switch i16 %138, label %216 [
    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 74, label %214
    i16 40, label %215
    i16 39, label %215
    i16 41, label %215
  ]

139:                                              ; preds = %137
  tail call void @libxsmm_generator_transform_norm_to_normt_16bit_sse_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 %262

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_sse_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 %262

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_sse_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 %262

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_sse_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 %262

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_sse_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 %262

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_sse_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 %262

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_sse_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 %262

206:                                              ; preds = %137
  tail call void @libxsmm_generator_transform_vnni2_to_vnni2t_16bit_sse_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 %262

207:                                              ; preds = %137
  tail call void @libxsmm_generator_transform_vnni4_to_vnni4t_16bit_sse_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 %262

208:                                              ; preds = %137
  tail call void @libxsmm_generator_transform_vnni8_to_vnni8t_16bit_sse_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 %262

209:                                              ; preds = %137
  tail call void @libxsmm_generator_transform_norm_to_vnni2_16bit_sse_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 %262

210:                                              ; preds = %137
  tail call void @libxsmm_generator_transform_norm_to_vnni2_16bit_sse_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 %262

211:                                              ; preds = %137
  tail call void @libxsmm_generator_transform_norm_to_vnni4_16bit_sse_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 %262

212:                                              ; preds = %137
  tail call void @libxsmm_generator_transform_norm_to_vnni4_16bit_sse_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 %262

213:                                              ; preds = %137
  tail call void @libxsmm_generator_transform_norm_to_vnni8_16bit_sse_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 %262

214:                                              ; preds = %137
  tail call void @libxsmm_generator_transform_norm_to_vnni8_16bit_sse_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 %262

215:                                              ; preds = %137, %137, %137
  tail call void @libxsmm_generator_transform_norm_padnm_mod2_16bit_sse_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 %262

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

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

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

227:                                              ; preds = %224, %221
  %228 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #3
  %229 = icmp eq i32 %228, 4
  br i1 %229, label %230, label %233

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

233:                                              ; preds = %230, %227
  %234 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef nonnull %4, i32 noundef 0) #3
  %235 = icmp eq i32 %234, 5
  br i1 %235, label %236, label %257

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

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

241:                                              ; preds = %239
  tail call void @libxsmm_generator_transform_norm_to_normt_08bit_sse_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 %262

242:                                              ; preds = %239
  tail call void @libxsmm_generator_transform_vnni4_to_vnni4t_08bit_sse_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 %262

243:                                              ; preds = %239
  tail call void @libxsmm_generator_transform_vnni8_to_vnni8t_08bit_sse_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 %262

244:                                              ; preds = %239
  tail call void @libxsmm_generator_transform_vnni4_to_norm_08bit_sse_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 %262

245:                                              ; preds = %239
  tail call void @libxsmm_generator_transform_vnni4_to_vnni2_08bit_sse_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 %262

246:                                              ; preds = %239
  tail call void @libxsmm_generator_transform_norm_to_vnni4_08bit_sse_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 %262

247:                                              ; preds = %239
  tail call void @libxsmm_generator_transform_norm_to_vnni4_08bit_sse_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 %262

248:                                              ; preds = %239
  tail call void @libxsmm_generator_transform_vnni8_to_norm_08bit_sse_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 %262

249:                                              ; preds = %239
  tail call void @libxsmm_generator_transform_norm_to_vnni8_08bit_sse_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 %262

250:                                              ; preds = %239
  tail call void @libxsmm_generator_transform_norm_to_vnni8_08bit_sse_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 %262

251:                                              ; preds = %239, %239, %239
  tail call void @libxsmm_generator_transform_norm_padnm_mod4_08bit_sse_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 %262

252:                                              ; preds = %239
  %253 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !17
  %254 = icmp ugt i32 %253, 1
  %255 = load i32, ptr @libxsmm_verbosity, align 4
  %256 = select i1 %254, i32 %255, i32 1
  tail call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90000, ptr noundef nonnull @__func__.libxsmm_generator_transform_sse_microkernel, ptr noundef nonnull @.str, i32 noundef 2038, i32 noundef %256) #3
  br label %262

257:                                              ; preds = %236, %233
  %258 = load i32, ptr @libxsmm_ninit, align 4, !tbaa !17
  %259 = icmp ugt i32 %258, 1
  %260 = load i32, ptr @libxsmm_verbosity, align 4
  %261 = select i1 %259, i32 %260, i32 1
  tail call void @libxsmm_handle_error(ptr noundef %0, i32 noundef 90000, ptr noundef nonnull @__func__.libxsmm_generator_transform_sse_microkernel, ptr noundef nonnull @.str, i32 noundef 2042, i32 noundef %261) #3
  br label %262

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

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