; LLVM IR from ggml-org/ggml :: src/ggml-cpu (ggml-cpu-quants)

; 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.block_q8_K = type { float, [256 x i8], [16 x i16] }
%struct.block_tq2_0 = type { [64 x i8], i16 }

@.str.1 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [9 x i8], align 1
@__PRETTY_FUNCTION__.ggml_vec_dot_tq2_0_q8_K = external hidden unnamed_addr constant [124 x i8], align 1

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

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

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden float @ggml_lookup_fp16_to_fp32(i16 noundef zeroext) #2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #3

; Function Attrs: nounwind uwtable
define dso_local void @ggml_vec_dot_tq2_0_q8_K(i32 noundef %0, ptr noalias noundef %1, i64 noundef %2, ptr noalias noundef %3, i64 noundef %4, ptr noalias noundef %5, i64 noundef %6, i32 noundef %7) #4 {
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca i64, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i64, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i64, align 8
  %16 = alloca i32, align 4
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca i32, align 4
  %20 = alloca float, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i64, align 8
  %25 = alloca i64, align 8
  %26 = alloca i64, align 8
  %27 = alloca float, align 4
  store i32 %0, ptr %9, align 4, !tbaa !5
  store ptr %1, ptr %10, align 8, !tbaa !9
  store i64 %2, ptr %11, align 8, !tbaa !11
  store ptr %3, ptr %12, align 8, !tbaa !9
  store i64 %4, ptr %13, align 8, !tbaa !11
  store ptr %5, ptr %14, align 8, !tbaa !9
  store i64 %6, ptr %15, align 8, !tbaa !11
  store i32 %7, ptr %16, align 4, !tbaa !5
  %28 = load i32, ptr %16, align 4, !tbaa !5
  %29 = icmp eq i32 %28, 1
  br i1 %29, label %30, label %31

30:                                               ; preds = %8
  br label %32

31:                                               ; preds = %8
  call void @__assert_fail(ptr noundef @.str.5, ptr noundef @.str.1, i32 noundef 4341, ptr noundef @__PRETTY_FUNCTION__.ggml_vec_dot_tq2_0_q8_K) #5
  unreachable

32:                                               ; preds = %30
  %33 = load i32, ptr %16, align 4, !tbaa !5
  %34 = load i64, ptr %13, align 8, !tbaa !11
  %35 = load i64, ptr %15, align 8, !tbaa !11
  %36 = load i64, ptr %11, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #6
  %37 = load ptr, ptr %12, align 8, !tbaa !9
  store ptr %37, ptr %17, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #6
  %38 = load ptr, ptr %14, align 8, !tbaa !9
  store ptr %38, ptr %18, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #6
  %39 = load i32, ptr %9, align 4, !tbaa !5
  %40 = sdiv i32 %39, 256
  store i32 %40, ptr %19, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #6
  store float 0.000000e+00, ptr %20, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #6
  store i32 0, ptr %21, align 4, !tbaa !5
  br label %41

41:                                               ; preds = %128, %32
  %42 = load i32, ptr %21, align 4, !tbaa !5
  %43 = load i32, ptr %19, align 4, !tbaa !5
  %44 = icmp slt i32 %42, %43
  br i1 %44, label %46, label %45

45:                                               ; preds = %41
  store i32 2, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #6
  br label %131

46:                                               ; preds = %41
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  store i32 0, ptr %23, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #6
  store i64 0, ptr %24, align 8, !tbaa !11
  br label %47

47:                                               ; preds = %105, %46
  %48 = load i64, ptr %24, align 8, !tbaa !11
  %49 = icmp ult i64 %48, 64
  br i1 %49, label %51, label %50

50:                                               ; preds = %47
  store i32 5, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #6
  br label %108

51:                                               ; preds = %47
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #6
  store i64 0, ptr %25, align 8, !tbaa !11
  br label %52

52:                                               ; preds = %101, %51
  %53 = load i64, ptr %25, align 8, !tbaa !11
  %54 = icmp ult i64 %53, 4
  br i1 %54, label %56, label %55

55:                                               ; preds = %52
  store i32 8, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #6
  br label %104

56:                                               ; preds = %52
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #6
  store i64 0, ptr %26, align 8, !tbaa !11
  br label %57

57:                                               ; preds = %97, %56
  %58 = load i64, ptr %26, align 8, !tbaa !11
  %59 = icmp ult i64 %58, 32
  br i1 %59, label %61, label %60

60:                                               ; preds = %57
  store i32 11, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #6
  br label %100

61:                                               ; preds = %57
  %62 = load ptr, ptr %18, align 8, !tbaa !9
  %63 = load i32, ptr %21, align 4, !tbaa !5
  %64 = sext i32 %63 to i64
  %65 = getelementptr inbounds %struct.block_q8_K, ptr %62, i64 %64
  %66 = getelementptr inbounds %struct.block_q8_K, ptr %65, i32 0, i32 1
  %67 = load i64, ptr %24, align 8, !tbaa !11
  %68 = mul i64 %67, 4
  %69 = load i64, ptr %25, align 8, !tbaa !11
  %70 = mul i64 %69, 32
  %71 = add i64 %68, %70
  %72 = load i64, ptr %26, align 8, !tbaa !11
  %73 = add i64 %71, %72
  %74 = getelementptr inbounds [256 x i8], ptr %66, i64 0, i64 %73
  %75 = load i8, ptr %74, align 1, !tbaa !15
  %76 = sext i8 %75 to i32
  %77 = load ptr, ptr %17, align 8, !tbaa !9
  %78 = load i32, ptr %21, align 4, !tbaa !5
  %79 = sext i32 %78 to i64
  %80 = getelementptr inbounds %struct.block_tq2_0, ptr %77, i64 %79
  %81 = getelementptr inbounds %struct.block_tq2_0, ptr %80, i32 0, i32 0
  %82 = load i64, ptr %24, align 8, !tbaa !11
  %83 = load i64, ptr %26, align 8, !tbaa !11
  %84 = add i64 %82, %83
  %85 = getelementptr inbounds [64 x i8], ptr %81, i64 0, i64 %84
  %86 = load i8, ptr %85, align 1, !tbaa !15
  %87 = zext i8 %86 to i32
  %88 = load i64, ptr %25, align 8, !tbaa !11
  %89 = mul i64 %88, 2
  %90 = trunc i64 %89 to i32
  %91 = ashr i32 %87, %90
  %92 = and i32 %91, 3
  %93 = sub nsw i32 %92, 1
  %94 = mul nsw i32 %76, %93
  %95 = load i32, ptr %23, align 4, !tbaa !5
  %96 = add nsw i32 %95, %94
  store i32 %96, ptr %23, align 4, !tbaa !5
  br label %97

97:                                               ; preds = %61
  %98 = load i64, ptr %26, align 8, !tbaa !11
  %99 = add i64 %98, 1
  store i64 %99, ptr %26, align 8, !tbaa !11
  br label %57, !llvm.loop !16

100:                                              ; preds = %60
  br label %101

101:                                              ; preds = %100
  %102 = load i64, ptr %25, align 8, !tbaa !11
  %103 = add i64 %102, 1
  store i64 %103, ptr %25, align 8, !tbaa !11
  br label %52, !llvm.loop !18

104:                                              ; preds = %55
  br label %105

105:                                              ; preds = %104
  %106 = load i64, ptr %24, align 8, !tbaa !11
  %107 = add i64 %106, 32
  store i64 %107, ptr %24, align 8, !tbaa !11
  br label %47, !llvm.loop !19

108:                                              ; preds = %50
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #6
  %109 = load ptr, ptr %18, align 8, !tbaa !9
  %110 = load i32, ptr %21, align 4, !tbaa !5
  %111 = sext i32 %110 to i64
  %112 = getelementptr inbounds %struct.block_q8_K, ptr %109, i64 %111
  %113 = getelementptr inbounds %struct.block_q8_K, ptr %112, i32 0, i32 0
  %114 = load float, ptr %113, align 4, !tbaa !20
  %115 = load ptr, ptr %17, align 8, !tbaa !9
  %116 = load i32, ptr %21, align 4, !tbaa !5
  %117 = sext i32 %116 to i64
  %118 = getelementptr inbounds %struct.block_tq2_0, ptr %115, i64 %117
  %119 = getelementptr inbounds %struct.block_tq2_0, ptr %118, i32 0, i32 1
  %120 = load i16, ptr %119, align 2, !tbaa !22
  %121 = call float @ggml_lookup_fp16_to_fp32(i16 noundef zeroext %120)
  %122 = fmul float %114, %121
  store float %122, ptr %27, align 4, !tbaa !13
  %123 = load i32, ptr %23, align 4, !tbaa !5
  %124 = sitofp i32 %123 to float
  %125 = load float, ptr %27, align 4, !tbaa !13
  %126 = load float, ptr %20, align 4, !tbaa !13
  %127 = call float @llvm.fmuladd.f32(float %124, float %125, float %126)
  store float %127, ptr %20, align 4, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  br label %128

128:                                              ; preds = %108
  %129 = load i32, ptr %21, align 4, !tbaa !5
  %130 = add nsw i32 %129, 1
  store i32 %130, ptr %21, align 4, !tbaa !5
  br label %41, !llvm.loop !25

131:                                              ; preds = %45
  %132 = load float, ptr %20, align 4, !tbaa !13
  %133 = load ptr, ptr %10, align 8, !tbaa !9
  store float %132, ptr %133, align 4, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #6
  ret void
}

attributes #0 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { inlinehint 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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { 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 #5 = { noreturn nounwind }
attributes #6 = { 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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"float", !7, i64 0}
!15 = !{!7, !7, i64 0}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = distinct !{!18, !17}
!19 = distinct !{!19, !17}
!20 = !{!21, !14, i64 0}
!21 = !{!"", !14, i64 0, !7, i64 4, !7, i64 260}
!22 = !{!23, !24, i64 64}
!23 = !{!"", !7, i64 0, !24, i64 64}
!24 = !{!"short", !7, i64 0}
!25 = distinct !{!25, !17}


; 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.block_tq2_0 = type { [64 x i8], i16 }
%struct.block_q8_K = type { float, [256 x i8], [16 x i16] }

@.str.1 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [9 x i8], align 1
@__PRETTY_FUNCTION__.ggml_vec_dot_tq2_0_q8_K = external hidden unnamed_addr constant [124 x i8], align 1

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden float @ggml_lookup_fp16_to_fp32(i16 noundef zeroext) local_unnamed_addr #1

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #2

; Function Attrs: nounwind uwtable
define dso_local void @ggml_vec_dot_tq2_0_q8_K(i32 noundef %0, ptr noalias nocapture noundef writeonly %1, i64 noundef %2, ptr noalias nocapture noundef readonly %3, i64 noundef %4, ptr noalias nocapture noundef readonly %5, i64 noundef %6, i32 noundef %7) local_unnamed_addr #3 {
  %9 = icmp eq i32 %7, 1
  br i1 %9, label %11, label %10

10:                                               ; preds = %8
  tail call void @__assert_fail(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.1, i32 noundef 4341, ptr noundef nonnull @__PRETTY_FUNCTION__.ggml_vec_dot_tq2_0_q8_K) #5
  unreachable

11:                                               ; preds = %8
  %12 = icmp sgt i32 %0, 255
  br i1 %12, label %.preheader42.preheader, label %._crit_edge

.preheader42.preheader:                           ; preds = %11
  %13 = lshr i32 %0, 8
  %wide.trip.count = zext nneg i32 %13 to i64
  br label %.preheader42

.preheader42:                                     ; preds = %.preheader42.preheader, %.preheader42
  %indvars.iv = phi i64 [ 0, %.preheader42.preheader ], [ %indvars.iv.next, %.preheader42 ]
  %.050 = phi float [ 0.000000e+00, %.preheader42.preheader ], [ %516, %.preheader42 ]
  %14 = getelementptr inbounds %struct.block_tq2_0, ptr %3, i64 %indvars.iv
  %15 = getelementptr inbounds i8, ptr %14, i64 60
  %wide.load97.3 = load <4 x i8>, ptr %15, align 1, !tbaa !5
  %16 = lshr <4 x i8> %wide.load97.3, <i8 4, i8 4, i8 4, i8 4>
  %17 = and <4 x i8> %16, <i8 3, i8 3, i8 3, i8 3>
  %18 = zext nneg <4 x i8> %17 to <4 x i32>
  %19 = add nsw <4 x i32> %18, <i32 -1, i32 -1, i32 -1, i32 -1>
  %20 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 220
  %wide.load95.3 = load <4 x i8>, ptr %20, align 1, !tbaa !5
  %21 = sext <4 x i8> %wide.load95.3 to <4 x i32>
  %22 = mul nsw <4 x i32> %19, %21
  %23 = getelementptr inbounds i8, ptr %14, i64 52
  %wide.load97.2 = load <4 x i8>, ptr %23, align 1, !tbaa !5
  %24 = lshr <4 x i8> %wide.load97.2, <i8 4, i8 4, i8 4, i8 4>
  %25 = and <4 x i8> %24, <i8 3, i8 3, i8 3, i8 3>
  %26 = zext nneg <4 x i8> %25 to <4 x i32>
  %27 = add nsw <4 x i32> %26, <i32 -1, i32 -1, i32 -1, i32 -1>
  %28 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 212
  %wide.load95.2 = load <4 x i8>, ptr %28, align 1, !tbaa !5
  %29 = sext <4 x i8> %wide.load95.2 to <4 x i32>
  %30 = mul nsw <4 x i32> %27, %29
  %31 = getelementptr inbounds i8, ptr %14, i64 44
  %wide.load97.1 = load <4 x i8>, ptr %31, align 1, !tbaa !5
  %32 = lshr <4 x i8> %wide.load97.1, <i8 4, i8 4, i8 4, i8 4>
  %33 = and <4 x i8> %32, <i8 3, i8 3, i8 3, i8 3>
  %34 = zext nneg <4 x i8> %33 to <4 x i32>
  %35 = add nsw <4 x i32> %34, <i32 -1, i32 -1, i32 -1, i32 -1>
  %36 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 204
  %wide.load95.1 = load <4 x i8>, ptr %36, align 1, !tbaa !5
  %37 = sext <4 x i8> %wide.load95.1 to <4 x i32>
  %38 = mul nsw <4 x i32> %35, %37
  %39 = getelementptr inbounds i8, ptr %14, i64 36
  %wide.load97 = load <4 x i8>, ptr %39, align 1, !tbaa !5
  %40 = lshr <4 x i8> %wide.load97, <i8 4, i8 4, i8 4, i8 4>
  %41 = and <4 x i8> %40, <i8 3, i8 3, i8 3, i8 3>
  %42 = zext nneg <4 x i8> %41 to <4 x i32>
  %43 = add nsw <4 x i32> %42, <i32 -1, i32 -1, i32 -1, i32 -1>
  %44 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 196
  %wide.load95 = load <4 x i8>, ptr %44, align 1, !tbaa !5
  %45 = sext <4 x i8> %wide.load95 to <4 x i32>
  %46 = mul nsw <4 x i32> %43, %45
  %47 = add nsw <4 x i32> %38, %46
  %48 = add nsw <4 x i32> %30, %47
  %49 = add nsw <4 x i32> %22, %48
  %50 = getelementptr inbounds i8, ptr %14, i64 56
  %wide.load96.3 = load <4 x i8>, ptr %50, align 1, !tbaa !5
  %51 = lshr <4 x i8> %wide.load96.3, <i8 4, i8 4, i8 4, i8 4>
  %52 = and <4 x i8> %51, <i8 3, i8 3, i8 3, i8 3>
  %53 = zext nneg <4 x i8> %52 to <4 x i32>
  %54 = add nsw <4 x i32> %53, <i32 -1, i32 -1, i32 -1, i32 -1>
  %55 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 216
  %wide.load94.3 = load <4 x i8>, ptr %55, align 1, !tbaa !5
  %56 = sext <4 x i8> %wide.load94.3 to <4 x i32>
  %57 = mul nsw <4 x i32> %54, %56
  %58 = getelementptr inbounds i8, ptr %14, i64 48
  %wide.load96.2 = load <4 x i8>, ptr %58, align 1, !tbaa !5
  %59 = lshr <4 x i8> %wide.load96.2, <i8 4, i8 4, i8 4, i8 4>
  %60 = and <4 x i8> %59, <i8 3, i8 3, i8 3, i8 3>
  %61 = zext nneg <4 x i8> %60 to <4 x i32>
  %62 = add nsw <4 x i32> %61, <i32 -1, i32 -1, i32 -1, i32 -1>
  %63 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 208
  %wide.load94.2 = load <4 x i8>, ptr %63, align 1, !tbaa !5
  %64 = sext <4 x i8> %wide.load94.2 to <4 x i32>
  %65 = mul nsw <4 x i32> %62, %64
  %66 = getelementptr inbounds i8, ptr %14, i64 40
  %wide.load96.1 = load <4 x i8>, ptr %66, align 1, !tbaa !5
  %67 = lshr <4 x i8> %wide.load96.1, <i8 4, i8 4, i8 4, i8 4>
  %68 = and <4 x i8> %67, <i8 3, i8 3, i8 3, i8 3>
  %69 = zext nneg <4 x i8> %68 to <4 x i32>
  %70 = add nsw <4 x i32> %69, <i32 -1, i32 -1, i32 -1, i32 -1>
  %71 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 200
  %wide.load94.1 = load <4 x i8>, ptr %71, align 1, !tbaa !5
  %72 = sext <4 x i8> %wide.load94.1 to <4 x i32>
  %73 = mul nsw <4 x i32> %70, %72
  %74 = getelementptr inbounds i8, ptr %14, i64 32
  %wide.load96 = load <4 x i8>, ptr %74, align 1, !tbaa !5
  %75 = lshr <4 x i8> %wide.load96, <i8 4, i8 4, i8 4, i8 4>
  %76 = and <4 x i8> %75, <i8 3, i8 3, i8 3, i8 3>
  %77 = zext nneg <4 x i8> %76 to <4 x i32>
  %78 = add nsw <4 x i32> %77, <i32 -1, i32 -1, i32 -1, i32 -1>
  %79 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 192
  %wide.load94 = load <4 x i8>, ptr %79, align 1, !tbaa !5
  %80 = sext <4 x i8> %wide.load94 to <4 x i32>
  %81 = mul nsw <4 x i32> %78, %80
  %82 = getelementptr inbounds i8, ptr %14, i64 60
  %wide.load112.3 = load <4 x i8>, ptr %82, align 1, !tbaa !5
  %83 = lshr <4 x i8> %wide.load112.3, <i8 2, i8 2, i8 2, i8 2>
  %84 = and <4 x i8> %83, <i8 3, i8 3, i8 3, i8 3>
  %85 = zext nneg <4 x i8> %84 to <4 x i32>
  %86 = add nsw <4 x i32> %85, <i32 -1, i32 -1, i32 -1, i32 -1>
  %87 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 188
  %wide.load110.3 = load <4 x i8>, ptr %87, align 1, !tbaa !5
  %88 = sext <4 x i8> %wide.load110.3 to <4 x i32>
  %89 = mul nsw <4 x i32> %86, %88
  %90 = getelementptr inbounds i8, ptr %14, i64 52
  %wide.load112.2 = load <4 x i8>, ptr %90, align 1, !tbaa !5
  %91 = lshr <4 x i8> %wide.load112.2, <i8 2, i8 2, i8 2, i8 2>
  %92 = and <4 x i8> %91, <i8 3, i8 3, i8 3, i8 3>
  %93 = zext nneg <4 x i8> %92 to <4 x i32>
  %94 = add nsw <4 x i32> %93, <i32 -1, i32 -1, i32 -1, i32 -1>
  %95 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 180
  %wide.load110.2 = load <4 x i8>, ptr %95, align 1, !tbaa !5
  %96 = sext <4 x i8> %wide.load110.2 to <4 x i32>
  %97 = mul nsw <4 x i32> %94, %96
  %98 = getelementptr inbounds i8, ptr %14, i64 44
  %wide.load112.1 = load <4 x i8>, ptr %98, align 1, !tbaa !5
  %99 = lshr <4 x i8> %wide.load112.1, <i8 2, i8 2, i8 2, i8 2>
  %100 = and <4 x i8> %99, <i8 3, i8 3, i8 3, i8 3>
  %101 = zext nneg <4 x i8> %100 to <4 x i32>
  %102 = add nsw <4 x i32> %101, <i32 -1, i32 -1, i32 -1, i32 -1>
  %103 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 172
  %wide.load110.1 = load <4 x i8>, ptr %103, align 1, !tbaa !5
  %104 = sext <4 x i8> %wide.load110.1 to <4 x i32>
  %105 = mul nsw <4 x i32> %102, %104
  %106 = getelementptr inbounds i8, ptr %14, i64 36
  %wide.load112 = load <4 x i8>, ptr %106, align 1, !tbaa !5
  %107 = lshr <4 x i8> %wide.load112, <i8 2, i8 2, i8 2, i8 2>
  %108 = and <4 x i8> %107, <i8 3, i8 3, i8 3, i8 3>
  %109 = zext nneg <4 x i8> %108 to <4 x i32>
  %110 = add nsw <4 x i32> %109, <i32 -1, i32 -1, i32 -1, i32 -1>
  %111 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 164
  %wide.load110 = load <4 x i8>, ptr %111, align 1, !tbaa !5
  %112 = sext <4 x i8> %wide.load110 to <4 x i32>
  %113 = mul nsw <4 x i32> %110, %112
  %114 = add nsw <4 x i32> %105, %113
  %115 = add nsw <4 x i32> %97, %114
  %116 = add nsw <4 x i32> %89, %115
  %117 = getelementptr inbounds i8, ptr %14, i64 56
  %wide.load111.3 = load <4 x i8>, ptr %117, align 1, !tbaa !5
  %118 = lshr <4 x i8> %wide.load111.3, <i8 2, i8 2, i8 2, i8 2>
  %119 = and <4 x i8> %118, <i8 3, i8 3, i8 3, i8 3>
  %120 = zext nneg <4 x i8> %119 to <4 x i32>
  %121 = add nsw <4 x i32> %120, <i32 -1, i32 -1, i32 -1, i32 -1>
  %122 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 184
  %wide.load109.3 = load <4 x i8>, ptr %122, align 1, !tbaa !5
  %123 = sext <4 x i8> %wide.load109.3 to <4 x i32>
  %124 = mul nsw <4 x i32> %121, %123
  %125 = getelementptr inbounds i8, ptr %14, i64 48
  %wide.load111.2 = load <4 x i8>, ptr %125, align 1, !tbaa !5
  %126 = lshr <4 x i8> %wide.load111.2, <i8 2, i8 2, i8 2, i8 2>
  %127 = and <4 x i8> %126, <i8 3, i8 3, i8 3, i8 3>
  %128 = zext nneg <4 x i8> %127 to <4 x i32>
  %129 = add nsw <4 x i32> %128, <i32 -1, i32 -1, i32 -1, i32 -1>
  %130 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 176
  %wide.load109.2 = load <4 x i8>, ptr %130, align 1, !tbaa !5
  %131 = sext <4 x i8> %wide.load109.2 to <4 x i32>
  %132 = mul nsw <4 x i32> %129, %131
  %133 = getelementptr inbounds i8, ptr %14, i64 40
  %wide.load111.1 = load <4 x i8>, ptr %133, align 1, !tbaa !5
  %134 = lshr <4 x i8> %wide.load111.1, <i8 2, i8 2, i8 2, i8 2>
  %135 = and <4 x i8> %134, <i8 3, i8 3, i8 3, i8 3>
  %136 = zext nneg <4 x i8> %135 to <4 x i32>
  %137 = add nsw <4 x i32> %136, <i32 -1, i32 -1, i32 -1, i32 -1>
  %138 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 168
  %wide.load109.1 = load <4 x i8>, ptr %138, align 1, !tbaa !5
  %139 = sext <4 x i8> %wide.load109.1 to <4 x i32>
  %140 = mul nsw <4 x i32> %137, %139
  %141 = getelementptr inbounds i8, ptr %14, i64 32
  %wide.load111 = load <4 x i8>, ptr %141, align 1, !tbaa !5
  %142 = lshr <4 x i8> %wide.load111, <i8 2, i8 2, i8 2, i8 2>
  %143 = and <4 x i8> %142, <i8 3, i8 3, i8 3, i8 3>
  %144 = zext nneg <4 x i8> %143 to <4 x i32>
  %145 = add nsw <4 x i32> %144, <i32 -1, i32 -1, i32 -1, i32 -1>
  %146 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 160
  %wide.load109 = load <4 x i8>, ptr %146, align 1, !tbaa !5
  %147 = sext <4 x i8> %wide.load109 to <4 x i32>
  %148 = mul nsw <4 x i32> %145, %147
  %149 = getelementptr inbounds i8, ptr %14, i64 60
  %wide.load127.3 = load <4 x i8>, ptr %149, align 1, !tbaa !5
  %150 = and <4 x i8> %wide.load127.3, <i8 3, i8 3, i8 3, i8 3>
  %151 = zext nneg <4 x i8> %150 to <4 x i32>
  %152 = add nsw <4 x i32> %151, <i32 -1, i32 -1, i32 -1, i32 -1>
  %153 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 156
  %wide.load125.3 = load <4 x i8>, ptr %153, align 1, !tbaa !5
  %154 = sext <4 x i8> %wide.load125.3 to <4 x i32>
  %155 = mul nsw <4 x i32> %152, %154
  %156 = getelementptr inbounds i8, ptr %14, i64 52
  %wide.load127.2 = load <4 x i8>, ptr %156, align 1, !tbaa !5
  %157 = and <4 x i8> %wide.load127.2, <i8 3, i8 3, i8 3, i8 3>
  %158 = zext nneg <4 x i8> %157 to <4 x i32>
  %159 = add nsw <4 x i32> %158, <i32 -1, i32 -1, i32 -1, i32 -1>
  %160 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 148
  %wide.load125.2 = load <4 x i8>, ptr %160, align 1, !tbaa !5
  %161 = sext <4 x i8> %wide.load125.2 to <4 x i32>
  %162 = mul nsw <4 x i32> %159, %161
  %163 = getelementptr inbounds i8, ptr %14, i64 44
  %wide.load127.1 = load <4 x i8>, ptr %163, align 1, !tbaa !5
  %164 = and <4 x i8> %wide.load127.1, <i8 3, i8 3, i8 3, i8 3>
  %165 = zext nneg <4 x i8> %164 to <4 x i32>
  %166 = add nsw <4 x i32> %165, <i32 -1, i32 -1, i32 -1, i32 -1>
  %167 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 140
  %wide.load125.1 = load <4 x i8>, ptr %167, align 1, !tbaa !5
  %168 = sext <4 x i8> %wide.load125.1 to <4 x i32>
  %169 = mul nsw <4 x i32> %166, %168
  %170 = getelementptr inbounds i8, ptr %14, i64 36
  %wide.load127 = load <4 x i8>, ptr %170, align 1, !tbaa !5
  %171 = and <4 x i8> %wide.load127, <i8 3, i8 3, i8 3, i8 3>
  %172 = zext nneg <4 x i8> %171 to <4 x i32>
  %173 = add nsw <4 x i32> %172, <i32 -1, i32 -1, i32 -1, i32 -1>
  %174 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 132
  %wide.load125 = load <4 x i8>, ptr %174, align 1, !tbaa !5
  %175 = sext <4 x i8> %wide.load125 to <4 x i32>
  %176 = mul nsw <4 x i32> %173, %175
  %177 = add nsw <4 x i32> %169, %176
  %178 = add nsw <4 x i32> %162, %177
  %179 = add nsw <4 x i32> %155, %178
  %180 = getelementptr inbounds i8, ptr %14, i64 56
  %wide.load126.3 = load <4 x i8>, ptr %180, align 1, !tbaa !5
  %181 = and <4 x i8> %wide.load126.3, <i8 3, i8 3, i8 3, i8 3>
  %182 = zext nneg <4 x i8> %181 to <4 x i32>
  %183 = add nsw <4 x i32> %182, <i32 -1, i32 -1, i32 -1, i32 -1>
  %184 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 152
  %wide.load124.3 = load <4 x i8>, ptr %184, align 1, !tbaa !5
  %185 = sext <4 x i8> %wide.load124.3 to <4 x i32>
  %186 = mul nsw <4 x i32> %183, %185
  %187 = getelementptr inbounds i8, ptr %14, i64 48
  %wide.load126.2 = load <4 x i8>, ptr %187, align 1, !tbaa !5
  %188 = and <4 x i8> %wide.load126.2, <i8 3, i8 3, i8 3, i8 3>
  %189 = zext nneg <4 x i8> %188 to <4 x i32>
  %190 = add nsw <4 x i32> %189, <i32 -1, i32 -1, i32 -1, i32 -1>
  %191 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 144
  %wide.load124.2 = load <4 x i8>, ptr %191, align 1, !tbaa !5
  %192 = sext <4 x i8> %wide.load124.2 to <4 x i32>
  %193 = mul nsw <4 x i32> %190, %192
  %194 = getelementptr inbounds i8, ptr %14, i64 40
  %wide.load126.1 = load <4 x i8>, ptr %194, align 1, !tbaa !5
  %195 = and <4 x i8> %wide.load126.1, <i8 3, i8 3, i8 3, i8 3>
  %196 = zext nneg <4 x i8> %195 to <4 x i32>
  %197 = add nsw <4 x i32> %196, <i32 -1, i32 -1, i32 -1, i32 -1>
  %198 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 136
  %wide.load124.1 = load <4 x i8>, ptr %198, align 1, !tbaa !5
  %199 = sext <4 x i8> %wide.load124.1 to <4 x i32>
  %200 = mul nsw <4 x i32> %197, %199
  %201 = getelementptr inbounds i8, ptr %14, i64 32
  %wide.load126 = load <4 x i8>, ptr %201, align 1, !tbaa !5
  %202 = and <4 x i8> %wide.load126, <i8 3, i8 3, i8 3, i8 3>
  %203 = zext nneg <4 x i8> %202 to <4 x i32>
  %204 = add nsw <4 x i32> %203, <i32 -1, i32 -1, i32 -1, i32 -1>
  %205 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 128
  %wide.load124 = load <4 x i8>, ptr %205, align 1, !tbaa !5
  %206 = sext <4 x i8> %wide.load124 to <4 x i32>
  %207 = mul nsw <4 x i32> %204, %206
  %208 = getelementptr inbounds i8, ptr %14, i64 28
  %wide.load142.3 = load <4 x i8>, ptr %208, align 1, !tbaa !5
  %209 = lshr <4 x i8> %wide.load142.3, <i8 6, i8 6, i8 6, i8 6>
  %210 = zext nneg <4 x i8> %209 to <4 x i32>
  %211 = add nsw <4 x i32> %210, <i32 -1, i32 -1, i32 -1, i32 -1>
  %212 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 124
  %wide.load140.3 = load <4 x i8>, ptr %212, align 1, !tbaa !5
  %213 = sext <4 x i8> %wide.load140.3 to <4 x i32>
  %214 = mul nsw <4 x i32> %211, %213
  %215 = getelementptr inbounds i8, ptr %14, i64 20
  %wide.load142.2 = load <4 x i8>, ptr %215, align 1, !tbaa !5
  %216 = lshr <4 x i8> %wide.load142.2, <i8 6, i8 6, i8 6, i8 6>
  %217 = zext nneg <4 x i8> %216 to <4 x i32>
  %218 = add nsw <4 x i32> %217, <i32 -1, i32 -1, i32 -1, i32 -1>
  %219 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 116
  %wide.load140.2 = load <4 x i8>, ptr %219, align 1, !tbaa !5
  %220 = sext <4 x i8> %wide.load140.2 to <4 x i32>
  %221 = mul nsw <4 x i32> %218, %220
  %222 = getelementptr inbounds i8, ptr %14, i64 12
  %wide.load142.1 = load <4 x i8>, ptr %222, align 1, !tbaa !5
  %223 = lshr <4 x i8> %wide.load142.1, <i8 6, i8 6, i8 6, i8 6>
  %224 = zext nneg <4 x i8> %223 to <4 x i32>
  %225 = add nsw <4 x i32> %224, <i32 -1, i32 -1, i32 -1, i32 -1>
  %226 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 108
  %wide.load140.1 = load <4 x i8>, ptr %226, align 1, !tbaa !5
  %227 = sext <4 x i8> %wide.load140.1 to <4 x i32>
  %228 = mul nsw <4 x i32> %225, %227
  %229 = getelementptr inbounds i8, ptr %14, i64 4
  %wide.load142 = load <4 x i8>, ptr %229, align 1, !tbaa !5
  %230 = lshr <4 x i8> %wide.load142, <i8 6, i8 6, i8 6, i8 6>
  %231 = zext nneg <4 x i8> %230 to <4 x i32>
  %232 = add nsw <4 x i32> %231, <i32 -1, i32 -1, i32 -1, i32 -1>
  %233 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 100
  %wide.load140 = load <4 x i8>, ptr %233, align 1, !tbaa !5
  %234 = sext <4 x i8> %wide.load140 to <4 x i32>
  %235 = mul nsw <4 x i32> %232, %234
  %236 = add nsw <4 x i32> %228, %235
  %237 = add nsw <4 x i32> %221, %236
  %238 = add nsw <4 x i32> %214, %237
  %239 = getelementptr inbounds i8, ptr %14, i64 24
  %wide.load141.3 = load <4 x i8>, ptr %239, align 1, !tbaa !5
  %240 = lshr <4 x i8> %wide.load141.3, <i8 6, i8 6, i8 6, i8 6>
  %241 = zext nneg <4 x i8> %240 to <4 x i32>
  %242 = add nsw <4 x i32> %241, <i32 -1, i32 -1, i32 -1, i32 -1>
  %243 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 120
  %wide.load139.3 = load <4 x i8>, ptr %243, align 1, !tbaa !5
  %244 = sext <4 x i8> %wide.load139.3 to <4 x i32>
  %245 = mul nsw <4 x i32> %242, %244
  %246 = getelementptr inbounds i8, ptr %14, i64 16
  %wide.load141.2 = load <4 x i8>, ptr %246, align 1, !tbaa !5
  %247 = lshr <4 x i8> %wide.load141.2, <i8 6, i8 6, i8 6, i8 6>
  %248 = zext nneg <4 x i8> %247 to <4 x i32>
  %249 = add nsw <4 x i32> %248, <i32 -1, i32 -1, i32 -1, i32 -1>
  %250 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 112
  %wide.load139.2 = load <4 x i8>, ptr %250, align 1, !tbaa !5
  %251 = sext <4 x i8> %wide.load139.2 to <4 x i32>
  %252 = mul nsw <4 x i32> %249, %251
  %253 = getelementptr inbounds i8, ptr %14, i64 8
  %wide.load141.1 = load <4 x i8>, ptr %253, align 1, !tbaa !5
  %254 = lshr <4 x i8> %wide.load141.1, <i8 6, i8 6, i8 6, i8 6>
  %255 = zext nneg <4 x i8> %254 to <4 x i32>
  %256 = add nsw <4 x i32> %255, <i32 -1, i32 -1, i32 -1, i32 -1>
  %257 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 104
  %wide.load139.1 = load <4 x i8>, ptr %257, align 1, !tbaa !5
  %258 = sext <4 x i8> %wide.load139.1 to <4 x i32>
  %259 = mul nsw <4 x i32> %256, %258
  %wide.load141 = load <4 x i8>, ptr %14, align 1, !tbaa !5
  %260 = lshr <4 x i8> %wide.load141, <i8 6, i8 6, i8 6, i8 6>
  %261 = zext nneg <4 x i8> %260 to <4 x i32>
  %262 = add nsw <4 x i32> %261, <i32 -1, i32 -1, i32 -1, i32 -1>
  %263 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 96
  %wide.load139 = load <4 x i8>, ptr %263, align 1, !tbaa !5
  %264 = sext <4 x i8> %wide.load139 to <4 x i32>
  %265 = mul nsw <4 x i32> %262, %264
  %266 = getelementptr inbounds i8, ptr %14, i64 28
  %wide.load157.3 = load <4 x i8>, ptr %266, align 1, !tbaa !5
  %267 = lshr <4 x i8> %wide.load157.3, <i8 4, i8 4, i8 4, i8 4>
  %268 = and <4 x i8> %267, <i8 3, i8 3, i8 3, i8 3>
  %269 = zext nneg <4 x i8> %268 to <4 x i32>
  %270 = add nsw <4 x i32> %269, <i32 -1, i32 -1, i32 -1, i32 -1>
  %271 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 92
  %wide.load155.3 = load <4 x i8>, ptr %271, align 1, !tbaa !5
  %272 = sext <4 x i8> %wide.load155.3 to <4 x i32>
  %273 = mul nsw <4 x i32> %270, %272
  %274 = getelementptr inbounds i8, ptr %14, i64 20
  %wide.load157.2 = load <4 x i8>, ptr %274, align 1, !tbaa !5
  %275 = lshr <4 x i8> %wide.load157.2, <i8 4, i8 4, i8 4, i8 4>
  %276 = and <4 x i8> %275, <i8 3, i8 3, i8 3, i8 3>
  %277 = zext nneg <4 x i8> %276 to <4 x i32>
  %278 = add nsw <4 x i32> %277, <i32 -1, i32 -1, i32 -1, i32 -1>
  %279 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 84
  %wide.load155.2 = load <4 x i8>, ptr %279, align 1, !tbaa !5
  %280 = sext <4 x i8> %wide.load155.2 to <4 x i32>
  %281 = mul nsw <4 x i32> %278, %280
  %282 = getelementptr inbounds i8, ptr %14, i64 12
  %wide.load157.1 = load <4 x i8>, ptr %282, align 1, !tbaa !5
  %283 = lshr <4 x i8> %wide.load157.1, <i8 4, i8 4, i8 4, i8 4>
  %284 = and <4 x i8> %283, <i8 3, i8 3, i8 3, i8 3>
  %285 = zext nneg <4 x i8> %284 to <4 x i32>
  %286 = add nsw <4 x i32> %285, <i32 -1, i32 -1, i32 -1, i32 -1>
  %287 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 76
  %wide.load155.1 = load <4 x i8>, ptr %287, align 1, !tbaa !5
  %288 = sext <4 x i8> %wide.load155.1 to <4 x i32>
  %289 = mul nsw <4 x i32> %286, %288
  %290 = getelementptr inbounds i8, ptr %14, i64 4
  %wide.load157 = load <4 x i8>, ptr %290, align 1, !tbaa !5
  %291 = lshr <4 x i8> %wide.load157, <i8 4, i8 4, i8 4, i8 4>
  %292 = and <4 x i8> %291, <i8 3, i8 3, i8 3, i8 3>
  %293 = zext nneg <4 x i8> %292 to <4 x i32>
  %294 = add nsw <4 x i32> %293, <i32 -1, i32 -1, i32 -1, i32 -1>
  %295 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 68
  %wide.load155 = load <4 x i8>, ptr %295, align 1, !tbaa !5
  %296 = sext <4 x i8> %wide.load155 to <4 x i32>
  %297 = mul nsw <4 x i32> %294, %296
  %298 = add nsw <4 x i32> %289, %297
  %299 = add nsw <4 x i32> %281, %298
  %300 = add nsw <4 x i32> %273, %299
  %301 = getelementptr inbounds i8, ptr %14, i64 24
  %wide.load156.3 = load <4 x i8>, ptr %301, align 1, !tbaa !5
  %302 = lshr <4 x i8> %wide.load156.3, <i8 4, i8 4, i8 4, i8 4>
  %303 = and <4 x i8> %302, <i8 3, i8 3, i8 3, i8 3>
  %304 = zext nneg <4 x i8> %303 to <4 x i32>
  %305 = add nsw <4 x i32> %304, <i32 -1, i32 -1, i32 -1, i32 -1>
  %306 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 88
  %wide.load154.3 = load <4 x i8>, ptr %306, align 1, !tbaa !5
  %307 = sext <4 x i8> %wide.load154.3 to <4 x i32>
  %308 = mul nsw <4 x i32> %305, %307
  %309 = getelementptr inbounds i8, ptr %14, i64 16
  %wide.load156.2 = load <4 x i8>, ptr %309, align 1, !tbaa !5
  %310 = lshr <4 x i8> %wide.load156.2, <i8 4, i8 4, i8 4, i8 4>
  %311 = and <4 x i8> %310, <i8 3, i8 3, i8 3, i8 3>
  %312 = zext nneg <4 x i8> %311 to <4 x i32>
  %313 = add nsw <4 x i32> %312, <i32 -1, i32 -1, i32 -1, i32 -1>
  %314 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 80
  %wide.load154.2 = load <4 x i8>, ptr %314, align 1, !tbaa !5
  %315 = sext <4 x i8> %wide.load154.2 to <4 x i32>
  %316 = mul nsw <4 x i32> %313, %315
  %317 = getelementptr inbounds i8, ptr %14, i64 8
  %wide.load156.1 = load <4 x i8>, ptr %317, align 1, !tbaa !5
  %318 = lshr <4 x i8> %wide.load156.1, <i8 4, i8 4, i8 4, i8 4>
  %319 = and <4 x i8> %318, <i8 3, i8 3, i8 3, i8 3>
  %320 = zext nneg <4 x i8> %319 to <4 x i32>
  %321 = add nsw <4 x i32> %320, <i32 -1, i32 -1, i32 -1, i32 -1>
  %322 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 72
  %wide.load154.1 = load <4 x i8>, ptr %322, align 1, !tbaa !5
  %323 = sext <4 x i8> %wide.load154.1 to <4 x i32>
  %324 = mul nsw <4 x i32> %321, %323
  %wide.load156 = load <4 x i8>, ptr %14, align 1, !tbaa !5
  %325 = lshr <4 x i8> %wide.load156, <i8 4, i8 4, i8 4, i8 4>
  %326 = and <4 x i8> %325, <i8 3, i8 3, i8 3, i8 3>
  %327 = zext nneg <4 x i8> %326 to <4 x i32>
  %328 = add nsw <4 x i32> %327, <i32 -1, i32 -1, i32 -1, i32 -1>
  %329 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 64
  %wide.load154 = load <4 x i8>, ptr %329, align 1, !tbaa !5
  %330 = sext <4 x i8> %wide.load154 to <4 x i32>
  %331 = mul nsw <4 x i32> %328, %330
  %332 = getelementptr inbounds i8, ptr %14, i64 28
  %wide.load172.3 = load <4 x i8>, ptr %332, align 1, !tbaa !5
  %333 = lshr <4 x i8> %wide.load172.3, <i8 2, i8 2, i8 2, i8 2>
  %334 = and <4 x i8> %333, <i8 3, i8 3, i8 3, i8 3>
  %335 = zext nneg <4 x i8> %334 to <4 x i32>
  %336 = add nsw <4 x i32> %335, <i32 -1, i32 -1, i32 -1, i32 -1>
  %337 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 60
  %wide.load170.3 = load <4 x i8>, ptr %337, align 1, !tbaa !5
  %338 = sext <4 x i8> %wide.load170.3 to <4 x i32>
  %339 = mul nsw <4 x i32> %336, %338
  %340 = getelementptr inbounds i8, ptr %14, i64 20
  %wide.load172.2 = load <4 x i8>, ptr %340, align 1, !tbaa !5
  %341 = lshr <4 x i8> %wide.load172.2, <i8 2, i8 2, i8 2, i8 2>
  %342 = and <4 x i8> %341, <i8 3, i8 3, i8 3, i8 3>
  %343 = zext nneg <4 x i8> %342 to <4 x i32>
  %344 = add nsw <4 x i32> %343, <i32 -1, i32 -1, i32 -1, i32 -1>
  %345 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 52
  %wide.load170.2 = load <4 x i8>, ptr %345, align 1, !tbaa !5
  %346 = sext <4 x i8> %wide.load170.2 to <4 x i32>
  %347 = mul nsw <4 x i32> %344, %346
  %348 = getelementptr inbounds i8, ptr %14, i64 12
  %wide.load172.1 = load <4 x i8>, ptr %348, align 1, !tbaa !5
  %349 = lshr <4 x i8> %wide.load172.1, <i8 2, i8 2, i8 2, i8 2>
  %350 = and <4 x i8> %349, <i8 3, i8 3, i8 3, i8 3>
  %351 = zext nneg <4 x i8> %350 to <4 x i32>
  %352 = add nsw <4 x i32> %351, <i32 -1, i32 -1, i32 -1, i32 -1>
  %353 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 44
  %wide.load170.1 = load <4 x i8>, ptr %353, align 1, !tbaa !5
  %354 = sext <4 x i8> %wide.load170.1 to <4 x i32>
  %355 = mul nsw <4 x i32> %352, %354
  %356 = getelementptr inbounds i8, ptr %14, i64 4
  %wide.load172 = load <4 x i8>, ptr %356, align 1, !tbaa !5
  %357 = lshr <4 x i8> %wide.load172, <i8 2, i8 2, i8 2, i8 2>
  %358 = and <4 x i8> %357, <i8 3, i8 3, i8 3, i8 3>
  %359 = zext nneg <4 x i8> %358 to <4 x i32>
  %360 = add nsw <4 x i32> %359, <i32 -1, i32 -1, i32 -1, i32 -1>
  %361 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 36
  %wide.load170 = load <4 x i8>, ptr %361, align 1, !tbaa !5
  %362 = sext <4 x i8> %wide.load170 to <4 x i32>
  %363 = mul nsw <4 x i32> %360, %362
  %364 = add nsw <4 x i32> %355, %363
  %365 = add nsw <4 x i32> %347, %364
  %366 = add nsw <4 x i32> %339, %365
  %367 = getelementptr inbounds i8, ptr %14, i64 24
  %wide.load171.3 = load <4 x i8>, ptr %367, align 1, !tbaa !5
  %368 = lshr <4 x i8> %wide.load171.3, <i8 2, i8 2, i8 2, i8 2>
  %369 = and <4 x i8> %368, <i8 3, i8 3, i8 3, i8 3>
  %370 = zext nneg <4 x i8> %369 to <4 x i32>
  %371 = add nsw <4 x i32> %370, <i32 -1, i32 -1, i32 -1, i32 -1>
  %372 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 56
  %wide.load169.3 = load <4 x i8>, ptr %372, align 1, !tbaa !5
  %373 = sext <4 x i8> %wide.load169.3 to <4 x i32>
  %374 = mul nsw <4 x i32> %371, %373
  %375 = getelementptr inbounds i8, ptr %14, i64 16
  %wide.load171.2 = load <4 x i8>, ptr %375, align 1, !tbaa !5
  %376 = lshr <4 x i8> %wide.load171.2, <i8 2, i8 2, i8 2, i8 2>
  %377 = and <4 x i8> %376, <i8 3, i8 3, i8 3, i8 3>
  %378 = zext nneg <4 x i8> %377 to <4 x i32>
  %379 = add nsw <4 x i32> %378, <i32 -1, i32 -1, i32 -1, i32 -1>
  %380 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 48
  %wide.load169.2 = load <4 x i8>, ptr %380, align 1, !tbaa !5
  %381 = sext <4 x i8> %wide.load169.2 to <4 x i32>
  %382 = mul nsw <4 x i32> %379, %381
  %383 = getelementptr inbounds i8, ptr %14, i64 8
  %wide.load171.1 = load <4 x i8>, ptr %383, align 1, !tbaa !5
  %384 = lshr <4 x i8> %wide.load171.1, <i8 2, i8 2, i8 2, i8 2>
  %385 = and <4 x i8> %384, <i8 3, i8 3, i8 3, i8 3>
  %386 = zext nneg <4 x i8> %385 to <4 x i32>
  %387 = add nsw <4 x i32> %386, <i32 -1, i32 -1, i32 -1, i32 -1>
  %388 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 40
  %wide.load169.1 = load <4 x i8>, ptr %388, align 1, !tbaa !5
  %389 = sext <4 x i8> %wide.load169.1 to <4 x i32>
  %390 = mul nsw <4 x i32> %387, %389
  %wide.load171 = load <4 x i8>, ptr %14, align 1, !tbaa !5
  %391 = lshr <4 x i8> %wide.load171, <i8 2, i8 2, i8 2, i8 2>
  %392 = and <4 x i8> %391, <i8 3, i8 3, i8 3, i8 3>
  %393 = zext nneg <4 x i8> %392 to <4 x i32>
  %394 = add nsw <4 x i32> %393, <i32 -1, i32 -1, i32 -1, i32 -1>
  %395 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 32
  %wide.load169 = load <4 x i8>, ptr %395, align 1, !tbaa !5
  %396 = sext <4 x i8> %wide.load169 to <4 x i32>
  %397 = mul nsw <4 x i32> %394, %396
  %398 = load <32 x i8>, ptr %14, align 1, !tbaa !5
  %399 = and <32 x i8> %398, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>
  %400 = zext nneg <32 x i8> %399 to <32 x i16>
  %401 = add nsw <32 x i16> %400, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
  %402 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 0
  %403 = load <32 x i8>, ptr %402, align 1, !tbaa !5
  %404 = sext <32 x i8> %403 to <32 x i16>
  %405 = mul nsw <32 x i16> %401, %404
  %406 = sext <32 x i16> %405 to <32 x i32>
  %407 = tail call i32 @llvm.vector.reduce.add.v32i32(<32 x i32> %406)
  %408 = insertelement <4 x i32> <i32 poison, i32 0, i32 0, i32 0>, i32 %407, i64 0
  %409 = add <4 x i32> %397, %408
  %410 = add <4 x i32> %390, %409
  %411 = add <4 x i32> %382, %410
  %412 = add <4 x i32> %374, %411
  %bin.rdx174 = add <4 x i32> %366, %412
  %413 = tail call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %bin.rdx174)
  %414 = insertelement <4 x i32> <i32 poison, i32 0, i32 0, i32 0>, i32 %413, i64 0
  %415 = add <4 x i32> %331, %414
  %416 = add <4 x i32> %324, %415
  %417 = add <4 x i32> %316, %416
  %418 = add <4 x i32> %308, %417
  %bin.rdx159 = add <4 x i32> %300, %418
  %419 = tail call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %bin.rdx159)
  %420 = insertelement <4 x i32> <i32 poison, i32 0, i32 0, i32 0>, i32 %419, i64 0
  %421 = add <4 x i32> %265, %420
  %422 = add <4 x i32> %259, %421
  %423 = add <4 x i32> %252, %422
  %424 = add <4 x i32> %245, %423
  %bin.rdx144 = add <4 x i32> %238, %424
  %425 = tail call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %bin.rdx144)
  %426 = insertelement <4 x i32> <i32 poison, i32 0, i32 0, i32 0>, i32 %425, i64 0
  %427 = add <4 x i32> %207, %426
  %428 = add <4 x i32> %200, %427
  %429 = add <4 x i32> %193, %428
  %430 = add <4 x i32> %186, %429
  %bin.rdx129 = add <4 x i32> %179, %430
  %431 = tail call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %bin.rdx129)
  %432 = insertelement <4 x i32> <i32 poison, i32 0, i32 0, i32 0>, i32 %431, i64 0
  %433 = add <4 x i32> %148, %432
  %434 = add <4 x i32> %140, %433
  %435 = add <4 x i32> %132, %434
  %436 = add <4 x i32> %124, %435
  %bin.rdx114 = add <4 x i32> %116, %436
  %437 = tail call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %bin.rdx114)
  %438 = insertelement <4 x i32> <i32 poison, i32 0, i32 0, i32 0>, i32 %437, i64 0
  %439 = add <4 x i32> %81, %438
  %440 = add <4 x i32> %73, %439
  %441 = add <4 x i32> %65, %440
  %442 = add <4 x i32> %57, %441
  %bin.rdx99 = add <4 x i32> %49, %442
  %443 = tail call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %bin.rdx99)
  %444 = insertelement <4 x i32> <i32 poison, i32 0, i32 0, i32 0>, i32 %443, i64 0
  %445 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 224
  %446 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 228
  %wide.load = load <4 x i8>, ptr %445, align 1, !tbaa !5
  %wide.load83 = load <4 x i8>, ptr %446, align 1, !tbaa !5
  %447 = sext <4 x i8> %wide.load to <4 x i32>
  %448 = sext <4 x i8> %wide.load83 to <4 x i32>
  %449 = getelementptr inbounds i8, ptr %14, i64 32
  %450 = getelementptr inbounds i8, ptr %14, i64 36
  %wide.load84 = load <4 x i8>, ptr %449, align 1, !tbaa !5
  %wide.load85 = load <4 x i8>, ptr %450, align 1, !tbaa !5
  %451 = lshr <4 x i8> %wide.load84, <i8 6, i8 6, i8 6, i8 6>
  %452 = lshr <4 x i8> %wide.load85, <i8 6, i8 6, i8 6, i8 6>
  %453 = zext nneg <4 x i8> %451 to <4 x i32>
  %454 = zext nneg <4 x i8> %452 to <4 x i32>
  %455 = add nsw <4 x i32> %453, <i32 -1, i32 -1, i32 -1, i32 -1>
  %456 = add nsw <4 x i32> %454, <i32 -1, i32 -1, i32 -1, i32 -1>
  %457 = mul nsw <4 x i32> %455, %447
  %458 = mul nsw <4 x i32> %456, %448
  %459 = add <4 x i32> %457, %444
  %460 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 232
  %461 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 236
  %wide.load.1 = load <4 x i8>, ptr %460, align 1, !tbaa !5
  %wide.load83.1 = load <4 x i8>, ptr %461, align 1, !tbaa !5
  %462 = sext <4 x i8> %wide.load.1 to <4 x i32>
  %463 = sext <4 x i8> %wide.load83.1 to <4 x i32>
  %464 = getelementptr inbounds i8, ptr %14, i64 40
  %465 = getelementptr inbounds i8, ptr %14, i64 44
  %wide.load84.1 = load <4 x i8>, ptr %464, align 1, !tbaa !5
  %wide.load85.1 = load <4 x i8>, ptr %465, align 1, !tbaa !5
  %466 = lshr <4 x i8> %wide.load84.1, <i8 6, i8 6, i8 6, i8 6>
  %467 = lshr <4 x i8> %wide.load85.1, <i8 6, i8 6, i8 6, i8 6>
  %468 = zext nneg <4 x i8> %466 to <4 x i32>
  %469 = zext nneg <4 x i8> %467 to <4 x i32>
  %470 = add nsw <4 x i32> %468, <i32 -1, i32 -1, i32 -1, i32 -1>
  %471 = add nsw <4 x i32> %469, <i32 -1, i32 -1, i32 -1, i32 -1>
  %472 = mul nsw <4 x i32> %470, %462
  %473 = mul nsw <4 x i32> %471, %463
  %474 = add <4 x i32> %472, %459
  %475 = add nsw <4 x i32> %473, %458
  %476 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 240
  %477 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 244
  %wide.load.2 = load <4 x i8>, ptr %476, align 1, !tbaa !5
  %wide.load83.2 = load <4 x i8>, ptr %477, align 1, !tbaa !5
  %478 = sext <4 x i8> %wide.load.2 to <4 x i32>
  %479 = sext <4 x i8> %wide.load83.2 to <4 x i32>
  %480 = getelementptr inbounds i8, ptr %14, i64 48
  %481 = getelementptr inbounds i8, ptr %14, i64 52
  %wide.load84.2 = load <4 x i8>, ptr %480, align 1, !tbaa !5
  %wide.load85.2 = load <4 x i8>, ptr %481, align 1, !tbaa !5
  %482 = lshr <4 x i8> %wide.load84.2, <i8 6, i8 6, i8 6, i8 6>
  %483 = lshr <4 x i8> %wide.load85.2, <i8 6, i8 6, i8 6, i8 6>
  %484 = zext nneg <4 x i8> %482 to <4 x i32>
  %485 = zext nneg <4 x i8> %483 to <4 x i32>
  %486 = add nsw <4 x i32> %484, <i32 -1, i32 -1, i32 -1, i32 -1>
  %487 = add nsw <4 x i32> %485, <i32 -1, i32 -1, i32 -1, i32 -1>
  %488 = mul nsw <4 x i32> %486, %478
  %489 = mul nsw <4 x i32> %487, %479
  %490 = add <4 x i32> %488, %474
  %491 = add nsw <4 x i32> %489, %475
  %492 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 248
  %493 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv, i32 1, i64 252
  %wide.load.3 = load <4 x i8>, ptr %492, align 1, !tbaa !5
  %wide.load83.3 = load <4 x i8>, ptr %493, align 1, !tbaa !5
  %494 = sext <4 x i8> %wide.load.3 to <4 x i32>
  %495 = sext <4 x i8> %wide.load83.3 to <4 x i32>
  %496 = getelementptr inbounds i8, ptr %14, i64 56
  %497 = getelementptr inbounds i8, ptr %14, i64 60
  %wide.load84.3 = load <4 x i8>, ptr %496, align 1, !tbaa !5
  %wide.load85.3 = load <4 x i8>, ptr %497, align 1, !tbaa !5
  %498 = lshr <4 x i8> %wide.load84.3, <i8 6, i8 6, i8 6, i8 6>
  %499 = lshr <4 x i8> %wide.load85.3, <i8 6, i8 6, i8 6, i8 6>
  %500 = zext nneg <4 x i8> %498 to <4 x i32>
  %501 = zext nneg <4 x i8> %499 to <4 x i32>
  %502 = add nsw <4 x i32> %500, <i32 -1, i32 -1, i32 -1, i32 -1>
  %503 = add nsw <4 x i32> %501, <i32 -1, i32 -1, i32 -1, i32 -1>
  %504 = mul nsw <4 x i32> %502, %494
  %505 = mul nsw <4 x i32> %503, %495
  %506 = add <4 x i32> %504, %490
  %507 = add nsw <4 x i32> %505, %491
  %bin.rdx = add <4 x i32> %507, %506
  %508 = tail call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %bin.rdx)
  %509 = getelementptr inbounds %struct.block_q8_K, ptr %5, i64 %indvars.iv
  %510 = load float, ptr %509, align 4, !tbaa !8
  %511 = getelementptr inbounds %struct.block_tq2_0, ptr %3, i64 %indvars.iv, i32 1
  %512 = load i16, ptr %511, align 2, !tbaa !11
  %513 = tail call float @ggml_lookup_fp16_to_fp32(i16 noundef zeroext %512)
  %514 = fmul float %510, %513
  %515 = sitofp i32 %508 to float
  %516 = tail call float @llvm.fmuladd.f32(float %515, float %514, float %.050)
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %.preheader42, !llvm.loop !14

._crit_edge:                                      ; preds = %.preheader42, %11
  %.0.lcssa = phi float [ 0.000000e+00, %11 ], [ %516, %.preheader42 ]
  store float %.0.lcssa, ptr %1, align 4, !tbaa !16
  ret void
}

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.vector.reduce.add.v4i32(<4 x i32>) #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.vector.reduce.add.v32i32(<32 x i32>) #4

attributes #0 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { inlinehint 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 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"omnipotent char", !7, i64 0}
!7 = !{!"Simple C/C++ TBAA"}
!8 = !{!9, !10, i64 0}
!9 = !{!"", !10, i64 0, !6, i64 4, !6, i64 260}
!10 = !{!"float", !6, i64 0}
!11 = !{!12, !13, i64 64}
!12 = !{!"", !6, i64 0, !13, i64 64}
!13 = !{!"short", !6, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = !{!10, !10, i64 0}


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