; LLVM IR from ggml-org/ggml :: tests (test-timestep_embedding)

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

%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::initializer_list" = type { ptr, i64 }
%"class.std::allocator" = type { i8 }
%struct.ggml_init_params = type { i64, ptr, i8 }
%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] }

@.str = external hidden unnamed_addr constant [81 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [39 x i8], align 1

; Function Attrs: noreturn
declare void @ggml_abort(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: mustprogress nounwind uwtable
declare dso_local void @_ZNSaIfEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z22new_timestep_embeddingP12ggml_contextP11ggml_tensorii(ptr noundef, ptr noundef, i32 noundef, i32 noundef) #3

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main(i32 noundef %0, ptr noundef %1) #4 personality ptr @__gxx_personality_v0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca %"class.std::vector", align 8
  %7 = alloca %"class.std::initializer_list", align 8
  %8 = alloca [2 x float], align 4
  %9 = alloca %"class.std::allocator", align 1
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca %"class.std::vector", align 8
  %15 = alloca %struct.ggml_init_params, align 8
  %16 = alloca ptr, align 8
  %17 = alloca %struct.ggml_init_params, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca i32, align 4
  %22 = alloca float, align 4
  %23 = alloca i8, align 1
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca i32, align 4
  %27 = alloca %struct.ggml_init_params, align 8
  %28 = alloca ptr, align 8
  %29 = alloca %struct.ggml_init_params, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca i32, align 4
  %35 = alloca ptr, align 8
  %36 = alloca i32, align 4
  store i32 0, ptr %3, align 4
  store i32 %0, ptr %4, align 4, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %6) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #10
  store float 1.200000e+01, ptr %8, align 4, !tbaa !11
  %37 = getelementptr inbounds float, ptr %8, i64 1
  store float 2.400000e+01, ptr %37, align 4, !tbaa !11
  %38 = getelementptr inbounds %"class.std::initializer_list", ptr %7, i32 0, i32 0
  store ptr %8, ptr %38, align 8, !tbaa !13
  %39 = getelementptr inbounds %"class.std::initializer_list", ptr %7, i32 0, i32 1
  store i64 2, ptr %39, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 1, ptr %9) #10
  call void @_ZNSaIfEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #10
  %40 = getelementptr inbounds { ptr, i64 }, ptr %7, i32 0, i32 0
  %41 = load ptr, ptr %40, align 8
  %42 = getelementptr inbounds { ptr, i64 }, ptr %7, i32 0, i32 1
  %43 = load i64, ptr %42, align 8
  invoke void @_ZNSt6vectorIfSaIfEEC2ESt16initializer_listIfERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr %41, i64 %43, ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %44 unwind label %82

44:                                               ; preds = %2
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #10
  store i32 15, ptr %12, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #10
  store i32 10000, ptr %13, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %14) #10
  call void @_ZNSt6vectorIfSaIfEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %15) #10
  %45 = getelementptr inbounds %struct.ggml_init_params, ptr %15, i32 0, i32 0
  store i64 16777216, ptr %45, align 8, !tbaa !17
  %46 = getelementptr inbounds %struct.ggml_init_params, ptr %15, i32 0, i32 1
  store ptr null, ptr %46, align 8, !tbaa !20
  %47 = getelementptr inbounds %struct.ggml_init_params, ptr %15, i32 0, i32 2
  store i8 0, ptr %47, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %17, ptr align 8 %15, i64 24, i1 false), !tbaa.struct !22
  %48 = invoke ptr @ggml_init(ptr noundef byval(%struct.ggml_init_params) align 8 %17)
          to label %49 unwind label %86

49:                                               ; preds = %44
  store ptr %48, ptr %16, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #10
  %50 = load ptr, ptr %16, align 8, !tbaa !9
  %51 = call noundef i64 @_ZNKSt6vectorIfSaIfEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #10
  %52 = invoke ptr @ggml_new_tensor_1d(ptr noundef %50, i32 noundef 0, i64 noundef %51)
          to label %53 unwind label %90

53:                                               ; preds = %49
  store ptr %52, ptr %18, align 8, !tbaa !9
  %54 = load ptr, ptr %18, align 8, !tbaa !9
  %55 = getelementptr inbounds %struct.ggml_tensor, ptr %54, i32 0, i32 10
  %56 = load ptr, ptr %55, align 8, !tbaa !25
  %57 = call noundef ptr @_ZNSt6vectorIfSaIfEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #10
  %58 = load ptr, ptr %18, align 8, !tbaa !9
  %59 = invoke i64 @ggml_nbytes(ptr noundef %58)
          to label %60 unwind label %90

60:                                               ; preds = %53
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %56, ptr align 4 %57, i64 %59, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #10
  %61 = load ptr, ptr %16, align 8, !tbaa !9
  %62 = load ptr, ptr %18, align 8, !tbaa !9
  %63 = load i32, ptr %12, align 4, !tbaa !5
  %64 = load i32, ptr %13, align 4, !tbaa !5
  %65 = invoke noundef ptr @_Z22new_timestep_embeddingP12ggml_contextP11ggml_tensorii(ptr noundef %61, ptr noundef %62, i32 noundef %63, i32 noundef %64)
          to label %66 unwind label %94

66:                                               ; preds = %60
  store ptr %65, ptr %19, align 8, !tbaa !9
  %67 = load ptr, ptr %19, align 8, !tbaa !9
  %68 = invoke i64 @ggml_nelements(ptr noundef %67)
          to label %69 unwind label %94

69:                                               ; preds = %66
  invoke void @_ZNSt6vectorIfSaIfEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %68)
          to label %70 unwind label %94

70:                                               ; preds = %69
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #10
  %71 = load ptr, ptr %19, align 8, !tbaa !9
  %72 = invoke ptr @ggml_get_data_f32(ptr noundef %71)
          to label %73 unwind label %98

73:                                               ; preds = %70
  store ptr %72, ptr %20, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #10
  store i32 0, ptr %21, align 4, !tbaa !5
  br label %74

74:                                               ; preds = %120, %73
  %75 = load i32, ptr %21, align 4, !tbaa !5
  %76 = sext i32 %75 to i64
  %77 = load ptr, ptr %19, align 8, !tbaa !9
  %78 = invoke i64 @ggml_nelements(ptr noundef %77)
          to label %79 unwind label %102

79:                                               ; preds = %74
  %80 = icmp slt i64 %76, %78
  br i1 %80, label %106, label %81

81:                                               ; preds = %79
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #10
  br label %128

82:                                               ; preds = %2
  %83 = landingpad { ptr, i32 }
          cleanup
  %84 = extractvalue { ptr, i32 } %83, 0
  store ptr %84, ptr %10, align 8
  %85 = extractvalue { ptr, i32 } %83, 1
  store i32 %85, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #10
  br label %334

86:                                               ; preds = %44
  %87 = landingpad { ptr, i32 }
          cleanup
  %88 = extractvalue { ptr, i32 } %87, 0
  store ptr %88, ptr %10, align 8
  %89 = extractvalue { ptr, i32 } %87, 1
  store i32 %89, ptr %11, align 4
  br label %148

90:                                               ; preds = %53, %49
  %91 = landingpad { ptr, i32 }
          cleanup
  %92 = extractvalue { ptr, i32 } %91, 0
  store ptr %92, ptr %10, align 8
  %93 = extractvalue { ptr, i32 } %91, 1
  store i32 %93, ptr %11, align 4
  br label %147

94:                                               ; preds = %69, %66, %60
  %95 = landingpad { ptr, i32 }
          cleanup
  %96 = extractvalue { ptr, i32 } %95, 0
  store ptr %96, ptr %10, align 8
  %97 = extractvalue { ptr, i32 } %95, 1
  store i32 %97, ptr %11, align 4
  br label %146

98:                                               ; preds = %128, %70
  %99 = landingpad { ptr, i32 }
          cleanup
  %100 = extractvalue { ptr, i32 } %99, 0
  store ptr %100, ptr %10, align 8
  %101 = extractvalue { ptr, i32 } %99, 1
  store i32 %101, ptr %11, align 4
  br label %145

102:                                              ; preds = %74
  %103 = landingpad { ptr, i32 }
          cleanup
  %104 = extractvalue { ptr, i32 } %103, 0
  store ptr %104, ptr %10, align 8
  %105 = extractvalue { ptr, i32 } %103, 1
  store i32 %105, ptr %11, align 4
  br label %127

106:                                              ; preds = %79
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #10
  %107 = load ptr, ptr %20, align 8, !tbaa !9
  %108 = load i32, ptr %21, align 4, !tbaa !5
  %109 = sext i32 %108 to i64
  %110 = getelementptr inbounds float, ptr %107, i64 %109
  %111 = load float, ptr %110, align 4, !tbaa !11
  store float %111, ptr %22, align 4, !tbaa !11
  %112 = load float, ptr %22, align 4, !tbaa !11
  %113 = load i32, ptr %21, align 4, !tbaa !5
  %114 = sext i32 %113 to i64
  %115 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %114) #10
  store float %112, ptr %115, align 4, !tbaa !11
  %116 = load float, ptr %22, align 4, !tbaa !11
  %117 = fpext float %116 to double
  %118 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.3, double noundef %117)
          to label %119 unwind label %123

119:                                              ; preds = %106
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #10
  br label %120

120:                                              ; preds = %119
  %121 = load i32, ptr %21, align 4, !tbaa !5
  %122 = add nsw i32 %121, 1
  store i32 %122, ptr %21, align 4, !tbaa !5
  br label %74, !llvm.loop !29

123:                                              ; preds = %106
  %124 = landingpad { ptr, i32 }
          cleanup
  %125 = extractvalue { ptr, i32 } %124, 0
  store ptr %125, ptr %10, align 8
  %126 = extractvalue { ptr, i32 } %124, 1
  store i32 %126, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #10
  br label %127

127:                                              ; preds = %123, %102
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #10
  br label %145

128:                                              ; preds = %81
  %129 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.4)
          to label %130 unwind label %98

130:                                              ; preds = %128
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #10
  %131 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.5)
          to label %132 unwind label %149

132:                                              ; preds = %130
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #10
  store i8 1, ptr %23, align 1, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #10
  store ptr null, ptr %24, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #10
  store ptr null, ptr %25, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #10
  store i32 2, ptr %26, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %27) #10
  %133 = getelementptr inbounds %struct.ggml_init_params, ptr %27, i32 0, i32 0
  %134 = invoke i64 @ggml_tensor_overhead()
          to label %135 unwind label %153

135:                                              ; preds = %132
  %136 = mul i64 %134, 2
  %137 = add i64 %136, 2097152
  store i64 %137, ptr %133, align 8, !tbaa !17
  %138 = getelementptr inbounds %struct.ggml_init_params, ptr %27, i32 0, i32 1
  store ptr null, ptr %138, align 8, !tbaa !20
  %139 = getelementptr inbounds %struct.ggml_init_params, ptr %27, i32 0, i32 2
  store i8 1, ptr %139, align 8, !tbaa !21
  %140 = load ptr, ptr %24, align 8, !tbaa !9
  %141 = icmp ne ptr %140, null
  br i1 %141, label %157, label %142

142:                                              ; preds = %135
  %143 = invoke ptr @ggml_backend_cpu_init()
          to label %144 unwind label %153

144:                                              ; preds = %142
  store ptr %143, ptr %24, align 8, !tbaa !9
  br label %157

145:                                              ; preds = %127, %98
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #10
  br label %146

146:                                              ; preds = %145, %94
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #10
  br label %147

147:                                              ; preds = %146, %90
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #10
  br label %148

148:                                              ; preds = %147, %86
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #10
  br label %333

149:                                              ; preds = %130
  %150 = landingpad { ptr, i32 }
          cleanup
  %151 = extractvalue { ptr, i32 } %150, 0
  store ptr %151, ptr %10, align 8
  %152 = extractvalue { ptr, i32 } %150, 1
  store i32 %152, ptr %11, align 4
  br label %333

153:                                              ; preds = %142, %132
  %154 = landingpad { ptr, i32 }
          cleanup
  %155 = extractvalue { ptr, i32 } %154, 0
  store ptr %155, ptr %10, align 8
  %156 = extractvalue { ptr, i32 } %154, 1
  store i32 %156, ptr %11, align 4
  br label %332

157:                                              ; preds = %144, %135
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %29, ptr align 8 %27, i64 24, i1 false), !tbaa.struct !22
  %158 = invoke ptr @ggml_init(ptr noundef byval(%struct.ggml_init_params) align 8 %29)
          to label %159 unwind label %179

159:                                              ; preds = %157
  store ptr %158, ptr %28, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #10
  %160 = load ptr, ptr %28, align 8, !tbaa !9
  %161 = call noundef i64 @_ZNKSt6vectorIfSaIfEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #10
  %162 = invoke ptr @ggml_new_tensor_1d(ptr noundef %160, i32 noundef 0, i64 noundef %161)
          to label %163 unwind label %183

163:                                              ; preds = %159
  store ptr %162, ptr %30, align 8, !tbaa !9
  %164 = load ptr, ptr %28, align 8, !tbaa !9
  %165 = load ptr, ptr %24, align 8, !tbaa !9
  %166 = invoke ptr @ggml_backend_alloc_ctx_tensors(ptr noundef %164, ptr noundef %165)
          to label %167 unwind label %183

167:                                              ; preds = %163
  store ptr %166, ptr %25, align 8, !tbaa !9
  %168 = load ptr, ptr %24, align 8, !tbaa !9
  %169 = invoke zeroext i1 @ggml_backend_is_cpu(ptr noundef %168)
          to label %170 unwind label %183

170:                                              ; preds = %167
  br i1 %169, label %171, label %187

171:                                              ; preds = %170
  %172 = load ptr, ptr %30, align 8, !tbaa !9
  %173 = getelementptr inbounds %struct.ggml_tensor, ptr %172, i32 0, i32 10
  %174 = load ptr, ptr %173, align 8, !tbaa !25
  %175 = call noundef ptr @_ZNSt6vectorIfSaIfEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #10
  %176 = load ptr, ptr %30, align 8, !tbaa !9
  %177 = invoke i64 @ggml_nbytes(ptr noundef %176)
          to label %178 unwind label %183

178:                                              ; preds = %171
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %174, ptr align 4 %175, i64 %177, i1 false)
  br label %194

179:                                              ; preds = %157
  %180 = landingpad { ptr, i32 }
          cleanup
  %181 = extractvalue { ptr, i32 } %180, 0
  store ptr %181, ptr %10, align 8
  %182 = extractvalue { ptr, i32 } %180, 1
  store i32 %182, ptr %11, align 4
  br label %331

183:                                              ; preds = %192, %187, %171, %167, %163, %159
  %184 = landingpad { ptr, i32 }
          cleanup
  %185 = extractvalue { ptr, i32 } %184, 0
  store ptr %185, ptr %10, align 8
  %186 = extractvalue { ptr, i32 } %184, 1
  store i32 %186, ptr %11, align 4
  br label %330

187:                                              ; preds = %170
  %188 = load ptr, ptr %30, align 8, !tbaa !9
  %189 = call noundef ptr @_ZNSt6vectorIfSaIfEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #10
  %190 = load ptr, ptr %30, align 8, !tbaa !9
  %191 = invoke i64 @ggml_nbytes(ptr noundef %190)
          to label %192 unwind label %183

192:                                              ; preds = %187
  invoke void @ggml_backend_tensor_set(ptr noundef %188, ptr noundef %189, i64 noundef 0, i64 noundef %191)
          to label %193 unwind label %183

193:                                              ; preds = %192
  br label %194

194:                                              ; preds = %193, %178
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #10
  %195 = load ptr, ptr %28, align 8, !tbaa !9
  %196 = load ptr, ptr %30, align 8, !tbaa !9
  %197 = load i32, ptr %12, align 4, !tbaa !5
  %198 = load i32, ptr %13, align 4, !tbaa !5
  %199 = invoke ptr @ggml_timestep_embedding(ptr noundef %195, ptr noundef %196, i32 noundef %197, i32 noundef %198)
          to label %200 unwind label %223

200:                                              ; preds = %194
  store ptr %199, ptr %31, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #10
  %201 = load ptr, ptr %24, align 8, !tbaa !9
  %202 = invoke ptr @ggml_backend_get_default_buffer_type(ptr noundef %201)
          to label %203 unwind label %227

203:                                              ; preds = %200
  %204 = invoke ptr @ggml_gallocr_new(ptr noundef %202)
          to label %205 unwind label %227

205:                                              ; preds = %203
  store ptr %204, ptr %32, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #10
  %206 = load ptr, ptr %28, align 8, !tbaa !9
  %207 = invoke ptr @ggml_new_graph(ptr noundef %206)
          to label %208 unwind label %231

208:                                              ; preds = %205
  store ptr %207, ptr %33, align 8, !tbaa !9
  %209 = load ptr, ptr %33, align 8, !tbaa !9
  %210 = load ptr, ptr %31, align 8, !tbaa !9
  invoke void @ggml_build_forward_expand(ptr noundef %209, ptr noundef %210)
          to label %211 unwind label %231

211:                                              ; preds = %208
  %212 = load ptr, ptr %32, align 8, !tbaa !9
  %213 = load ptr, ptr %33, align 8, !tbaa !9
  %214 = invoke zeroext i1 @ggml_gallocr_alloc_graph(ptr noundef %212, ptr noundef %213)
          to label %215 unwind label %231

215:                                              ; preds = %211
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #10
  store i32 4, ptr %34, align 4, !tbaa !5
  %216 = load ptr, ptr %24, align 8, !tbaa !9
  %217 = invoke zeroext i1 @ggml_backend_is_cpu(ptr noundef %216)
          to label %218 unwind label %235

218:                                              ; preds = %215
  br i1 %217, label %219, label %239

219:                                              ; preds = %218
  %220 = load ptr, ptr %24, align 8, !tbaa !9
  %221 = load i32, ptr %34, align 4, !tbaa !5
  invoke void @ggml_backend_cpu_set_n_threads(ptr noundef %220, i32 noundef %221)
          to label %222 unwind label %235

222:                                              ; preds = %219
  br label %239

223:                                              ; preds = %194
  %224 = landingpad { ptr, i32 }
          cleanup
  %225 = extractvalue { ptr, i32 } %224, 0
  store ptr %225, ptr %10, align 8
  %226 = extractvalue { ptr, i32 } %224, 1
  store i32 %226, ptr %11, align 4
  br label %329

227:                                              ; preds = %203, %200
  %228 = landingpad { ptr, i32 }
          cleanup
  %229 = extractvalue { ptr, i32 } %228, 0
  store ptr %229, ptr %10, align 8
  %230 = extractvalue { ptr, i32 } %228, 1
  store i32 %230, ptr %11, align 4
  br label %328

231:                                              ; preds = %211, %208, %205
  %232 = landingpad { ptr, i32 }
          cleanup
  %233 = extractvalue { ptr, i32 } %232, 0
  store ptr %233, ptr %10, align 8
  %234 = extractvalue { ptr, i32 } %232, 1
  store i32 %234, ptr %11, align 4
  br label %327

235:                                              ; preds = %239, %219, %215
  %236 = landingpad { ptr, i32 }
          cleanup
  %237 = extractvalue { ptr, i32 } %236, 0
  store ptr %237, ptr %10, align 8
  %238 = extractvalue { ptr, i32 } %236, 1
  store i32 %238, ptr %11, align 4
  br label %326

239:                                              ; preds = %222, %218
  %240 = load ptr, ptr %24, align 8, !tbaa !9
  %241 = load ptr, ptr %33, align 8, !tbaa !9
  %242 = invoke i32 @ggml_backend_graph_compute(ptr noundef %240, ptr noundef %241)
          to label %243 unwind label %235

243:                                              ; preds = %239
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #10
  %244 = load ptr, ptr %31, align 8, !tbaa !9
  %245 = invoke i64 @ggml_nelements(ptr noundef %244)
          to label %246 unwind label %266

246:                                              ; preds = %243
  %247 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %245, i64 4)
  %248 = extractvalue { i64, i1 } %247, 1
  %249 = extractvalue { i64, i1 } %247, 0
  %250 = select i1 %248, i64 -1, i64 %249
  %251 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %250) #11
          to label %252 unwind label %266

252:                                              ; preds = %246
  store ptr %251, ptr %35, align 8, !tbaa !9
  %253 = load ptr, ptr %31, align 8, !tbaa !9
  %254 = load ptr, ptr %35, align 8, !tbaa !9
  %255 = load ptr, ptr %31, align 8, !tbaa !9
  %256 = invoke i64 @ggml_nbytes(ptr noundef %255)
          to label %257 unwind label %266

257:                                              ; preds = %252
  invoke void @ggml_backend_tensor_get(ptr noundef %253, ptr noundef %254, i64 noundef 0, i64 noundef %256)
          to label %258 unwind label %266

258:                                              ; preds = %257
  %259 = load ptr, ptr %31, align 8, !tbaa !9
  %260 = invoke i64 @ggml_nelements(ptr noundef %259)
          to label %261 unwind label %266

261:                                              ; preds = %258
  %262 = call noundef i64 @_ZNKSt6vectorIfSaIfEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #10
  %263 = icmp eq i64 %260, %262
  br i1 %263, label %270, label %264

264:                                              ; preds = %261
  invoke void (ptr, i32, ptr, ...) @ggml_abort(ptr noundef @.str, i32 noundef 167, ptr noundef @.str.1, ptr noundef @.str.6) #12
          to label %265 unwind label %266

265:                                              ; preds = %264
  unreachable

266:                                              ; preds = %321, %319, %317, %315, %309, %264, %258, %257, %252, %246, %243
  %267 = landingpad { ptr, i32 }
          cleanup
  %268 = extractvalue { ptr, i32 } %267, 0
  store ptr %268, ptr %10, align 8
  %269 = extractvalue { ptr, i32 } %267, 1
  store i32 %269, ptr %11, align 4
  br label %325

270:                                              ; preds = %261
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #10
  store i32 0, ptr %36, align 4, !tbaa !5
  br label %271

271:                                              ; preds = %306, %270
  %272 = load i32, ptr %36, align 4, !tbaa !5
  %273 = sext i32 %272 to i64
  %274 = load ptr, ptr %31, align 8, !tbaa !9
  %275 = invoke i64 @ggml_nelements(ptr noundef %274)
          to label %276 unwind label %279

276:                                              ; preds = %271
  %277 = icmp slt i64 %273, %275
  br i1 %277, label %283, label %278

278:                                              ; preds = %276
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #10
  br label %309

279:                                              ; preds = %303, %291, %283, %271
  %280 = landingpad { ptr, i32 }
          cleanup
  %281 = extractvalue { ptr, i32 } %280, 0
  store ptr %281, ptr %10, align 8
  %282 = extractvalue { ptr, i32 } %280, 1
  store i32 %282, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #10
  br label %325

283:                                              ; preds = %276
  %284 = load ptr, ptr %35, align 8, !tbaa !9
  %285 = load i32, ptr %36, align 4, !tbaa !5
  %286 = sext i32 %285 to i64
  %287 = getelementptr inbounds float, ptr %284, i64 %286
  %288 = load float, ptr %287, align 4, !tbaa !11
  %289 = fpext float %288 to double
  %290 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.3, double noundef %289)
          to label %291 unwind label %279

291:                                              ; preds = %283
  %292 = load ptr, ptr %35, align 8, !tbaa !9
  %293 = load i32, ptr %36, align 4, !tbaa !5
  %294 = sext i32 %293 to i64
  %295 = getelementptr inbounds float, ptr %292, i64 %294
  %296 = load float, ptr %295, align 4, !tbaa !11
  %297 = load i32, ptr %36, align 4, !tbaa !5
  %298 = sext i32 %297 to i64
  %299 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %298) #10
  %300 = load float, ptr %299, align 4, !tbaa !11
  %301 = invoke noundef zeroext i1 @_ZL7equalsfff(float noundef %296, float noundef %300)
          to label %302 unwind label %279

302:                                              ; preds = %291
  br i1 %301, label %305, label %303

303:                                              ; preds = %302
  invoke void (ptr, i32, ptr, ...) @ggml_abort(ptr noundef @.str, i32 noundef 171, ptr noundef @.str.1, ptr noundef @.str.7) #12
          to label %304 unwind label %279

304:                                              ; preds = %303
  unreachable

305:                                              ; preds = %302
  br label %306

306:                                              ; preds = %305
  %307 = load i32, ptr %36, align 4, !tbaa !5
  %308 = add nsw i32 %307, 1
  store i32 %308, ptr %36, align 4, !tbaa !5
  br label %271, !llvm.loop !31

309:                                              ; preds = %278
  %310 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.4)
          to label %311 unwind label %266

311:                                              ; preds = %309
  %312 = load ptr, ptr %35, align 8, !tbaa !9
  %313 = icmp eq ptr %312, null
  br i1 %313, label %315, label %314

314:                                              ; preds = %311
  call void @_ZdaPv(ptr noundef %312) #13
  br label %315

315:                                              ; preds = %314, %311
  %316 = load ptr, ptr %28, align 8, !tbaa !9
  invoke void @ggml_free(ptr noundef %316)
          to label %317 unwind label %266

317:                                              ; preds = %315
  %318 = load ptr, ptr %25, align 8, !tbaa !9
  invoke void @ggml_backend_buffer_free(ptr noundef %318)
          to label %319 unwind label %266

319:                                              ; preds = %317
  %320 = load ptr, ptr %24, align 8, !tbaa !9
  invoke void @ggml_backend_free(ptr noundef %320)
          to label %321 unwind label %266

321:                                              ; preds = %319
  %322 = load ptr, ptr %32, align 8, !tbaa !9
  invoke void @ggml_gallocr_free(ptr noundef %322)
          to label %323 unwind label %266

323:                                              ; preds = %321
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #10
  store i32 0, ptr %3, align 4
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %14) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #10
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %6) #10
  %324 = load i32, ptr %3, align 4
  ret i32 %324

325:                                              ; preds = %279, %266
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #10
  br label %326

326:                                              ; preds = %325, %235
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #10
  br label %327

327:                                              ; preds = %326, %231
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #10
  br label %328

328:                                              ; preds = %327, %227
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #10
  br label %329

329:                                              ; preds = %328, %223
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #10
  br label %330

330:                                              ; preds = %329, %183
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  br label %331

331:                                              ; preds = %330, %179
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #10
  br label %332

332:                                              ; preds = %331, %153
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #10
  br label %333

333:                                              ; preds = %332, %149, %148
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %14) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #10
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #10
  br label %334

334:                                              ; preds = %333, %82
  call void @llvm.lifetime.end.p0(i64 24, ptr %6) #10
  br label %335

335:                                              ; preds = %334
  %336 = load ptr, ptr %10, align 8
  %337 = load i32, ptr %11, align 4
  %338 = insertvalue { ptr, i32 } poison, ptr %336, 0
  %339 = insertvalue { ptr, i32 } %338, i32 %337, 1
  resume { ptr, i32 } %339
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIfSaIfEEC2ESt16initializer_listIfERKS0_(ptr noundef nonnull align 8 dereferenceable(24), ptr, i64, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIfSaIfEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2 align 2

declare ptr @ggml_init(ptr noundef byval(%struct.ggml_init_params) align 8) #5

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #6

declare ptr @ggml_new_tensor_1d(ptr noundef, i32 noundef, i64 noundef) #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIfSaIfEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNSt6vectorIfSaIfEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

declare i64 @ggml_nbytes(ptr noundef) #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIfSaIfEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #3 align 2

declare i64 @ggml_nelements(ptr noundef) #5

declare ptr @ggml_get_data_f32(ptr noundef) #5

declare i32 @printf(ptr noundef, ...) #5

declare i64 @ggml_tensor_overhead() #5

declare ptr @ggml_backend_cpu_init() #5

declare ptr @ggml_backend_alloc_ctx_tensors(ptr noundef, ptr noundef) #5

declare zeroext i1 @ggml_backend_is_cpu(ptr noundef) #5

declare void @ggml_backend_tensor_set(ptr noundef, ptr noundef, i64 noundef, i64 noundef) #5

declare ptr @ggml_timestep_embedding(ptr noundef, ptr noundef, i32 noundef, i32 noundef) #5

declare ptr @ggml_gallocr_new(ptr noundef) #5

declare ptr @ggml_backend_get_default_buffer_type(ptr noundef) #5

declare ptr @ggml_new_graph(ptr noundef) #5

declare void @ggml_build_forward_expand(ptr noundef, ptr noundef) #5

declare zeroext i1 @ggml_gallocr_alloc_graph(ptr noundef, ptr noundef) #5

declare void @ggml_backend_cpu_set_n_threads(ptr noundef, i32 noundef) #5

declare i32 @ggml_backend_graph_compute(ptr noundef, ptr noundef) #5

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare { i64, i1 } @llvm.umul.with.overflow.i64(i64, i64) #7

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znam(i64 noundef) #8

declare void @ggml_backend_tensor_get(ptr noundef, ptr noundef, i64 noundef, i64 noundef) #5

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZL7equalsfff(float noundef, float noundef) #2

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPv(ptr noundef) #9

declare void @ggml_free(ptr noundef) #5

declare void @ggml_backend_buffer_free(ptr noundef) #5

declare void @ggml_backend_free(ptr noundef) #5

declare void @ggml_gallocr_free(ptr noundef) #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

attributes #0 = { 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 #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 #3 = { 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 #4 = { mustprogress norecurse 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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #7 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #8 = { nobuiltin allocsize(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 #9 = { nobuiltin 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 #10 = { nounwind }
attributes #11 = { builtin allocsize(0) }
attributes #12 = { noreturn }
attributes #13 = { builtin 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++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = !{!14, !10, i64 0}
!14 = !{!"_ZTSSt16initializer_listIfE", !10, i64 0, !15, i64 8}
!15 = !{!"long", !7, i64 0}
!16 = !{!14, !15, i64 8}
!17 = !{!18, !15, i64 0}
!18 = !{!"_ZTS16ggml_init_params", !15, i64 0, !10, i64 8, !19, i64 16}
!19 = !{!"bool", !7, i64 0}
!20 = !{!18, !10, i64 8}
!21 = !{!18, !19, i64 16}
!22 = !{i64 0, i64 8, !23, i64 8, i64 8, !9, i64 16, i64 1, !24}
!23 = !{!15, !15, i64 0}
!24 = !{!19, !19, i64 0}
!25 = !{!26, !10, i64 248}
!26 = !{!"_ZTS11ggml_tensor", !27, i64 0, !10, i64 8, !7, i64 16, !7, i64 48, !28, i64 80, !7, i64 84, !6, i64 148, !7, i64 152, !10, i64 232, !15, i64 240, !10, i64 248, !7, i64 256, !10, i64 320, !7, i64 328}
!27 = !{!"_ZTS9ggml_type", !7, i64 0}
!28 = !{!"_ZTS7ggml_op", !7, i64 0}
!29 = distinct !{!29, !30}
!30 = !{!"llvm.loop.mustprogress"}
!31 = distinct !{!31, !30}


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

%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator" = type { i8 }
%struct.ggml_init_params = type { i64, ptr, i8 }

@.str = external hidden unnamed_addr constant [81 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [39 x i8], align 1

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSaIfEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_Z22new_timestep_embeddingP12ggml_contextP11ggml_tensorii(ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main(i32 noundef %0, ptr nocapture noundef readnone %1) local_unnamed_addr #4 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.std::vector", align 8
  %4 = alloca [2 x float], align 8
  %5 = alloca %"class.std::allocator", align 1
  %6 = alloca %"class.std::vector", align 8
  %7 = alloca %struct.ggml_init_params, align 8
  %8 = alloca %struct.ggml_init_params, align 8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #10
  store <2 x float> <float 1.200000e+01, float 2.400000e+01>, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #10
  call void @_ZNSaIfEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #10
  invoke void @_ZNSt6vectorIfSaIfEEC2ESt16initializer_listIfERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr nonnull %4, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %5)
          to label %9 unwind label %33

9:                                                ; preds = %2
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #10
  call void @_ZNSt6vectorIfSaIfEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #10
  store i64 16777216, ptr %7, align 8, !tbaa !9
  %.sroa.555.0..sroa_idx = getelementptr inbounds i8, ptr %7, i64 8
  store ptr null, ptr %.sroa.555.0..sroa_idx, align 8, !tbaa !11
  %.sroa.656.0..sroa_idx = getelementptr inbounds i8, ptr %7, i64 16
  store i8 0, ptr %.sroa.656.0..sroa_idx, align 8, !tbaa !13
  %10 = invoke ptr @ggml_init(ptr noundef nonnull byval(%struct.ggml_init_params) align 8 %7)
          to label %11 unwind label %35

11:                                               ; preds = %9
  %12 = call noundef i64 @_ZNKSt6vectorIfSaIfEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #10
  %13 = invoke ptr @ggml_new_tensor_1d(ptr noundef %10, i32 noundef 0, i64 noundef %12)
          to label %14 unwind label %37

14:                                               ; preds = %11
  %15 = getelementptr inbounds i8, ptr %13, i64 248
  %16 = load ptr, ptr %15, align 8, !tbaa !15
  %17 = call noundef ptr @_ZNSt6vectorIfSaIfEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #10
  %18 = invoke i64 @ggml_nbytes(ptr noundef nonnull %13)
          to label %19 unwind label %37

19:                                               ; preds = %14
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %16, ptr align 4 %17, i64 %18, i1 false)
  %20 = invoke noundef ptr @_Z22new_timestep_embeddingP12ggml_contextP11ggml_tensorii(ptr noundef %10, ptr noundef nonnull %13, i32 noundef 15, i32 noundef 10000)
          to label %21 unwind label %39

21:                                               ; preds = %19
  %22 = invoke i64 @ggml_nelements(ptr noundef %20)
          to label %23 unwind label %39

23:                                               ; preds = %21
  invoke void @_ZNSt6vectorIfSaIfEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %22)
          to label %24 unwind label %39

24:                                               ; preds = %23
  %25 = invoke ptr @ggml_get_data_f32(ptr noundef %20)
          to label %.preheader100 unwind label %41

.preheader100:                                    ; preds = %24, %45
  %indvars.iv = phi i64 [ %indvars.iv.next, %45 ], [ 0, %24 ]
  %26 = invoke i64 @ggml_nelements(ptr noundef %20)
          to label %27 unwind label %43

27:                                               ; preds = %.preheader100
  %28 = icmp sgt i64 %26, %indvars.iv
  br i1 %28, label %45, label %29

29:                                               ; preds = %27
  %30 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.4)
  %31 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.5)
  %32 = invoke i64 @ggml_tensor_overhead()
          to label %51 unwind label %53

33:                                               ; preds = %2
  %34 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #10
  br label %146

35:                                               ; preds = %9
  %36 = landingpad { ptr, i32 }
          cleanup
  br label %145

37:                                               ; preds = %14, %11
  %38 = landingpad { ptr, i32 }
          cleanup
  br label %145

39:                                               ; preds = %23, %21, %19
  %40 = landingpad { ptr, i32 }
          cleanup
  br label %145

41:                                               ; preds = %24
  %42 = landingpad { ptr, i32 }
          cleanup
  br label %145

43:                                               ; preds = %.preheader100
  %44 = landingpad { ptr, i32 }
          cleanup
  br label %145

45:                                               ; preds = %27
  %46 = getelementptr inbounds float, ptr %25, i64 %indvars.iv
  %47 = load float, ptr %46, align 4, !tbaa !5
  %48 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %indvars.iv) #10
  store float %47, ptr %48, align 4, !tbaa !5
  %49 = fpext float %47 to double
  %50 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3, double noundef %49)
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  br label %.preheader100, !llvm.loop !20

51:                                               ; preds = %29
  %52 = invoke ptr @ggml_backend_cpu_init()
          to label %55 unwind label %53

53:                                               ; preds = %51, %29
  %54 = landingpad { ptr, i32 }
          cleanup
  br label %145

55:                                               ; preds = %51
  %56 = shl i64 %32, 1
  %57 = add i64 %56, 2097152
  store i64 %57, ptr %8, align 8, !tbaa !9
  %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %8, i64 8
  store ptr null, ptr %.sroa.5.0..sroa_idx, align 8, !tbaa !11
  %.sroa.6.0..sroa_idx = getelementptr inbounds i8, ptr %8, i64 16
  store i8 1, ptr %.sroa.6.0..sroa_idx, align 8, !tbaa !13
  %58 = invoke ptr @ggml_init(ptr noundef nonnull byval(%struct.ggml_init_params) align 8 %8)
          to label %59 unwind label %73

59:                                               ; preds = %55
  %60 = call noundef i64 @_ZNKSt6vectorIfSaIfEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #10
  %61 = invoke ptr @ggml_new_tensor_1d(ptr noundef %58, i32 noundef 0, i64 noundef %60)
          to label %62 unwind label %75

62:                                               ; preds = %59
  %63 = invoke ptr @ggml_backend_alloc_ctx_tensors(ptr noundef %58, ptr noundef %52)
          to label %64 unwind label %75

64:                                               ; preds = %62
  %65 = invoke zeroext i1 @ggml_backend_is_cpu(ptr noundef %52)
          to label %66 unwind label %75

66:                                               ; preds = %64
  br i1 %65, label %67, label %77

67:                                               ; preds = %66
  %68 = getelementptr inbounds i8, ptr %61, i64 248
  %69 = load ptr, ptr %68, align 8, !tbaa !15
  %70 = call noundef ptr @_ZNSt6vectorIfSaIfEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #10
  %71 = invoke i64 @ggml_nbytes(ptr noundef nonnull %61)
          to label %72 unwind label %75

72:                                               ; preds = %67
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %69, ptr align 4 %70, i64 %71, i1 false)
  br label %81

73:                                               ; preds = %55
  %74 = landingpad { ptr, i32 }
          cleanup
  br label %145

75:                                               ; preds = %80, %77, %67, %64, %62, %59
  %76 = landingpad { ptr, i32 }
          cleanup
  br label %145

77:                                               ; preds = %66
  %78 = call noundef ptr @_ZNSt6vectorIfSaIfEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #10
  %79 = invoke i64 @ggml_nbytes(ptr noundef %61)
          to label %80 unwind label %75

80:                                               ; preds = %77
  invoke void @ggml_backend_tensor_set(ptr noundef %61, ptr noundef %78, i64 noundef 0, i64 noundef %79)
          to label %81 unwind label %75

81:                                               ; preds = %80, %72
  %82 = invoke ptr @ggml_timestep_embedding(ptr noundef %58, ptr noundef %61, i32 noundef 15, i32 noundef 10000)
          to label %83 unwind label %96

83:                                               ; preds = %81
  %84 = invoke ptr @ggml_backend_get_default_buffer_type(ptr noundef %52)
          to label %85 unwind label %98

85:                                               ; preds = %83
  %86 = invoke ptr @ggml_gallocr_new(ptr noundef %84)
          to label %87 unwind label %98

87:                                               ; preds = %85
  %88 = invoke ptr @ggml_new_graph(ptr noundef %58)
          to label %89 unwind label %100

89:                                               ; preds = %87
  invoke void @ggml_build_forward_expand(ptr noundef %88, ptr noundef %82)
          to label %90 unwind label %100

90:                                               ; preds = %89
  %91 = invoke zeroext i1 @ggml_gallocr_alloc_graph(ptr noundef %86, ptr noundef %88)
          to label %92 unwind label %100

92:                                               ; preds = %90
  %93 = invoke zeroext i1 @ggml_backend_is_cpu(ptr noundef %52)
          to label %94 unwind label %102

94:                                               ; preds = %92
  br i1 %93, label %95, label %104

95:                                               ; preds = %94
  invoke void @ggml_backend_cpu_set_n_threads(ptr noundef %52, i32 noundef 4)
          to label %104 unwind label %102

96:                                               ; preds = %81
  %97 = landingpad { ptr, i32 }
          cleanup
  br label %145

98:                                               ; preds = %85, %83
  %99 = landingpad { ptr, i32 }
          cleanup
  br label %145

100:                                              ; preds = %90, %89, %87
  %101 = landingpad { ptr, i32 }
          cleanup
  br label %145

102:                                              ; preds = %104, %95, %92
  %103 = landingpad { ptr, i32 }
          cleanup
  br label %145

104:                                              ; preds = %95, %94
  %105 = invoke i32 @ggml_backend_graph_compute(ptr noundef %52, ptr noundef %88)
          to label %106 unwind label %102

106:                                              ; preds = %104
  %107 = invoke i64 @ggml_nelements(ptr noundef %82)
          to label %108 unwind label %123

108:                                              ; preds = %106
  %109 = icmp ugt i64 %107, 4611686018427387903
  %110 = shl i64 %107, 2
  %111 = select i1 %109, i64 -1, i64 %110
  %112 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %111) #11
          to label %113 unwind label %123

113:                                              ; preds = %108
  %114 = invoke i64 @ggml_nbytes(ptr noundef %82)
          to label %115 unwind label %123

115:                                              ; preds = %113
  invoke void @ggml_backend_tensor_get(ptr noundef %82, ptr noundef nonnull %112, i64 noundef 0, i64 noundef %114)
          to label %116 unwind label %123

116:                                              ; preds = %115
  %117 = invoke i64 @ggml_nelements(ptr noundef %82)
          to label %118 unwind label %123

118:                                              ; preds = %116
  %119 = call noundef i64 @_ZNKSt6vectorIfSaIfEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #10
  %120 = icmp eq i64 %117, %119
  br i1 %120, label %.preheader, label %121

121:                                              ; preds = %118
  invoke void (ptr, i32, ptr, ...) @ggml_abort(ptr noundef nonnull @.str, i32 noundef 167, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.6) #12
          to label %122 unwind label %123

122:                                              ; preds = %121
  unreachable

123:                                              ; preds = %143, %142, %141, %128, %121, %116, %115, %113, %108, %106
  %124 = landingpad { ptr, i32 }
          cleanup
  br label %145

.preheader:                                       ; preds = %118, %130
  %indvars.iv102 = phi i64 [ %indvars.iv.next103, %130 ], [ 0, %118 ]
  %125 = invoke i64 @ggml_nelements(ptr noundef %82)
          to label %126 unwind label %.loopexit

126:                                              ; preds = %.preheader
  %127 = icmp sgt i64 %125, %indvars.iv102
  br i1 %127, label %130, label %128

128:                                              ; preds = %126
  %129 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.4)
  call void @_ZdaPv(ptr noundef nonnull %112) #13
  invoke void @ggml_free(ptr noundef %58)
          to label %141 unwind label %123

.loopexit:                                        ; preds = %.preheader
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %145

.loopexit.split-lp:                               ; preds = %139
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %145

130:                                              ; preds = %126
  %131 = getelementptr inbounds float, ptr %112, i64 %indvars.iv102
  %132 = load float, ptr %131, align 4, !tbaa !5
  %133 = fpext float %132 to double
  %134 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3, double noundef %133)
  %135 = load float, ptr %131, align 4, !tbaa !5
  %136 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %indvars.iv102) #10
  %137 = load float, ptr %136, align 4, !tbaa !5
  %138 = call noundef zeroext i1 @_ZL7equalsfff(float noundef %135, float noundef %137)
  %indvars.iv.next103 = add nuw nsw i64 %indvars.iv102, 1
  br i1 %138, label %.preheader, label %139, !llvm.loop !22

139:                                              ; preds = %130
  invoke void (ptr, i32, ptr, ...) @ggml_abort(ptr noundef nonnull @.str, i32 noundef 171, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.7) #12
          to label %140 unwind label %.loopexit.split-lp

140:                                              ; preds = %139
  unreachable

141:                                              ; preds = %128
  invoke void @ggml_backend_buffer_free(ptr noundef %63)
          to label %142 unwind label %123

142:                                              ; preds = %141
  invoke void @ggml_backend_free(ptr noundef %52)
          to label %143 unwind label %123

143:                                              ; preds = %142
  invoke void @ggml_gallocr_free(ptr noundef %86)
          to label %144 unwind label %123

144:                                              ; preds = %143
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #10
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #10
  ret i32 0

145:                                              ; preds = %53, %75, %98, %102, %123, %100, %96, %73, %.loopexit.split-lp, %.loopexit, %35, %39, %43, %41, %37
  %.pn89.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %36, %35 ], [ %38, %37 ], [ %40, %39 ], [ %44, %43 ], [ %42, %41 ], [ %54, %53 ], [ %74, %73 ], [ %76, %75 ], [ %97, %96 ], [ %99, %98 ], [ %101, %100 ], [ %103, %102 ], [ %124, %123 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #10
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #10
  br label %146

146:                                              ; preds = %145, %33
  %.pn89.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn89.pn.pn.pn.pn.pn.pn.pn.pn, %145 ], [ %34, %33 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #10
  resume { ptr, i32 } %.pn89.pn.pn.pn.pn.pn.pn.pn.pn.pn
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIfSaIfEEC2ESt16initializer_listIfERKS0_(ptr noundef nonnull align 8 dereferenceable(24), ptr, i64, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIfSaIfEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2 align 2

declare ptr @ggml_init(ptr noundef byval(%struct.ggml_init_params) align 8) local_unnamed_addr #5

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #6

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIfSaIfEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNSt6vectorIfSaIfEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2 align 2

declare i64 @ggml_nbytes(ptr noundef) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIfSaIfEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #3 align 2

declare i64 @ggml_nelements(ptr noundef) local_unnamed_addr #5

declare ptr @ggml_get_data_f32(ptr noundef) local_unnamed_addr #5

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #7

declare i64 @ggml_tensor_overhead() local_unnamed_addr #5

declare ptr @ggml_backend_cpu_init() local_unnamed_addr #5

declare ptr @ggml_backend_alloc_ctx_tensors(ptr noundef, ptr noundef) local_unnamed_addr #5

declare zeroext i1 @ggml_backend_is_cpu(ptr noundef) local_unnamed_addr #5

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

declare ptr @ggml_timestep_embedding(ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #5

declare ptr @ggml_gallocr_new(ptr noundef) local_unnamed_addr #5

declare ptr @ggml_backend_get_default_buffer_type(ptr noundef) local_unnamed_addr #5

declare ptr @ggml_new_graph(ptr noundef) local_unnamed_addr #5

declare void @ggml_build_forward_expand(ptr noundef, ptr noundef) local_unnamed_addr #5

declare zeroext i1 @ggml_gallocr_alloc_graph(ptr noundef, ptr noundef) local_unnamed_addr #5

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

declare i32 @ggml_backend_graph_compute(ptr noundef, ptr noundef) local_unnamed_addr #5

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znam(i64 noundef) local_unnamed_addr #8

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZL7equalsfff(float noundef, float noundef) local_unnamed_addr #2

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPv(ptr noundef) local_unnamed_addr #9

declare void @ggml_free(ptr noundef) local_unnamed_addr #5

declare void @ggml_backend_buffer_free(ptr noundef) local_unnamed_addr #5

declare void @ggml_backend_free(ptr noundef) local_unnamed_addr #5

declare void @ggml_gallocr_free(ptr noundef) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

attributes #0 = { 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 #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 #3 = { 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 #4 = { mustprogress norecurse 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 nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #7 = { nofree 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 #8 = { nobuiltin allocsize(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 #9 = { nobuiltin 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 #10 = { nounwind }
attributes #11 = { builtin allocsize(0) }
attributes #12 = { noreturn }
attributes #13 = { builtin 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 = !{!"float", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"any pointer", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"bool", !7, i64 0}
!15 = !{!16, !12, i64 248}
!16 = !{!"_ZTS11ggml_tensor", !17, i64 0, !12, i64 8, !7, i64 16, !7, i64 48, !18, i64 80, !7, i64 84, !19, i64 148, !7, i64 152, !12, i64 232, !10, i64 240, !12, i64 248, !7, i64 256, !12, i64 320, !7, i64 328}
!17 = !{!"_ZTS9ggml_type", !7, i64 0}
!18 = !{!"_ZTS7ggml_op", !7, i64 0}
!19 = !{!"int", !7, i64 0}
!20 = distinct !{!20, !21}
!21 = !{!"llvm.loop.mustprogress"}
!22 = distinct !{!22, !21}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass