; LLVM IR from bondhugula/pluto :: examples/lbm/poiseuille/d2q9 (poiseuille_d2q9)

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

@omega = external dso_local global double, align 8

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

; Function Attrs: nounwind uwtable
define dso_local void @lbm_kernel(double noundef %0, double noundef %1, double noundef %2, double noundef %3, double noundef %4, double noundef %5, double noundef %6, double noundef %7, double noundef %8, ptr noalias noundef %9, ptr noalias noundef %10, ptr noalias noundef %11, ptr noalias noundef %12, ptr noalias noundef %13, ptr noalias noundef %14, ptr noalias noundef %15, ptr noalias noundef %16, ptr noalias noundef %17, i32 noundef %18, i32 noundef %19, i32 noundef %20) #1 {
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca double, align 8
  %44 = alloca double, align 8
  %45 = alloca double, align 8
  %46 = alloca double, align 8
  %47 = alloca i32, align 4
  store double %0, ptr %22, align 8, !tbaa !5
  store double %1, ptr %23, align 8, !tbaa !5
  store double %2, ptr %24, align 8, !tbaa !5
  store double %3, ptr %25, align 8, !tbaa !5
  store double %4, ptr %26, align 8, !tbaa !5
  store double %5, ptr %27, align 8, !tbaa !5
  store double %6, ptr %28, align 8, !tbaa !5
  store double %7, ptr %29, align 8, !tbaa !5
  store double %8, ptr %30, align 8, !tbaa !5
  store ptr %9, ptr %31, align 8, !tbaa !9
  store ptr %10, ptr %32, align 8, !tbaa !9
  store ptr %11, ptr %33, align 8, !tbaa !9
  store ptr %12, ptr %34, align 8, !tbaa !9
  store ptr %13, ptr %35, align 8, !tbaa !9
  store ptr %14, ptr %36, align 8, !tbaa !9
  store ptr %15, ptr %37, align 8, !tbaa !9
  store ptr %16, ptr %38, align 8, !tbaa !9
  store ptr %17, ptr %39, align 8, !tbaa !9
  store i32 %18, ptr %40, align 4, !tbaa !11
  store i32 %19, ptr %41, align 4, !tbaa !11
  store i32 %20, ptr %42, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #3
  %48 = load i32, ptr %41, align 4, !tbaa !11
  %49 = icmp eq i32 %48, 3
  br i1 %49, label %53, label %50

50:                                               ; preds = %21
  %51 = load i32, ptr %41, align 4, !tbaa !11
  %52 = icmp eq i32 %51, 258
  br i1 %52, label %53, label %78

53:                                               ; preds = %50, %21
  %54 = load i32, ptr %42, align 4, !tbaa !11
  %55 = icmp sgt i32 %54, 2
  br i1 %55, label %56, label %78

56:                                               ; preds = %53
  %57 = load i32, ptr %42, align 4, !tbaa !11
  %58 = icmp slt i32 %57, 1025
  br i1 %58, label %59, label %78

59:                                               ; preds = %56
  %60 = load double, ptr %22, align 8, !tbaa !5
  %61 = load ptr, ptr %31, align 8, !tbaa !9
  store double %60, ptr %61, align 8, !tbaa !5
  %62 = load double, ptr %23, align 8, !tbaa !5
  %63 = load ptr, ptr %33, align 8, !tbaa !9
  store double %62, ptr %63, align 8, !tbaa !5
  %64 = load double, ptr %24, align 8, !tbaa !5
  %65 = load ptr, ptr %32, align 8, !tbaa !9
  store double %64, ptr %65, align 8, !tbaa !5
  %66 = load double, ptr %25, align 8, !tbaa !5
  %67 = load ptr, ptr %35, align 8, !tbaa !9
  store double %66, ptr %67, align 8, !tbaa !5
  %68 = load double, ptr %26, align 8, !tbaa !5
  %69 = load ptr, ptr %34, align 8, !tbaa !9
  store double %68, ptr %69, align 8, !tbaa !5
  %70 = load double, ptr %27, align 8, !tbaa !5
  %71 = load ptr, ptr %39, align 8, !tbaa !9
  store double %70, ptr %71, align 8, !tbaa !5
  %72 = load double, ptr %28, align 8, !tbaa !5
  %73 = load ptr, ptr %38, align 8, !tbaa !9
  store double %72, ptr %73, align 8, !tbaa !5
  %74 = load double, ptr %29, align 8, !tbaa !5
  %75 = load ptr, ptr %37, align 8, !tbaa !9
  store double %74, ptr %75, align 8, !tbaa !5
  %76 = load double, ptr %30, align 8, !tbaa !5
  %77 = load ptr, ptr %36, align 8, !tbaa !9
  store double %76, ptr %77, align 8, !tbaa !5
  store i32 1, ptr %47, align 4
  br label %558

78:                                               ; preds = %56, %53, %50
  %79 = load i32, ptr %42, align 4, !tbaa !11
  %80 = icmp eq i32 %79, 2
  br i1 %80, label %81, label %118

81:                                               ; preds = %78
  %82 = load i32, ptr %41, align 4, !tbaa !11
  %83 = icmp eq i32 %82, 3
  br i1 %83, label %84, label %118

84:                                               ; preds = %81
  %85 = load double, ptr %26, align 8, !tbaa !5
  store double %85, ptr %25, align 8, !tbaa !5
  %86 = load double, ptr %24, align 8, !tbaa !5
  store double %86, ptr %23, align 8, !tbaa !5
  %87 = load double, ptr %30, align 8, !tbaa !5
  store double %87, ptr %27, align 8, !tbaa !5
  %88 = load double, ptr %22, align 8, !tbaa !5
  %89 = load double, ptr %25, align 8, !tbaa !5
  %90 = fadd double %88, %89
  %91 = load double, ptr %26, align 8, !tbaa !5
  %92 = fadd double %90, %91
  %93 = load double, ptr %23, align 8, !tbaa !5
  %94 = fadd double %92, %93
  %95 = load double, ptr %24, align 8, !tbaa !5
  %96 = fadd double %94, %95
  %97 = load double, ptr %27, align 8, !tbaa !5
  %98 = fadd double %96, %97
  %99 = load double, ptr %30, align 8, !tbaa !5
  %100 = fadd double %98, %99
  %101 = fsub double 3.090000e+00, %100
  %102 = fmul double 5.000000e-01, %101
  store double %102, ptr %28, align 8, !tbaa !5
  %103 = load double, ptr %22, align 8, !tbaa !5
  %104 = load double, ptr %25, align 8, !tbaa !5
  %105 = fadd double %103, %104
  %106 = load double, ptr %26, align 8, !tbaa !5
  %107 = fadd double %105, %106
  %108 = load double, ptr %23, align 8, !tbaa !5
  %109 = fadd double %107, %108
  %110 = load double, ptr %24, align 8, !tbaa !5
  %111 = fadd double %109, %110
  %112 = load double, ptr %27, align 8, !tbaa !5
  %113 = fadd double %111, %112
  %114 = load double, ptr %30, align 8, !tbaa !5
  %115 = fadd double %113, %114
  %116 = fsub double 3.090000e+00, %115
  %117 = fmul double 5.000000e-01, %116
  store double %117, ptr %29, align 8, !tbaa !5
  br label %118

118:                                              ; preds = %84, %81, %78
  %119 = load i32, ptr %42, align 4, !tbaa !11
  %120 = icmp eq i32 %119, 2
  br i1 %120, label %121, label %158

121:                                              ; preds = %118
  %122 = load i32, ptr %41, align 4, !tbaa !11
  %123 = icmp eq i32 %122, 258
  br i1 %123, label %124, label %158

124:                                              ; preds = %121
  %125 = load double, ptr %26, align 8, !tbaa !5
  store double %125, ptr %25, align 8, !tbaa !5
  %126 = load double, ptr %23, align 8, !tbaa !5
  store double %126, ptr %24, align 8, !tbaa !5
  %127 = load double, ptr %28, align 8, !tbaa !5
  store double %127, ptr %29, align 8, !tbaa !5
  %128 = load double, ptr %22, align 8, !tbaa !5
  %129 = load double, ptr %25, align 8, !tbaa !5
  %130 = fadd double %128, %129
  %131 = load double, ptr %26, align 8, !tbaa !5
  %132 = fadd double %130, %131
  %133 = load double, ptr %23, align 8, !tbaa !5
  %134 = fadd double %132, %133
  %135 = load double, ptr %24, align 8, !tbaa !5
  %136 = fadd double %134, %135
  %137 = load double, ptr %29, align 8, !tbaa !5
  %138 = fadd double %136, %137
  %139 = load double, ptr %28, align 8, !tbaa !5
  %140 = fadd double %138, %139
  %141 = fsub double 3.090000e+00, %140
  %142 = fmul double 5.000000e-01, %141
  store double %142, ptr %30, align 8, !tbaa !5
  %143 = load double, ptr %22, align 8, !tbaa !5
  %144 = load double, ptr %25, align 8, !tbaa !5
  %145 = fadd double %143, %144
  %146 = load double, ptr %26, align 8, !tbaa !5
  %147 = fadd double %145, %146
  %148 = load double, ptr %23, align 8, !tbaa !5
  %149 = fadd double %147, %148
  %150 = load double, ptr %24, align 8, !tbaa !5
  %151 = fadd double %149, %150
  %152 = load double, ptr %29, align 8, !tbaa !5
  %153 = fadd double %151, %152
  %154 = load double, ptr %28, align 8, !tbaa !5
  %155 = fadd double %153, %154
  %156 = fsub double 3.090000e+00, %155
  %157 = fmul double 5.000000e-01, %156
  store double %157, ptr %27, align 8, !tbaa !5
  br label %158

158:                                              ; preds = %124, %121, %118
  %159 = load i32, ptr %42, align 4, !tbaa !11
  %160 = icmp eq i32 %159, 1025
  br i1 %160, label %161, label %198

161:                                              ; preds = %158
  %162 = load i32, ptr %41, align 4, !tbaa !11
  %163 = icmp eq i32 %162, 3
  br i1 %163, label %164, label %198

164:                                              ; preds = %161
  %165 = load double, ptr %25, align 8, !tbaa !5
  store double %165, ptr %26, align 8, !tbaa !5
  %166 = load double, ptr %24, align 8, !tbaa !5
  store double %166, ptr %23, align 8, !tbaa !5
  %167 = load double, ptr %29, align 8, !tbaa !5
  store double %167, ptr %28, align 8, !tbaa !5
  %168 = load double, ptr %22, align 8, !tbaa !5
  %169 = load double, ptr %25, align 8, !tbaa !5
  %170 = fadd double %168, %169
  %171 = load double, ptr %26, align 8, !tbaa !5
  %172 = fadd double %170, %171
  %173 = load double, ptr %23, align 8, !tbaa !5
  %174 = fadd double %172, %173
  %175 = load double, ptr %24, align 8, !tbaa !5
  %176 = fadd double %174, %175
  %177 = load double, ptr %28, align 8, !tbaa !5
  %178 = fadd double %176, %177
  %179 = load double, ptr %29, align 8, !tbaa !5
  %180 = fadd double %178, %179
  %181 = fsub double 3.000000e+00, %180
  %182 = fmul double 5.000000e-01, %181
  store double %182, ptr %27, align 8, !tbaa !5
  %183 = load double, ptr %22, align 8, !tbaa !5
  %184 = load double, ptr %25, align 8, !tbaa !5
  %185 = fadd double %183, %184
  %186 = load double, ptr %26, align 8, !tbaa !5
  %187 = fadd double %185, %186
  %188 = load double, ptr %23, align 8, !tbaa !5
  %189 = fadd double %187, %188
  %190 = load double, ptr %24, align 8, !tbaa !5
  %191 = fadd double %189, %190
  %192 = load double, ptr %28, align 8, !tbaa !5
  %193 = fadd double %191, %192
  %194 = load double, ptr %29, align 8, !tbaa !5
  %195 = fadd double %193, %194
  %196 = fsub double 3.000000e+00, %195
  %197 = fmul double 5.000000e-01, %196
  store double %197, ptr %30, align 8, !tbaa !5
  br label %198

198:                                              ; preds = %164, %161, %158
  %199 = load i32, ptr %42, align 4, !tbaa !11
  %200 = icmp eq i32 %199, 1025
  br i1 %200, label %201, label %238

201:                                              ; preds = %198
  %202 = load i32, ptr %41, align 4, !tbaa !11
  %203 = icmp eq i32 %202, 3
  br i1 %203, label %204, label %238

204:                                              ; preds = %201
  %205 = load double, ptr %25, align 8, !tbaa !5
  store double %205, ptr %26, align 8, !tbaa !5
  %206 = load double, ptr %23, align 8, !tbaa !5
  store double %206, ptr %24, align 8, !tbaa !5
  %207 = load double, ptr %27, align 8, !tbaa !5
  store double %207, ptr %30, align 8, !tbaa !5
  %208 = load double, ptr %22, align 8, !tbaa !5
  %209 = load double, ptr %25, align 8, !tbaa !5
  %210 = fadd double %208, %209
  %211 = load double, ptr %26, align 8, !tbaa !5
  %212 = fadd double %210, %211
  %213 = load double, ptr %23, align 8, !tbaa !5
  %214 = fadd double %212, %213
  %215 = load double, ptr %24, align 8, !tbaa !5
  %216 = fadd double %214, %215
  %217 = load double, ptr %27, align 8, !tbaa !5
  %218 = fadd double %216, %217
  %219 = load double, ptr %30, align 8, !tbaa !5
  %220 = fadd double %218, %219
  %221 = fsub double 3.000000e+00, %220
  %222 = fmul double 5.000000e-01, %221
  store double %222, ptr %28, align 8, !tbaa !5
  %223 = load double, ptr %22, align 8, !tbaa !5
  %224 = load double, ptr %25, align 8, !tbaa !5
  %225 = fadd double %223, %224
  %226 = load double, ptr %26, align 8, !tbaa !5
  %227 = fadd double %225, %226
  %228 = load double, ptr %23, align 8, !tbaa !5
  %229 = fadd double %227, %228
  %230 = load double, ptr %24, align 8, !tbaa !5
  %231 = fadd double %229, %230
  %232 = load double, ptr %27, align 8, !tbaa !5
  %233 = fadd double %231, %232
  %234 = load double, ptr %30, align 8, !tbaa !5
  %235 = fadd double %233, %234
  %236 = fsub double 3.000000e+00, %235
  %237 = fmul double 5.000000e-01, %236
  store double %237, ptr %29, align 8, !tbaa !5
  br label %238

238:                                              ; preds = %204, %201, %198
  %239 = load double, ptr %23, align 8, !tbaa !5
  %240 = load double, ptr %24, align 8, !tbaa !5
  %241 = fadd double %239, %240
  %242 = load double, ptr %25, align 8, !tbaa !5
  %243 = fadd double %241, %242
  %244 = load double, ptr %26, align 8, !tbaa !5
  %245 = fadd double %243, %244
  %246 = load double, ptr %27, align 8, !tbaa !5
  %247 = fadd double %245, %246
  %248 = load double, ptr %28, align 8, !tbaa !5
  %249 = fadd double %247, %248
  %250 = load double, ptr %29, align 8, !tbaa !5
  %251 = fadd double %249, %250
  %252 = load double, ptr %30, align 8, !tbaa !5
  %253 = fadd double %251, %252
  %254 = load double, ptr %22, align 8, !tbaa !5
  %255 = fadd double %253, %254
  store double %255, ptr %43, align 8, !tbaa !5
  %256 = load double, ptr %29, align 8, !tbaa !5
  %257 = load double, ptr %25, align 8, !tbaa !5
  %258 = fadd double %256, %257
  %259 = load double, ptr %27, align 8, !tbaa !5
  %260 = fadd double %258, %259
  %261 = load double, ptr %30, align 8, !tbaa !5
  %262 = load double, ptr %26, align 8, !tbaa !5
  %263 = fadd double %261, %262
  %264 = load double, ptr %28, align 8, !tbaa !5
  %265 = fadd double %263, %264
  %266 = fsub double %260, %265
  store double %266, ptr %44, align 8, !tbaa !5
  %267 = load double, ptr %44, align 8, !tbaa !5
  %268 = load double, ptr %43, align 8, !tbaa !5
  %269 = fdiv double %267, %268
  store double %269, ptr %44, align 8, !tbaa !5
  %270 = load double, ptr %28, align 8, !tbaa !5
  %271 = load double, ptr %23, align 8, !tbaa !5
  %272 = fadd double %270, %271
  %273 = load double, ptr %27, align 8, !tbaa !5
  %274 = fadd double %272, %273
  %275 = load double, ptr %30, align 8, !tbaa !5
  %276 = load double, ptr %24, align 8, !tbaa !5
  %277 = fadd double %275, %276
  %278 = load double, ptr %29, align 8, !tbaa !5
  %279 = fadd double %277, %278
  %280 = fsub double %274, %279
  store double %280, ptr %45, align 8, !tbaa !5
  %281 = load double, ptr %45, align 8, !tbaa !5
  %282 = load double, ptr %43, align 8, !tbaa !5
  %283 = fdiv double %281, %282
  store double %283, ptr %45, align 8, !tbaa !5
  %284 = load i32, ptr %42, align 4, !tbaa !11
  %285 = icmp eq i32 %284, 2
  br i1 %285, label %286, label %324

286:                                              ; preds = %238
  %287 = load i32, ptr %41, align 4, !tbaa !11
  %288 = icmp sgt i32 %287, 3
  br i1 %288, label %289, label %324

289:                                              ; preds = %286
  %290 = load i32, ptr %41, align 4, !tbaa !11
  %291 = icmp slt i32 %290, 258
  br i1 %291, label %292, label %324

292:                                              ; preds = %289
  %293 = load double, ptr %22, align 8, !tbaa !5
  %294 = load double, ptr %23, align 8, !tbaa !5
  %295 = fadd double %293, %294
  %296 = load double, ptr %24, align 8, !tbaa !5
  %297 = fadd double %295, %296
  %298 = load double, ptr %28, align 8, !tbaa !5
  %299 = load double, ptr %26, align 8, !tbaa !5
  %300 = fadd double %298, %299
  %301 = load double, ptr %30, align 8, !tbaa !5
  %302 = fadd double %300, %301
  %303 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %302, double %297)
  %304 = fdiv double %303, 3.090000e+00
  %305 = fsub double 1.000000e+00, %304
  store double %305, ptr %44, align 8, !tbaa !5
  store double 0.000000e+00, ptr %45, align 8, !tbaa !5
  store double 3.090000e+00, ptr %43, align 8, !tbaa !5
  %306 = load double, ptr %26, align 8, !tbaa !5
  %307 = load double, ptr %44, align 8, !tbaa !5
  %308 = fmul double 3.090000e+00, %307
  %309 = call double @llvm.fmuladd.f64(double 0x3FE5555555555555, double %308, double %306)
  store double %309, ptr %25, align 8, !tbaa !5
  %310 = load double, ptr %30, align 8, !tbaa !5
  %311 = load double, ptr %23, align 8, !tbaa !5
  %312 = load double, ptr %24, align 8, !tbaa !5
  %313 = fsub double %311, %312
  %314 = call double @llvm.fmuladd.f64(double -5.000000e-01, double %313, double %310)
  %315 = load double, ptr %44, align 8, !tbaa !5
  %316 = call double @llvm.fmuladd.f64(double 0x3FE07AE147AE147A, double %315, double %314)
  store double %316, ptr %27, align 8, !tbaa !5
  %317 = load double, ptr %28, align 8, !tbaa !5
  %318 = load double, ptr %23, align 8, !tbaa !5
  %319 = load double, ptr %24, align 8, !tbaa !5
  %320 = fsub double %318, %319
  %321 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %320, double %317)
  %322 = load double, ptr %44, align 8, !tbaa !5
  %323 = call double @llvm.fmuladd.f64(double 0x3FE07AE147AE147A, double %322, double %321)
  store double %323, ptr %29, align 8, !tbaa !5
  br label %324

324:                                              ; preds = %292, %289, %286, %238
  %325 = load i32, ptr %42, align 4, !tbaa !11
  %326 = icmp eq i32 %325, 1025
  br i1 %326, label %327, label %364

327:                                              ; preds = %324
  %328 = load i32, ptr %41, align 4, !tbaa !11
  %329 = icmp sgt i32 %328, 3
  br i1 %329, label %330, label %364

330:                                              ; preds = %327
  %331 = load i32, ptr %41, align 4, !tbaa !11
  %332 = icmp slt i32 %331, 258
  br i1 %332, label %333, label %364

333:                                              ; preds = %330
  %334 = load double, ptr %22, align 8, !tbaa !5
  %335 = load double, ptr %23, align 8, !tbaa !5
  %336 = fadd double %334, %335
  %337 = load double, ptr %24, align 8, !tbaa !5
  %338 = fadd double %336, %337
  %339 = load double, ptr %27, align 8, !tbaa !5
  %340 = load double, ptr %25, align 8, !tbaa !5
  %341 = fadd double %339, %340
  %342 = load double, ptr %29, align 8, !tbaa !5
  %343 = fadd double %341, %342
  %344 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %343, double %338)
  %345 = fdiv double %344, 3.000000e+00
  %346 = fsub double 1.000000e+00, %345
  store double %346, ptr %44, align 8, !tbaa !5
  store double 0.000000e+00, ptr %45, align 8, !tbaa !5
  store double 3.000000e+00, ptr %43, align 8, !tbaa !5
  %347 = load double, ptr %25, align 8, !tbaa !5
  %348 = load double, ptr %44, align 8, !tbaa !5
  %349 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %348, double %347)
  store double %349, ptr %26, align 8, !tbaa !5
  %350 = load double, ptr %29, align 8, !tbaa !5
  %351 = load double, ptr %44, align 8, !tbaa !5
  %352 = call double @llvm.fmuladd.f64(double -5.000000e-01, double %351, double %350)
  %353 = load double, ptr %23, align 8, !tbaa !5
  %354 = load double, ptr %24, align 8, !tbaa !5
  %355 = fsub double %353, %354
  %356 = call double @llvm.fmuladd.f64(double -5.000000e-01, double %355, double %352)
  store double %356, ptr %28, align 8, !tbaa !5
  %357 = load double, ptr %27, align 8, !tbaa !5
  %358 = load double, ptr %44, align 8, !tbaa !5
  %359 = call double @llvm.fmuladd.f64(double -5.000000e-01, double %358, double %357)
  %360 = load double, ptr %23, align 8, !tbaa !5
  %361 = load double, ptr %24, align 8, !tbaa !5
  %362 = fsub double %360, %361
  %363 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %362, double %359)
  store double %363, ptr %30, align 8, !tbaa !5
  br label %364

364:                                              ; preds = %333, %330, %327, %324
  %365 = load double, ptr %44, align 8, !tbaa !5
  %366 = load double, ptr %44, align 8, !tbaa !5
  %367 = load double, ptr %45, align 8, !tbaa !5
  %368 = load double, ptr %45, align 8, !tbaa !5
  %369 = fmul double %367, %368
  %370 = call double @llvm.fmuladd.f64(double %365, double %366, double %369)
  %371 = fmul double 1.500000e+00, %370
  store double %371, ptr %46, align 8, !tbaa !5
  %372 = load double, ptr @omega, align 8, !tbaa !5
  %373 = fsub double 1.000000e+00, %372
  %374 = load double, ptr %22, align 8, !tbaa !5
  %375 = load double, ptr @omega, align 8, !tbaa !5
  %376 = load double, ptr %43, align 8, !tbaa !5
  %377 = fmul double 0x3FDC71C71C71C71C, %376
  %378 = load double, ptr %46, align 8, !tbaa !5
  %379 = fsub double 1.000000e+00, %378
  %380 = fmul double %377, %379
  %381 = fmul double %375, %380
  %382 = call double @llvm.fmuladd.f64(double %373, double %374, double %381)
  %383 = load ptr, ptr %31, align 8, !tbaa !9
  store double %382, ptr %383, align 8, !tbaa !5
  %384 = load double, ptr @omega, align 8, !tbaa !5
  %385 = fsub double 1.000000e+00, %384
  %386 = load double, ptr %23, align 8, !tbaa !5
  %387 = load double, ptr @omega, align 8, !tbaa !5
  %388 = load double, ptr %43, align 8, !tbaa !5
  %389 = fmul double 0x3FBC71C71C71C71C, %388
  %390 = load double, ptr %45, align 8, !tbaa !5
  %391 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %390, double 1.000000e+00)
  %392 = load double, ptr %45, align 8, !tbaa !5
  %393 = fmul double 4.500000e+00, %392
  %394 = load double, ptr %45, align 8, !tbaa !5
  %395 = call double @llvm.fmuladd.f64(double %393, double %394, double %391)
  %396 = load double, ptr %46, align 8, !tbaa !5
  %397 = fsub double %395, %396
  %398 = fmul double %389, %397
  %399 = fmul double %387, %398
  %400 = call double @llvm.fmuladd.f64(double %385, double %386, double %399)
  %401 = load ptr, ptr %32, align 8, !tbaa !9
  store double %400, ptr %401, align 8, !tbaa !5
  %402 = load double, ptr @omega, align 8, !tbaa !5
  %403 = fsub double 1.000000e+00, %402
  %404 = load double, ptr %24, align 8, !tbaa !5
  %405 = load double, ptr @omega, align 8, !tbaa !5
  %406 = load double, ptr %43, align 8, !tbaa !5
  %407 = fmul double 0x3FBC71C71C71C71C, %406
  %408 = load double, ptr %45, align 8, !tbaa !5
  %409 = call double @llvm.fmuladd.f64(double -3.000000e+00, double %408, double 1.000000e+00)
  %410 = load double, ptr %45, align 8, !tbaa !5
  %411 = fmul double 4.500000e+00, %410
  %412 = load double, ptr %45, align 8, !tbaa !5
  %413 = call double @llvm.fmuladd.f64(double %411, double %412, double %409)
  %414 = load double, ptr %46, align 8, !tbaa !5
  %415 = fsub double %413, %414
  %416 = fmul double %407, %415
  %417 = fmul double %405, %416
  %418 = call double @llvm.fmuladd.f64(double %403, double %404, double %417)
  %419 = load ptr, ptr %33, align 8, !tbaa !9
  store double %418, ptr %419, align 8, !tbaa !5
  %420 = load double, ptr @omega, align 8, !tbaa !5
  %421 = fsub double 1.000000e+00, %420
  %422 = load double, ptr %25, align 8, !tbaa !5
  %423 = load double, ptr @omega, align 8, !tbaa !5
  %424 = load double, ptr %43, align 8, !tbaa !5
  %425 = fmul double 0x3FBC71C71C71C71C, %424
  %426 = load double, ptr %44, align 8, !tbaa !5
  %427 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %426, double 1.000000e+00)
  %428 = load double, ptr %44, align 8, !tbaa !5
  %429 = fmul double 4.500000e+00, %428
  %430 = load double, ptr %44, align 8, !tbaa !5
  %431 = call double @llvm.fmuladd.f64(double %429, double %430, double %427)
  %432 = load double, ptr %46, align 8, !tbaa !5
  %433 = fsub double %431, %432
  %434 = fmul double %425, %433
  %435 = fmul double %423, %434
  %436 = call double @llvm.fmuladd.f64(double %421, double %422, double %435)
  %437 = load ptr, ptr %34, align 8, !tbaa !9
  store double %436, ptr %437, align 8, !tbaa !5
  %438 = load double, ptr @omega, align 8, !tbaa !5
  %439 = fsub double 1.000000e+00, %438
  %440 = load double, ptr %26, align 8, !tbaa !5
  %441 = load double, ptr @omega, align 8, !tbaa !5
  %442 = load double, ptr %43, align 8, !tbaa !5
  %443 = fmul double 0x3FBC71C71C71C71C, %442
  %444 = load double, ptr %44, align 8, !tbaa !5
  %445 = call double @llvm.fmuladd.f64(double -3.000000e+00, double %444, double 1.000000e+00)
  %446 = load double, ptr %44, align 8, !tbaa !5
  %447 = fmul double 4.500000e+00, %446
  %448 = load double, ptr %44, align 8, !tbaa !5
  %449 = call double @llvm.fmuladd.f64(double %447, double %448, double %445)
  %450 = load double, ptr %46, align 8, !tbaa !5
  %451 = fsub double %449, %450
  %452 = fmul double %443, %451
  %453 = fmul double %441, %452
  %454 = call double @llvm.fmuladd.f64(double %439, double %440, double %453)
  %455 = load ptr, ptr %35, align 8, !tbaa !9
  store double %454, ptr %455, align 8, !tbaa !5
  %456 = load double, ptr @omega, align 8, !tbaa !5
  %457 = fsub double 1.000000e+00, %456
  %458 = load double, ptr %27, align 8, !tbaa !5
  %459 = load double, ptr @omega, align 8, !tbaa !5
  %460 = load double, ptr %43, align 8, !tbaa !5
  %461 = fmul double 0x3F9C71C71C71C71C, %460
  %462 = load double, ptr %44, align 8, !tbaa !5
  %463 = load double, ptr %45, align 8, !tbaa !5
  %464 = fadd double %462, %463
  %465 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %464, double 1.000000e+00)
  %466 = load double, ptr %44, align 8, !tbaa !5
  %467 = load double, ptr %45, align 8, !tbaa !5
  %468 = fadd double %466, %467
  %469 = fmul double 4.500000e+00, %468
  %470 = load double, ptr %44, align 8, !tbaa !5
  %471 = load double, ptr %45, align 8, !tbaa !5
  %472 = fadd double %470, %471
  %473 = call double @llvm.fmuladd.f64(double %469, double %472, double %465)
  %474 = load double, ptr %46, align 8, !tbaa !5
  %475 = fsub double %473, %474
  %476 = fmul double %461, %475
  %477 = fmul double %459, %476
  %478 = call double @llvm.fmuladd.f64(double %457, double %458, double %477)
  %479 = load ptr, ptr %36, align 8, !tbaa !9
  store double %478, ptr %479, align 8, !tbaa !5
  %480 = load double, ptr @omega, align 8, !tbaa !5
  %481 = fsub double 1.000000e+00, %480
  %482 = load double, ptr %28, align 8, !tbaa !5
  %483 = load double, ptr @omega, align 8, !tbaa !5
  %484 = load double, ptr %43, align 8, !tbaa !5
  %485 = fmul double 0x3F9C71C71C71C71C, %484
  %486 = load double, ptr %44, align 8, !tbaa !5
  %487 = fneg double %486
  %488 = load double, ptr %45, align 8, !tbaa !5
  %489 = fadd double %487, %488
  %490 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %489, double 1.000000e+00)
  %491 = load double, ptr %44, align 8, !tbaa !5
  %492 = fneg double %491
  %493 = load double, ptr %45, align 8, !tbaa !5
  %494 = fadd double %492, %493
  %495 = fmul double 4.500000e+00, %494
  %496 = load double, ptr %44, align 8, !tbaa !5
  %497 = fneg double %496
  %498 = load double, ptr %45, align 8, !tbaa !5
  %499 = fadd double %497, %498
  %500 = call double @llvm.fmuladd.f64(double %495, double %499, double %490)
  %501 = load double, ptr %46, align 8, !tbaa !5
  %502 = fsub double %500, %501
  %503 = fmul double %485, %502
  %504 = fmul double %483, %503
  %505 = call double @llvm.fmuladd.f64(double %481, double %482, double %504)
  %506 = load ptr, ptr %37, align 8, !tbaa !9
  store double %505, ptr %506, align 8, !tbaa !5
  %507 = load double, ptr @omega, align 8, !tbaa !5
  %508 = fsub double 1.000000e+00, %507
  %509 = load double, ptr %29, align 8, !tbaa !5
  %510 = load double, ptr @omega, align 8, !tbaa !5
  %511 = load double, ptr %43, align 8, !tbaa !5
  %512 = fmul double 0x3F9C71C71C71C71C, %511
  %513 = load double, ptr %44, align 8, !tbaa !5
  %514 = load double, ptr %45, align 8, !tbaa !5
  %515 = fsub double %513, %514
  %516 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %515, double 1.000000e+00)
  %517 = load double, ptr %44, align 8, !tbaa !5
  %518 = load double, ptr %45, align 8, !tbaa !5
  %519 = fsub double %517, %518
  %520 = fmul double 4.500000e+00, %519
  %521 = load double, ptr %44, align 8, !tbaa !5
  %522 = load double, ptr %45, align 8, !tbaa !5
  %523 = fsub double %521, %522
  %524 = call double @llvm.fmuladd.f64(double %520, double %523, double %516)
  %525 = load double, ptr %46, align 8, !tbaa !5
  %526 = fsub double %524, %525
  %527 = fmul double %512, %526
  %528 = fmul double %510, %527
  %529 = call double @llvm.fmuladd.f64(double %508, double %509, double %528)
  %530 = load ptr, ptr %38, align 8, !tbaa !9
  store double %529, ptr %530, align 8, !tbaa !5
  %531 = load double, ptr @omega, align 8, !tbaa !5
  %532 = fsub double 1.000000e+00, %531
  %533 = load double, ptr %30, align 8, !tbaa !5
  %534 = load double, ptr @omega, align 8, !tbaa !5
  %535 = load double, ptr %43, align 8, !tbaa !5
  %536 = fmul double 0x3F9C71C71C71C71C, %535
  %537 = load double, ptr %44, align 8, !tbaa !5
  %538 = fneg double %537
  %539 = load double, ptr %45, align 8, !tbaa !5
  %540 = fsub double %538, %539
  %541 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %540, double 1.000000e+00)
  %542 = load double, ptr %44, align 8, !tbaa !5
  %543 = fneg double %542
  %544 = load double, ptr %45, align 8, !tbaa !5
  %545 = fsub double %543, %544
  %546 = fmul double 4.500000e+00, %545
  %547 = load double, ptr %44, align 8, !tbaa !5
  %548 = fneg double %547
  %549 = load double, ptr %45, align 8, !tbaa !5
  %550 = fsub double %548, %549
  %551 = call double @llvm.fmuladd.f64(double %546, double %550, double %541)
  %552 = load double, ptr %46, align 8, !tbaa !5
  %553 = fsub double %551, %552
  %554 = fmul double %536, %553
  %555 = fmul double %534, %554
  %556 = call double @llvm.fmuladd.f64(double %532, double %533, double %555)
  %557 = load ptr, ptr %39, align 8, !tbaa !9
  store double %556, ptr %557, align 8, !tbaa !5
  store i32 0, ptr %47, align 4
  br label %558

558:                                              ; preds = %364, %59
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #3
  %559 = load i32, ptr %47, align 4
  switch i32 %559, label %561 [
    i32 0, label %560
    i32 1, label %560
  ]

560:                                              ; preds = %558, %558
  ret void

561:                                              ; preds = %558
  unreachable
}

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

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

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

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

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


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@omega = external dso_local local_unnamed_addr global double, align 8

; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, argmem: write, inaccessiblemem: none) uwtable
define dso_local void @lbm_kernel(double noundef %0, double noundef %1, double noundef %2, double noundef %3, double noundef %4, double noundef %5, double noundef %6, double noundef %7, double noundef %8, ptr noalias nocapture noundef writeonly %9, ptr noalias nocapture noundef writeonly %10, ptr noalias nocapture noundef writeonly %11, ptr noalias nocapture noundef writeonly %12, ptr noalias nocapture noundef writeonly %13, ptr noalias nocapture noundef writeonly %14, ptr noalias nocapture noundef writeonly %15, ptr noalias nocapture noundef writeonly %16, ptr noalias nocapture noundef writeonly %17, i32 noundef %18, i32 noundef %19, i32 noundef %20) local_unnamed_addr #0 {
  %22 = icmp eq i32 %19, 3
  %23 = icmp eq i32 %19, 258
  %or.cond = or i1 %22, %23
  %24 = add i32 %20, -3
  %25 = icmp ult i32 %24, 1022
  %or.cond5 = and i1 %or.cond, %25
  br i1 %or.cond5, label %26, label %27

26:                                               ; preds = %21
  store double %0, ptr %9, align 8, !tbaa !5
  store double %1, ptr %11, align 8, !tbaa !5
  store double %2, ptr %10, align 8, !tbaa !5
  store double %3, ptr %13, align 8, !tbaa !5
  store double %4, ptr %12, align 8, !tbaa !5
  store double %5, ptr %17, align 8, !tbaa !5
  store double %6, ptr %16, align 8, !tbaa !5
  store double %7, ptr %15, align 8, !tbaa !5
  store double %8, ptr %14, align 8, !tbaa !5
  br label %237

27:                                               ; preds = %21
  %28 = icmp eq i32 %20, 2
  %or.cond7 = and i1 %22, %28
  br i1 %or.cond7, label %.thread, label %41

.thread:                                          ; preds = %27
  %29 = fadd double %0, %4
  %30 = fadd double %29, %4
  %31 = fadd double %30, %2
  %32 = fadd double %31, %2
  %33 = fadd double %32, %8
  %34 = fadd double %33, %8
  %35 = fsub double 3.090000e+00, %34
  %36 = fmul double %35, 5.000000e-01
  %37 = insertelement <2 x double> poison, double %36, i64 0
  %38 = insertelement <2 x double> %37, double %8, i64 1
  %39 = insertelement <2 x double> poison, double %4, i64 0
  %40 = insertelement <2 x double> %39, double %2, i64 1
  br label %.thread322

41:                                               ; preds = %27
  %or.cond9 = and i1 %23, %28
  br i1 %or.cond9, label %42, label %55

42:                                               ; preds = %41
  %43 = fadd double %0, %4
  %44 = fadd double %43, %4
  %45 = fadd double %44, %1
  %46 = fadd double %45, %1
  %47 = fadd double %46, %6
  %48 = fadd double %47, %6
  %49 = fsub double 3.090000e+00, %48
  %50 = fmul double %49, 5.000000e-01
  %51 = insertelement <2 x double> poison, double %6, i64 0
  %52 = insertelement <2 x double> %51, double %50, i64 1
  %53 = insertelement <2 x double> poison, double %4, i64 0
  %54 = insertelement <2 x double> %53, double %1, i64 1
  br label %.thread322

55:                                               ; preds = %41
  %56 = icmp eq i32 %20, 1025
  %or.cond11 = and i1 %22, %56
  %57 = insertelement <2 x double> poison, double %6, i64 0
  %58 = insertelement <2 x double> %57, double %8, i64 1
  %59 = insertelement <2 x double> poison, double %7, i64 0
  %60 = insertelement <2 x double> %59, double %5, i64 1
  %61 = insertelement <2 x double> poison, double %3, i64 0
  %62 = insertelement <2 x double> %61, double %1, i64 1
  %63 = insertelement <2 x double> poison, double %4, i64 0
  %64 = insertelement <2 x double> %63, double %2, i64 1
  br i1 %or.cond11, label %65, label %.thread322

65:                                               ; preds = %55
  %66 = fadd double %0, %3
  %67 = fadd double %66, %3
  %68 = fadd double %67, %2
  %69 = fadd double %68, %2
  %70 = fadd double %69, %7
  %71 = fadd double %70, %7
  %72 = fsub double 3.000000e+00, %71
  %73 = fmul double %72, 5.000000e-01
  %74 = fadd double %69, %73
  %75 = fadd double %73, %74
  %76 = fsub double 3.000000e+00, %75
  %77 = fmul double %76, 5.000000e-01
  %78 = insertelement <2 x double> poison, double %77, i64 0
  %79 = insertelement <2 x double> %78, double %73, i64 1
  %80 = insertelement <2 x double> %64, double %3, i64 0
  br label %.thread322

.thread322:                                       ; preds = %42, %.thread, %55, %65
  %81 = phi i1 [ true, %65 ], [ %56, %55 ], [ false, %.thread ], [ false, %42 ]
  %82 = phi <2 x double> [ %79, %65 ], [ %58, %55 ], [ %38, %.thread ], [ %52, %42 ]
  %83 = phi <2 x double> [ %79, %65 ], [ %60, %55 ], [ %38, %.thread ], [ %52, %42 ]
  %84 = phi <2 x double> [ %80, %65 ], [ %62, %55 ], [ %40, %.thread ], [ %54, %42 ]
  %85 = phi <2 x double> [ %80, %65 ], [ %64, %55 ], [ %40, %.thread ], [ %54, %42 ]
  %86 = extractelement <2 x double> %84, i64 1
  %87 = extractelement <2 x double> %85, i64 1
  %88 = fadd double %86, %87
  %89 = extractelement <2 x double> %84, i64 0
  %90 = fadd double %89, %88
  %91 = extractelement <2 x double> %85, i64 0
  %92 = fadd double %91, %90
  %93 = extractelement <2 x double> %83, i64 1
  %94 = fadd double %93, %92
  %95 = extractelement <2 x double> %82, i64 0
  %96 = fadd double %95, %94
  %97 = extractelement <2 x double> %83, i64 0
  %98 = fadd double %97, %96
  %99 = extractelement <2 x double> %82, i64 1
  %100 = fadd double %99, %98
  %101 = fadd double %100, %0
  %102 = shufflevector <2 x double> %83, <2 x double> %82, <2 x i32> <i32 0, i32 2>
  %103 = fadd <2 x double> %84, %102
  %104 = shufflevector <2 x double> %83, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %105 = fadd <2 x double> %104, %103
  %106 = shufflevector <2 x double> %82, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %107 = fadd <2 x double> %106, %85
  %108 = shufflevector <2 x double> %82, <2 x double> %83, <2 x i32> <i32 0, i32 2>
  %109 = fadd <2 x double> %108, %107
  %110 = fsub <2 x double> %105, %109
  %111 = insertelement <2 x double> poison, double %101, i64 0
  %112 = shufflevector <2 x double> %111, <2 x double> poison, <2 x i32> zeroinitializer
  %113 = fdiv <2 x double> %110, %112
  %114 = add i32 %19, -4
  %115 = icmp ult i32 %114, 254
  %or.cond17 = and i1 %28, %115
  br i1 %or.cond17, label %116, label %135

116:                                              ; preds = %.thread322
  %117 = fadd double %86, %0
  %118 = fadd double %117, %87
  %119 = fadd <2 x double> %82, %85
  %120 = extractelement <2 x double> %119, i64 0
  %121 = fadd double %99, %120
  %122 = tail call double @llvm.fmuladd.f64(double %121, double 2.000000e+00, double %118)
  %123 = fdiv double %122, 3.090000e+00
  %124 = fsub double 1.000000e+00, %123
  %125 = fmul double %124, 3.090000e+00
  %126 = tail call double @llvm.fmuladd.f64(double %125, double 0x3FE5555555555555, double %91)
  %127 = fsub double %86, %87
  %128 = insertelement <2 x double> poison, double %127, i64 0
  %129 = shufflevector <2 x double> %128, <2 x double> poison, <2 x i32> zeroinitializer
  %130 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %129, <2 x double> <double 5.000000e-01, double -5.000000e-01>, <2 x double> %82)
  %131 = insertelement <2 x double> poison, double %124, i64 0
  %132 = shufflevector <2 x double> %131, <2 x double> poison, <2 x i32> zeroinitializer
  %133 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %132, <2 x double> <double 0x3FE07AE147AE147A, double 0x3FE07AE147AE147A>, <2 x double> %130)
  %134 = insertelement <2 x double> <double poison, double 0.000000e+00>, double %124, i64 0
  br label %135

135:                                              ; preds = %116, %.thread322
  %.2 = phi double [ %126, %116 ], [ %89, %.thread322 ]
  %.0261 = phi double [ 3.090000e+00, %116 ], [ %101, %.thread322 ]
  %136 = phi <2 x double> [ %133, %116 ], [ %83, %.thread322 ]
  %137 = phi <2 x double> [ %134, %116 ], [ %113, %.thread322 ]
  %or.cond21 = and i1 %115, %81
  br i1 %or.cond21, label %138, label %157

138:                                              ; preds = %135
  %139 = fadd double %86, %0
  %140 = fadd double %139, %87
  %141 = extractelement <2 x double> %136, i64 1
  %142 = fadd double %141, %.2
  %143 = extractelement <2 x double> %136, i64 0
  %144 = fadd double %143, %142
  %145 = tail call double @llvm.fmuladd.f64(double %144, double 2.000000e+00, double %140)
  %146 = fdiv double %145, 3.000000e+00
  %147 = fsub double 1.000000e+00, %146
  %148 = tail call double @llvm.fmuladd.f64(double %147, double -2.000000e+00, double %.2)
  %149 = fsub double %86, %87
  %150 = insertelement <2 x double> poison, double %147, i64 0
  %151 = shufflevector <2 x double> %150, <2 x double> poison, <2 x i32> zeroinitializer
  %152 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %151, <2 x double> <double -5.000000e-01, double -5.000000e-01>, <2 x double> %136)
  %153 = insertelement <2 x double> poison, double %149, i64 0
  %154 = shufflevector <2 x double> %153, <2 x double> poison, <2 x i32> zeroinitializer
  %155 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %154, <2 x double> <double -5.000000e-01, double 5.000000e-01>, <2 x double> %152)
  %156 = insertelement <2 x double> <double poison, double 0.000000e+00>, double %147, i64 0
  br label %157

157:                                              ; preds = %138, %135
  %.2269 = phi double [ %148, %138 ], [ %91, %135 ]
  %.1262 = phi double [ 3.000000e+00, %138 ], [ %.0261, %135 ]
  %158 = phi <2 x double> [ %155, %138 ], [ %82, %135 ]
  %159 = phi <2 x double> [ %156, %138 ], [ %137, %135 ]
  %160 = extractelement <2 x double> %159, i64 1
  %161 = fmul double %160, %160
  %162 = extractelement <2 x double> %159, i64 0
  %163 = tail call double @llvm.fmuladd.f64(double %162, double %162, double %161)
  %164 = fmul double %163, 1.500000e+00
  %165 = load double, ptr @omega, align 8, !tbaa !5
  %166 = fsub double 1.000000e+00, %165
  %167 = fmul double %.1262, 0x3FDC71C71C71C71C
  %168 = fsub double 1.000000e+00, %164
  %169 = fmul double %167, %168
  %170 = fmul double %165, %169
  %171 = tail call double @llvm.fmuladd.f64(double %166, double %0, double %170)
  store double %171, ptr %9, align 8, !tbaa !5
  %172 = fmul double %.1262, 0x3FBC71C71C71C71C
  %173 = tail call double @llvm.fmuladd.f64(double %160, double 3.000000e+00, double 1.000000e+00)
  %174 = fmul double %160, 4.500000e+00
  %175 = tail call double @llvm.fmuladd.f64(double %174, double %160, double %173)
  %176 = fsub double %175, %164
  %177 = fmul double %172, %176
  %178 = fmul double %165, %177
  %179 = tail call double @llvm.fmuladd.f64(double %166, double %86, double %178)
  store double %179, ptr %10, align 8, !tbaa !5
  %180 = tail call double @llvm.fmuladd.f64(double %160, double -3.000000e+00, double 1.000000e+00)
  %181 = tail call double @llvm.fmuladd.f64(double %174, double %160, double %180)
  %182 = fsub double %181, %164
  %183 = fmul double %172, %182
  %184 = fmul double %165, %183
  %185 = tail call double @llvm.fmuladd.f64(double %166, double %87, double %184)
  store double %185, ptr %11, align 8, !tbaa !5
  %186 = tail call double @llvm.fmuladd.f64(double %162, double 3.000000e+00, double 1.000000e+00)
  %187 = fmul double %162, 4.500000e+00
  %188 = tail call double @llvm.fmuladd.f64(double %187, double %162, double %186)
  %189 = fsub double %188, %164
  %190 = fmul double %172, %189
  %191 = fmul double %165, %190
  %192 = tail call double @llvm.fmuladd.f64(double %166, double %.2, double %191)
  store double %192, ptr %12, align 8, !tbaa !5
  %193 = tail call double @llvm.fmuladd.f64(double %162, double -3.000000e+00, double 1.000000e+00)
  %194 = tail call double @llvm.fmuladd.f64(double %187, double %162, double %193)
  %195 = fsub double %194, %164
  %196 = fmul double %172, %195
  %197 = fmul double %165, %196
  %198 = tail call double @llvm.fmuladd.f64(double %166, double %.2269, double %197)
  store double %198, ptr %13, align 8, !tbaa !5
  %199 = fmul double %.1262, 0x3F9C71C71C71C71C
  %200 = fadd double %162, %160
  %201 = tail call double @llvm.fmuladd.f64(double %200, double 3.000000e+00, double 1.000000e+00)
  %202 = fmul double %200, 4.500000e+00
  %203 = tail call double @llvm.fmuladd.f64(double %202, double %200, double %201)
  %204 = fsub double %203, %164
  %205 = fmul double %199, %204
  %206 = fmul double %165, %205
  %207 = extractelement <2 x double> %136, i64 1
  %208 = tail call double @llvm.fmuladd.f64(double %166, double %207, double %206)
  store double %208, ptr %14, align 8, !tbaa !5
  %209 = fneg double %162
  %210 = fsub double %160, %162
  %211 = tail call double @llvm.fmuladd.f64(double %210, double 3.000000e+00, double 1.000000e+00)
  %212 = fmul double %210, 4.500000e+00
  %213 = tail call double @llvm.fmuladd.f64(double %212, double %210, double %211)
  %214 = fsub double %213, %164
  %215 = fmul double %199, %214
  %216 = fmul double %165, %215
  %217 = extractelement <2 x double> %158, i64 0
  %218 = tail call double @llvm.fmuladd.f64(double %166, double %217, double %216)
  store double %218, ptr %15, align 8, !tbaa !5
  %219 = fsub double %162, %160
  %220 = tail call double @llvm.fmuladd.f64(double %219, double 3.000000e+00, double 1.000000e+00)
  %221 = fmul double %219, 4.500000e+00
  %222 = tail call double @llvm.fmuladd.f64(double %221, double %219, double %220)
  %223 = fsub double %222, %164
  %224 = fmul double %199, %223
  %225 = fmul double %165, %224
  %226 = extractelement <2 x double> %136, i64 0
  %227 = tail call double @llvm.fmuladd.f64(double %166, double %226, double %225)
  store double %227, ptr %16, align 8, !tbaa !5
  %228 = fsub double %209, %160
  %229 = tail call double @llvm.fmuladd.f64(double %228, double 3.000000e+00, double 1.000000e+00)
  %230 = fmul double %228, 4.500000e+00
  %231 = tail call double @llvm.fmuladd.f64(double %230, double %228, double %229)
  %232 = fsub double %231, %164
  %233 = fmul double %199, %232
  %234 = fmul double %165, %233
  %235 = extractelement <2 x double> %158, i64 1
  %236 = tail call double @llvm.fmuladd.f64(double %166, double %235, double %234)
  store double %236, ptr %17, align 8, !tbaa !5
  br label %237

237:                                              ; preds = %157, %26
  ret void
}

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #1

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #2

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

!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 = !{!"double", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}


; Effective O3 passes: ConstraintEliminationPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass