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

; 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.ggml_tensor = type { i32, ptr, [4 x i64], [4 x i64], i32, [16 x i32], i32, [10 x ptr], ptr, i64, ptr, [64 x i8], ptr, [8 x i8] }
%struct.ggml_compute_params = type { i32, i32, i64, ptr, ptr }

@.str = external hidden unnamed_addr constant [68 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [22 x i8], align 1

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

; Function Attrs: noreturn
declare void @ggml_abort(ptr noundef, i32 noundef, ptr noundef, ...) #1

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

; Function Attrs: mustprogress uwtable
define dso_local void @ggml_compute_forward_conv_transpose_2d(ptr noundef %0, ptr noundef %1) #2 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i64, align 8
  %8 = alloca i64, align 8
  %9 = alloca i64, align 8
  %10 = alloca i64, align 8
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca i64, align 8
  %14 = alloca i64, align 8
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca i64, align 8
  %26 = alloca i64, align 8
  %27 = alloca i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca ptr, align 8
  %35 = alloca i64, align 8
  %36 = alloca i32, align 4
  %37 = alloca i64, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca i64, align 8
  %41 = alloca i64, align 8
  %42 = alloca ptr, align 8
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca ptr, align 8
  %54 = alloca ptr, align 8
  %55 = alloca i32, align 4
  %56 = alloca ptr, align 8
  %57 = alloca ptr, align 8
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca float, 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 8, ptr %5) #7
  %64 = load ptr, ptr %4, align 8, !tbaa !5
  %65 = getelementptr inbounds %struct.ggml_tensor, ptr %64, i32 0, i32 7
  %66 = getelementptr inbounds [10 x ptr], ptr %65, i64 0, i64 0
  %67 = load ptr, ptr %66, align 8, !tbaa !5
  store ptr %67, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #7
  %68 = load ptr, ptr %4, align 8, !tbaa !5
  %69 = getelementptr inbounds %struct.ggml_tensor, ptr %68, i32 0, i32 7
  %70 = getelementptr inbounds [10 x ptr], ptr %69, i64 0, i64 1
  %71 = load ptr, ptr %70, align 8, !tbaa !5
  store ptr %71, ptr %6, align 8, !tbaa !5
  %72 = load ptr, ptr %5, align 8, !tbaa !5
  %73 = getelementptr inbounds %struct.ggml_tensor, ptr %72, i32 0, i32 0
  %74 = load i32, ptr %73, align 8, !tbaa !9
  %75 = icmp eq i32 %74, 1
  br i1 %75, label %77, label %76

76:                                               ; preds = %2
  call void (ptr, i32, ptr, ...) @ggml_abort(ptr noundef @.str, i32 noundef 5980, ptr noundef @.str.2, ptr noundef @.str.7) #8
  unreachable

77:                                               ; preds = %2
  %78 = load ptr, ptr %6, align 8, !tbaa !5
  %79 = getelementptr inbounds %struct.ggml_tensor, ptr %78, i32 0, i32 0
  %80 = load i32, ptr %79, align 8, !tbaa !9
  %81 = icmp eq i32 %80, 0
  br i1 %81, label %83, label %82

82:                                               ; preds = %77
  call void (ptr, i32, ptr, ...) @ggml_abort(ptr noundef @.str, i32 noundef 5981, ptr noundef @.str.2, ptr noundef @.str.4) #8
  unreachable

83:                                               ; preds = %77
  %84 = load ptr, ptr %4, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct.ggml_tensor, ptr %84, i32 0, i32 0
  %86 = load i32, ptr %85, align 8, !tbaa !9
  %87 = icmp eq i32 %86, 0
  br i1 %87, label %89, label %88

88:                                               ; preds = %83
  call void (ptr, i32, ptr, ...) @ggml_abort(ptr noundef @.str, i32 noundef 5982, ptr noundef @.str.2, ptr noundef @.str.5) #8
  unreachable

89:                                               ; preds = %83
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #7
  %90 = load ptr, ptr %5, align 8, !tbaa !5
  %91 = getelementptr inbounds %struct.ggml_tensor, ptr %90, i32 0, i32 2
  %92 = getelementptr inbounds [4 x i64], ptr %91, i64 0, i64 0
  %93 = load i64, ptr %92, align 8, !tbaa !15
  store i64 %93, ptr %7, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #7
  %94 = load ptr, ptr %5, align 8, !tbaa !5
  %95 = getelementptr inbounds %struct.ggml_tensor, ptr %94, i32 0, i32 2
  %96 = getelementptr inbounds [4 x i64], ptr %95, i64 0, i64 1
  %97 = load i64, ptr %96, align 8, !tbaa !15
  store i64 %97, ptr %8, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #7
  %98 = load ptr, ptr %5, align 8, !tbaa !5
  %99 = getelementptr inbounds %struct.ggml_tensor, ptr %98, i32 0, i32 2
  %100 = getelementptr inbounds [4 x i64], ptr %99, i64 0, i64 2
  %101 = load i64, ptr %100, align 8, !tbaa !15
  store i64 %101, ptr %9, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #7
  %102 = load ptr, ptr %5, align 8, !tbaa !5
  %103 = getelementptr inbounds %struct.ggml_tensor, ptr %102, i32 0, i32 2
  %104 = getelementptr inbounds [4 x i64], ptr %103, i64 0, i64 3
  %105 = load i64, ptr %104, align 8, !tbaa !15
  store i64 %105, ptr %10, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #7
  %106 = load ptr, ptr %5, align 8, !tbaa !5
  %107 = getelementptr inbounds %struct.ggml_tensor, ptr %106, i32 0, i32 3
  %108 = getelementptr inbounds [4 x i64], ptr %107, i64 0, i64 0
  %109 = load i64, ptr %108, align 8, !tbaa !15
  store i64 %109, ptr %11, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #7
  %110 = load ptr, ptr %5, align 8, !tbaa !5
  %111 = getelementptr inbounds %struct.ggml_tensor, ptr %110, i32 0, i32 3
  %112 = getelementptr inbounds [4 x i64], ptr %111, i64 0, i64 1
  %113 = load i64, ptr %112, align 8, !tbaa !15
  store i64 %113, ptr %12, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  %114 = load ptr, ptr %5, align 8, !tbaa !5
  %115 = getelementptr inbounds %struct.ggml_tensor, ptr %114, i32 0, i32 3
  %116 = getelementptr inbounds [4 x i64], ptr %115, i64 0, i64 2
  %117 = load i64, ptr %116, align 8, !tbaa !15
  store i64 %117, ptr %13, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #7
  %118 = load ptr, ptr %5, align 8, !tbaa !5
  %119 = getelementptr inbounds %struct.ggml_tensor, ptr %118, i32 0, i32 3
  %120 = getelementptr inbounds [4 x i64], ptr %119, i64 0, i64 3
  %121 = load i64, ptr %120, align 8, !tbaa !15
  store i64 %121, ptr %14, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #7
  %122 = load ptr, ptr %6, align 8, !tbaa !5
  %123 = getelementptr inbounds %struct.ggml_tensor, ptr %122, i32 0, i32 2
  %124 = getelementptr inbounds [4 x i64], ptr %123, i64 0, i64 0
  %125 = load i64, ptr %124, align 8, !tbaa !15
  store i64 %125, ptr %15, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #7
  %126 = load ptr, ptr %6, align 8, !tbaa !5
  %127 = getelementptr inbounds %struct.ggml_tensor, ptr %126, i32 0, i32 2
  %128 = getelementptr inbounds [4 x i64], ptr %127, i64 0, i64 1
  %129 = load i64, ptr %128, align 8, !tbaa !15
  store i64 %129, ptr %16, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #7
  %130 = load ptr, ptr %6, align 8, !tbaa !5
  %131 = getelementptr inbounds %struct.ggml_tensor, ptr %130, i32 0, i32 2
  %132 = getelementptr inbounds [4 x i64], ptr %131, i64 0, i64 2
  %133 = load i64, ptr %132, align 8, !tbaa !15
  store i64 %133, ptr %17, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #7
  %134 = load ptr, ptr %6, align 8, !tbaa !5
  %135 = getelementptr inbounds %struct.ggml_tensor, ptr %134, i32 0, i32 2
  %136 = getelementptr inbounds [4 x i64], ptr %135, i64 0, i64 3
  %137 = load i64, ptr %136, align 8, !tbaa !15
  store i64 %137, ptr %18, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #7
  %138 = load ptr, ptr %6, align 8, !tbaa !5
  %139 = getelementptr inbounds %struct.ggml_tensor, ptr %138, i32 0, i32 3
  %140 = getelementptr inbounds [4 x i64], ptr %139, i64 0, i64 0
  %141 = load i64, ptr %140, align 8, !tbaa !15
  store i64 %141, ptr %19, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #7
  %142 = load ptr, ptr %6, align 8, !tbaa !5
  %143 = getelementptr inbounds %struct.ggml_tensor, ptr %142, i32 0, i32 3
  %144 = getelementptr inbounds [4 x i64], ptr %143, i64 0, i64 1
  %145 = load i64, ptr %144, align 8, !tbaa !15
  store i64 %145, ptr %20, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  %146 = load ptr, ptr %6, align 8, !tbaa !5
  %147 = getelementptr inbounds %struct.ggml_tensor, ptr %146, i32 0, i32 3
  %148 = getelementptr inbounds [4 x i64], ptr %147, i64 0, i64 2
  %149 = load i64, ptr %148, align 8, !tbaa !15
  store i64 %149, ptr %21, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #7
  %150 = load ptr, ptr %6, align 8, !tbaa !5
  %151 = getelementptr inbounds %struct.ggml_tensor, ptr %150, i32 0, i32 3
  %152 = getelementptr inbounds [4 x i64], ptr %151, i64 0, i64 3
  %153 = load i64, ptr %152, align 8, !tbaa !15
  store i64 %153, ptr %22, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  %154 = load ptr, ptr %4, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.ggml_tensor, ptr %154, i32 0, i32 2
  %156 = getelementptr inbounds [4 x i64], ptr %155, i64 0, i64 0
  %157 = load i64, ptr %156, align 8, !tbaa !15
  store i64 %157, ptr %23, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  %158 = load ptr, ptr %4, align 8, !tbaa !5
  %159 = getelementptr inbounds %struct.ggml_tensor, ptr %158, i32 0, i32 2
  %160 = getelementptr inbounds [4 x i64], ptr %159, i64 0, i64 1
  %161 = load i64, ptr %160, align 8, !tbaa !15
  store i64 %161, ptr %24, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  %162 = load ptr, ptr %4, align 8, !tbaa !5
  %163 = getelementptr inbounds %struct.ggml_tensor, ptr %162, i32 0, i32 2
  %164 = getelementptr inbounds [4 x i64], ptr %163, i64 0, i64 2
  %165 = load i64, ptr %164, align 8, !tbaa !15
  store i64 %165, ptr %25, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  %166 = load ptr, ptr %4, align 8, !tbaa !5
  %167 = getelementptr inbounds %struct.ggml_tensor, ptr %166, i32 0, i32 2
  %168 = getelementptr inbounds [4 x i64], ptr %167, i64 0, i64 3
  %169 = load i64, ptr %168, align 8, !tbaa !15
  store i64 %169, ptr %26, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #7
  %170 = load ptr, ptr %4, align 8, !tbaa !5
  %171 = getelementptr inbounds %struct.ggml_tensor, ptr %170, i32 0, i32 3
  %172 = getelementptr inbounds [4 x i64], ptr %171, i64 0, i64 0
  %173 = load i64, ptr %172, align 8, !tbaa !15
  store i64 %173, ptr %27, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #7
  %174 = load ptr, ptr %4, align 8, !tbaa !5
  %175 = getelementptr inbounds %struct.ggml_tensor, ptr %174, i32 0, i32 3
  %176 = getelementptr inbounds [4 x i64], ptr %175, i64 0, i64 1
  %177 = load i64, ptr %176, align 8, !tbaa !15
  store i64 %177, ptr %28, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #7
  %178 = load ptr, ptr %4, align 8, !tbaa !5
  %179 = getelementptr inbounds %struct.ggml_tensor, ptr %178, i32 0, i32 3
  %180 = getelementptr inbounds [4 x i64], ptr %179, i64 0, i64 2
  %181 = load i64, ptr %180, align 8, !tbaa !15
  store i64 %181, ptr %29, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  %182 = load ptr, ptr %4, align 8, !tbaa !5
  %183 = getelementptr inbounds %struct.ggml_tensor, ptr %182, i32 0, i32 3
  %184 = getelementptr inbounds [4 x i64], ptr %183, i64 0, i64 3
  %185 = load i64, ptr %184, align 8, !tbaa !15
  store i64 %185, ptr %30, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #7
  %186 = load ptr, ptr %3, align 8, !tbaa !5
  %187 = getelementptr inbounds %struct.ggml_compute_params, ptr %186, i32 0, i32 0
  %188 = load i32, ptr %187, align 8, !tbaa !16
  store i32 %188, ptr %31, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #7
  %189 = load ptr, ptr %3, align 8, !tbaa !5
  %190 = getelementptr inbounds %struct.ggml_compute_params, ptr %189, i32 0, i32 1
  %191 = load i32, ptr %190, align 4, !tbaa !19
  store i32 %191, ptr %32, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #7
  %192 = load i64, ptr %7, align 8, !tbaa !15
  %193 = load i64, ptr %8, align 8, !tbaa !15
  %194 = mul nsw i64 %192, %193
  %195 = load i64, ptr %9, align 8, !tbaa !15
  %196 = mul nsw i64 %194, %195
  %197 = load i64, ptr %10, align 8, !tbaa !15
  %198 = mul nsw i64 %196, %197
  %199 = trunc i64 %198 to i32
  store i32 %199, ptr %33, align 4, !tbaa !18
  %200 = load i64, ptr %11, align 8, !tbaa !15
  %201 = icmp eq i64 %200, 2
  br i1 %201, label %203, label %202

202:                                              ; preds = %89
  call void (ptr, i32, ptr, ...) @ggml_abort(ptr noundef @.str, i32 noundef 5991, ptr noundef @.str.2, ptr noundef @.str.8) #8
  unreachable

203:                                              ; preds = %89
  %204 = load i64, ptr %19, align 8, !tbaa !15
  %205 = icmp eq i64 %204, 4
  br i1 %205, label %207, label %206

206:                                              ; preds = %203
  call void (ptr, i32, ptr, ...) @ggml_abort(ptr noundef @.str, i32 noundef 5992, ptr noundef @.str.2, ptr noundef @.str.9) #8
  unreachable

207:                                              ; preds = %203
  %208 = load i32, ptr %31, align 4, !tbaa !18
  %209 = icmp eq i32 %208, 0
  br i1 %209, label %210, label %382

210:                                              ; preds = %207
  %211 = load ptr, ptr %3, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.ggml_compute_params, ptr %211, i32 0, i32 3
  %213 = load ptr, ptr %212, align 8, !tbaa !20
  %214 = load ptr, ptr %3, align 8, !tbaa !5
  %215 = getelementptr inbounds %struct.ggml_compute_params, ptr %214, i32 0, i32 2
  %216 = load i64, ptr %215, align 8, !tbaa !21
  call void @llvm.memset.p0.i64(ptr align 1 %213, i8 0, i64 %216, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #7
  %217 = load ptr, ptr %3, align 8, !tbaa !5
  %218 = getelementptr inbounds %struct.ggml_compute_params, ptr %217, i32 0, i32 3
  %219 = load ptr, ptr %218, align 8, !tbaa !20
  %220 = getelementptr inbounds i16, ptr %219, i64 0
  store ptr %220, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #7
  store i64 0, ptr %35, align 8, !tbaa !15
  br label %221

221:                                              ; preds = %298, %210
  %222 = load i64, ptr %35, align 8, !tbaa !15
  %223 = load i64, ptr %10, align 8, !tbaa !15
  %224 = icmp slt i64 %222, %223
  br i1 %224, label %226, label %225

225:                                              ; preds = %221
  store i32 2, ptr %36, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  br label %301

226:                                              ; preds = %221
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #7
  store i64 0, ptr %37, align 8, !tbaa !15
  br label %227

227:                                              ; preds = %294, %226
  %228 = load i64, ptr %37, align 8, !tbaa !15
  %229 = load i64, ptr %9, align 8, !tbaa !15
  %230 = icmp slt i64 %228, %229
  br i1 %230, label %232, label %231

231:                                              ; preds = %227
  store i32 5, ptr %36, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  br label %297

232:                                              ; preds = %227
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #7
  %233 = load ptr, ptr %5, align 8, !tbaa !5
  %234 = getelementptr inbounds %struct.ggml_tensor, ptr %233, i32 0, i32 10
  %235 = load ptr, ptr %234, align 8, !tbaa !22
  %236 = load i64, ptr %35, align 8, !tbaa !15
  %237 = load i64, ptr %14, align 8, !tbaa !15
  %238 = mul i64 %236, %237
  %239 = getelementptr inbounds i8, ptr %235, i64 %238
  %240 = load i64, ptr %37, align 8, !tbaa !15
  %241 = load i64, ptr %13, align 8, !tbaa !15
  %242 = mul i64 %240, %241
  %243 = getelementptr inbounds i8, ptr %239, i64 %242
  store ptr %243, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #7
  %244 = load ptr, ptr %34, align 8, !tbaa !5
  %245 = load i64, ptr %37, align 8, !tbaa !15
  %246 = load i64, ptr %8, align 8, !tbaa !15
  %247 = mul nsw i64 %245, %246
  %248 = load i64, ptr %7, align 8, !tbaa !15
  %249 = mul nsw i64 %247, %248
  %250 = load i64, ptr %10, align 8, !tbaa !15
  %251 = mul nsw i64 %249, %250
  %252 = getelementptr inbounds i16, ptr %244, i64 %251
  store ptr %252, ptr %39, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #7
  store i64 0, ptr %40, align 8, !tbaa !15
  br label %253

253:                                              ; preds = %290, %232
  %254 = load i64, ptr %40, align 8, !tbaa !15
  %255 = load i64, ptr %8, align 8, !tbaa !15
  %256 = icmp slt i64 %254, %255
  br i1 %256, label %258, label %257

257:                                              ; preds = %253
  store i32 8, ptr %36, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  br label %293

258:                                              ; preds = %253
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #7
  store i64 0, ptr %41, align 8, !tbaa !15
  br label %259

259:                                              ; preds = %286, %258
  %260 = load i64, ptr %41, align 8, !tbaa !15
  %261 = load i64, ptr %7, align 8, !tbaa !15
  %262 = icmp slt i64 %260, %261
  br i1 %262, label %264, label %263

263:                                              ; preds = %259
  store i32 11, ptr %36, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  br label %289

264:                                              ; preds = %259
  %265 = load ptr, ptr %38, align 8, !tbaa !5
  %266 = load i64, ptr %40, align 8, !tbaa !15
  %267 = load i64, ptr %7, align 8, !tbaa !15
  %268 = mul nsw i64 %266, %267
  %269 = load i64, ptr %41, align 8, !tbaa !15
  %270 = add nsw i64 %268, %269
  %271 = getelementptr inbounds i16, ptr %265, i64 %270
  %272 = load i16, ptr %271, align 2, !tbaa !23
  %273 = load ptr, ptr %39, align 8, !tbaa !5
  %274 = load i64, ptr %40, align 8, !tbaa !15
  %275 = load i64, ptr %7, align 8, !tbaa !15
  %276 = mul nsw i64 %274, %275
  %277 = load i64, ptr %10, align 8, !tbaa !15
  %278 = mul nsw i64 %276, %277
  %279 = load i64, ptr %41, align 8, !tbaa !15
  %280 = load i64, ptr %10, align 8, !tbaa !15
  %281 = mul nsw i64 %279, %280
  %282 = add nsw i64 %278, %281
  %283 = load i64, ptr %35, align 8, !tbaa !15
  %284 = add nsw i64 %282, %283
  %285 = getelementptr inbounds i16, ptr %273, i64 %284
  store i16 %272, ptr %285, align 2, !tbaa !23
  br label %286

286:                                              ; preds = %264
  %287 = load i64, ptr %41, align 8, !tbaa !15
  %288 = add nsw i64 %287, 1
  store i64 %288, ptr %41, align 8, !tbaa !15
  br label %259, !llvm.loop !25

289:                                              ; preds = %263
  br label %290

290:                                              ; preds = %289
  %291 = load i64, ptr %40, align 8, !tbaa !15
  %292 = add nsw i64 %291, 1
  store i64 %292, ptr %40, align 8, !tbaa !15
  br label %253, !llvm.loop !27

293:                                              ; preds = %257
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  br label %294

294:                                              ; preds = %293
  %295 = load i64, ptr %37, align 8, !tbaa !15
  %296 = add nsw i64 %295, 1
  store i64 %296, ptr %37, align 8, !tbaa !15
  br label %227, !llvm.loop !28

297:                                              ; preds = %231
  br label %298

298:                                              ; preds = %297
  %299 = load i64, ptr %35, align 8, !tbaa !15
  %300 = add nsw i64 %299, 1
  store i64 %300, ptr %35, align 8, !tbaa !15
  br label %221, !llvm.loop !29

301:                                              ; preds = %225
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #7
  %302 = load ptr, ptr %3, align 8, !tbaa !5
  %303 = getelementptr inbounds %struct.ggml_compute_params, ptr %302, i32 0, i32 3
  %304 = load ptr, ptr %303, align 8, !tbaa !20
  %305 = load i32, ptr %33, align 4, !tbaa !18
  %306 = sext i32 %305 to i64
  %307 = getelementptr inbounds i16, ptr %304, i64 %306
  store ptr %307, ptr %42, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #7
  store i32 0, ptr %43, align 4, !tbaa !18
  br label %308

308:                                              ; preds = %373, %301
  %309 = load i32, ptr %43, align 4, !tbaa !18
  %310 = sext i32 %309 to i64
  %311 = load i64, ptr %17, align 8, !tbaa !15
  %312 = icmp slt i64 %310, %311
  br i1 %312, label %314, label %313

313:                                              ; preds = %308
  store i32 14, ptr %36, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #7
  br label %376

314:                                              ; preds = %308
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #7
  store i32 0, ptr %44, align 4, !tbaa !18
  br label %315

315:                                              ; preds = %369, %314
  %316 = load i32, ptr %44, align 4, !tbaa !18
  %317 = sext i32 %316 to i64
  %318 = load i64, ptr %16, align 8, !tbaa !15
  %319 = icmp slt i64 %317, %318
  br i1 %319, label %321, label %320

320:                                              ; preds = %315
  store i32 17, ptr %36, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #7
  br label %372

321:                                              ; preds = %315
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #7
  %322 = load ptr, ptr %6, align 8, !tbaa !5
  %323 = getelementptr inbounds %struct.ggml_tensor, ptr %322, i32 0, i32 10
  %324 = load ptr, ptr %323, align 8, !tbaa !22
  %325 = load i32, ptr %43, align 4, !tbaa !18
  %326 = sext i32 %325 to i64
  %327 = load i64, ptr %21, align 8, !tbaa !15
  %328 = mul i64 %326, %327
  %329 = getelementptr inbounds i8, ptr %324, i64 %328
  %330 = load i32, ptr %44, align 4, !tbaa !18
  %331 = sext i32 %330 to i64
  %332 = load i64, ptr %20, align 8, !tbaa !15
  %333 = mul i64 %331, %332
  %334 = getelementptr inbounds i8, ptr %329, i64 %333
  store ptr %334, ptr %45, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #7
  %335 = load ptr, ptr %42, align 8, !tbaa !5
  %336 = load i32, ptr %44, align 4, !tbaa !18
  %337 = sext i32 %336 to i64
  %338 = load i64, ptr %15, align 8, !tbaa !15
  %339 = mul nsw i64 %337, %338
  %340 = load i64, ptr %17, align 8, !tbaa !15
  %341 = mul nsw i64 %339, %340
  %342 = getelementptr inbounds i16, ptr %335, i64 %341
  store ptr %342, ptr %46, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #7
  store i32 0, ptr %47, align 4, !tbaa !18
  br label %343

343:                                              ; preds = %365, %321
  %344 = load i32, ptr %47, align 4, !tbaa !18
  %345 = sext i32 %344 to i64
  %346 = load i64, ptr %15, align 8, !tbaa !15
  %347 = icmp slt i64 %345, %346
  br i1 %347, label %349, label %348

348:                                              ; preds = %343
  store i32 20, ptr %36, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #7
  br label %368

349:                                              ; preds = %343
  %350 = load ptr, ptr %45, align 8, !tbaa !5
  %351 = load i32, ptr %47, align 4, !tbaa !18
  %352 = sext i32 %351 to i64
  %353 = getelementptr inbounds float, ptr %350, i64 %352
  %354 = load float, ptr %353, align 4, !tbaa !30
  %355 = call noundef zeroext i16 @_ZL25ggml_compute_fp32_to_fp16f(float noundef %354)
  %356 = load ptr, ptr %46, align 8, !tbaa !5
  %357 = load i32, ptr %47, align 4, !tbaa !18
  %358 = sext i32 %357 to i64
  %359 = load i64, ptr %17, align 8, !tbaa !15
  %360 = mul nsw i64 %358, %359
  %361 = load i32, ptr %43, align 4, !tbaa !18
  %362 = sext i32 %361 to i64
  %363 = add nsw i64 %360, %362
  %364 = getelementptr inbounds i16, ptr %356, i64 %363
  store i16 %355, ptr %364, align 2, !tbaa !23
  br label %365

365:                                              ; preds = %349
  %366 = load i32, ptr %47, align 4, !tbaa !18
  %367 = add nsw i32 %366, 1
  store i32 %367, ptr %47, align 4, !tbaa !18
  br label %343, !llvm.loop !32

368:                                              ; preds = %348
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  br label %369

369:                                              ; preds = %368
  %370 = load i32, ptr %44, align 4, !tbaa !18
  %371 = add nsw i32 %370, 1
  store i32 %371, ptr %44, align 4, !tbaa !18
  br label %315, !llvm.loop !33

372:                                              ; preds = %320
  br label %373

373:                                              ; preds = %372
  %374 = load i32, ptr %43, align 4, !tbaa !18
  %375 = add nsw i32 %374, 1
  store i32 %375, ptr %43, align 4, !tbaa !18
  br label %308, !llvm.loop !34

376:                                              ; preds = %313
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  %377 = load ptr, ptr %4, align 8, !tbaa !5
  %378 = getelementptr inbounds %struct.ggml_tensor, ptr %377, i32 0, i32 10
  %379 = load ptr, ptr %378, align 8, !tbaa !22
  %380 = load ptr, ptr %4, align 8, !tbaa !5
  %381 = call i64 @ggml_nbytes(ptr noundef %380)
  call void @llvm.memset.p0.i64(ptr align 1 %379, i8 0, i64 %381, i1 false)
  br label %382

382:                                              ; preds = %376, %207
  %383 = load ptr, ptr %3, align 8, !tbaa !5
  %384 = getelementptr inbounds %struct.ggml_compute_params, ptr %383, i32 0, i32 4
  %385 = load ptr, ptr %384, align 8, !tbaa !35
  call void @ggml_barrier(ptr noundef %385)
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #7
  %386 = load ptr, ptr %4, align 8, !tbaa !5
  %387 = call noundef i32 @_ZL22ggml_get_op_params_i32PK11ggml_tensorj(ptr noundef %386, i32 noundef 0)
  store i32 %387, ptr %48, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #7
  %388 = load i64, ptr %25, align 8, !tbaa !15
  %389 = trunc i64 %388 to i32
  store i32 %389, ptr %49, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #7
  %390 = load i32, ptr %49, align 4, !tbaa !18
  %391 = load i32, ptr %32, align 4, !tbaa !18
  %392 = add nsw i32 %390, %391
  %393 = sub nsw i32 %392, 1
  %394 = load i32, ptr %32, align 4, !tbaa !18
  %395 = sdiv i32 %393, %394
  store i32 %395, ptr %50, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #7
  %396 = load i32, ptr %50, align 4, !tbaa !18
  %397 = load i32, ptr %31, align 4, !tbaa !18
  %398 = mul nsw i32 %396, %397
  store i32 %398, ptr %51, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #7
  %399 = load i32, ptr %51, align 4, !tbaa !18
  %400 = load i32, ptr %50, align 4, !tbaa !18
  %401 = add nsw i32 %399, %400
  %402 = load i32, ptr %49, align 4, !tbaa !18
  %403 = icmp slt i32 %401, %402
  br i1 %403, label %404, label %408

404:                                              ; preds = %382
  %405 = load i32, ptr %51, align 4, !tbaa !18
  %406 = load i32, ptr %50, align 4, !tbaa !18
  %407 = add nsw i32 %405, %406
  br label %410

408:                                              ; preds = %382
  %409 = load i32, ptr %49, align 4, !tbaa !18
  br label %410

410:                                              ; preds = %408, %404
  %411 = phi i32 [ %407, %404 ], [ %409, %408 ]
  store i32 %411, ptr %52, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #7
  %412 = load ptr, ptr %3, align 8, !tbaa !5
  %413 = getelementptr inbounds %struct.ggml_compute_params, ptr %412, i32 0, i32 3
  %414 = load ptr, ptr %413, align 8, !tbaa !20
  %415 = getelementptr inbounds i16, ptr %414, i64 0
  store ptr %415, ptr %53, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #7
  %416 = load ptr, ptr %53, align 8, !tbaa !5
  %417 = load i32, ptr %33, align 4, !tbaa !18
  %418 = sext i32 %417 to i64
  %419 = getelementptr inbounds i16, ptr %416, i64 %418
  store ptr %419, ptr %54, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #7
  %420 = load i32, ptr %51, align 4, !tbaa !18
  store i32 %420, ptr %55, align 4, !tbaa !18
  br label %421

421:                                              ; preds = %541, %410
  %422 = load i32, ptr %55, align 4, !tbaa !18
  %423 = load i32, ptr %52, align 4, !tbaa !18
  %424 = icmp slt i32 %422, %423
  br i1 %424, label %426, label %425

425:                                              ; preds = %421
  store i32 23, ptr %36, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #7
  br label %544

426:                                              ; preds = %421
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #7
  %427 = load ptr, ptr %4, align 8, !tbaa !5
  %428 = getelementptr inbounds %struct.ggml_tensor, ptr %427, i32 0, i32 10
  %429 = load ptr, ptr %428, align 8, !tbaa !22
  %430 = load i32, ptr %55, align 4, !tbaa !18
  %431 = sext i32 %430 to i64
  %432 = load i64, ptr %29, align 8, !tbaa !15
  %433 = mul i64 %431, %432
  %434 = getelementptr inbounds i8, ptr %429, i64 %433
  store ptr %434, ptr %56, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #7
  %435 = load ptr, ptr %53, align 8, !tbaa !5
  %436 = load i32, ptr %55, align 4, !tbaa !18
  %437 = sext i32 %436 to i64
  %438 = load i64, ptr %8, align 8, !tbaa !15
  %439 = mul nsw i64 %437, %438
  %440 = load i64, ptr %7, align 8, !tbaa !15
  %441 = mul nsw i64 %439, %440
  %442 = load i64, ptr %10, align 8, !tbaa !15
  %443 = mul nsw i64 %441, %442
  %444 = getelementptr inbounds i16, ptr %435, i64 %443
  store ptr %444, ptr %57, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #7
  store i32 0, ptr %58, align 4, !tbaa !18
  br label %445

445:                                              ; preds = %537, %426
  %446 = load i32, ptr %58, align 4, !tbaa !18
  %447 = sext i32 %446 to i64
  %448 = load i64, ptr %16, align 8, !tbaa !15
  %449 = icmp slt i64 %447, %448
  br i1 %449, label %451, label %450

450:                                              ; preds = %445
  store i32 26, ptr %36, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #7
  br label %540

451:                                              ; preds = %445
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #7
  store i32 0, ptr %59, align 4, !tbaa !18
  br label %452

452:                                              ; preds = %533, %451
  %453 = load i32, ptr %59, align 4, !tbaa !18
  %454 = sext i32 %453 to i64
  %455 = load i64, ptr %15, align 8, !tbaa !15
  %456 = icmp slt i64 %454, %455
  br i1 %456, label %458, label %457

457:                                              ; preds = %452
  store i32 29, ptr %36, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #7
  br label %536

458:                                              ; preds = %452
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #7
  %459 = load i32, ptr %58, align 4, !tbaa !18
  %460 = sext i32 %459 to i64
  %461 = load i64, ptr %15, align 8, !tbaa !15
  %462 = mul nsw i64 %460, %461
  %463 = load i64, ptr %17, align 8, !tbaa !15
  %464 = mul nsw i64 %462, %463
  %465 = load i32, ptr %59, align 4, !tbaa !18
  %466 = sext i32 %465 to i64
  %467 = load i64, ptr %17, align 8, !tbaa !15
  %468 = mul nsw i64 %466, %467
  %469 = add nsw i64 %464, %468
  %470 = trunc i64 %469 to i32
  store i32 %470, ptr %60, align 4, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #7
  store i32 0, ptr %61, align 4, !tbaa !18
  br label %471

471:                                              ; preds = %529, %458
  %472 = load i32, ptr %61, align 4, !tbaa !18
  %473 = sext i32 %472 to i64
  %474 = load i64, ptr %8, align 8, !tbaa !15
  %475 = icmp slt i64 %473, %474
  br i1 %475, label %477, label %476

476:                                              ; preds = %471
  store i32 32, ptr %36, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #7
  br label %532

477:                                              ; preds = %471
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #7
  store i32 0, ptr %62, align 4, !tbaa !18
  br label %478

478:                                              ; preds = %525, %477
  %479 = load i32, ptr %62, align 4, !tbaa !18
  %480 = sext i32 %479 to i64
  %481 = load i64, ptr %7, align 8, !tbaa !15
  %482 = icmp slt i64 %480, %481
  br i1 %482, label %484, label %483

483:                                              ; preds = %478
  store i32 35, ptr %36, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #7
  br label %528

484:                                              ; preds = %478
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #7
  store float 0.000000e+00, ptr %63, align 4, !tbaa !30
  %485 = load i64, ptr %10, align 8, !tbaa !15
  %486 = trunc i64 %485 to i32
  %487 = load ptr, ptr %54, align 8, !tbaa !5
  %488 = load i32, ptr %60, align 4, !tbaa !18
  %489 = sext i32 %488 to i64
  %490 = getelementptr inbounds i16, ptr %487, i64 %489
  %491 = load ptr, ptr %57, align 8, !tbaa !5
  %492 = load i32, ptr %61, align 4, !tbaa !18
  %493 = sext i32 %492 to i64
  %494 = load i64, ptr %7, align 8, !tbaa !15
  %495 = mul nsw i64 %493, %494
  %496 = load i64, ptr %10, align 8, !tbaa !15
  %497 = mul nsw i64 %495, %496
  %498 = getelementptr inbounds i16, ptr %491, i64 %497
  %499 = load i32, ptr %62, align 4, !tbaa !18
  %500 = sext i32 %499 to i64
  %501 = load i64, ptr %10, align 8, !tbaa !15
  %502 = mul nsw i64 %500, %501
  %503 = getelementptr inbounds i16, ptr %498, i64 %502
  call void @ggml_vec_dot_f16(i32 noundef %486, ptr noundef %63, i64 noundef 0, ptr noundef %490, i64 noundef 0, ptr noundef %503, i64 noundef 0, i32 noundef 1)
  %504 = load float, ptr %63, align 4, !tbaa !30
  %505 = load ptr, ptr %56, align 8, !tbaa !5
  %506 = load i32, ptr %58, align 4, !tbaa !18
  %507 = load i32, ptr %48, align 4, !tbaa !18
  %508 = mul nsw i32 %506, %507
  %509 = load i32, ptr %61, align 4, !tbaa !18
  %510 = add nsw i32 %508, %509
  %511 = sext i32 %510 to i64
  %512 = load i64, ptr %23, align 8, !tbaa !15
  %513 = mul nsw i64 %511, %512
  %514 = load i32, ptr %59, align 4, !tbaa !18
  %515 = load i32, ptr %48, align 4, !tbaa !18
  %516 = mul nsw i32 %514, %515
  %517 = sext i32 %516 to i64
  %518 = add nsw i64 %513, %517
  %519 = load i32, ptr %62, align 4, !tbaa !18
  %520 = sext i32 %519 to i64
  %521 = add nsw i64 %518, %520
  %522 = getelementptr inbounds float, ptr %505, i64 %521
  %523 = load float, ptr %522, align 4, !tbaa !30
  %524 = fadd float %523, %504
  store float %524, ptr %522, align 4, !tbaa !30
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #7
  br label %525

525:                                              ; preds = %484
  %526 = load i32, ptr %62, align 4, !tbaa !18
  %527 = add nsw i32 %526, 1
  store i32 %527, ptr %62, align 4, !tbaa !18
  br label %478, !llvm.loop !36

528:                                              ; preds = %483
  br label %529

529:                                              ; preds = %528
  %530 = load i32, ptr %61, align 4, !tbaa !18
  %531 = add nsw i32 %530, 1
  store i32 %531, ptr %61, align 4, !tbaa !18
  br label %471, !llvm.loop !37

532:                                              ; preds = %476
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #7
  br label %533

533:                                              ; preds = %532
  %534 = load i32, ptr %59, align 4, !tbaa !18
  %535 = add nsw i32 %534, 1
  store i32 %535, ptr %59, align 4, !tbaa !18
  br label %452, !llvm.loop !38

536:                                              ; preds = %457
  br label %537

537:                                              ; preds = %536
  %538 = load i32, ptr %58, align 4, !tbaa !18
  %539 = add nsw i32 %538, 1
  store i32 %539, ptr %58, align 4, !tbaa !18
  br label %445, !llvm.loop !39

540:                                              ; preds = %450
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #7
  br label %541

541:                                              ; preds = %540
  %542 = load i32, ptr %55, align 4, !tbaa !18
  %543 = add nsw i32 %542, 1
  store i32 %543, ptr %55, align 4, !tbaa !18
  br label %421, !llvm.loop !40

544:                                              ; preds = %425
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #7
  ret void
}

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i16 @_ZL25ggml_compute_fp32_to_fp16f(float noundef) #4

declare i64 @ggml_nbytes(ptr noundef) #5

declare void @ggml_barrier(ptr noundef) #5

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i32 @_ZL22ggml_get_op_params_i32PK11ggml_tensorj(ptr noundef, i32 noundef) #6

declare void @ggml_vec_dot_f16(i32 noundef, ptr noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef, i64 noundef, i32 noundef) #5

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { noreturn "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 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 nounwind willreturn memory(argmem: write) }
attributes #4 = { inlinehint mustprogress 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 = { "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 #6 = { mustprogress 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 #7 = { nounwind }
attributes #8 = { noreturn }

!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++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"_ZTS11ggml_tensor", !11, i64 0, !6, i64 8, !7, i64 16, !7, i64 48, !12, i64 80, !7, i64 84, !13, i64 148, !7, i64 152, !6, i64 232, !14, i64 240, !6, i64 248, !7, i64 256, !6, i64 320, !7, i64 328}
!11 = !{!"_ZTS9ggml_type", !7, i64 0}
!12 = !{!"_ZTS7ggml_op", !7, i64 0}
!13 = !{!"int", !7, i64 0}
!14 = !{!"long", !7, i64 0}
!15 = !{!14, !14, i64 0}
!16 = !{!17, !13, i64 0}
!17 = !{!"_ZTS19ggml_compute_params", !13, i64 0, !13, i64 4, !14, i64 8, !6, i64 16, !6, i64 24}
!18 = !{!13, !13, i64 0}
!19 = !{!17, !13, i64 4}
!20 = !{!17, !6, i64 16}
!21 = !{!17, !14, i64 8}
!22 = !{!10, !6, i64 248}
!23 = !{!24, !24, i64 0}
!24 = !{!"short", !7, i64 0}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.mustprogress"}
!27 = distinct !{!27, !26}
!28 = distinct !{!28, !26}
!29 = distinct !{!29, !26}
!30 = !{!31, !31, i64 0}
!31 = !{!"float", !7, i64 0}
!32 = distinct !{!32, !26}
!33 = distinct !{!33, !26}
!34 = distinct !{!34, !26}
!35 = !{!17, !6, i64 24}
!36 = distinct !{!36, !26}
!37 = distinct !{!37, !26}
!38 = distinct !{!38, !26}
!39 = distinct !{!39, !26}
!40 = distinct !{!40, !26}


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

@.str = external hidden unnamed_addr constant [68 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [22 x i8], align 1

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

; Function Attrs: noreturn
declare void @ggml_abort(ptr noundef, i32 noundef, ptr noundef, ...) local_unnamed_addr #1

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

; Function Attrs: mustprogress uwtable
define dso_local void @ggml_compute_forward_conv_transpose_2d(ptr nocapture noundef readonly %0, ptr noundef %1) local_unnamed_addr #2 {
  %3 = alloca float, align 4
  %4 = getelementptr inbounds i8, ptr %1, i64 152
  %5 = load ptr, ptr %4, align 8, !tbaa !5
  %6 = getelementptr inbounds i8, ptr %1, i64 160
  %7 = load ptr, ptr %6, align 8, !tbaa !5
  %8 = load i32, ptr %5, align 8, !tbaa !9
  %9 = icmp eq i32 %8, 1
  br i1 %9, label %11, label %10

10:                                               ; preds = %2
  tail call void (ptr, i32, ptr, ...) @ggml_abort(ptr noundef nonnull @.str, i32 noundef 5980, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.7) #8
  unreachable

11:                                               ; preds = %2
  %12 = load i32, ptr %7, align 8, !tbaa !9
  %13 = icmp eq i32 %12, 0
  br i1 %13, label %15, label %14

14:                                               ; preds = %11
  tail call void (ptr, i32, ptr, ...) @ggml_abort(ptr noundef nonnull @.str, i32 noundef 5981, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.4) #8
  unreachable

15:                                               ; preds = %11
  %16 = load i32, ptr %1, align 8, !tbaa !9
  %17 = icmp eq i32 %16, 0
  br i1 %17, label %19, label %18

18:                                               ; preds = %15
  tail call void (ptr, i32, ptr, ...) @ggml_abort(ptr noundef nonnull @.str, i32 noundef 5982, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.5) #8
  unreachable

19:                                               ; preds = %15
  %20 = getelementptr inbounds i8, ptr %5, i64 16
  %21 = load i64, ptr %20, align 8, !tbaa !15
  %22 = getelementptr inbounds i8, ptr %5, i64 24
  %23 = load i64, ptr %22, align 8, !tbaa !15
  %24 = getelementptr inbounds i8, ptr %5, i64 32
  %25 = load i64, ptr %24, align 8, !tbaa !15
  %26 = getelementptr inbounds i8, ptr %5, i64 40
  %27 = load i64, ptr %26, align 8, !tbaa !15
  %28 = getelementptr inbounds i8, ptr %5, i64 48
  %29 = load i64, ptr %28, align 8, !tbaa !15
  %30 = getelementptr inbounds i8, ptr %5, i64 64
  %31 = load i64, ptr %30, align 8, !tbaa !15
  %32 = getelementptr inbounds i8, ptr %5, i64 72
  %33 = load i64, ptr %32, align 8, !tbaa !15
  %34 = getelementptr inbounds i8, ptr %7, i64 16
  %35 = load i64, ptr %34, align 8, !tbaa !15
  %36 = getelementptr inbounds i8, ptr %7, i64 24
  %37 = load i64, ptr %36, align 8, !tbaa !15
  %38 = getelementptr inbounds i8, ptr %7, i64 32
  %39 = load i64, ptr %38, align 8, !tbaa !15
  %40 = getelementptr inbounds i8, ptr %7, i64 56
  %41 = load i64, ptr %40, align 8, !tbaa !15
  %42 = getelementptr inbounds i8, ptr %7, i64 64
  %43 = load i64, ptr %42, align 8, !tbaa !15
  %44 = getelementptr inbounds i8, ptr %1, i64 16
  %45 = load i64, ptr %44, align 8, !tbaa !15
  %46 = getelementptr inbounds i8, ptr %1, i64 32
  %47 = load i64, ptr %46, align 8, !tbaa !15
  %48 = getelementptr inbounds i8, ptr %1, i64 64
  %49 = load i64, ptr %48, align 8, !tbaa !15
  %50 = load i32, ptr %0, align 8, !tbaa !16
  %51 = getelementptr inbounds i8, ptr %0, i64 4
  %52 = load i32, ptr %51, align 4, !tbaa !18
  %53 = mul i64 %27, %21
  %54 = mul i64 %53, %23
  %55 = mul i64 %54, %25
  %56 = icmp eq i64 %29, 2
  br i1 %56, label %58, label %57

57:                                               ; preds = %19
  tail call void (ptr, i32, ptr, ...) @ggml_abort(ptr noundef nonnull @.str, i32 noundef 5991, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.8) #8
  unreachable

58:                                               ; preds = %19
  %59 = getelementptr inbounds i8, ptr %7, i64 48
  %60 = load i64, ptr %59, align 8, !tbaa !15
  %61 = icmp eq i64 %60, 4
  br i1 %61, label %63, label %62

62:                                               ; preds = %58
  tail call void (ptr, i32, ptr, ...) @ggml_abort(ptr noundef nonnull @.str, i32 noundef 5992, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.9) #8
  unreachable

63:                                               ; preds = %58
  %64 = icmp eq i32 %50, 0
  br i1 %64, label %65, label %._crit_edge325

._crit_edge325:                                   ; preds = %63
  %.pre = shl i64 %55, 32
  %.pre326 = ashr exact i64 %.pre, 31
  br label %150

65:                                               ; preds = %63
  %66 = getelementptr inbounds i8, ptr %0, i64 16
  %67 = load ptr, ptr %66, align 8, !tbaa !19
  %68 = getelementptr inbounds i8, ptr %0, i64 8
  %69 = load i64, ptr %68, align 8, !tbaa !20
  tail call void @llvm.memset.p0.i64(ptr align 1 %67, i8 0, i64 %69, i1 false)
  %70 = load ptr, ptr %66, align 8, !tbaa !19
  %71 = ptrtoint ptr %70 to i64
  %72 = icmp sgt i64 %27, 0
  %73 = icmp sgt i64 %25, 0
  %or.cond333 = select i1 %72, i1 %73, i1 false
  br i1 %or.cond333, label %.preheader191.lr.ph.split.us, label %._crit_edge204

.preheader191.lr.ph.split.us:                     ; preds = %65
  %74 = icmp slt i64 %21, 1
  %75 = icmp slt i64 %23, 1
  %76 = getelementptr inbounds i8, ptr %5, i64 248
  %77 = load ptr, ptr %76, align 8, !tbaa !21
  %brmerge = select i1 %75, i1 true, i1 %74
  br i1 %brmerge, label %._crit_edge204, label %.preheader191.us.us.us.preheader

.preheader191.us.us.us.preheader:                 ; preds = %.preheader191.lr.ph.split.us
  %78 = ptrtoint ptr %77 to i64
  %79 = sub i64 %71, %78
  %80 = sub i64 2, %33
  %81 = mul i64 %21, %23
  %82 = shl i64 %81, 1
  %83 = sub i64 %82, %31
  %min.iters.check = icmp ult i64 %21, 16
  %ident.check.not = icmp ne i64 %27, 1
  %or.cond334.not336 = select i1 %min.iters.check, i1 true, i1 %ident.check.not
  %n.vec = and i64 %21, 9223372036854775792
  %cmp.n = icmp eq i64 %21, %n.vec
  %xtraiter = and i64 %21, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br label %.preheader191.us.us.us

.preheader191.us.us.us:                           ; preds = %.preheader191.us.us.us.preheader, %._crit_edge.split.us.split.us.us.us.us
  %.0165203.us.us.us = phi i64 [ %128, %._crit_edge.split.us.split.us.us.us.us ], [ 0, %.preheader191.us.us.us.preheader ]
  %84 = mul i64 %80, %.0165203.us.us.us
  %85 = add i64 %79, %84
  %invariant.gep195.us.us.us = getelementptr i16, ptr %70, i64 %.0165203.us.us.us
  %86 = mul i64 %.0165203.us.us.us, %33
  %87 = getelementptr inbounds i8, ptr %77, i64 %86
  br label %.preheader190.lr.ph.us.us.us.us.us

.preheader190.lr.ph.us.us.us.us.us:               ; preds = %._crit_edge194.split.us.us.us.us.us.us, %.preheader191.us.us.us
  %.0168196.us.us.us.us.us = phi i64 [ 0, %.preheader191.us.us.us ], [ %127, %._crit_edge194.split.us.us.us.us.us.us ]
  %88 = mul i64 %83, %.0168196.us.us.us.us.us
  %89 = add i64 %85, %88
  %90 = mul i64 %.0168196.us.us.us.us.us, %31
  %91 = getelementptr inbounds i8, ptr %87, i64 %90
  %92 = mul i64 %54, %.0168196.us.us.us.us.us
  %gep.us199.us.us.us.us = getelementptr i16, ptr %invariant.gep195.us.us.us, i64 %92
  %diff.check = icmp ult i64 %89, 32
  %or.cond335 = select i1 %or.cond334.not336, i1 true, i1 %diff.check
  br label %.preheader190.us.us.us.us.us.us

.preheader190.us.us.us.us.us.us:                  ; preds = %._crit_edge.us.us.us.us.us.us, %.preheader190.lr.ph.us.us.us.us.us
  %.0170193.us.us.us.us.us.us = phi i64 [ 0, %.preheader190.lr.ph.us.us.us.us.us ], [ %126, %._crit_edge.us.us.us.us.us.us ]
  %93 = mul nuw nsw i64 %.0170193.us.us.us.us.us.us, %21
  %94 = getelementptr i16, ptr %91, i64 %93
  br i1 %or.cond335, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %.preheader190.us.us.us.us.us.us
  %invariant.gep = getelementptr i16, ptr %gep.us199.us.us.us.us, i64 %93
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %95 = getelementptr i16, ptr %94, i64 %index
  %96 = getelementptr i8, ptr %95, i64 16
  %wide.load = load <8 x i16>, ptr %95, align 2, !tbaa !22
  %wide.load332 = load <8 x i16>, ptr %96, align 2, !tbaa !22
  %gep = getelementptr i16, ptr %invariant.gep, i64 %index
  %97 = getelementptr i8, ptr %gep, i64 16
  store <8 x i16> %wide.load, ptr %gep, align 2, !tbaa !22
  store <8 x i16> %wide.load332, ptr %97, align 2, !tbaa !22
  %index.next = add nuw i64 %index, 16
  %98 = icmp eq i64 %index.next, %n.vec
  br i1 %98, label %middle.block, label %vector.body, !llvm.loop !24

middle.block:                                     ; preds = %vector.body
  br i1 %cmp.n, label %._crit_edge.us.us.us.us.us.us, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %.preheader190.us.us.us.us.us.us
  %.0171192.us.us.us.us.us.us.ph = phi i64 [ 0, %.preheader190.us.us.us.us.us.us ], [ %n.vec, %middle.block ]
  br i1 %lcmp.mod.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %.0171192.us.us.us.us.us.us.prol = phi i64 [ %103, %scalar.ph.prol ], [ %.0171192.us.us.us.us.us.us.ph, %scalar.ph.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %99 = getelementptr i16, ptr %94, i64 %.0171192.us.us.us.us.us.us.prol
  %100 = load i16, ptr %99, align 2, !tbaa !22
  %101 = add nuw i64 %.0171192.us.us.us.us.us.us.prol, %93
  %102 = mul i64 %101, %27
  %gep.us.us.us.us.us.us.prol = getelementptr i16, ptr %gep.us199.us.us.us.us, i64 %102
  store i16 %100, ptr %gep.us.us.us.us.us.us.prol, align 2, !tbaa !22
  %103 = add nuw nsw i64 %.0171192.us.us.us.us.us.us.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol, !llvm.loop !28

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.0171192.us.us.us.us.us.us.unr = phi i64 [ %.0171192.us.us.us.us.us.us.ph, %scalar.ph.preheader ], [ %103, %scalar.ph.prol ]
  %104 = sub nsw i64 %.0171192.us.us.us.us.us.us.ph, %21
  %105 = icmp ugt i64 %104, -4
  br i1 %105, label %._crit_edge.us.us.us.us.us.us, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %.0171192.us.us.us.us.us.us = phi i64 [ %125, %scalar.ph ], [ %.0171192.us.us.us.us.us.us.unr, %scalar.ph.prol.loopexit ]
  %106 = getelementptr i16, ptr %94, i64 %.0171192.us.us.us.us.us.us
  %107 = load i16, ptr %106, align 2, !tbaa !22
  %108 = add nuw i64 %.0171192.us.us.us.us.us.us, %93
  %109 = mul i64 %108, %27
  %gep.us.us.us.us.us.us = getelementptr i16, ptr %gep.us199.us.us.us.us, i64 %109
  store i16 %107, ptr %gep.us.us.us.us.us.us, align 2, !tbaa !22
  %110 = add nuw nsw i64 %.0171192.us.us.us.us.us.us, 1
  %111 = getelementptr i16, ptr %94, i64 %110
  %112 = load i16, ptr %111, align 2, !tbaa !22
  %113 = add nuw i64 %110, %93
  %114 = mul i64 %113, %27
  %gep.us.us.us.us.us.us.1 = getelementptr i16, ptr %gep.us199.us.us.us.us, i64 %114
  store i16 %112, ptr %gep.us.us.us.us.us.us.1, align 2, !tbaa !22
  %115 = add nuw nsw i64 %.0171192.us.us.us.us.us.us, 2
  %116 = getelementptr i16, ptr %94, i64 %115
  %117 = load i16, ptr %116, align 2, !tbaa !22
  %118 = add nuw i64 %115, %93
  %119 = mul i64 %118, %27
  %gep.us.us.us.us.us.us.2 = getelementptr i16, ptr %gep.us199.us.us.us.us, i64 %119
  store i16 %117, ptr %gep.us.us.us.us.us.us.2, align 2, !tbaa !22
  %120 = add nuw nsw i64 %.0171192.us.us.us.us.us.us, 3
  %121 = getelementptr i16, ptr %94, i64 %120
  %122 = load i16, ptr %121, align 2, !tbaa !22
  %123 = add nuw i64 %120, %93
  %124 = mul i64 %123, %27
  %gep.us.us.us.us.us.us.3 = getelementptr i16, ptr %gep.us199.us.us.us.us, i64 %124
  store i16 %122, ptr %gep.us.us.us.us.us.us.3, align 2, !tbaa !22
  %125 = add nuw nsw i64 %.0171192.us.us.us.us.us.us, 4
  %exitcond.not.3 = icmp eq i64 %125, %21
  br i1 %exitcond.not.3, label %._crit_edge.us.us.us.us.us.us, label %scalar.ph, !llvm.loop !30

._crit_edge.us.us.us.us.us.us:                    ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %126 = add nuw nsw i64 %.0170193.us.us.us.us.us.us, 1
  %exitcond271.not = icmp eq i64 %126, %23
  br i1 %exitcond271.not, label %._crit_edge194.split.us.us.us.us.us.us, label %.preheader190.us.us.us.us.us.us, !llvm.loop !31

._crit_edge194.split.us.us.us.us.us.us:           ; preds = %._crit_edge.us.us.us.us.us.us
  %127 = add nuw nsw i64 %.0168196.us.us.us.us.us, 1
  %exitcond272.not = icmp eq i64 %127, %25
  br i1 %exitcond272.not, label %._crit_edge.split.us.split.us.us.us.us, label %.preheader190.lr.ph.us.us.us.us.us, !llvm.loop !32

._crit_edge.split.us.split.us.us.us.us:           ; preds = %._crit_edge194.split.us.us.us.us.us.us
  %128 = add nuw nsw i64 %.0165203.us.us.us, 1
  %exitcond273.not = icmp eq i64 %128, %27
  br i1 %exitcond273.not, label %._crit_edge204, label %.preheader191.us.us.us, !llvm.loop !33

._crit_edge204:                                   ; preds = %._crit_edge.split.us.split.us.us.us.us, %.preheader191.lr.ph.split.us, %65
  %sext = shl i64 %55, 32
  %129 = ashr exact i64 %sext, 31
  %130 = getelementptr inbounds i8, ptr %70, i64 %129
  %131 = icmp sgt i64 %39, 0
  br i1 %131, label %.preheader189.lr.ph, label %._crit_edge

.preheader189.lr.ph:                              ; preds = %._crit_edge204
  %132 = icmp sgt i64 %37, 0
  %133 = getelementptr inbounds i8, ptr %7, i64 248
  %134 = mul i64 %39, %35
  %135 = icmp sgt i64 %35, 0
  %or.cond = select i1 %132, i1 %135, i1 false
  br i1 %or.cond, label %.preheader189.us.us, label %._crit_edge

.preheader189.us.us:                              ; preds = %.preheader189.lr.ph, %._crit_edge217.split.us.us.us
  %indvars.iv283 = phi i64 [ %indvars.iv.next284, %._crit_edge217.split.us.us.us ], [ 0, %.preheader189.lr.ph ]
  %invariant.gep213.us.us = getelementptr i16, ptr %130, i64 %indvars.iv283
  %136 = mul i64 %indvars.iv283, %43
  br label %.lr.ph.us.us.us

.lr.ph.us.us.us:                                  ; preds = %._crit_edge.us.us.us, %.preheader189.us.us
  %indvars.iv279 = phi i64 [ %indvars.iv.next280, %._crit_edge.us.us.us ], [ 0, %.preheader189.us.us ]
  %137 = load ptr, ptr %133, align 8, !tbaa !21
  %138 = getelementptr inbounds i8, ptr %137, i64 %136
  %139 = mul i64 %indvars.iv279, %41
  %140 = getelementptr inbounds i8, ptr %138, i64 %139
  %141 = mul i64 %134, %indvars.iv279
  %gep214.us.us.us = getelementptr i16, ptr %invariant.gep213.us.us, i64 %141
  br label %142

142:                                              ; preds = %142, %.lr.ph.us.us.us
  %indvars.iv = phi i64 [ %indvars.iv.next, %142 ], [ 0, %.lr.ph.us.us.us ]
  %143 = getelementptr inbounds float, ptr %140, i64 %indvars.iv
  %144 = load float, ptr %143, align 4, !tbaa !34
  %145 = tail call noundef zeroext i16 @_ZL25ggml_compute_fp32_to_fp16f(float noundef %144)
  %146 = mul nuw nsw i64 %indvars.iv, %39
  %gep.us.us.us = getelementptr i16, ptr %gep214.us.us.us, i64 %146
  store i16 %145, ptr %gep.us.us.us, align 2, !tbaa !22
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond278.not = icmp eq i64 %indvars.iv.next, %35
  br i1 %exitcond278.not, label %._crit_edge.us.us.us, label %142, !llvm.loop !36

._crit_edge.us.us.us:                             ; preds = %142
  %indvars.iv.next280 = add nuw nsw i64 %indvars.iv279, 1
  %exitcond282.not = icmp eq i64 %indvars.iv.next280, %37
  br i1 %exitcond282.not, label %._crit_edge217.split.us.us.us, label %.lr.ph.us.us.us, !llvm.loop !37

._crit_edge217.split.us.us.us:                    ; preds = %._crit_edge.us.us.us
  %indvars.iv.next284 = add nuw nsw i64 %indvars.iv283, 1
  %exitcond286.not = icmp eq i64 %indvars.iv.next284, %39
  br i1 %exitcond286.not, label %._crit_edge, label %.preheader189.us.us, !llvm.loop !38

._crit_edge:                                      ; preds = %._crit_edge217.split.us.us.us, %.preheader189.lr.ph, %._crit_edge204
  %147 = getelementptr inbounds i8, ptr %1, i64 248
  %148 = load ptr, ptr %147, align 8, !tbaa !21
  %149 = tail call i64 @ggml_nbytes(ptr noundef nonnull %1)
  tail call void @llvm.memset.p0.i64(ptr align 1 %148, i8 0, i64 %149, i1 false)
  br label %150

150:                                              ; preds = %._crit_edge325, %._crit_edge
  %.pre-phi = phi i64 [ %.pre326, %._crit_edge325 ], [ %129, %._crit_edge ]
  %151 = getelementptr inbounds i8, ptr %0, i64 24
  %152 = load ptr, ptr %151, align 8, !tbaa !39
  tail call void @ggml_barrier(ptr noundef %152)
  %153 = tail call noundef i32 @_ZL22ggml_get_op_params_i32PK11ggml_tensorj(ptr noundef nonnull %1, i32 noundef 0)
  %154 = trunc i64 %47 to i32
  %155 = add i32 %154, -1
  %156 = add i32 %155, %52
  %157 = sdiv i32 %156, %52
  %158 = mul nsw i32 %157, %50
  %159 = add nsw i32 %158, %157
  %160 = tail call i32 @llvm.smin.i32(i32 %159, i32 %154)
  %161 = getelementptr inbounds i8, ptr %0, i64 16
  %162 = load ptr, ptr %161, align 8, !tbaa !19
  %163 = getelementptr inbounds i8, ptr %162, i64 %.pre-phi
  %164 = icmp slt i32 %158, %160
  br i1 %164, label %.lr.ph, label %._crit_edge249

.lr.ph:                                           ; preds = %150
  %factor.op.mul246 = mul i64 %27, %23
  %165 = getelementptr inbounds i8, ptr %1, i64 248
  %.reass = mul i64 %factor.op.mul246, %21
  %166 = icmp sgt i64 %37, 0
  %factor.op.mul226 = shl i64 %39, 32
  %167 = icmp slt i64 %23, 1
  %168 = icmp slt i64 %21, 1
  %169 = trunc i64 %27 to i32
  %170 = icmp sgt i64 %35, 0
  %or.cond328 = select i1 %166, i1 %170, i1 false
  br i1 %or.cond328, label %.preheader188.lr.ph.us.us.preheader, label %._crit_edge249

.preheader188.lr.ph.us.us.preheader:              ; preds = %.lr.ph
  %171 = sext i32 %153 to i64
  %172 = sext i32 %158 to i64
  %brmerge331 = select i1 %167, i1 true, i1 %168
  br label %.preheader188.lr.ph.us.us

.preheader188.lr.ph.us.us:                        ; preds = %.preheader188.lr.ph.us.us.preheader, %._crit_edge238.split.us.us.us
  %indvars.iv321 = phi i64 [ %172, %.preheader188.lr.ph.us.us.preheader ], [ %indvars.iv.next322, %._crit_edge238.split.us.us.us ]
  %173 = load ptr, ptr %165, align 8, !tbaa !21
  %174 = mul i64 %49, %indvars.iv321
  %175 = getelementptr inbounds i8, ptr %173, i64 %174
  %176 = mul i64 %.reass, %indvars.iv321
  %177 = getelementptr inbounds i16, ptr %162, i64 %176
  br i1 %brmerge331, label %._crit_edge238.split.us.us.us, label %.preheader188.us.us.us.us.us

._crit_edge238.split.us.us.us:                    ; preds = %._crit_edge231.split.us.split.us.us.us.us.us.us, %.preheader188.lr.ph.us.us
  %indvars.iv.next322 = add nsw i64 %indvars.iv321, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next322 to i32
  %exitcond324.not = icmp eq i32 %160, %lftr.wideiv
  br i1 %exitcond324.not, label %._crit_edge249, label %.preheader188.lr.ph.us.us, !llvm.loop !40

.preheader188.us.us.us.us.us:                     ; preds = %.preheader188.lr.ph.us.us, %._crit_edge231.split.us.split.us.us.us.us.us.us
  %indvars.iv317 = phi i64 [ %indvars.iv.next318, %._crit_edge231.split.us.split.us.us.us.us.us.us ], [ 0, %.preheader188.lr.ph.us.us ]
  %178 = mul nuw nsw i64 %indvars.iv317, %35
  %179 = mul nsw i64 %indvars.iv317, %171
  br label %.preheader.lr.ph.us.us.us.us.us.us.us

.preheader.lr.ph.us.us.us.us.us.us.us:            ; preds = %._crit_edge229.split.us.us.us.us.us.us.us.us, %.preheader188.us.us.us.us.us
  %indvars.iv313 = phi i64 [ %indvars.iv.next314, %._crit_edge229.split.us.us.us.us.us.us.us.us ], [ 0, %.preheader188.us.us.us.us.us ]
  %180 = add nuw i64 %indvars.iv313, %178
  %factor.op.mul.reass227.us.us.us.us.us.us.us = mul i64 %factor.op.mul226, %180
  %181 = ashr exact i64 %factor.op.mul.reass227.us.us.us.us.us.us.us, 31
  %182 = getelementptr inbounds i8, ptr %163, i64 %181
  %183 = mul nsw i64 %indvars.iv313, %171
  %invariant.gep.us.us.us.us.us.us.us = getelementptr float, ptr %175, i64 %183
  br label %.preheader.us.us.us.us.us.us.us.us

.preheader.us.us.us.us.us.us.us.us:               ; preds = %._crit_edge225.us.us.us.us.us.us.us.us, %.preheader.lr.ph.us.us.us.us.us.us.us
  %indvars.iv309 = phi i64 [ %indvars.iv.next310, %._crit_edge225.us.us.us.us.us.us.us.us ], [ 0, %.preheader.lr.ph.us.us.us.us.us.us.us ]
  %factor.op.mul222.reass.us.us.us.us.us.us.us.us = mul i64 %53, %indvars.iv309
  %184 = getelementptr inbounds i16, ptr %177, i64 %factor.op.mul222.reass.us.us.us.us.us.us.us.us
  %185 = add nsw i64 %indvars.iv309, %179
  %186 = mul nsw i64 %45, %185
  %gep.us.us.us236.us.us.us.us.us = getelementptr float, ptr %invariant.gep.us.us.us.us.us.us.us, i64 %186
  br label %187

187:                                              ; preds = %187, %.preheader.us.us.us.us.us.us.us.us
  %indvars.iv305 = phi i64 [ %indvars.iv.next306, %187 ], [ 0, %.preheader.us.us.us.us.us.us.us.us ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #9
  store float 0.000000e+00, ptr %3, align 4, !tbaa !34
  %188 = mul nsw i64 %indvars.iv305, %27
  %189 = getelementptr inbounds i16, ptr %184, i64 %188
  call void @ggml_vec_dot_f16(i32 noundef %169, ptr noundef nonnull %3, i64 noundef 0, ptr noundef %182, i64 noundef 0, ptr noundef %189, i64 noundef 0, i32 noundef 1)
  %190 = load float, ptr %3, align 4, !tbaa !34
  %191 = getelementptr float, ptr %gep.us.us.us236.us.us.us.us.us, i64 %indvars.iv305
  %192 = load float, ptr %191, align 4, !tbaa !34
  %193 = fadd float %190, %192
  store float %193, ptr %191, align 4, !tbaa !34
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #9
  %indvars.iv.next306 = add nuw nsw i64 %indvars.iv305, 1
  %exitcond308.not = icmp eq i64 %indvars.iv.next306, %21
  br i1 %exitcond308.not, label %._crit_edge225.us.us.us.us.us.us.us.us, label %187, !llvm.loop !41

._crit_edge225.us.us.us.us.us.us.us.us:           ; preds = %187
  %indvars.iv.next310 = add nuw nsw i64 %indvars.iv309, 1
  %exitcond312.not = icmp eq i64 %indvars.iv.next310, %23
  br i1 %exitcond312.not, label %._crit_edge229.split.us.us.us.us.us.us.us.us, label %.preheader.us.us.us.us.us.us.us.us, !llvm.loop !42

._crit_edge229.split.us.us.us.us.us.us.us.us:     ; preds = %._crit_edge225.us.us.us.us.us.us.us.us
  %indvars.iv.next314 = add nuw nsw i64 %indvars.iv313, 1
  %exitcond316.not = icmp eq i64 %indvars.iv.next314, %35
  br i1 %exitcond316.not, label %._crit_edge231.split.us.split.us.us.us.us.us.us, label %.preheader.lr.ph.us.us.us.us.us.us.us, !llvm.loop !43

._crit_edge231.split.us.split.us.us.us.us.us.us:  ; preds = %._crit_edge229.split.us.us.us.us.us.us.us.us
  %indvars.iv.next318 = add nuw nsw i64 %indvars.iv317, 1
  %exitcond320.not = icmp eq i64 %indvars.iv.next318, %37
  br i1 %exitcond320.not, label %._crit_edge238.split.us.us.us, label %.preheader188.us.us.us.us.us, !llvm.loop !44

._crit_edge249:                                   ; preds = %._crit_edge238.split.us.us.us, %.lr.ph, %150
  ret void
}

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i16 @_ZL25ggml_compute_fp32_to_fp16f(float noundef) local_unnamed_addr #4

declare i64 @ggml_nbytes(ptr noundef) local_unnamed_addr #5

declare void @ggml_barrier(ptr noundef) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i32 @_ZL22ggml_get_op_params_i32PK11ggml_tensorj(ptr noundef, i32 noundef) local_unnamed_addr #6

declare void @ggml_vec_dot_f16(i32 noundef, ptr noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef, i64 noundef, i32 noundef) local_unnamed_addr #5

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smin.i32(i32, i32) #7

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { noreturn "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 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 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #4 = { inlinehint mustprogress 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 = { "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 #6 = { mustprogress 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 #7 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #8 = { noreturn }
attributes #9 = { 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++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"_ZTS11ggml_tensor", !11, i64 0, !6, i64 8, !7, i64 16, !7, i64 48, !12, i64 80, !7, i64 84, !13, i64 148, !7, i64 152, !6, i64 232, !14, i64 240, !6, i64 248, !7, i64 256, !6, i64 320, !7, i64 328}
!11 = !{!"_ZTS9ggml_type", !7, i64 0}
!12 = !{!"_ZTS7ggml_op", !7, i64 0}
!13 = !{!"int", !7, i64 0}
!14 = !{!"long", !7, i64 0}
!15 = !{!14, !14, i64 0}
!16 = !{!17, !13, i64 0}
!17 = !{!"_ZTS19ggml_compute_params", !13, i64 0, !13, i64 4, !14, i64 8, !6, i64 16, !6, i64 24}
!18 = !{!17, !13, i64 4}
!19 = !{!17, !6, i64 16}
!20 = !{!17, !14, i64 8}
!21 = !{!10, !6, i64 248}
!22 = !{!23, !23, i64 0}
!23 = !{!"short", !7, i64 0}
!24 = distinct !{!24, !25, !26, !27}
!25 = !{!"llvm.loop.mustprogress"}
!26 = !{!"llvm.loop.isvectorized", i32 1}
!27 = !{!"llvm.loop.unroll.runtime.disable"}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.unroll.disable"}
!30 = distinct !{!30, !25, !26}
!31 = distinct !{!31, !25}
!32 = distinct !{!32, !25}
!33 = distinct !{!33, !25}
!34 = !{!35, !35, i64 0}
!35 = !{!"float", !7, i64 0}
!36 = distinct !{!36, !25}
!37 = distinct !{!37, !25}
!38 = distinct !{!38, !25}
!39 = !{!17, !6, i64 24}
!40 = distinct !{!40, !25}
!41 = distinct !{!41, !25}
!42 = distinct !{!42, !25}
!43 = distinct !{!43, !25}
!44 = distinct !{!44, !25}


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