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

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

%struct.libxsmm_meltw_descriptor = type <{ i32, i32, i32, i32, i32, i32, i8, i8, i8, i16, i16, i8 }>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_elementwise_transform_kernel(ptr noundef %0, ptr noundef %1) #1 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #3
  %6 = load ptr, ptr %4, align 8, !tbaa !5
  %7 = call i32 @libxsmm_meltw_getenum_precision(ptr noundef %6, i32 noundef 0)
  store i32 %7, ptr %5, align 4, !tbaa !9
  %8 = load ptr, ptr %4, align 8, !tbaa !5
  %9 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %8, i32 0, i32 10
  %10 = load i16, ptr %9, align 1, !tbaa !11
  %11 = zext i16 %10 to i32
  %12 = icmp eq i32 %11, 29
  br i1 %12, label %13, label %16

13:                                               ; preds = %2
  %14 = load ptr, ptr %3, align 8, !tbaa !5
  %15 = load ptr, ptr %4, align 8, !tbaa !5
  call void @libxsmm_ref_transpose(ptr noundef %14, ptr noundef %15)
  br label %566

16:                                               ; preds = %2
  %17 = load ptr, ptr %4, align 8, !tbaa !5
  %18 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %17, i32 0, i32 10
  %19 = load i16, ptr %18, align 1, !tbaa !11
  %20 = zext i16 %19 to i32
  %21 = icmp eq i32 %20, 30
  br i1 %21, label %22, label %34

22:                                               ; preds = %16
  %23 = load i32, ptr %5, align 4, !tbaa !9
  %24 = icmp eq i32 %23, 2
  br i1 %24, label %31, label %25

25:                                               ; preds = %22
  %26 = load i32, ptr %5, align 4, !tbaa !9
  %27 = icmp eq i32 %26, 3
  br i1 %27, label %31, label %28

28:                                               ; preds = %25
  %29 = load i32, ptr %5, align 4, !tbaa !9
  %30 = icmp eq i32 %29, 10
  br i1 %30, label %31, label %34

31:                                               ; preds = %28, %25, %22
  %32 = load ptr, ptr %3, align 8, !tbaa !5
  %33 = load ptr, ptr %4, align 8, !tbaa !5
  call void @libxsmm_ref_vnni2_to_vnni2T_16bit(ptr noundef %32, ptr noundef %33)
  br label %565

34:                                               ; preds = %28, %16
  %35 = load ptr, ptr %4, align 8, !tbaa !5
  %36 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %35, i32 0, i32 10
  %37 = load i16, ptr %36, align 1, !tbaa !11
  %38 = zext i16 %37 to i32
  %39 = icmp eq i32 %38, 55
  br i1 %39, label %40, label %52

40:                                               ; preds = %34
  %41 = load i32, ptr %5, align 4, !tbaa !9
  %42 = icmp eq i32 %41, 12
  br i1 %42, label %49, label %43

43:                                               ; preds = %40
  %44 = load i32, ptr %5, align 4, !tbaa !9
  %45 = icmp eq i32 %44, 4
  br i1 %45, label %49, label %46

46:                                               ; preds = %43
  %47 = load i32, ptr %5, align 4, !tbaa !9
  %48 = icmp eq i32 %47, 5
  br i1 %48, label %49, label %52

49:                                               ; preds = %46, %43, %40
  %50 = load ptr, ptr %3, align 8, !tbaa !5
  %51 = load ptr, ptr %4, align 8, !tbaa !5
  call void @libxsmm_ref_vnni4_to_vnni4T_08bit(ptr noundef %50, ptr noundef %51)
  br label %564

52:                                               ; preds = %46, %34
  %53 = load ptr, ptr %4, align 8, !tbaa !5
  %54 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %53, i32 0, i32 10
  %55 = load i16, ptr %54, align 1, !tbaa !11
  %56 = zext i16 %55 to i32
  %57 = icmp eq i32 %56, 72
  br i1 %57, label %58, label %70

58:                                               ; preds = %52
  %59 = load i32, ptr %5, align 4, !tbaa !9
  %60 = icmp eq i32 %59, 10
  br i1 %60, label %67, label %61

61:                                               ; preds = %58
  %62 = load i32, ptr %5, align 4, !tbaa !9
  %63 = icmp eq i32 %62, 2
  br i1 %63, label %67, label %64

64:                                               ; preds = %61
  %65 = load i32, ptr %5, align 4, !tbaa !9
  %66 = icmp eq i32 %65, 3
  br i1 %66, label %67, label %70

67:                                               ; preds = %64, %61, %58
  %68 = load ptr, ptr %3, align 8, !tbaa !5
  %69 = load ptr, ptr %4, align 8, !tbaa !5
  call void @libxsmm_ref_vnni8_to_vnni8T_16bit(ptr noundef %68, ptr noundef %69)
  br label %563

70:                                               ; preds = %64, %52
  %71 = load ptr, ptr %4, align 8, !tbaa !5
  %72 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %71, i32 0, i32 10
  %73 = load i16, ptr %72, align 1, !tbaa !11
  %74 = zext i16 %73 to i32
  %75 = icmp eq i32 %74, 72
  br i1 %75, label %76, label %88

76:                                               ; preds = %70
  %77 = load i32, ptr %5, align 4, !tbaa !9
  %78 = icmp eq i32 %77, 12
  br i1 %78, label %85, label %79

79:                                               ; preds = %76
  %80 = load i32, ptr %5, align 4, !tbaa !9
  %81 = icmp eq i32 %80, 4
  br i1 %81, label %85, label %82

82:                                               ; preds = %79
  %83 = load i32, ptr %5, align 4, !tbaa !9
  %84 = icmp eq i32 %83, 5
  br i1 %84, label %85, label %88

85:                                               ; preds = %82, %79, %76
  %86 = load ptr, ptr %3, align 8, !tbaa !5
  %87 = load ptr, ptr %4, align 8, !tbaa !5
  call void @libxsmm_ref_vnni8_to_vnni8T_08bit(ptr noundef %86, ptr noundef %87)
  br label %562

88:                                               ; preds = %82, %70
  %89 = load ptr, ptr %4, align 8, !tbaa !5
  %90 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %89, i32 0, i32 10
  %91 = load i16, ptr %90, align 1, !tbaa !11
  %92 = zext i16 %91 to i32
  %93 = icmp eq i32 %92, 32
  br i1 %93, label %100, label %94

94:                                               ; preds = %88
  %95 = load ptr, ptr %4, align 8, !tbaa !5
  %96 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %95, i32 0, i32 10
  %97 = load i16, ptr %96, align 1, !tbaa !11
  %98 = zext i16 %97 to i32
  %99 = icmp eq i32 %98, 28
  br i1 %99, label %100, label %112

100:                                              ; preds = %94, %88
  %101 = load i32, ptr %5, align 4, !tbaa !9
  %102 = icmp eq i32 %101, 10
  br i1 %102, label %109, label %103

103:                                              ; preds = %100
  %104 = load i32, ptr %5, align 4, !tbaa !9
  %105 = icmp eq i32 %104, 2
  br i1 %105, label %109, label %106

106:                                              ; preds = %103
  %107 = load i32, ptr %5, align 4, !tbaa !9
  %108 = icmp eq i32 %107, 3
  br i1 %108, label %109, label %112

109:                                              ; preds = %106, %103, %100
  %110 = load ptr, ptr %3, align 8, !tbaa !5
  %111 = load ptr, ptr %4, align 8, !tbaa !5
  call void @libxsmm_ref_norm_to_vnni2_16bit(ptr noundef %110, ptr noundef %111)
  br label %561

112:                                              ; preds = %106, %94
  %113 = load ptr, ptr %4, 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 !11
  %116 = zext i16 %115 to i32
  %117 = icmp eq i32 %116, 31
  br i1 %117, label %118, label %130

118:                                              ; preds = %112
  %119 = load i32, ptr %5, align 4, !tbaa !9
  %120 = icmp eq i32 %119, 2
  br i1 %120, label %127, label %121

121:                                              ; preds = %118
  %122 = load i32, ptr %5, align 4, !tbaa !9
  %123 = icmp eq i32 %122, 3
  br i1 %123, label %127, label %124

124:                                              ; preds = %121
  %125 = load i32, ptr %5, align 4, !tbaa !9
  %126 = icmp eq i32 %125, 10
  br i1 %126, label %127, label %130

127:                                              ; preds = %124, %121, %118
  %128 = load ptr, ptr %3, align 8, !tbaa !5
  %129 = load ptr, ptr %4, align 8, !tbaa !5
  call void @libxsmm_ref_norm_to_vnni2T_16bit(ptr noundef %128, ptr noundef %129)
  br label %560

130:                                              ; preds = %124, %112
  %131 = load ptr, ptr %4, 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 !11
  %134 = zext i16 %133 to i32
  %135 = icmp eq i32 %134, 55
  br i1 %135, label %136, label %148

136:                                              ; preds = %130
  %137 = load i32, ptr %5, align 4, !tbaa !9
  %138 = icmp eq i32 %137, 2
  br i1 %138, label %145, label %139

139:                                              ; preds = %136
  %140 = load i32, ptr %5, align 4, !tbaa !9
  %141 = icmp eq i32 %140, 3
  br i1 %141, label %145, label %142

142:                                              ; preds = %139
  %143 = load i32, ptr %5, align 4, !tbaa !9
  %144 = icmp eq i32 %143, 10
  br i1 %144, label %145, label %148

145:                                              ; preds = %142, %139, %136
  %146 = load ptr, ptr %3, align 8, !tbaa !5
  %147 = load ptr, ptr %4, align 8, !tbaa !5
  call void @libxsmm_ref_vnni4_to_vnni4T_16bit(ptr noundef %146, ptr noundef %147)
  br label %559

148:                                              ; preds = %142, %130
  %149 = load ptr, ptr %4, 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 !11
  %152 = zext i16 %151 to i32
  %153 = icmp eq i32 %152, 32
  br i1 %153, label %160, label %154

154:                                              ; preds = %148
  %155 = load ptr, ptr %4, align 8, !tbaa !5
  %156 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %155, i32 0, i32 10
  %157 = load i16, ptr %156, align 1, !tbaa !11
  %158 = zext i16 %157 to i32
  %159 = icmp eq i32 %158, 28
  br i1 %159, label %160, label %172

160:                                              ; preds = %154, %148
  %161 = load i32, ptr %5, align 4, !tbaa !9
  %162 = icmp eq i32 %161, 10
  br i1 %162, label %169, label %163

163:                                              ; preds = %160
  %164 = load i32, ptr %5, align 4, !tbaa !9
  %165 = icmp eq i32 %164, 2
  br i1 %165, label %169, label %166

166:                                              ; preds = %163
  %167 = load i32, ptr %5, align 4, !tbaa !9
  %168 = icmp eq i32 %167, 3
  br i1 %168, label %169, label %172

169:                                              ; preds = %166, %163, %160
  %170 = load ptr, ptr %3, align 8, !tbaa !5
  %171 = load ptr, ptr %4, align 8, !tbaa !5
  call void @libxsmm_ref_norm_to_vnni2_16bit(ptr noundef %170, ptr noundef %171)
  br label %558

172:                                              ; preds = %166, %154
  %173 = load ptr, ptr %4, align 8, !tbaa !5
  %174 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %173, i32 0, i32 10
  %175 = load i16, ptr %174, align 1, !tbaa !11
  %176 = zext i16 %175 to i32
  %177 = icmp eq i32 %176, 31
  br i1 %177, label %178, label %190

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

181:                                              ; preds = %178
  %182 = load i32, ptr %5, align 4, !tbaa !9
  %183 = icmp eq i32 %182, 2
  br i1 %183, label %187, label %184

184:                                              ; preds = %181
  %185 = load i32, ptr %5, align 4, !tbaa !9
  %186 = icmp eq i32 %185, 3
  br i1 %186, label %187, label %190

187:                                              ; preds = %184, %181, %178
  %188 = load ptr, ptr %3, align 8, !tbaa !5
  %189 = load ptr, ptr %4, align 8, !tbaa !5
  call void @libxsmm_ref_norm_to_vnni2T_16bit(ptr noundef %188, ptr noundef %189)
  br label %557

190:                                              ; preds = %184, %172
  %191 = load ptr, ptr %4, align 8, !tbaa !5
  %192 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %191, i32 0, i32 10
  %193 = load i16, ptr %192, align 1, !tbaa !11
  %194 = zext i16 %193 to i32
  %195 = icmp eq i32 %194, 75
  br i1 %195, label %196, label %208

196:                                              ; preds = %190
  %197 = load i32, ptr %5, align 4, !tbaa !9
  %198 = icmp eq i32 %197, 10
  br i1 %198, label %205, label %199

199:                                              ; preds = %196
  %200 = load i32, ptr %5, align 4, !tbaa !9
  %201 = icmp eq i32 %200, 2
  br i1 %201, label %205, label %202

202:                                              ; preds = %199
  %203 = load i32, ptr %5, align 4, !tbaa !9
  %204 = icmp eq i32 %203, 3
  br i1 %204, label %205, label %208

205:                                              ; preds = %202, %199, %196
  %206 = load ptr, ptr %3, align 8, !tbaa !5
  %207 = load ptr, ptr %4, align 8, !tbaa !5
  call void @libxsmm_ref_vnni8T_to_norm_16bit(ptr noundef %206, ptr noundef %207)
  br label %556

208:                                              ; preds = %202, %190
  %209 = load ptr, ptr %4, align 8, !tbaa !5
  %210 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %209, i32 0, i32 10
  %211 = load i16, ptr %210, align 1, !tbaa !11
  %212 = zext i16 %211 to i32
  %213 = icmp eq i32 %212, 66
  br i1 %213, label %214, label %226

214:                                              ; preds = %208
  %215 = load i32, ptr %5, align 4, !tbaa !9
  %216 = icmp eq i32 %215, 10
  br i1 %216, label %223, label %217

217:                                              ; preds = %214
  %218 = load i32, ptr %5, align 4, !tbaa !9
  %219 = icmp eq i32 %218, 2
  br i1 %219, label %223, label %220

220:                                              ; preds = %217
  %221 = load i32, ptr %5, align 4, !tbaa !9
  %222 = icmp eq i32 %221, 3
  br i1 %222, label %223, label %226

223:                                              ; preds = %220, %217, %214
  %224 = load ptr, ptr %3, align 8, !tbaa !5
  %225 = load ptr, ptr %4, align 8, !tbaa !5
  call void @libxsmm_ref_vnni4T_to_norm_16bit(ptr noundef %224, ptr noundef %225)
  br label %555

226:                                              ; preds = %220, %208
  %227 = load ptr, ptr %4, align 8, !tbaa !5
  %228 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %227, i32 0, i32 10
  %229 = load i16, ptr %228, align 1, !tbaa !11
  %230 = zext i16 %229 to i32
  %231 = icmp eq i32 %230, 67
  br i1 %231, label %232, label %244

232:                                              ; preds = %226
  %233 = load i32, ptr %5, align 4, !tbaa !9
  %234 = icmp eq i32 %233, 10
  br i1 %234, label %241, label %235

235:                                              ; preds = %232
  %236 = load i32, ptr %5, align 4, !tbaa !9
  %237 = icmp eq i32 %236, 2
  br i1 %237, label %241, label %238

238:                                              ; preds = %235
  %239 = load i32, ptr %5, align 4, !tbaa !9
  %240 = icmp eq i32 %239, 3
  br i1 %240, label %241, label %244

241:                                              ; preds = %238, %235, %232
  %242 = load ptr, ptr %3, align 8, !tbaa !5
  %243 = load ptr, ptr %4, align 8, !tbaa !5
  call void @libxsmm_ref_vnni2T_to_norm_16bit(ptr noundef %242, ptr noundef %243)
  br label %554

244:                                              ; preds = %238, %226
  %245 = load ptr, ptr %4, align 8, !tbaa !5
  %246 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %245, i32 0, i32 10
  %247 = load i16, ptr %246, align 1, !tbaa !11
  %248 = zext i16 %247 to i32
  %249 = icmp eq i32 %248, 56
  br i1 %249, label %250, label %262

250:                                              ; preds = %244
  %251 = load i32, ptr %5, align 4, !tbaa !9
  %252 = icmp eq i32 %251, 10
  br i1 %252, label %259, label %253

253:                                              ; preds = %250
  %254 = load i32, ptr %5, align 4, !tbaa !9
  %255 = icmp eq i32 %254, 2
  br i1 %255, label %259, label %256

256:                                              ; preds = %253
  %257 = load i32, ptr %5, align 4, !tbaa !9
  %258 = icmp eq i32 %257, 3
  br i1 %258, label %259, label %262

259:                                              ; preds = %256, %253, %250
  %260 = load ptr, ptr %3, align 8, !tbaa !5
  %261 = load ptr, ptr %4, align 8, !tbaa !5
  call void @libxsmm_ref_norm_to_vnni4T_16bit(ptr noundef %260, ptr noundef %261)
  br label %553

262:                                              ; preds = %256, %244
  %263 = load ptr, ptr %4, align 8, !tbaa !5
  %264 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %263, i32 0, i32 10
  %265 = load i16, ptr %264, align 1, !tbaa !11
  %266 = zext i16 %265 to i32
  %267 = icmp eq i32 %266, 73
  br i1 %267, label %268, label %280

268:                                              ; preds = %262
  %269 = load i32, ptr %5, align 4, !tbaa !9
  %270 = icmp eq i32 %269, 10
  br i1 %270, label %277, label %271

271:                                              ; preds = %268
  %272 = load i32, ptr %5, align 4, !tbaa !9
  %273 = icmp eq i32 %272, 2
  br i1 %273, label %277, label %274

274:                                              ; preds = %271
  %275 = load i32, ptr %5, align 4, !tbaa !9
  %276 = icmp eq i32 %275, 3
  br i1 %276, label %277, label %280

277:                                              ; preds = %274, %271, %268
  %278 = load ptr, ptr %3, align 8, !tbaa !5
  %279 = load ptr, ptr %4, align 8, !tbaa !5
  call void @libxsmm_ref_norm_to_vnni8T_16bit(ptr noundef %278, ptr noundef %279)
  br label %552

280:                                              ; preds = %274, %262
  %281 = load ptr, ptr %4, align 8, !tbaa !5
  %282 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %281, i32 0, i32 10
  %283 = load i16, ptr %282, align 1, !tbaa !11
  %284 = zext i16 %283 to i32
  %285 = icmp eq i32 %284, 57
  br i1 %285, label %292, label %286

286:                                              ; preds = %280
  %287 = load ptr, ptr %4, align 8, !tbaa !5
  %288 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %287, i32 0, i32 10
  %289 = load i16, ptr %288, align 1, !tbaa !11
  %290 = zext i16 %289 to i32
  %291 = icmp eq i32 %290, 54
  br i1 %291, label %292, label %304

292:                                              ; preds = %286, %280
  %293 = load i32, ptr %5, align 4, !tbaa !9
  %294 = icmp eq i32 %293, 12
  br i1 %294, label %301, label %295

295:                                              ; preds = %292
  %296 = load i32, ptr %5, align 4, !tbaa !9
  %297 = icmp eq i32 %296, 4
  br i1 %297, label %301, label %298

298:                                              ; preds = %295
  %299 = load i32, ptr %5, align 4, !tbaa !9
  %300 = icmp eq i32 %299, 5
  br i1 %300, label %301, label %304

301:                                              ; preds = %298, %295, %292
  %302 = load ptr, ptr %3, align 8, !tbaa !5
  %303 = load ptr, ptr %4, align 8, !tbaa !5
  call void @libxsmm_ref_norm_to_vnni4_08bit(ptr noundef %302, ptr noundef %303)
  br label %551

304:                                              ; preds = %298, %286
  %305 = load ptr, ptr %4, align 8, !tbaa !5
  %306 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %305, i32 0, i32 10
  %307 = load i16, ptr %306, align 1, !tbaa !11
  %308 = zext i16 %307 to i32
  %309 = icmp eq i32 %308, 74
  br i1 %309, label %316, label %310

310:                                              ; preds = %304
  %311 = load ptr, ptr %4, align 8, !tbaa !5
  %312 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %311, i32 0, i32 10
  %313 = load i16, ptr %312, align 1, !tbaa !11
  %314 = zext i16 %313 to i32
  %315 = icmp eq i32 %314, 71
  br i1 %315, label %316, label %328

316:                                              ; preds = %310, %304
  %317 = load i32, ptr %5, align 4, !tbaa !9
  %318 = icmp eq i32 %317, 12
  br i1 %318, label %325, label %319

319:                                              ; preds = %316
  %320 = load i32, ptr %5, align 4, !tbaa !9
  %321 = icmp eq i32 %320, 4
  br i1 %321, label %325, label %322

322:                                              ; preds = %319
  %323 = load i32, ptr %5, align 4, !tbaa !9
  %324 = icmp eq i32 %323, 5
  br i1 %324, label %325, label %328

325:                                              ; preds = %322, %319, %316
  %326 = load ptr, ptr %3, align 8, !tbaa !5
  %327 = load ptr, ptr %4, align 8, !tbaa !5
  call void @libxsmm_ref_norm_to_vnni8_08bit(ptr noundef %326, ptr noundef %327)
  br label %550

328:                                              ; preds = %322, %310
  %329 = load ptr, ptr %4, align 8, !tbaa !5
  %330 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %329, i32 0, i32 10
  %331 = load i16, ptr %330, align 1, !tbaa !11
  %332 = zext i16 %331 to i32
  %333 = icmp eq i32 %332, 57
  br i1 %333, label %340, label %334

334:                                              ; preds = %328
  %335 = load ptr, ptr %4, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %335, i32 0, i32 10
  %337 = load i16, ptr %336, align 1, !tbaa !11
  %338 = zext i16 %337 to i32
  %339 = icmp eq i32 %338, 54
  br i1 %339, label %340, label %352

340:                                              ; preds = %334, %328
  %341 = load i32, ptr %5, align 4, !tbaa !9
  %342 = icmp eq i32 %341, 2
  br i1 %342, label %349, label %343

343:                                              ; preds = %340
  %344 = load i32, ptr %5, align 4, !tbaa !9
  %345 = icmp eq i32 %344, 3
  br i1 %345, label %349, label %346

346:                                              ; preds = %343
  %347 = load i32, ptr %5, align 4, !tbaa !9
  %348 = icmp eq i32 %347, 10
  br i1 %348, label %349, label %352

349:                                              ; preds = %346, %343, %340
  %350 = load ptr, ptr %3, align 8, !tbaa !5
  %351 = load ptr, ptr %4, align 8, !tbaa !5
  call void @libxsmm_ref_norm_to_vnni4_16bit(ptr noundef %350, ptr noundef %351)
  br label %549

352:                                              ; preds = %346, %334
  %353 = load ptr, ptr %4, align 8, !tbaa !5
  %354 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %353, i32 0, i32 10
  %355 = load i16, ptr %354, align 1, !tbaa !11
  %356 = zext i16 %355 to i32
  %357 = icmp eq i32 %356, 74
  br i1 %357, label %364, label %358

358:                                              ; preds = %352
  %359 = load ptr, ptr %4, align 8, !tbaa !5
  %360 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %359, i32 0, i32 10
  %361 = load i16, ptr %360, align 1, !tbaa !11
  %362 = zext i16 %361 to i32
  %363 = icmp eq i32 %362, 71
  br i1 %363, label %364, label %376

364:                                              ; preds = %358, %352
  %365 = load i32, ptr %5, align 4, !tbaa !9
  %366 = icmp eq i32 %365, 2
  br i1 %366, label %373, label %367

367:                                              ; preds = %364
  %368 = load i32, ptr %5, align 4, !tbaa !9
  %369 = icmp eq i32 %368, 3
  br i1 %369, label %373, label %370

370:                                              ; preds = %367
  %371 = load i32, ptr %5, align 4, !tbaa !9
  %372 = icmp eq i32 %371, 10
  br i1 %372, label %373, label %376

373:                                              ; preds = %370, %367, %364
  %374 = load ptr, ptr %3, align 8, !tbaa !5
  %375 = load ptr, ptr %4, align 8, !tbaa !5
  call void @libxsmm_ref_norm_to_vnni8_16bit(ptr noundef %374, ptr noundef %375)
  br label %548

376:                                              ; preds = %370, %358
  %377 = load ptr, ptr %4, align 8, !tbaa !5
  %378 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %377, i32 0, i32 10
  %379 = load i16, ptr %378, align 1, !tbaa !11
  %380 = zext i16 %379 to i32
  %381 = icmp eq i32 %380, 55
  br i1 %381, label %382, label %394

382:                                              ; preds = %376
  %383 = load i32, ptr %5, align 4, !tbaa !9
  %384 = icmp eq i32 %383, 2
  br i1 %384, label %391, label %385

385:                                              ; preds = %382
  %386 = load i32, ptr %5, align 4, !tbaa !9
  %387 = icmp eq i32 %386, 3
  br i1 %387, label %391, label %388

388:                                              ; preds = %385
  %389 = load i32, ptr %5, align 4, !tbaa !9
  %390 = icmp eq i32 %389, 10
  br i1 %390, label %391, label %394

391:                                              ; preds = %388, %385, %382
  %392 = load ptr, ptr %3, align 8, !tbaa !5
  %393 = load ptr, ptr %4, align 8, !tbaa !5
  call void @libxsmm_ref_vnni4_to_vnni4T_16bit(ptr noundef %392, ptr noundef %393)
  br label %547

394:                                              ; preds = %388, %376
  %395 = load ptr, ptr %4, align 8, !tbaa !5
  %396 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %395, i32 0, i32 10
  %397 = load i16, ptr %396, align 1, !tbaa !11
  %398 = zext i16 %397 to i32
  %399 = icmp eq i32 %398, 62
  br i1 %399, label %400, label %412

400:                                              ; preds = %394
  %401 = load i32, ptr %5, align 4, !tbaa !9
  %402 = icmp eq i32 %401, 12
  br i1 %402, label %409, label %403

403:                                              ; preds = %400
  %404 = load i32, ptr %5, align 4, !tbaa !9
  %405 = icmp eq i32 %404, 4
  br i1 %405, label %409, label %406

406:                                              ; preds = %403
  %407 = load i32, ptr %5, align 4, !tbaa !9
  %408 = icmp eq i32 %407, 5
  br i1 %408, label %409, label %412

409:                                              ; preds = %406, %403, %400
  %410 = load ptr, ptr %3, align 8, !tbaa !5
  %411 = load ptr, ptr %4, align 8, !tbaa !5
  call void @libxsmm_ref_vnni4_to_vnni2_08bit(ptr noundef %410, ptr noundef %411)
  br label %546

412:                                              ; preds = %406, %394
  %413 = load ptr, ptr %4, align 8, !tbaa !5
  %414 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %413, i32 0, i32 10
  %415 = load i16, ptr %414, align 1, !tbaa !11
  %416 = zext i16 %415 to i32
  %417 = icmp eq i32 %416, 40
  br i1 %417, label %418, label %430

418:                                              ; preds = %412
  %419 = load i32, ptr %5, align 4, !tbaa !9
  %420 = icmp eq i32 %419, 2
  br i1 %420, label %427, label %421

421:                                              ; preds = %418
  %422 = load i32, ptr %5, align 4, !tbaa !9
  %423 = icmp eq i32 %422, 3
  br i1 %423, label %427, label %424

424:                                              ; preds = %421
  %425 = load i32, ptr %5, align 4, !tbaa !9
  %426 = icmp eq i32 %425, 10
  br i1 %426, label %427, label %430

427:                                              ; preds = %424, %421, %418
  %428 = load ptr, ptr %3, align 8, !tbaa !5
  %429 = load ptr, ptr %4, align 8, !tbaa !5
  call void @libxsmm_ref_norm_padn_mod2_16bit(ptr noundef %428, ptr noundef %429)
  br label %545

430:                                              ; preds = %424, %412
  %431 = load ptr, ptr %4, align 8, !tbaa !5
  %432 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %431, i32 0, i32 10
  %433 = load i16, ptr %432, align 1, !tbaa !11
  %434 = zext i16 %433 to i32
  %435 = icmp eq i32 %434, 39
  br i1 %435, label %436, label %448

436:                                              ; preds = %430
  %437 = load i32, ptr %5, align 4, !tbaa !9
  %438 = icmp eq i32 %437, 2
  br i1 %438, label %445, label %439

439:                                              ; preds = %436
  %440 = load i32, ptr %5, align 4, !tbaa !9
  %441 = icmp eq i32 %440, 3
  br i1 %441, label %445, label %442

442:                                              ; preds = %439
  %443 = load i32, ptr %5, align 4, !tbaa !9
  %444 = icmp eq i32 %443, 10
  br i1 %444, label %445, label %448

445:                                              ; preds = %442, %439, %436
  %446 = load ptr, ptr %3, align 8, !tbaa !5
  %447 = load ptr, ptr %4, align 8, !tbaa !5
  call void @libxsmm_ref_norm_padm_mod2_16bit(ptr noundef %446, ptr noundef %447)
  br label %544

448:                                              ; preds = %442, %430
  %449 = load ptr, ptr %4, align 8, !tbaa !5
  %450 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %449, i32 0, i32 10
  %451 = load i16, ptr %450, align 1, !tbaa !11
  %452 = zext i16 %451 to i32
  %453 = icmp eq i32 %452, 41
  br i1 %453, label %454, label %466

454:                                              ; preds = %448
  %455 = load i32, ptr %5, align 4, !tbaa !9
  %456 = icmp eq i32 %455, 2
  br i1 %456, label %463, label %457

457:                                              ; preds = %454
  %458 = load i32, ptr %5, align 4, !tbaa !9
  %459 = icmp eq i32 %458, 3
  br i1 %459, label %463, label %460

460:                                              ; preds = %457
  %461 = load i32, ptr %5, align 4, !tbaa !9
  %462 = icmp eq i32 %461, 10
  br i1 %462, label %463, label %466

463:                                              ; preds = %460, %457, %454
  %464 = load ptr, ptr %3, align 8, !tbaa !5
  %465 = load ptr, ptr %4, align 8, !tbaa !5
  call void @libxsmm_ref_norm_padnm_mod2_16bit(ptr noundef %464, ptr noundef %465)
  br label %543

466:                                              ; preds = %460, %448
  %467 = load ptr, ptr %4, align 8, !tbaa !5
  %468 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %467, i32 0, i32 10
  %469 = load i16, ptr %468, align 1, !tbaa !11
  %470 = zext i16 %469 to i32
  %471 = icmp eq i32 %470, 59
  br i1 %471, label %472, label %484

472:                                              ; preds = %466
  %473 = load i32, ptr %5, align 4, !tbaa !9
  %474 = icmp eq i32 %473, 12
  br i1 %474, label %481, label %475

475:                                              ; preds = %472
  %476 = load i32, ptr %5, align 4, !tbaa !9
  %477 = icmp eq i32 %476, 4
  br i1 %477, label %481, label %478

478:                                              ; preds = %475
  %479 = load i32, ptr %5, align 4, !tbaa !9
  %480 = icmp eq i32 %479, 5
  br i1 %480, label %481, label %484

481:                                              ; preds = %478, %475, %472
  %482 = load ptr, ptr %3, align 8, !tbaa !5
  %483 = load ptr, ptr %4, align 8, !tbaa !5
  call void @libxsmm_ref_norm_padn_mod4_08bit(ptr noundef %482, ptr noundef %483)
  br label %542

484:                                              ; preds = %478, %466
  %485 = load ptr, ptr %4, align 8, !tbaa !5
  %486 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %485, i32 0, i32 10
  %487 = load i16, ptr %486, align 1, !tbaa !11
  %488 = zext i16 %487 to i32
  %489 = icmp eq i32 %488, 58
  br i1 %489, label %490, label %502

490:                                              ; preds = %484
  %491 = load i32, ptr %5, align 4, !tbaa !9
  %492 = icmp eq i32 %491, 12
  br i1 %492, label %499, label %493

493:                                              ; preds = %490
  %494 = load i32, ptr %5, align 4, !tbaa !9
  %495 = icmp eq i32 %494, 4
  br i1 %495, label %499, label %496

496:                                              ; preds = %493
  %497 = load i32, ptr %5, align 4, !tbaa !9
  %498 = icmp eq i32 %497, 5
  br i1 %498, label %499, label %502

499:                                              ; preds = %496, %493, %490
  %500 = load ptr, ptr %3, align 8, !tbaa !5
  %501 = load ptr, ptr %4, align 8, !tbaa !5
  call void @libxsmm_ref_norm_padm_mod4_08bit(ptr noundef %500, ptr noundef %501)
  br label %541

502:                                              ; preds = %496, %484
  %503 = load ptr, ptr %4, align 8, !tbaa !5
  %504 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %503, i32 0, i32 10
  %505 = load i16, ptr %504, align 1, !tbaa !11
  %506 = zext i16 %505 to i32
  %507 = icmp eq i32 %506, 60
  br i1 %507, label %508, label %520

508:                                              ; preds = %502
  %509 = load i32, ptr %5, align 4, !tbaa !9
  %510 = icmp eq i32 %509, 12
  br i1 %510, label %517, label %511

511:                                              ; preds = %508
  %512 = load i32, ptr %5, align 4, !tbaa !9
  %513 = icmp eq i32 %512, 4
  br i1 %513, label %517, label %514

514:                                              ; preds = %511
  %515 = load i32, ptr %5, align 4, !tbaa !9
  %516 = icmp eq i32 %515, 5
  br i1 %516, label %517, label %520

517:                                              ; preds = %514, %511, %508
  %518 = load ptr, ptr %3, align 8, !tbaa !5
  %519 = load ptr, ptr %4, align 8, !tbaa !5
  call void @libxsmm_ref_norm_padnm_mod4_08bit(ptr noundef %518, ptr noundef %519)
  br label %540

520:                                              ; preds = %514, %502
  %521 = load ptr, ptr %4, align 8, !tbaa !5
  %522 = getelementptr inbounds %struct.libxsmm_meltw_descriptor, ptr %521, i32 0, i32 10
  %523 = load i16, ptr %522, align 1, !tbaa !11
  %524 = zext i16 %523 to i32
  %525 = icmp eq i32 %524, 61
  br i1 %525, label %526, label %538

526:                                              ; preds = %520
  %527 = load i32, ptr %5, align 4, !tbaa !9
  %528 = icmp eq i32 %527, 12
  br i1 %528, label %535, label %529

529:                                              ; preds = %526
  %530 = load i32, ptr %5, align 4, !tbaa !9
  %531 = icmp eq i32 %530, 4
  br i1 %531, label %535, label %532

532:                                              ; preds = %529
  %533 = load i32, ptr %5, align 4, !tbaa !9
  %534 = icmp eq i32 %533, 5
  br i1 %534, label %535, label %538

535:                                              ; preds = %532, %529, %526
  %536 = load ptr, ptr %3, align 8, !tbaa !5
  %537 = load ptr, ptr %4, align 8, !tbaa !5
  call void @libxsmm_ref_vnni4_to_norm_08bit(ptr noundef %536, ptr noundef %537)
  br label %539

538:                                              ; preds = %532, %520
  br label %539

539:                                              ; preds = %538, %535
  br label %540

540:                                              ; preds = %539, %517
  br label %541

541:                                              ; preds = %540, %499
  br label %542

542:                                              ; preds = %541, %481
  br label %543

543:                                              ; preds = %542, %463
  br label %544

544:                                              ; preds = %543, %445
  br label %545

545:                                              ; preds = %544, %427
  br label %546

546:                                              ; preds = %545, %409
  br label %547

547:                                              ; preds = %546, %391
  br label %548

548:                                              ; preds = %547, %373
  br label %549

549:                                              ; preds = %548, %349
  br label %550

550:                                              ; preds = %549, %325
  br label %551

551:                                              ; preds = %550, %301
  br label %552

552:                                              ; preds = %551, %277
  br label %553

553:                                              ; preds = %552, %259
  br label %554

554:                                              ; preds = %553, %241
  br label %555

555:                                              ; preds = %554, %223
  br label %556

556:                                              ; preds = %555, %205
  br label %557

557:                                              ; preds = %556, %187
  br label %558

558:                                              ; preds = %557, %169
  br label %559

559:                                              ; preds = %558, %145
  br label %560

560:                                              ; preds = %559, %127
  br label %561

561:                                              ; preds = %560, %109
  br label %562

562:                                              ; preds = %561, %85
  br label %563

563:                                              ; preds = %562, %67
  br label %564

564:                                              ; preds = %563, %49
  br label %565

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

566:                                              ; preds = %565, %13
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #3
  ret void
}

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !13, i64 29}
!12 = !{!"libxsmm_meltw_descriptor", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !7, i64 24, !7, i64 25, !7, i64 26, !13, i64 27, !13, i64 29, !7, i64 31}
!13 = !{!"short", !7, i64 0}


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

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_ref_transpose(ptr noundef, ptr noundef) local_unnamed_addr #0

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

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_ref_vnni2_to_vnni2T_16bit(ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_ref_vnni4_to_vnni4T_16bit(ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_ref_vnni4_to_vnni4T_08bit(ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_ref_vnni8_to_vnni8T_16bit(ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_ref_vnni8_to_vnni8T_08bit(ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_ref_norm_to_vnni2_16bit(ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_ref_norm_to_vnni2T_16bit(ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_ref_vnni8T_to_norm_16bit(ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_ref_vnni4T_to_norm_16bit(ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_ref_vnni2T_to_norm_16bit(ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_ref_norm_to_vnni4T_16bit(ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_ref_norm_to_vnni8T_16bit(ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_ref_norm_to_vnni4_16bit(ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_ref_norm_to_vnni8_16bit(ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_ref_norm_to_vnni4_08bit(ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_ref_norm_to_vnni8_08bit(ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_ref_vnni4_to_norm_08bit(ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_ref_vnni4_to_vnni2_08bit(ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_ref_norm_padn_mod2_16bit(ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_ref_norm_padm_mod2_16bit(ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_ref_norm_padnm_mod2_16bit(ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_ref_norm_padn_mod4_08bit(ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_ref_norm_padm_mod4_08bit(ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @libxsmm_ref_norm_padnm_mod4_08bit(ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
define dso_local void @libxsmm_elementwise_transform_kernel(ptr noundef %0, ptr noundef %1) local_unnamed_addr #0 {
  %3 = tail call i32 @libxsmm_meltw_getenum_precision(ptr noundef %1, i32 noundef 0) #2
  %4 = getelementptr inbounds i8, ptr %1, i64 29
  %5 = load i16, ptr %4, align 1, !tbaa !5
  switch i16 %5, label %.thread312 [
    i16 29, label %6
    i16 30, label %7
    i16 55, label %9
    i16 72, label %11
    i16 32, label %14
    i16 28, label %14
    i16 31, label %16
    i16 75, label %21
    i16 66, label %23
    i16 67, label %25
    i16 56, label %27
    i16 73, label %29
    i16 57, label %31
    i16 54, label %31
    i16 74, label %33
    i16 71, label %33
    i16 62, label %39
    i16 40, label %41
    i16 39, label %43
    i16 41, label %45
    i16 59, label %47
    i16 58, label %49
    i16 60, label %51
    i16 61, label %53
  ]

6:                                                ; preds = %2
  tail call void @libxsmm_ref_transpose(ptr noundef %0, ptr noundef nonnull %1)
  br label %.thread312

7:                                                ; preds = %2
  switch i32 %3, label %.thread312 [
    i32 10, label %8
    i32 3, label %8
    i32 2, label %8
  ]

8:                                                ; preds = %7, %7, %7
  tail call void @libxsmm_ref_vnni2_to_vnni2T_16bit(ptr noundef %0, ptr noundef nonnull %1)
  br label %.thread312

9:                                                ; preds = %2
  switch i32 %3, label %.thread312 [
    i32 12, label %10
    i32 5, label %10
    i32 4, label %10
    i32 10, label %18
    i32 3, label %18
    i32 2, label %18
  ]

10:                                               ; preds = %9, %9, %9
  tail call void @libxsmm_ref_vnni4_to_vnni4T_08bit(ptr noundef %0, ptr noundef nonnull %1)
  br label %.thread312

11:                                               ; preds = %2
  switch i32 %3, label %.thread312 [
    i32 10, label %12
    i32 3, label %12
    i32 2, label %12
    i32 12, label %13
    i32 5, label %13
    i32 4, label %13
  ]

12:                                               ; preds = %11, %11, %11
  tail call void @libxsmm_ref_vnni8_to_vnni8T_16bit(ptr noundef %0, ptr noundef nonnull %1)
  br label %.thread312

13:                                               ; preds = %11, %11, %11
  tail call void @libxsmm_ref_vnni8_to_vnni8T_08bit(ptr noundef %0, ptr noundef nonnull %1)
  br label %.thread312

14:                                               ; preds = %2, %2
  switch i32 %3, label %.thread288 [
    i32 10, label %15
    i32 3, label %15
    i32 2, label %15
  ]

15:                                               ; preds = %14, %14, %14
  tail call void @libxsmm_ref_norm_to_vnni2_16bit(ptr noundef %0, ptr noundef nonnull %1)
  br label %.thread312

.thread288:                                       ; preds = %14
  switch i16 %5, label %.thread312 [
    i16 31, label %16
    i16 32, label %19
    i16 28, label %19
  ]

16:                                               ; preds = %2, %.thread288
  switch i32 %3, label %.thread312 [
    i32 10, label %17
    i32 3, label %17
    i32 2, label %17
  ]

17:                                               ; preds = %16, %16, %16
  tail call void @libxsmm_ref_norm_to_vnni2T_16bit(ptr noundef %0, ptr noundef nonnull %1)
  br label %.thread312

18:                                               ; preds = %9, %9, %9
  tail call void @libxsmm_ref_vnni4_to_vnni4T_16bit(ptr noundef %0, ptr noundef nonnull %1)
  br label %.thread312

19:                                               ; preds = %.thread288, %.thread288
  %cond = icmp eq i32 %3, 10
  br i1 %cond, label %20, label %.thread312

20:                                               ; preds = %19
  tail call void @libxsmm_ref_norm_to_vnni2_16bit(ptr noundef %0, ptr noundef nonnull %1)
  br label %.thread312

21:                                               ; preds = %2
  switch i32 %3, label %.thread312 [
    i32 10, label %22
    i32 3, label %22
    i32 2, label %22
  ]

22:                                               ; preds = %21, %21, %21
  tail call void @libxsmm_ref_vnni8T_to_norm_16bit(ptr noundef %0, ptr noundef nonnull %1)
  br label %.thread312

23:                                               ; preds = %2
  switch i32 %3, label %.thread312 [
    i32 10, label %24
    i32 3, label %24
    i32 2, label %24
  ]

24:                                               ; preds = %23, %23, %23
  tail call void @libxsmm_ref_vnni4T_to_norm_16bit(ptr noundef %0, ptr noundef nonnull %1)
  br label %.thread312

25:                                               ; preds = %2
  switch i32 %3, label %.thread312 [
    i32 10, label %26
    i32 3, label %26
    i32 2, label %26
  ]

26:                                               ; preds = %25, %25, %25
  tail call void @libxsmm_ref_vnni2T_to_norm_16bit(ptr noundef %0, ptr noundef nonnull %1)
  br label %.thread312

27:                                               ; preds = %2
  switch i32 %3, label %.thread312 [
    i32 10, label %28
    i32 3, label %28
    i32 2, label %28
  ]

28:                                               ; preds = %27, %27, %27
  tail call void @libxsmm_ref_norm_to_vnni4T_16bit(ptr noundef %0, ptr noundef nonnull %1)
  br label %.thread312

29:                                               ; preds = %2
  switch i32 %3, label %.thread312 [
    i32 10, label %30
    i32 3, label %30
    i32 2, label %30
  ]

30:                                               ; preds = %29, %29, %29
  tail call void @libxsmm_ref_norm_to_vnni8T_16bit(ptr noundef %0, ptr noundef nonnull %1)
  br label %.thread312

31:                                               ; preds = %2, %2
  switch i32 %3, label %.thread296.thread [
    i32 12, label %32
    i32 5, label %32
    i32 4, label %32
  ]

32:                                               ; preds = %31, %31, %31
  tail call void @libxsmm_ref_norm_to_vnni4_08bit(ptr noundef %0, ptr noundef nonnull %1)
  br label %.thread312

.thread296.thread:                                ; preds = %31
  switch i16 %5, label %.thread312 [
    i16 54, label %35
    i16 57, label %35
  ]

33:                                               ; preds = %2, %2
  switch i32 %3, label %.thread296.thread.thread [
    i32 12, label %34
    i32 5, label %34
    i32 4, label %34
  ]

34:                                               ; preds = %33, %33, %33
  tail call void @libxsmm_ref_norm_to_vnni8_08bit(ptr noundef %0, ptr noundef nonnull %1)
  br label %.thread312

.thread296.thread.thread:                         ; preds = %33
  switch i16 %5, label %.thread312 [
    i16 71, label %37
    i16 74, label %37
  ]

35:                                               ; preds = %.thread296.thread, %.thread296.thread
  switch i32 %3, label %.thread312 [
    i32 10, label %36
    i32 3, label %36
    i32 2, label %36
  ]

36:                                               ; preds = %35, %35, %35
  tail call void @libxsmm_ref_norm_to_vnni4_16bit(ptr noundef %0, ptr noundef nonnull %1)
  br label %.thread312

37:                                               ; preds = %.thread296.thread.thread, %.thread296.thread.thread
  switch i32 %3, label %.thread312 [
    i32 10, label %38
    i32 3, label %38
    i32 2, label %38
  ]

38:                                               ; preds = %37, %37, %37
  tail call void @libxsmm_ref_norm_to_vnni8_16bit(ptr noundef %0, ptr noundef nonnull %1)
  br label %.thread312

39:                                               ; preds = %2
  switch i32 %3, label %.thread312 [
    i32 12, label %40
    i32 5, label %40
    i32 4, label %40
  ]

40:                                               ; preds = %39, %39, %39
  tail call void @libxsmm_ref_vnni4_to_vnni2_08bit(ptr noundef %0, ptr noundef nonnull %1)
  br label %.thread312

41:                                               ; preds = %2
  switch i32 %3, label %.thread312 [
    i32 10, label %42
    i32 3, label %42
    i32 2, label %42
  ]

42:                                               ; preds = %41, %41, %41
  tail call void @libxsmm_ref_norm_padn_mod2_16bit(ptr noundef %0, ptr noundef nonnull %1)
  br label %.thread312

43:                                               ; preds = %2
  switch i32 %3, label %.thread312 [
    i32 10, label %44
    i32 3, label %44
    i32 2, label %44
  ]

44:                                               ; preds = %43, %43, %43
  tail call void @libxsmm_ref_norm_padm_mod2_16bit(ptr noundef %0, ptr noundef nonnull %1)
  br label %.thread312

45:                                               ; preds = %2
  switch i32 %3, label %.thread312 [
    i32 10, label %46
    i32 3, label %46
    i32 2, label %46
  ]

46:                                               ; preds = %45, %45, %45
  tail call void @libxsmm_ref_norm_padnm_mod2_16bit(ptr noundef %0, ptr noundef nonnull %1)
  br label %.thread312

47:                                               ; preds = %2
  switch i32 %3, label %.thread312 [
    i32 12, label %48
    i32 5, label %48
    i32 4, label %48
  ]

48:                                               ; preds = %47, %47, %47
  tail call void @libxsmm_ref_norm_padn_mod4_08bit(ptr noundef %0, ptr noundef nonnull %1)
  br label %.thread312

49:                                               ; preds = %2
  switch i32 %3, label %.thread312 [
    i32 12, label %50
    i32 5, label %50
    i32 4, label %50
  ]

50:                                               ; preds = %49, %49, %49
  tail call void @libxsmm_ref_norm_padm_mod4_08bit(ptr noundef %0, ptr noundef nonnull %1)
  br label %.thread312

51:                                               ; preds = %2
  switch i32 %3, label %.thread312 [
    i32 12, label %52
    i32 5, label %52
    i32 4, label %52
  ]

52:                                               ; preds = %51, %51, %51
  tail call void @libxsmm_ref_norm_padnm_mod4_08bit(ptr noundef %0, ptr noundef nonnull %1)
  br label %.thread312

53:                                               ; preds = %2
  switch i32 %3, label %.thread312 [
    i32 12, label %54
    i32 5, label %54
    i32 4, label %54
  ]

54:                                               ; preds = %53, %53, %53
  tail call void @libxsmm_ref_vnni4_to_norm_08bit(ptr noundef %0, ptr noundef nonnull %1)
  br label %.thread312

.thread312:                                       ; preds = %35, %19, %16, %9, %2, %.thread288, %.thread296.thread, %.thread296.thread.thread, %11, %7, %37, %23, %25, %27, %29, %21, %41, %39, %43, %45, %47, %49, %51, %53, %8, %12, %15, %18, %24, %28, %32, %36, %42, %46, %50, %54, %52, %48, %44, %40, %38, %34, %30, %26, %22, %20, %17, %13, %10, %6
  ret void
}

attributes #0 = { 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 #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 }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !10, i64 29}
!6 = !{!"libxsmm_meltw_descriptor", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !8, i64 24, !8, i64 25, !8, i64 26, !10, i64 27, !10, i64 29, !8, i64 31}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"short", !8, i64 0}


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