; LLVM IR from bondhugula/pluto :: examples/lbm/fpc/d2q9 (fpc_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
@circle_R2 = 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 double, align 8
  %48 = 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) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #4
  %49 = load i32, ptr %42, align 4, !tbaa !11
  %50 = sitofp i32 %49 to double
  %51 = fsub double %50, 2.048000e+02
  %52 = call double @pow(double noundef %51, double noundef 2.000000e+00) #4
  %53 = load i32, ptr %41, align 4, !tbaa !11
  %54 = sitofp i32 %53 to double
  %55 = fsub double %54, 1.300000e+02
  %56 = call double @pow(double noundef %55, double noundef 2.000000e+00) #4
  %57 = fadd double %52, %56
  store double %57, ptr %47, align 8, !tbaa !5
  %58 = load i32, ptr %41, align 4, !tbaa !11
  %59 = icmp eq i32 %58, 3
  br i1 %59, label %63, label %60

60:                                               ; preds = %21
  %61 = load i32, ptr %41, align 4, !tbaa !11
  %62 = icmp eq i32 %61, 258
  br i1 %62, label %63, label %69

63:                                               ; preds = %60, %21
  %64 = load i32, ptr %42, align 4, !tbaa !11
  %65 = icmp sgt i32 %64, 2
  br i1 %65, label %66, label %69

66:                                               ; preds = %63
  %67 = load i32, ptr %42, align 4, !tbaa !11
  %68 = icmp slt i32 %67, 1025
  br i1 %68, label %73, label %69

69:                                               ; preds = %66, %63, %60
  %70 = load double, ptr %47, align 8, !tbaa !5
  %71 = load double, ptr @circle_R2, align 8, !tbaa !5
  %72 = fcmp ole double %70, %71
  br i1 %72, label %73, label %92

73:                                               ; preds = %69, %66
  %74 = load double, ptr %22, align 8, !tbaa !5
  %75 = load ptr, ptr %31, align 8, !tbaa !9
  store double %74, ptr %75, align 8, !tbaa !5
  %76 = load double, ptr %23, align 8, !tbaa !5
  %77 = load ptr, ptr %33, align 8, !tbaa !9
  store double %76, ptr %77, align 8, !tbaa !5
  %78 = load double, ptr %24, align 8, !tbaa !5
  %79 = load ptr, ptr %32, align 8, !tbaa !9
  store double %78, ptr %79, align 8, !tbaa !5
  %80 = load double, ptr %25, align 8, !tbaa !5
  %81 = load ptr, ptr %35, align 8, !tbaa !9
  store double %80, ptr %81, align 8, !tbaa !5
  %82 = load double, ptr %26, align 8, !tbaa !5
  %83 = load ptr, ptr %34, align 8, !tbaa !9
  store double %82, ptr %83, align 8, !tbaa !5
  %84 = load double, ptr %27, align 8, !tbaa !5
  %85 = load ptr, ptr %39, align 8, !tbaa !9
  store double %84, ptr %85, align 8, !tbaa !5
  %86 = load double, ptr %28, align 8, !tbaa !5
  %87 = load ptr, ptr %38, align 8, !tbaa !9
  store double %86, ptr %87, align 8, !tbaa !5
  %88 = load double, ptr %29, align 8, !tbaa !5
  %89 = load ptr, ptr %37, align 8, !tbaa !9
  store double %88, ptr %89, align 8, !tbaa !5
  %90 = load double, ptr %30, align 8, !tbaa !5
  %91 = load ptr, ptr %36, align 8, !tbaa !9
  store double %90, ptr %91, align 8, !tbaa !5
  store i32 1, ptr %48, align 4
  br label %572

92:                                               ; preds = %69
  %93 = load i32, ptr %42, align 4, !tbaa !11
  %94 = icmp eq i32 %93, 2
  br i1 %94, label %95, label %132

95:                                               ; preds = %92
  %96 = load i32, ptr %41, align 4, !tbaa !11
  %97 = icmp eq i32 %96, 3
  br i1 %97, label %98, label %132

98:                                               ; preds = %95
  %99 = load double, ptr %26, align 8, !tbaa !5
  store double %99, ptr %25, align 8, !tbaa !5
  %100 = load double, ptr %24, align 8, !tbaa !5
  store double %100, ptr %23, align 8, !tbaa !5
  %101 = load double, ptr %30, align 8, !tbaa !5
  store double %101, ptr %27, align 8, !tbaa !5
  %102 = load double, ptr %22, align 8, !tbaa !5
  %103 = load double, ptr %25, align 8, !tbaa !5
  %104 = fadd double %102, %103
  %105 = load double, ptr %26, align 8, !tbaa !5
  %106 = fadd double %104, %105
  %107 = load double, ptr %23, align 8, !tbaa !5
  %108 = fadd double %106, %107
  %109 = load double, ptr %24, align 8, !tbaa !5
  %110 = fadd double %108, %109
  %111 = load double, ptr %27, align 8, !tbaa !5
  %112 = fadd double %110, %111
  %113 = load double, ptr %30, align 8, !tbaa !5
  %114 = fadd double %112, %113
  %115 = fsub double 3.090000e+00, %114
  %116 = fmul double 5.000000e-01, %115
  store double %116, ptr %28, align 8, !tbaa !5
  %117 = load double, ptr %22, align 8, !tbaa !5
  %118 = load double, ptr %25, align 8, !tbaa !5
  %119 = fadd double %117, %118
  %120 = load double, ptr %26, align 8, !tbaa !5
  %121 = fadd double %119, %120
  %122 = load double, ptr %23, align 8, !tbaa !5
  %123 = fadd double %121, %122
  %124 = load double, ptr %24, align 8, !tbaa !5
  %125 = fadd double %123, %124
  %126 = load double, ptr %27, align 8, !tbaa !5
  %127 = fadd double %125, %126
  %128 = load double, ptr %30, align 8, !tbaa !5
  %129 = fadd double %127, %128
  %130 = fsub double 3.090000e+00, %129
  %131 = fmul double 5.000000e-01, %130
  store double %131, ptr %29, align 8, !tbaa !5
  br label %132

132:                                              ; preds = %98, %95, %92
  %133 = load i32, ptr %42, align 4, !tbaa !11
  %134 = icmp eq i32 %133, 2
  br i1 %134, label %135, label %172

135:                                              ; preds = %132
  %136 = load i32, ptr %41, align 4, !tbaa !11
  %137 = icmp eq i32 %136, 258
  br i1 %137, label %138, label %172

138:                                              ; preds = %135
  %139 = load double, ptr %26, align 8, !tbaa !5
  store double %139, ptr %25, align 8, !tbaa !5
  %140 = load double, ptr %23, align 8, !tbaa !5
  store double %140, ptr %24, align 8, !tbaa !5
  %141 = load double, ptr %28, align 8, !tbaa !5
  store double %141, ptr %29, align 8, !tbaa !5
  %142 = load double, ptr %22, align 8, !tbaa !5
  %143 = load double, ptr %25, align 8, !tbaa !5
  %144 = fadd double %142, %143
  %145 = load double, ptr %26, align 8, !tbaa !5
  %146 = fadd double %144, %145
  %147 = load double, ptr %23, align 8, !tbaa !5
  %148 = fadd double %146, %147
  %149 = load double, ptr %24, align 8, !tbaa !5
  %150 = fadd double %148, %149
  %151 = load double, ptr %29, align 8, !tbaa !5
  %152 = fadd double %150, %151
  %153 = load double, ptr %28, align 8, !tbaa !5
  %154 = fadd double %152, %153
  %155 = fsub double 3.090000e+00, %154
  %156 = fmul double 5.000000e-01, %155
  store double %156, ptr %30, align 8, !tbaa !5
  %157 = load double, ptr %22, align 8, !tbaa !5
  %158 = load double, ptr %25, align 8, !tbaa !5
  %159 = fadd double %157, %158
  %160 = load double, ptr %26, align 8, !tbaa !5
  %161 = fadd double %159, %160
  %162 = load double, ptr %23, align 8, !tbaa !5
  %163 = fadd double %161, %162
  %164 = load double, ptr %24, align 8, !tbaa !5
  %165 = fadd double %163, %164
  %166 = load double, ptr %29, align 8, !tbaa !5
  %167 = fadd double %165, %166
  %168 = load double, ptr %28, align 8, !tbaa !5
  %169 = fadd double %167, %168
  %170 = fsub double 3.090000e+00, %169
  %171 = fmul double 5.000000e-01, %170
  store double %171, ptr %27, align 8, !tbaa !5
  br label %172

172:                                              ; preds = %138, %135, %132
  %173 = load i32, ptr %42, align 4, !tbaa !11
  %174 = icmp eq i32 %173, 1025
  br i1 %174, label %175, label %212

175:                                              ; preds = %172
  %176 = load i32, ptr %41, align 4, !tbaa !11
  %177 = icmp eq i32 %176, 3
  br i1 %177, label %178, label %212

178:                                              ; preds = %175
  %179 = load double, ptr %25, align 8, !tbaa !5
  store double %179, ptr %26, align 8, !tbaa !5
  %180 = load double, ptr %24, align 8, !tbaa !5
  store double %180, ptr %23, align 8, !tbaa !5
  %181 = load double, ptr %29, align 8, !tbaa !5
  store double %181, ptr %28, align 8, !tbaa !5
  %182 = load double, ptr %22, align 8, !tbaa !5
  %183 = load double, ptr %25, align 8, !tbaa !5
  %184 = fadd double %182, %183
  %185 = load double, ptr %26, align 8, !tbaa !5
  %186 = fadd double %184, %185
  %187 = load double, ptr %23, align 8, !tbaa !5
  %188 = fadd double %186, %187
  %189 = load double, ptr %24, align 8, !tbaa !5
  %190 = fadd double %188, %189
  %191 = load double, ptr %28, align 8, !tbaa !5
  %192 = fadd double %190, %191
  %193 = load double, ptr %29, align 8, !tbaa !5
  %194 = fadd double %192, %193
  %195 = fsub double 3.000000e+00, %194
  %196 = fmul double 5.000000e-01, %195
  store double %196, ptr %27, align 8, !tbaa !5
  %197 = load double, ptr %22, align 8, !tbaa !5
  %198 = load double, ptr %25, align 8, !tbaa !5
  %199 = fadd double %197, %198
  %200 = load double, ptr %26, align 8, !tbaa !5
  %201 = fadd double %199, %200
  %202 = load double, ptr %23, align 8, !tbaa !5
  %203 = fadd double %201, %202
  %204 = load double, ptr %24, align 8, !tbaa !5
  %205 = fadd double %203, %204
  %206 = load double, ptr %28, align 8, !tbaa !5
  %207 = fadd double %205, %206
  %208 = load double, ptr %29, align 8, !tbaa !5
  %209 = fadd double %207, %208
  %210 = fsub double 3.000000e+00, %209
  %211 = fmul double 5.000000e-01, %210
  store double %211, ptr %30, align 8, !tbaa !5
  br label %212

212:                                              ; preds = %178, %175, %172
  %213 = load i32, ptr %42, align 4, !tbaa !11
  %214 = icmp eq i32 %213, 1025
  br i1 %214, label %215, label %252

215:                                              ; preds = %212
  %216 = load i32, ptr %41, align 4, !tbaa !11
  %217 = icmp eq i32 %216, 3
  br i1 %217, label %218, label %252

218:                                              ; preds = %215
  %219 = load double, ptr %25, align 8, !tbaa !5
  store double %219, ptr %26, align 8, !tbaa !5
  %220 = load double, ptr %23, align 8, !tbaa !5
  store double %220, ptr %24, align 8, !tbaa !5
  %221 = load double, ptr %27, align 8, !tbaa !5
  store double %221, ptr %30, align 8, !tbaa !5
  %222 = load double, ptr %22, align 8, !tbaa !5
  %223 = load double, ptr %25, align 8, !tbaa !5
  %224 = fadd double %222, %223
  %225 = load double, ptr %26, align 8, !tbaa !5
  %226 = fadd double %224, %225
  %227 = load double, ptr %23, align 8, !tbaa !5
  %228 = fadd double %226, %227
  %229 = load double, ptr %24, align 8, !tbaa !5
  %230 = fadd double %228, %229
  %231 = load double, ptr %27, align 8, !tbaa !5
  %232 = fadd double %230, %231
  %233 = load double, ptr %30, align 8, !tbaa !5
  %234 = fadd double %232, %233
  %235 = fsub double 3.000000e+00, %234
  %236 = fmul double 5.000000e-01, %235
  store double %236, ptr %28, align 8, !tbaa !5
  %237 = load double, ptr %22, align 8, !tbaa !5
  %238 = load double, ptr %25, align 8, !tbaa !5
  %239 = fadd double %237, %238
  %240 = load double, ptr %26, align 8, !tbaa !5
  %241 = fadd double %239, %240
  %242 = load double, ptr %23, align 8, !tbaa !5
  %243 = fadd double %241, %242
  %244 = load double, ptr %24, 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 %30, align 8, !tbaa !5
  %249 = fadd double %247, %248
  %250 = fsub double 3.000000e+00, %249
  %251 = fmul double 5.000000e-01, %250
  store double %251, ptr %29, align 8, !tbaa !5
  br label %252

252:                                              ; preds = %218, %215, %212
  %253 = load double, ptr %23, align 8, !tbaa !5
  %254 = load double, ptr %24, align 8, !tbaa !5
  %255 = fadd double %253, %254
  %256 = load double, ptr %25, align 8, !tbaa !5
  %257 = fadd double %255, %256
  %258 = load double, ptr %26, align 8, !tbaa !5
  %259 = fadd double %257, %258
  %260 = load double, ptr %27, align 8, !tbaa !5
  %261 = fadd double %259, %260
  %262 = load double, ptr %28, align 8, !tbaa !5
  %263 = fadd double %261, %262
  %264 = load double, ptr %29, align 8, !tbaa !5
  %265 = fadd double %263, %264
  %266 = load double, ptr %30, align 8, !tbaa !5
  %267 = fadd double %265, %266
  %268 = load double, ptr %22, align 8, !tbaa !5
  %269 = fadd double %267, %268
  store double %269, ptr %43, align 8, !tbaa !5
  %270 = load double, ptr %29, align 8, !tbaa !5
  %271 = load double, ptr %25, 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 %26, align 8, !tbaa !5
  %277 = fadd double %275, %276
  %278 = load double, ptr %28, align 8, !tbaa !5
  %279 = fadd double %277, %278
  %280 = fsub double %274, %279
  store double %280, ptr %44, align 8, !tbaa !5
  %281 = load double, ptr %44, align 8, !tbaa !5
  %282 = load double, ptr %43, align 8, !tbaa !5
  %283 = fdiv double %281, %282
  store double %283, ptr %44, align 8, !tbaa !5
  %284 = load double, ptr %28, align 8, !tbaa !5
  %285 = load double, ptr %23, align 8, !tbaa !5
  %286 = fadd double %284, %285
  %287 = load double, ptr %27, align 8, !tbaa !5
  %288 = fadd double %286, %287
  %289 = load double, ptr %30, align 8, !tbaa !5
  %290 = load double, ptr %24, align 8, !tbaa !5
  %291 = fadd double %289, %290
  %292 = load double, ptr %29, align 8, !tbaa !5
  %293 = fadd double %291, %292
  %294 = fsub double %288, %293
  store double %294, ptr %45, align 8, !tbaa !5
  %295 = load double, ptr %45, align 8, !tbaa !5
  %296 = load double, ptr %43, align 8, !tbaa !5
  %297 = fdiv double %295, %296
  store double %297, ptr %45, align 8, !tbaa !5
  %298 = load i32, ptr %42, align 4, !tbaa !11
  %299 = icmp eq i32 %298, 2
  br i1 %299, label %300, label %338

300:                                              ; preds = %252
  %301 = load i32, ptr %41, align 4, !tbaa !11
  %302 = icmp sgt i32 %301, 3
  br i1 %302, label %303, label %338

303:                                              ; preds = %300
  %304 = load i32, ptr %41, align 4, !tbaa !11
  %305 = icmp slt i32 %304, 258
  br i1 %305, label %306, label %338

306:                                              ; preds = %303
  %307 = load double, ptr %22, align 8, !tbaa !5
  %308 = load double, ptr %23, align 8, !tbaa !5
  %309 = fadd double %307, %308
  %310 = load double, ptr %24, align 8, !tbaa !5
  %311 = fadd double %309, %310
  %312 = load double, ptr %28, align 8, !tbaa !5
  %313 = load double, ptr %26, align 8, !tbaa !5
  %314 = fadd double %312, %313
  %315 = load double, ptr %30, align 8, !tbaa !5
  %316 = fadd double %314, %315
  %317 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %316, double %311)
  %318 = fdiv double %317, 3.090000e+00
  %319 = fsub double 1.000000e+00, %318
  store double %319, 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
  %320 = load double, ptr %26, align 8, !tbaa !5
  %321 = load double, ptr %44, align 8, !tbaa !5
  %322 = fmul double 3.090000e+00, %321
  %323 = call double @llvm.fmuladd.f64(double 0x3FE5555555555555, double %322, double %320)
  store double %323, ptr %25, align 8, !tbaa !5
  %324 = load double, ptr %30, align 8, !tbaa !5
  %325 = load double, ptr %23, align 8, !tbaa !5
  %326 = load double, ptr %24, align 8, !tbaa !5
  %327 = fsub double %325, %326
  %328 = call double @llvm.fmuladd.f64(double -5.000000e-01, double %327, double %324)
  %329 = load double, ptr %44, align 8, !tbaa !5
  %330 = call double @llvm.fmuladd.f64(double 0x3FE07AE147AE147A, double %329, double %328)
  store double %330, ptr %27, align 8, !tbaa !5
  %331 = load double, ptr %28, align 8, !tbaa !5
  %332 = load double, ptr %23, align 8, !tbaa !5
  %333 = load double, ptr %24, align 8, !tbaa !5
  %334 = fsub double %332, %333
  %335 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %334, double %331)
  %336 = load double, ptr %44, align 8, !tbaa !5
  %337 = call double @llvm.fmuladd.f64(double 0x3FE07AE147AE147A, double %336, double %335)
  store double %337, ptr %29, align 8, !tbaa !5
  br label %338

338:                                              ; preds = %306, %303, %300, %252
  %339 = load i32, ptr %42, align 4, !tbaa !11
  %340 = icmp eq i32 %339, 1025
  br i1 %340, label %341, label %378

341:                                              ; preds = %338
  %342 = load i32, ptr %41, align 4, !tbaa !11
  %343 = icmp sgt i32 %342, 3
  br i1 %343, label %344, label %378

344:                                              ; preds = %341
  %345 = load i32, ptr %41, align 4, !tbaa !11
  %346 = icmp slt i32 %345, 258
  br i1 %346, label %347, label %378

347:                                              ; preds = %344
  %348 = load double, ptr %22, align 8, !tbaa !5
  %349 = load double, ptr %23, align 8, !tbaa !5
  %350 = fadd double %348, %349
  %351 = load double, ptr %24, align 8, !tbaa !5
  %352 = fadd double %350, %351
  %353 = load double, ptr %27, align 8, !tbaa !5
  %354 = load double, ptr %25, align 8, !tbaa !5
  %355 = fadd double %353, %354
  %356 = load double, ptr %29, align 8, !tbaa !5
  %357 = fadd double %355, %356
  %358 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %357, double %352)
  %359 = fdiv double %358, 3.000000e+00
  %360 = fsub double 1.000000e+00, %359
  store double %360, 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
  %361 = load double, ptr %25, align 8, !tbaa !5
  %362 = load double, ptr %44, align 8, !tbaa !5
  %363 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %362, double %361)
  store double %363, ptr %26, align 8, !tbaa !5
  %364 = load double, ptr %29, align 8, !tbaa !5
  %365 = load double, ptr %44, align 8, !tbaa !5
  %366 = call double @llvm.fmuladd.f64(double -5.000000e-01, double %365, double %364)
  %367 = load double, ptr %23, align 8, !tbaa !5
  %368 = load double, ptr %24, align 8, !tbaa !5
  %369 = fsub double %367, %368
  %370 = call double @llvm.fmuladd.f64(double -5.000000e-01, double %369, double %366)
  store double %370, ptr %28, align 8, !tbaa !5
  %371 = load double, ptr %27, align 8, !tbaa !5
  %372 = load double, ptr %44, align 8, !tbaa !5
  %373 = call double @llvm.fmuladd.f64(double -5.000000e-01, double %372, double %371)
  %374 = load double, ptr %23, align 8, !tbaa !5
  %375 = load double, ptr %24, align 8, !tbaa !5
  %376 = fsub double %374, %375
  %377 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %376, double %373)
  store double %377, ptr %30, align 8, !tbaa !5
  br label %378

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

572:                                              ; preds = %378, %73
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  %573 = load i32, ptr %48, align 4
  switch i32 %573, label %575 [
    i32 0, label %574
    i32 1, label %574
  ]

574:                                              ; preds = %572, %572
  ret void

575:                                              ; preds = %572
  unreachable
}

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

; Function Attrs: nounwind
declare double @pow(double noundef, double noundef) #2

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

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 = { 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 #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { 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
@circle_R2 = 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 %36, label %26

26:                                               ; preds = %21
  %27 = insertelement <2 x i32> poison, i32 %19, i64 0
  %28 = insertelement <2 x i32> %27, i32 %20, i64 1
  %29 = sitofp <2 x i32> %28 to <2 x double>
  %30 = fadd <2 x double> %29, <double -1.300000e+02, double -2.048000e+02>
  %31 = fmul <2 x double> %30, %30
  %shift = shufflevector <2 x double> %31, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %32 = fadd <2 x double> %31, %shift
  %33 = extractelement <2 x double> %32, i64 0
  %34 = load double, ptr @circle_R2, align 8, !tbaa !5
  %35 = fcmp ugt double %33, %34
  br i1 %35, label %37, label %36

36:                                               ; preds = %21, %26
  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 %247

37:                                               ; preds = %26
  %38 = icmp eq i32 %20, 2
  %or.cond7 = and i1 %22, %38
  br i1 %or.cond7, label %.thread, label %51

.thread:                                          ; preds = %37
  %39 = fadd double %0, %4
  %40 = fadd double %39, %4
  %41 = fadd double %40, %2
  %42 = fadd double %41, %2
  %43 = fadd double %42, %8
  %44 = fadd double %43, %8
  %45 = fsub double 3.090000e+00, %44
  %46 = fmul double %45, 5.000000e-01
  %47 = insertelement <2 x double> poison, double %46, i64 0
  %48 = insertelement <2 x double> %47, double %8, i64 1
  %49 = insertelement <2 x double> poison, double %4, i64 0
  %50 = insertelement <2 x double> %49, double %2, i64 1
  br label %.thread326

51:                                               ; preds = %37
  %or.cond9 = and i1 %23, %38
  br i1 %or.cond9, label %52, label %65

52:                                               ; preds = %51
  %53 = fadd double %0, %4
  %54 = fadd double %53, %4
  %55 = fadd double %54, %1
  %56 = fadd double %55, %1
  %57 = fadd double %56, %6
  %58 = fadd double %57, %6
  %59 = fsub double 3.090000e+00, %58
  %60 = fmul double %59, 5.000000e-01
  %61 = insertelement <2 x double> poison, double %6, i64 0
  %62 = insertelement <2 x double> %61, double %60, i64 1
  %63 = insertelement <2 x double> poison, double %4, i64 0
  %64 = insertelement <2 x double> %63, double %1, i64 1
  br label %.thread326

65:                                               ; preds = %51
  %66 = icmp eq i32 %20, 1025
  %or.cond11 = and i1 %22, %66
  %67 = insertelement <2 x double> poison, double %6, i64 0
  %68 = insertelement <2 x double> %67, double %8, i64 1
  %69 = insertelement <2 x double> poison, double %7, i64 0
  %70 = insertelement <2 x double> %69, double %5, i64 1
  %71 = insertelement <2 x double> poison, double %3, i64 0
  %72 = insertelement <2 x double> %71, double %1, i64 1
  %73 = insertelement <2 x double> poison, double %4, i64 0
  %74 = insertelement <2 x double> %73, double %2, i64 1
  br i1 %or.cond11, label %75, label %.thread326

75:                                               ; preds = %65
  %76 = fadd double %0, %3
  %77 = fadd double %76, %3
  %78 = fadd double %77, %2
  %79 = fadd double %78, %2
  %80 = fadd double %79, %7
  %81 = fadd double %80, %7
  %82 = fsub double 3.000000e+00, %81
  %83 = fmul double %82, 5.000000e-01
  %84 = fadd double %79, %83
  %85 = fadd double %83, %84
  %86 = fsub double 3.000000e+00, %85
  %87 = fmul double %86, 5.000000e-01
  %88 = insertelement <2 x double> poison, double %87, i64 0
  %89 = insertelement <2 x double> %88, double %83, i64 1
  %90 = insertelement <2 x double> %74, double %3, i64 0
  br label %.thread326

.thread326:                                       ; preds = %52, %.thread, %65, %75
  %91 = phi i1 [ true, %75 ], [ %66, %65 ], [ false, %.thread ], [ false, %52 ]
  %92 = phi <2 x double> [ %89, %75 ], [ %68, %65 ], [ %48, %.thread ], [ %62, %52 ]
  %93 = phi <2 x double> [ %89, %75 ], [ %70, %65 ], [ %48, %.thread ], [ %62, %52 ]
  %94 = phi <2 x double> [ %90, %75 ], [ %72, %65 ], [ %50, %.thread ], [ %64, %52 ]
  %95 = phi <2 x double> [ %90, %75 ], [ %74, %65 ], [ %50, %.thread ], [ %64, %52 ]
  %96 = extractelement <2 x double> %94, i64 1
  %97 = extractelement <2 x double> %95, i64 1
  %98 = fadd double %96, %97
  %99 = extractelement <2 x double> %94, i64 0
  %100 = fadd double %99, %98
  %101 = extractelement <2 x double> %95, i64 0
  %102 = fadd double %101, %100
  %103 = extractelement <2 x double> %93, i64 1
  %104 = fadd double %103, %102
  %105 = extractelement <2 x double> %92, i64 0
  %106 = fadd double %105, %104
  %107 = extractelement <2 x double> %93, i64 0
  %108 = fadd double %107, %106
  %109 = extractelement <2 x double> %92, i64 1
  %110 = fadd double %109, %108
  %111 = fadd double %110, %0
  %112 = shufflevector <2 x double> %93, <2 x double> %92, <2 x i32> <i32 0, i32 2>
  %113 = fadd <2 x double> %94, %112
  %114 = shufflevector <2 x double> %93, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %115 = fadd <2 x double> %114, %113
  %116 = shufflevector <2 x double> %92, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %117 = fadd <2 x double> %116, %95
  %118 = shufflevector <2 x double> %92, <2 x double> %93, <2 x i32> <i32 0, i32 2>
  %119 = fadd <2 x double> %118, %117
  %120 = fsub <2 x double> %115, %119
  %121 = insertelement <2 x double> poison, double %111, i64 0
  %122 = shufflevector <2 x double> %121, <2 x double> poison, <2 x i32> zeroinitializer
  %123 = fdiv <2 x double> %120, %122
  %124 = add i32 %19, -4
  %125 = icmp ult i32 %124, 254
  %or.cond17 = and i1 %38, %125
  br i1 %or.cond17, label %126, label %145

126:                                              ; preds = %.thread326
  %127 = fadd double %96, %0
  %128 = fadd double %127, %97
  %129 = fadd <2 x double> %92, %95
  %130 = extractelement <2 x double> %129, i64 0
  %131 = fadd double %109, %130
  %132 = tail call double @llvm.fmuladd.f64(double %131, double 2.000000e+00, double %128)
  %133 = fdiv double %132, 3.090000e+00
  %134 = fsub double 1.000000e+00, %133
  %135 = fmul double %134, 3.090000e+00
  %136 = tail call double @llvm.fmuladd.f64(double %135, double 0x3FE5555555555555, double %101)
  %137 = fsub double %96, %97
  %138 = insertelement <2 x double> poison, double %137, i64 0
  %139 = shufflevector <2 x double> %138, <2 x double> poison, <2 x i32> zeroinitializer
  %140 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %139, <2 x double> <double 5.000000e-01, double -5.000000e-01>, <2 x double> %92)
  %141 = insertelement <2 x double> poison, double %134, i64 0
  %142 = shufflevector <2 x double> %141, <2 x double> poison, <2 x i32> zeroinitializer
  %143 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %142, <2 x double> <double 0x3FE07AE147AE147A, double 0x3FE07AE147AE147A>, <2 x double> %140)
  %144 = insertelement <2 x double> <double poison, double 0.000000e+00>, double %134, i64 0
  br label %145

145:                                              ; preds = %126, %.thread326
  %.2 = phi double [ %136, %126 ], [ %99, %.thread326 ]
  %.0266 = phi double [ 3.090000e+00, %126 ], [ %111, %.thread326 ]
  %146 = phi <2 x double> [ %143, %126 ], [ %93, %.thread326 ]
  %147 = phi <2 x double> [ %144, %126 ], [ %123, %.thread326 ]
  %or.cond21 = and i1 %125, %91
  br i1 %or.cond21, label %148, label %167

148:                                              ; preds = %145
  %149 = fadd double %96, %0
  %150 = fadd double %149, %97
  %151 = extractelement <2 x double> %146, i64 1
  %152 = fadd double %151, %.2
  %153 = extractelement <2 x double> %146, i64 0
  %154 = fadd double %153, %152
  %155 = tail call double @llvm.fmuladd.f64(double %154, double 2.000000e+00, double %150)
  %156 = fdiv double %155, 3.000000e+00
  %157 = fsub double 1.000000e+00, %156
  %158 = tail call double @llvm.fmuladd.f64(double %157, double -2.000000e+00, double %.2)
  %159 = fsub double %96, %97
  %160 = insertelement <2 x double> poison, double %157, i64 0
  %161 = shufflevector <2 x double> %160, <2 x double> poison, <2 x i32> zeroinitializer
  %162 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %161, <2 x double> <double -5.000000e-01, double -5.000000e-01>, <2 x double> %146)
  %163 = insertelement <2 x double> poison, double %159, i64 0
  %164 = shufflevector <2 x double> %163, <2 x double> poison, <2 x i32> zeroinitializer
  %165 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %164, <2 x double> <double -5.000000e-01, double 5.000000e-01>, <2 x double> %162)
  %166 = insertelement <2 x double> <double poison, double 0.000000e+00>, double %157, i64 0
  br label %167

167:                                              ; preds = %148, %145
  %.2272 = phi double [ %158, %148 ], [ %101, %145 ]
  %.1267 = phi double [ 3.000000e+00, %148 ], [ %.0266, %145 ]
  %168 = phi <2 x double> [ %165, %148 ], [ %92, %145 ]
  %169 = phi <2 x double> [ %166, %148 ], [ %147, %145 ]
  %170 = extractelement <2 x double> %169, i64 1
  %171 = fmul double %170, %170
  %172 = extractelement <2 x double> %169, i64 0
  %173 = tail call double @llvm.fmuladd.f64(double %172, double %172, double %171)
  %174 = fmul double %173, 1.500000e+00
  %175 = load double, ptr @omega, align 8, !tbaa !5
  %176 = fsub double 1.000000e+00, %175
  %177 = fmul double %.1267, 0x3FDC71C71C71C71C
  %178 = fsub double 1.000000e+00, %174
  %179 = fmul double %177, %178
  %180 = fmul double %175, %179
  %181 = tail call double @llvm.fmuladd.f64(double %176, double %0, double %180)
  store double %181, ptr %9, align 8, !tbaa !5
  %182 = fmul double %.1267, 0x3FBC71C71C71C71C
  %183 = tail call double @llvm.fmuladd.f64(double %170, double 3.000000e+00, double 1.000000e+00)
  %184 = fmul double %170, 4.500000e+00
  %185 = tail call double @llvm.fmuladd.f64(double %184, double %170, double %183)
  %186 = fsub double %185, %174
  %187 = fmul double %182, %186
  %188 = fmul double %175, %187
  %189 = tail call double @llvm.fmuladd.f64(double %176, double %96, double %188)
  store double %189, ptr %10, align 8, !tbaa !5
  %190 = tail call double @llvm.fmuladd.f64(double %170, double -3.000000e+00, double 1.000000e+00)
  %191 = tail call double @llvm.fmuladd.f64(double %184, double %170, double %190)
  %192 = fsub double %191, %174
  %193 = fmul double %182, %192
  %194 = fmul double %175, %193
  %195 = tail call double @llvm.fmuladd.f64(double %176, double %97, double %194)
  store double %195, ptr %11, align 8, !tbaa !5
  %196 = tail call double @llvm.fmuladd.f64(double %172, double 3.000000e+00, double 1.000000e+00)
  %197 = fmul double %172, 4.500000e+00
  %198 = tail call double @llvm.fmuladd.f64(double %197, double %172, double %196)
  %199 = fsub double %198, %174
  %200 = fmul double %182, %199
  %201 = fmul double %175, %200
  %202 = tail call double @llvm.fmuladd.f64(double %176, double %.2, double %201)
  store double %202, ptr %12, align 8, !tbaa !5
  %203 = tail call double @llvm.fmuladd.f64(double %172, double -3.000000e+00, double 1.000000e+00)
  %204 = tail call double @llvm.fmuladd.f64(double %197, double %172, double %203)
  %205 = fsub double %204, %174
  %206 = fmul double %182, %205
  %207 = fmul double %175, %206
  %208 = tail call double @llvm.fmuladd.f64(double %176, double %.2272, double %207)
  store double %208, ptr %13, align 8, !tbaa !5
  %209 = fmul double %.1267, 0x3F9C71C71C71C71C
  %210 = fadd double %172, %170
  %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, %174
  %215 = fmul double %209, %214
  %216 = fmul double %175, %215
  %217 = extractelement <2 x double> %146, i64 1
  %218 = tail call double @llvm.fmuladd.f64(double %176, double %217, double %216)
  store double %218, ptr %14, align 8, !tbaa !5
  %219 = fneg double %172
  %220 = fsub double %170, %172
  %221 = tail call double @llvm.fmuladd.f64(double %220, double 3.000000e+00, double 1.000000e+00)
  %222 = fmul double %220, 4.500000e+00
  %223 = tail call double @llvm.fmuladd.f64(double %222, double %220, double %221)
  %224 = fsub double %223, %174
  %225 = fmul double %209, %224
  %226 = fmul double %175, %225
  %227 = extractelement <2 x double> %168, i64 0
  %228 = tail call double @llvm.fmuladd.f64(double %176, double %227, double %226)
  store double %228, ptr %15, align 8, !tbaa !5
  %229 = fsub double %172, %170
  %230 = tail call double @llvm.fmuladd.f64(double %229, double 3.000000e+00, double 1.000000e+00)
  %231 = fmul double %229, 4.500000e+00
  %232 = tail call double @llvm.fmuladd.f64(double %231, double %229, double %230)
  %233 = fsub double %232, %174
  %234 = fmul double %209, %233
  %235 = fmul double %175, %234
  %236 = extractelement <2 x double> %146, i64 0
  %237 = tail call double @llvm.fmuladd.f64(double %176, double %236, double %235)
  store double %237, ptr %16, align 8, !tbaa !5
  %238 = fsub double %219, %170
  %239 = tail call double @llvm.fmuladd.f64(double %238, double 3.000000e+00, double 1.000000e+00)
  %240 = fmul double %238, 4.500000e+00
  %241 = tail call double @llvm.fmuladd.f64(double %240, double %238, double %239)
  %242 = fsub double %241, %174
  %243 = fmul double %209, %242
  %244 = fmul double %175, %243
  %245 = extractelement <2 x double> %168, i64 1
  %246 = tail call double @llvm.fmuladd.f64(double %176, double %245, double %244)
  store double %246, ptr %17, align 8, !tbaa !5
  br label %247

247:                                              ; preds = %167, %36
  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