; LLVM IR from modlfo/AudioEngine :: AudioEngine/JuceLibraryCode/modules/juce_graphics/image_formats/jpglib (float)

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

; Function Attrs: nounwind uwtable
define dso_local void @jpeg_fdct_float(ptr noundef %0) #0 {
  %2 = alloca ptr, align 8
  %3 = alloca float, align 4
  %4 = alloca float, align 4
  %5 = alloca float, align 4
  %6 = alloca float, align 4
  %7 = alloca float, align 4
  %8 = alloca float, align 4
  %9 = alloca float, align 4
  %10 = alloca float, align 4
  %11 = alloca float, align 4
  %12 = alloca float, align 4
  %13 = alloca float, align 4
  %14 = alloca float, align 4
  %15 = alloca float, align 4
  %16 = alloca float, align 4
  %17 = alloca float, align 4
  %18 = alloca float, align 4
  %19 = alloca float, align 4
  %20 = alloca float, align 4
  %21 = alloca float, align 4
  %22 = alloca ptr, align 8
  %23 = alloca i32, align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #3
  %24 = load ptr, ptr %2, align 8, !tbaa !5
  store ptr %24, ptr %22, align 8, !tbaa !5
  store i32 7, ptr %23, align 4, !tbaa !9
  br label %25

25:                                               ; preds = %170, %1
  %26 = load i32, ptr %23, align 4, !tbaa !9
  %27 = icmp sge i32 %26, 0
  br i1 %27, label %28, label %173

28:                                               ; preds = %25
  %29 = load ptr, ptr %22, align 8, !tbaa !5
  %30 = getelementptr inbounds float, ptr %29, i64 0
  %31 = load float, ptr %30, align 4, !tbaa !11
  %32 = load ptr, ptr %22, align 8, !tbaa !5
  %33 = getelementptr inbounds float, ptr %32, i64 7
  %34 = load float, ptr %33, align 4, !tbaa !11
  %35 = fadd float %31, %34
  store float %35, ptr %3, align 4, !tbaa !11
  %36 = load ptr, ptr %22, align 8, !tbaa !5
  %37 = getelementptr inbounds float, ptr %36, i64 0
  %38 = load float, ptr %37, align 4, !tbaa !11
  %39 = load ptr, ptr %22, align 8, !tbaa !5
  %40 = getelementptr inbounds float, ptr %39, i64 7
  %41 = load float, ptr %40, align 4, !tbaa !11
  %42 = fsub float %38, %41
  store float %42, ptr %10, align 4, !tbaa !11
  %43 = load ptr, ptr %22, align 8, !tbaa !5
  %44 = getelementptr inbounds float, ptr %43, i64 1
  %45 = load float, ptr %44, align 4, !tbaa !11
  %46 = load ptr, ptr %22, align 8, !tbaa !5
  %47 = getelementptr inbounds float, ptr %46, i64 6
  %48 = load float, ptr %47, align 4, !tbaa !11
  %49 = fadd float %45, %48
  store float %49, ptr %4, align 4, !tbaa !11
  %50 = load ptr, ptr %22, align 8, !tbaa !5
  %51 = getelementptr inbounds float, ptr %50, i64 1
  %52 = load float, ptr %51, align 4, !tbaa !11
  %53 = load ptr, ptr %22, align 8, !tbaa !5
  %54 = getelementptr inbounds float, ptr %53, i64 6
  %55 = load float, ptr %54, align 4, !tbaa !11
  %56 = fsub float %52, %55
  store float %56, ptr %9, align 4, !tbaa !11
  %57 = load ptr, ptr %22, align 8, !tbaa !5
  %58 = getelementptr inbounds float, ptr %57, i64 2
  %59 = load float, ptr %58, align 4, !tbaa !11
  %60 = load ptr, ptr %22, align 8, !tbaa !5
  %61 = getelementptr inbounds float, ptr %60, i64 5
  %62 = load float, ptr %61, align 4, !tbaa !11
  %63 = fadd float %59, %62
  store float %63, ptr %5, align 4, !tbaa !11
  %64 = load ptr, ptr %22, align 8, !tbaa !5
  %65 = getelementptr inbounds float, ptr %64, i64 2
  %66 = load float, ptr %65, align 4, !tbaa !11
  %67 = load ptr, ptr %22, align 8, !tbaa !5
  %68 = getelementptr inbounds float, ptr %67, i64 5
  %69 = load float, ptr %68, align 4, !tbaa !11
  %70 = fsub float %66, %69
  store float %70, ptr %8, align 4, !tbaa !11
  %71 = load ptr, ptr %22, align 8, !tbaa !5
  %72 = getelementptr inbounds float, ptr %71, i64 3
  %73 = load float, ptr %72, align 4, !tbaa !11
  %74 = load ptr, ptr %22, align 8, !tbaa !5
  %75 = getelementptr inbounds float, ptr %74, i64 4
  %76 = load float, ptr %75, align 4, !tbaa !11
  %77 = fadd float %73, %76
  store float %77, ptr %6, align 4, !tbaa !11
  %78 = load ptr, ptr %22, align 8, !tbaa !5
  %79 = getelementptr inbounds float, ptr %78, i64 3
  %80 = load float, ptr %79, align 4, !tbaa !11
  %81 = load ptr, ptr %22, align 8, !tbaa !5
  %82 = getelementptr inbounds float, ptr %81, i64 4
  %83 = load float, ptr %82, align 4, !tbaa !11
  %84 = fsub float %80, %83
  store float %84, ptr %7, align 4, !tbaa !11
  %85 = load float, ptr %3, align 4, !tbaa !11
  %86 = load float, ptr %6, align 4, !tbaa !11
  %87 = fadd float %85, %86
  store float %87, ptr %11, align 4, !tbaa !11
  %88 = load float, ptr %3, align 4, !tbaa !11
  %89 = load float, ptr %6, align 4, !tbaa !11
  %90 = fsub float %88, %89
  store float %90, ptr %14, align 4, !tbaa !11
  %91 = load float, ptr %4, align 4, !tbaa !11
  %92 = load float, ptr %5, align 4, !tbaa !11
  %93 = fadd float %91, %92
  store float %93, ptr %12, align 4, !tbaa !11
  %94 = load float, ptr %4, align 4, !tbaa !11
  %95 = load float, ptr %5, align 4, !tbaa !11
  %96 = fsub float %94, %95
  store float %96, ptr %13, align 4, !tbaa !11
  %97 = load float, ptr %11, align 4, !tbaa !11
  %98 = load float, ptr %12, align 4, !tbaa !11
  %99 = fadd float %97, %98
  %100 = load ptr, ptr %22, align 8, !tbaa !5
  %101 = getelementptr inbounds float, ptr %100, i64 0
  store float %99, ptr %101, align 4, !tbaa !11
  %102 = load float, ptr %11, align 4, !tbaa !11
  %103 = load float, ptr %12, align 4, !tbaa !11
  %104 = fsub float %102, %103
  %105 = load ptr, ptr %22, align 8, !tbaa !5
  %106 = getelementptr inbounds float, ptr %105, i64 4
  store float %104, ptr %106, align 4, !tbaa !11
  %107 = load float, ptr %13, align 4, !tbaa !11
  %108 = load float, ptr %14, align 4, !tbaa !11
  %109 = fadd float %107, %108
  %110 = fmul float %109, 0x3FE6A09E60000000
  store float %110, ptr %15, align 4, !tbaa !11
  %111 = load float, ptr %14, align 4, !tbaa !11
  %112 = load float, ptr %15, align 4, !tbaa !11
  %113 = fadd float %111, %112
  %114 = load ptr, ptr %22, align 8, !tbaa !5
  %115 = getelementptr inbounds float, ptr %114, i64 2
  store float %113, ptr %115, align 4, !tbaa !11
  %116 = load float, ptr %14, align 4, !tbaa !11
  %117 = load float, ptr %15, align 4, !tbaa !11
  %118 = fsub float %116, %117
  %119 = load ptr, ptr %22, align 8, !tbaa !5
  %120 = getelementptr inbounds float, ptr %119, i64 6
  store float %118, ptr %120, align 4, !tbaa !11
  %121 = load float, ptr %7, align 4, !tbaa !11
  %122 = load float, ptr %8, align 4, !tbaa !11
  %123 = fadd float %121, %122
  store float %123, ptr %11, align 4, !tbaa !11
  %124 = load float, ptr %8, align 4, !tbaa !11
  %125 = load float, ptr %9, align 4, !tbaa !11
  %126 = fadd float %124, %125
  store float %126, ptr %12, align 4, !tbaa !11
  %127 = load float, ptr %9, align 4, !tbaa !11
  %128 = load float, ptr %10, align 4, !tbaa !11
  %129 = fadd float %127, %128
  store float %129, ptr %13, align 4, !tbaa !11
  %130 = load float, ptr %11, align 4, !tbaa !11
  %131 = load float, ptr %13, align 4, !tbaa !11
  %132 = fsub float %130, %131
  %133 = fmul float %132, 0x3FD87DE2A0000000
  store float %133, ptr %19, align 4, !tbaa !11
  %134 = load float, ptr %11, align 4, !tbaa !11
  %135 = load float, ptr %19, align 4, !tbaa !11
  %136 = call float @llvm.fmuladd.f32(float 0x3FE1517A80000000, float %134, float %135)
  store float %136, ptr %16, align 4, !tbaa !11
  %137 = load float, ptr %13, align 4, !tbaa !11
  %138 = load float, ptr %19, align 4, !tbaa !11
  %139 = call float @llvm.fmuladd.f32(float 0x3FF4E7AEA0000000, float %137, float %138)
  store float %139, ptr %18, align 4, !tbaa !11
  %140 = load float, ptr %12, align 4, !tbaa !11
  %141 = fmul float %140, 0x3FE6A09E60000000
  store float %141, ptr %17, align 4, !tbaa !11
  %142 = load float, ptr %10, align 4, !tbaa !11
  %143 = load float, ptr %17, align 4, !tbaa !11
  %144 = fadd float %142, %143
  store float %144, ptr %20, align 4, !tbaa !11
  %145 = load float, ptr %10, align 4, !tbaa !11
  %146 = load float, ptr %17, align 4, !tbaa !11
  %147 = fsub float %145, %146
  store float %147, ptr %21, align 4, !tbaa !11
  %148 = load float, ptr %21, align 4, !tbaa !11
  %149 = load float, ptr %16, align 4, !tbaa !11
  %150 = fadd float %148, %149
  %151 = load ptr, ptr %22, align 8, !tbaa !5
  %152 = getelementptr inbounds float, ptr %151, i64 5
  store float %150, ptr %152, align 4, !tbaa !11
  %153 = load float, ptr %21, align 4, !tbaa !11
  %154 = load float, ptr %16, align 4, !tbaa !11
  %155 = fsub float %153, %154
  %156 = load ptr, ptr %22, align 8, !tbaa !5
  %157 = getelementptr inbounds float, ptr %156, i64 3
  store float %155, ptr %157, align 4, !tbaa !11
  %158 = load float, ptr %20, align 4, !tbaa !11
  %159 = load float, ptr %18, align 4, !tbaa !11
  %160 = fadd float %158, %159
  %161 = load ptr, ptr %22, align 8, !tbaa !5
  %162 = getelementptr inbounds float, ptr %161, i64 1
  store float %160, ptr %162, align 4, !tbaa !11
  %163 = load float, ptr %20, align 4, !tbaa !11
  %164 = load float, ptr %18, align 4, !tbaa !11
  %165 = fsub float %163, %164
  %166 = load ptr, ptr %22, align 8, !tbaa !5
  %167 = getelementptr inbounds float, ptr %166, i64 7
  store float %165, ptr %167, align 4, !tbaa !11
  %168 = load ptr, ptr %22, align 8, !tbaa !5
  %169 = getelementptr inbounds float, ptr %168, i64 8
  store ptr %169, ptr %22, align 8, !tbaa !5
  br label %170

170:                                              ; preds = %28
  %171 = load i32, ptr %23, align 4, !tbaa !9
  %172 = add nsw i32 %171, -1
  store i32 %172, ptr %23, align 4, !tbaa !9
  br label %25, !llvm.loop !13

173:                                              ; preds = %25
  %174 = load ptr, ptr %2, align 8, !tbaa !5
  store ptr %174, ptr %22, align 8, !tbaa !5
  store i32 7, ptr %23, align 4, !tbaa !9
  br label %175

175:                                              ; preds = %320, %173
  %176 = load i32, ptr %23, align 4, !tbaa !9
  %177 = icmp sge i32 %176, 0
  br i1 %177, label %178, label %323

178:                                              ; preds = %175
  %179 = load ptr, ptr %22, align 8, !tbaa !5
  %180 = getelementptr inbounds float, ptr %179, i64 0
  %181 = load float, ptr %180, align 4, !tbaa !11
  %182 = load ptr, ptr %22, align 8, !tbaa !5
  %183 = getelementptr inbounds float, ptr %182, i64 56
  %184 = load float, ptr %183, align 4, !tbaa !11
  %185 = fadd float %181, %184
  store float %185, ptr %3, align 4, !tbaa !11
  %186 = load ptr, ptr %22, align 8, !tbaa !5
  %187 = getelementptr inbounds float, ptr %186, i64 0
  %188 = load float, ptr %187, align 4, !tbaa !11
  %189 = load ptr, ptr %22, align 8, !tbaa !5
  %190 = getelementptr inbounds float, ptr %189, i64 56
  %191 = load float, ptr %190, align 4, !tbaa !11
  %192 = fsub float %188, %191
  store float %192, ptr %10, align 4, !tbaa !11
  %193 = load ptr, ptr %22, align 8, !tbaa !5
  %194 = getelementptr inbounds float, ptr %193, i64 8
  %195 = load float, ptr %194, align 4, !tbaa !11
  %196 = load ptr, ptr %22, align 8, !tbaa !5
  %197 = getelementptr inbounds float, ptr %196, i64 48
  %198 = load float, ptr %197, align 4, !tbaa !11
  %199 = fadd float %195, %198
  store float %199, ptr %4, align 4, !tbaa !11
  %200 = load ptr, ptr %22, align 8, !tbaa !5
  %201 = getelementptr inbounds float, ptr %200, i64 8
  %202 = load float, ptr %201, align 4, !tbaa !11
  %203 = load ptr, ptr %22, align 8, !tbaa !5
  %204 = getelementptr inbounds float, ptr %203, i64 48
  %205 = load float, ptr %204, align 4, !tbaa !11
  %206 = fsub float %202, %205
  store float %206, ptr %9, align 4, !tbaa !11
  %207 = load ptr, ptr %22, align 8, !tbaa !5
  %208 = getelementptr inbounds float, ptr %207, i64 16
  %209 = load float, ptr %208, align 4, !tbaa !11
  %210 = load ptr, ptr %22, align 8, !tbaa !5
  %211 = getelementptr inbounds float, ptr %210, i64 40
  %212 = load float, ptr %211, align 4, !tbaa !11
  %213 = fadd float %209, %212
  store float %213, ptr %5, align 4, !tbaa !11
  %214 = load ptr, ptr %22, align 8, !tbaa !5
  %215 = getelementptr inbounds float, ptr %214, i64 16
  %216 = load float, ptr %215, align 4, !tbaa !11
  %217 = load ptr, ptr %22, align 8, !tbaa !5
  %218 = getelementptr inbounds float, ptr %217, i64 40
  %219 = load float, ptr %218, align 4, !tbaa !11
  %220 = fsub float %216, %219
  store float %220, ptr %8, align 4, !tbaa !11
  %221 = load ptr, ptr %22, align 8, !tbaa !5
  %222 = getelementptr inbounds float, ptr %221, i64 24
  %223 = load float, ptr %222, align 4, !tbaa !11
  %224 = load ptr, ptr %22, align 8, !tbaa !5
  %225 = getelementptr inbounds float, ptr %224, i64 32
  %226 = load float, ptr %225, align 4, !tbaa !11
  %227 = fadd float %223, %226
  store float %227, ptr %6, align 4, !tbaa !11
  %228 = load ptr, ptr %22, align 8, !tbaa !5
  %229 = getelementptr inbounds float, ptr %228, i64 24
  %230 = load float, ptr %229, align 4, !tbaa !11
  %231 = load ptr, ptr %22, align 8, !tbaa !5
  %232 = getelementptr inbounds float, ptr %231, i64 32
  %233 = load float, ptr %232, align 4, !tbaa !11
  %234 = fsub float %230, %233
  store float %234, ptr %7, align 4, !tbaa !11
  %235 = load float, ptr %3, align 4, !tbaa !11
  %236 = load float, ptr %6, align 4, !tbaa !11
  %237 = fadd float %235, %236
  store float %237, ptr %11, align 4, !tbaa !11
  %238 = load float, ptr %3, align 4, !tbaa !11
  %239 = load float, ptr %6, align 4, !tbaa !11
  %240 = fsub float %238, %239
  store float %240, ptr %14, align 4, !tbaa !11
  %241 = load float, ptr %4, align 4, !tbaa !11
  %242 = load float, ptr %5, align 4, !tbaa !11
  %243 = fadd float %241, %242
  store float %243, ptr %12, align 4, !tbaa !11
  %244 = load float, ptr %4, align 4, !tbaa !11
  %245 = load float, ptr %5, align 4, !tbaa !11
  %246 = fsub float %244, %245
  store float %246, ptr %13, align 4, !tbaa !11
  %247 = load float, ptr %11, align 4, !tbaa !11
  %248 = load float, ptr %12, align 4, !tbaa !11
  %249 = fadd float %247, %248
  %250 = load ptr, ptr %22, align 8, !tbaa !5
  %251 = getelementptr inbounds float, ptr %250, i64 0
  store float %249, ptr %251, align 4, !tbaa !11
  %252 = load float, ptr %11, align 4, !tbaa !11
  %253 = load float, ptr %12, align 4, !tbaa !11
  %254 = fsub float %252, %253
  %255 = load ptr, ptr %22, align 8, !tbaa !5
  %256 = getelementptr inbounds float, ptr %255, i64 32
  store float %254, ptr %256, align 4, !tbaa !11
  %257 = load float, ptr %13, align 4, !tbaa !11
  %258 = load float, ptr %14, align 4, !tbaa !11
  %259 = fadd float %257, %258
  %260 = fmul float %259, 0x3FE6A09E60000000
  store float %260, ptr %15, align 4, !tbaa !11
  %261 = load float, ptr %14, align 4, !tbaa !11
  %262 = load float, ptr %15, align 4, !tbaa !11
  %263 = fadd float %261, %262
  %264 = load ptr, ptr %22, align 8, !tbaa !5
  %265 = getelementptr inbounds float, ptr %264, i64 16
  store float %263, ptr %265, align 4, !tbaa !11
  %266 = load float, ptr %14, align 4, !tbaa !11
  %267 = load float, ptr %15, align 4, !tbaa !11
  %268 = fsub float %266, %267
  %269 = load ptr, ptr %22, align 8, !tbaa !5
  %270 = getelementptr inbounds float, ptr %269, i64 48
  store float %268, ptr %270, align 4, !tbaa !11
  %271 = load float, ptr %7, align 4, !tbaa !11
  %272 = load float, ptr %8, align 4, !tbaa !11
  %273 = fadd float %271, %272
  store float %273, ptr %11, align 4, !tbaa !11
  %274 = load float, ptr %8, align 4, !tbaa !11
  %275 = load float, ptr %9, align 4, !tbaa !11
  %276 = fadd float %274, %275
  store float %276, ptr %12, align 4, !tbaa !11
  %277 = load float, ptr %9, align 4, !tbaa !11
  %278 = load float, ptr %10, align 4, !tbaa !11
  %279 = fadd float %277, %278
  store float %279, ptr %13, align 4, !tbaa !11
  %280 = load float, ptr %11, align 4, !tbaa !11
  %281 = load float, ptr %13, align 4, !tbaa !11
  %282 = fsub float %280, %281
  %283 = fmul float %282, 0x3FD87DE2A0000000
  store float %283, ptr %19, align 4, !tbaa !11
  %284 = load float, ptr %11, align 4, !tbaa !11
  %285 = load float, ptr %19, align 4, !tbaa !11
  %286 = call float @llvm.fmuladd.f32(float 0x3FE1517A80000000, float %284, float %285)
  store float %286, ptr %16, align 4, !tbaa !11
  %287 = load float, ptr %13, align 4, !tbaa !11
  %288 = load float, ptr %19, align 4, !tbaa !11
  %289 = call float @llvm.fmuladd.f32(float 0x3FF4E7AEA0000000, float %287, float %288)
  store float %289, ptr %18, align 4, !tbaa !11
  %290 = load float, ptr %12, align 4, !tbaa !11
  %291 = fmul float %290, 0x3FE6A09E60000000
  store float %291, ptr %17, align 4, !tbaa !11
  %292 = load float, ptr %10, align 4, !tbaa !11
  %293 = load float, ptr %17, align 4, !tbaa !11
  %294 = fadd float %292, %293
  store float %294, ptr %20, align 4, !tbaa !11
  %295 = load float, ptr %10, align 4, !tbaa !11
  %296 = load float, ptr %17, align 4, !tbaa !11
  %297 = fsub float %295, %296
  store float %297, ptr %21, align 4, !tbaa !11
  %298 = load float, ptr %21, align 4, !tbaa !11
  %299 = load float, ptr %16, align 4, !tbaa !11
  %300 = fadd float %298, %299
  %301 = load ptr, ptr %22, align 8, !tbaa !5
  %302 = getelementptr inbounds float, ptr %301, i64 40
  store float %300, ptr %302, align 4, !tbaa !11
  %303 = load float, ptr %21, align 4, !tbaa !11
  %304 = load float, ptr %16, align 4, !tbaa !11
  %305 = fsub float %303, %304
  %306 = load ptr, ptr %22, align 8, !tbaa !5
  %307 = getelementptr inbounds float, ptr %306, i64 24
  store float %305, ptr %307, align 4, !tbaa !11
  %308 = load float, ptr %20, align 4, !tbaa !11
  %309 = load float, ptr %18, align 4, !tbaa !11
  %310 = fadd float %308, %309
  %311 = load ptr, ptr %22, align 8, !tbaa !5
  %312 = getelementptr inbounds float, ptr %311, i64 8
  store float %310, ptr %312, align 4, !tbaa !11
  %313 = load float, ptr %20, align 4, !tbaa !11
  %314 = load float, ptr %18, align 4, !tbaa !11
  %315 = fsub float %313, %314
  %316 = load ptr, ptr %22, align 8, !tbaa !5
  %317 = getelementptr inbounds float, ptr %316, i64 56
  store float %315, ptr %317, align 4, !tbaa !11
  %318 = load ptr, ptr %22, align 8, !tbaa !5
  %319 = getelementptr inbounds float, ptr %318, i32 1
  store ptr %319, ptr %22, align 8, !tbaa !5
  br label %320

320:                                              ; preds = %178
  %321 = load i32, ptr %23, align 4, !tbaa !9
  %322 = add nsw i32 %321, -1
  store i32 %322, ptr %23, align 4, !tbaa !9
  br label %175, !llvm.loop !15

323:                                              ; preds = %175
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #3
  ret void
}

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

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

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

attributes #0 = { 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 #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}


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

; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable
define dso_local void @jpeg_fdct_float(ptr nocapture noundef %0) local_unnamed_addr #0 {
vector.ph:
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = shl i64 %index, 5
  %next.gep = getelementptr i8, ptr %0, i64 %offset.idx
  %wide.vec = load <32 x float>, ptr %next.gep, align 4, !tbaa !5
  %strided.vec = shufflevector <32 x float> %wide.vec, <32 x float> poison, <4 x i32> <i32 0, i32 8, i32 16, i32 24>
  %strided.vec149 = shufflevector <32 x float> %wide.vec, <32 x float> poison, <4 x i32> <i32 1, i32 9, i32 17, i32 25>
  %strided.vec150 = shufflevector <32 x float> %wide.vec, <32 x float> poison, <4 x i32> <i32 2, i32 10, i32 18, i32 26>
  %strided.vec151 = shufflevector <32 x float> %wide.vec, <32 x float> poison, <4 x i32> <i32 3, i32 11, i32 19, i32 27>
  %strided.vec152 = shufflevector <32 x float> %wide.vec, <32 x float> poison, <4 x i32> <i32 4, i32 12, i32 20, i32 28>
  %strided.vec153 = shufflevector <32 x float> %wide.vec, <32 x float> poison, <4 x i32> <i32 5, i32 13, i32 21, i32 29>
  %strided.vec154 = shufflevector <32 x float> %wide.vec, <32 x float> poison, <4 x i32> <i32 6, i32 14, i32 22, i32 30>
  %strided.vec155 = shufflevector <32 x float> %wide.vec, <32 x float> poison, <4 x i32> <i32 7, i32 15, i32 23, i32 31>
  %1 = fadd <4 x float> %strided.vec, %strided.vec155
  %2 = fsub <4 x float> %strided.vec, %strided.vec155
  %3 = fadd <4 x float> %strided.vec149, %strided.vec154
  %4 = fsub <4 x float> %strided.vec149, %strided.vec154
  %5 = fadd <4 x float> %strided.vec150, %strided.vec153
  %6 = fsub <4 x float> %strided.vec150, %strided.vec153
  %7 = fadd <4 x float> %strided.vec151, %strided.vec152
  %8 = fsub <4 x float> %strided.vec151, %strided.vec152
  %9 = fadd <4 x float> %1, %7
  %10 = fsub <4 x float> %1, %7
  %11 = fadd <4 x float> %3, %5
  %12 = fsub <4 x float> %3, %5
  %13 = fadd <4 x float> %11, %9
  %14 = fsub <4 x float> %9, %11
  %15 = fadd <4 x float> %12, %10
  %16 = fmul <4 x float> %15, <float 0x3FE6A09E60000000, float 0x3FE6A09E60000000, float 0x3FE6A09E60000000, float 0x3FE6A09E60000000>
  %17 = fadd <4 x float> %10, %16
  %18 = fsub <4 x float> %10, %16
  %19 = fadd <4 x float> %6, %8
  %20 = fadd <4 x float> %4, %6
  %21 = fadd <4 x float> %2, %4
  %22 = fsub <4 x float> %19, %21
  %23 = fmul <4 x float> %22, <float 0x3FD87DE2A0000000, float 0x3FD87DE2A0000000, float 0x3FD87DE2A0000000, float 0x3FD87DE2A0000000>
  %24 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %19, <4 x float> <float 0x3FE1517A80000000, float 0x3FE1517A80000000, float 0x3FE1517A80000000, float 0x3FE1517A80000000>, <4 x float> %23)
  %25 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %21, <4 x float> <float 0x3FF4E7AEA0000000, float 0x3FF4E7AEA0000000, float 0x3FF4E7AEA0000000, float 0x3FF4E7AEA0000000>, <4 x float> %23)
  %26 = fmul <4 x float> %20, <float 0x3FE6A09E60000000, float 0x3FE6A09E60000000, float 0x3FE6A09E60000000, float 0x3FE6A09E60000000>
  %27 = fadd <4 x float> %2, %26
  %28 = fsub <4 x float> %2, %26
  %29 = fadd <4 x float> %28, %24
  %30 = fsub <4 x float> %28, %24
  %31 = fadd <4 x float> %27, %25
  %32 = fsub <4 x float> %27, %25
  %33 = shufflevector <4 x float> %13, <4 x float> %31, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
  %34 = shufflevector <4 x float> %17, <4 x float> %30, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
  %35 = shufflevector <4 x float> %14, <4 x float> %29, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
  %36 = shufflevector <4 x float> %18, <4 x float> %32, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
  %37 = shufflevector <8 x float> %33, <8 x float> %34, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
  %38 = shufflevector <8 x float> %35, <8 x float> %36, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
  %interleaved.vec = shufflevector <16 x float> %37, <16 x float> %38, <32 x i32> <i32 0, i32 4, i32 8, i32 12, i32 16, i32 20, i32 24, i32 28, i32 1, i32 5, i32 9, i32 13, i32 17, i32 21, i32 25, i32 29, i32 2, i32 6, i32 10, i32 14, i32 18, i32 22, i32 26, i32 30, i32 3, i32 7, i32 11, i32 15, i32 19, i32 23, i32 27, i32 31>
  store <32 x float> %interleaved.vec, ptr %next.gep, align 4, !tbaa !5
  %index.next = add nuw i64 %index, 4
  %39 = icmp eq i64 %index.next, 8
  br i1 %39, label %vector.body162, label %vector.body, !llvm.loop !9

vector.body162:                                   ; preds = %vector.body
  %wide.load = load <4 x float>, ptr %0, align 4, !tbaa !5
  %40 = getelementptr inbounds i8, ptr %0, i64 224
  %wide.load166 = load <4 x float>, ptr %40, align 4, !tbaa !5
  %41 = fadd <4 x float> %wide.load, %wide.load166
  %42 = fsub <4 x float> %wide.load, %wide.load166
  %43 = getelementptr inbounds i8, ptr %0, i64 32
  %wide.load167 = load <4 x float>, ptr %43, align 4, !tbaa !5
  %44 = getelementptr inbounds i8, ptr %0, i64 192
  %wide.load168 = load <4 x float>, ptr %44, align 4, !tbaa !5
  %45 = fadd <4 x float> %wide.load167, %wide.load168
  %46 = fsub <4 x float> %wide.load167, %wide.load168
  %47 = getelementptr inbounds i8, ptr %0, i64 64
  %wide.load169 = load <4 x float>, ptr %47, align 4, !tbaa !5
  %48 = getelementptr inbounds i8, ptr %0, i64 160
  %wide.load170 = load <4 x float>, ptr %48, align 4, !tbaa !5
  %49 = fadd <4 x float> %wide.load169, %wide.load170
  %50 = fsub <4 x float> %wide.load169, %wide.load170
  %51 = getelementptr inbounds i8, ptr %0, i64 96
  %wide.load171 = load <4 x float>, ptr %51, align 4, !tbaa !5
  %52 = getelementptr inbounds i8, ptr %0, i64 128
  %wide.load172 = load <4 x float>, ptr %52, align 4, !tbaa !5
  %53 = fadd <4 x float> %wide.load171, %wide.load172
  %54 = fsub <4 x float> %wide.load171, %wide.load172
  %55 = fadd <4 x float> %41, %53
  %56 = fsub <4 x float> %41, %53
  %57 = fadd <4 x float> %45, %49
  %58 = fsub <4 x float> %45, %49
  %59 = fadd <4 x float> %57, %55
  store <4 x float> %59, ptr %0, align 4, !tbaa !5
  %60 = fsub <4 x float> %55, %57
  store <4 x float> %60, ptr %52, align 4, !tbaa !5
  %61 = fadd <4 x float> %58, %56
  %62 = fmul <4 x float> %61, <float 0x3FE6A09E60000000, float 0x3FE6A09E60000000, float 0x3FE6A09E60000000, float 0x3FE6A09E60000000>
  %63 = fadd <4 x float> %56, %62
  store <4 x float> %63, ptr %47, align 4, !tbaa !5
  %64 = fsub <4 x float> %56, %62
  store <4 x float> %64, ptr %44, align 4, !tbaa !5
  %65 = fadd <4 x float> %50, %54
  %66 = fadd <4 x float> %46, %50
  %67 = fadd <4 x float> %42, %46
  %68 = fsub <4 x float> %65, %67
  %69 = fmul <4 x float> %68, <float 0x3FD87DE2A0000000, float 0x3FD87DE2A0000000, float 0x3FD87DE2A0000000, float 0x3FD87DE2A0000000>
  %70 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %65, <4 x float> <float 0x3FE1517A80000000, float 0x3FE1517A80000000, float 0x3FE1517A80000000, float 0x3FE1517A80000000>, <4 x float> %69)
  %71 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %67, <4 x float> <float 0x3FF4E7AEA0000000, float 0x3FF4E7AEA0000000, float 0x3FF4E7AEA0000000, float 0x3FF4E7AEA0000000>, <4 x float> %69)
  %72 = fmul <4 x float> %66, <float 0x3FE6A09E60000000, float 0x3FE6A09E60000000, float 0x3FE6A09E60000000, float 0x3FE6A09E60000000>
  %73 = fadd <4 x float> %42, %72
  %74 = fsub <4 x float> %42, %72
  %75 = fadd <4 x float> %74, %70
  store <4 x float> %75, ptr %48, align 4, !tbaa !5
  %76 = fsub <4 x float> %74, %70
  store <4 x float> %76, ptr %51, align 4, !tbaa !5
  %77 = fadd <4 x float> %73, %71
  store <4 x float> %77, ptr %43, align 4, !tbaa !5
  %78 = fsub <4 x float> %73, %71
  store <4 x float> %78, ptr %40, align 4, !tbaa !5
  %next.gep165.1 = getelementptr i8, ptr %0, i64 16
  %wide.load.1 = load <4 x float>, ptr %next.gep165.1, align 4, !tbaa !5
  %79 = getelementptr i8, ptr %0, i64 240
  %wide.load166.1 = load <4 x float>, ptr %79, align 4, !tbaa !5
  %80 = fadd <4 x float> %wide.load.1, %wide.load166.1
  %81 = fsub <4 x float> %wide.load.1, %wide.load166.1
  %82 = getelementptr i8, ptr %0, i64 48
  %wide.load167.1 = load <4 x float>, ptr %82, align 4, !tbaa !5
  %83 = getelementptr i8, ptr %0, i64 208
  %wide.load168.1 = load <4 x float>, ptr %83, align 4, !tbaa !5
  %84 = fadd <4 x float> %wide.load167.1, %wide.load168.1
  %85 = fsub <4 x float> %wide.load167.1, %wide.load168.1
  %86 = getelementptr i8, ptr %0, i64 80
  %wide.load169.1 = load <4 x float>, ptr %86, align 4, !tbaa !5
  %87 = getelementptr i8, ptr %0, i64 176
  %wide.load170.1 = load <4 x float>, ptr %87, align 4, !tbaa !5
  %88 = fadd <4 x float> %wide.load169.1, %wide.load170.1
  %89 = fsub <4 x float> %wide.load169.1, %wide.load170.1
  %90 = getelementptr i8, ptr %0, i64 112
  %wide.load171.1 = load <4 x float>, ptr %90, align 4, !tbaa !5
  %91 = getelementptr i8, ptr %0, i64 144
  %wide.load172.1 = load <4 x float>, ptr %91, align 4, !tbaa !5
  %92 = fadd <4 x float> %wide.load171.1, %wide.load172.1
  %93 = fsub <4 x float> %wide.load171.1, %wide.load172.1
  %94 = fadd <4 x float> %80, %92
  %95 = fsub <4 x float> %80, %92
  %96 = fadd <4 x float> %84, %88
  %97 = fsub <4 x float> %84, %88
  %98 = fadd <4 x float> %96, %94
  store <4 x float> %98, ptr %next.gep165.1, align 4, !tbaa !5
  %99 = fsub <4 x float> %94, %96
  store <4 x float> %99, ptr %91, align 4, !tbaa !5
  %100 = fadd <4 x float> %97, %95
  %101 = fmul <4 x float> %100, <float 0x3FE6A09E60000000, float 0x3FE6A09E60000000, float 0x3FE6A09E60000000, float 0x3FE6A09E60000000>
  %102 = fadd <4 x float> %95, %101
  store <4 x float> %102, ptr %86, align 4, !tbaa !5
  %103 = fsub <4 x float> %95, %101
  store <4 x float> %103, ptr %83, align 4, !tbaa !5
  %104 = fadd <4 x float> %89, %93
  %105 = fadd <4 x float> %85, %89
  %106 = fadd <4 x float> %81, %85
  %107 = fsub <4 x float> %104, %106
  %108 = fmul <4 x float> %107, <float 0x3FD87DE2A0000000, float 0x3FD87DE2A0000000, float 0x3FD87DE2A0000000, float 0x3FD87DE2A0000000>
  %109 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %104, <4 x float> <float 0x3FE1517A80000000, float 0x3FE1517A80000000, float 0x3FE1517A80000000, float 0x3FE1517A80000000>, <4 x float> %108)
  %110 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %106, <4 x float> <float 0x3FF4E7AEA0000000, float 0x3FF4E7AEA0000000, float 0x3FF4E7AEA0000000, float 0x3FF4E7AEA0000000>, <4 x float> %108)
  %111 = fmul <4 x float> %105, <float 0x3FE6A09E60000000, float 0x3FE6A09E60000000, float 0x3FE6A09E60000000, float 0x3FE6A09E60000000>
  %112 = fadd <4 x float> %81, %111
  %113 = fsub <4 x float> %81, %111
  %114 = fadd <4 x float> %113, %109
  store <4 x float> %114, ptr %87, align 4, !tbaa !5
  %115 = fsub <4 x float> %113, %109
  store <4 x float> %115, ptr %90, align 4, !tbaa !5
  %116 = fadd <4 x float> %112, %110
  store <4 x float> %116, ptr %82, align 4, !tbaa !5
  %117 = fsub <4 x float> %112, %110
  store <4 x float> %117, ptr %79, align 4, !tbaa !5
  ret void
}

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <4 x float> @llvm.fmuladd.v4f32(<4 x float>, <4 x float>, <4 x float>) #1

attributes #0 = { nofree norecurse nosync nounwind memory(readwrite, 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 = { 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 = !{!"float", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = distinct !{!9, !10, !11, !12}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!"llvm.loop.isvectorized", i32 1}
!12 = !{!"llvm.loop.unroll.runtime.disable"}


; Effective O3 passes: EarlyCSEPass,GlobalDCEPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass