; LLVM IR from OAID/AutoKernel :: autokernel_plugin/tests/common/tengine_operations.ll (Z12imread2mxnet5imageiiPfS0_)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.image = type { i32, i32, i32, ptr }

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

; 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 nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z10make_imageiii(ptr dead_on_unwind noalias writable sret(%struct.image) align 8, i32 noundef, i32 noundef, i32 noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z10free_image5image(ptr noundef byval(%struct.image) align 8) #3

; Function Attrs: mustprogress uwtable
define dso_local void @_Z12imread2mxnet5imageiiPfS0_(ptr dead_on_unwind noalias writable sret(%struct.image) align 8 %0, ptr noundef byval(%struct.image) align 8 %1, i32 noundef %2, i32 noundef %3, ptr noundef %4, ptr noundef %5) #2 {
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca %struct.image, align 8
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca %struct.image, align 8
  store i32 %2, ptr %7, align 4, !tbaa !5
  store i32 %3, ptr %8, align 4, !tbaa !5
  store ptr %4, ptr %9, align 8, !tbaa !9
  store ptr %5, ptr %10, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %11) #4
  %18 = load i32, ptr %7, align 4, !tbaa !5
  %19 = load i32, ptr %8, align 4, !tbaa !5
  %20 = getelementptr inbounds %struct.image, ptr %1, i32 0, i32 2
  %21 = load i32, ptr %20, align 8, !tbaa !11
  call void @_Z10make_imageiii(ptr dead_on_unwind writable sret(%struct.image) align 8 %11, i32 noundef %18, i32 noundef %19, i32 noundef %21)
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %0, ptr align 8 %11, i64 24, i1 false), !tbaa.struct !13
  call void @llvm.lifetime.end.p0(i64 24, ptr %11) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #4
  %22 = load i32, ptr %8, align 4, !tbaa !5
  %23 = load i32, ptr %7, align 4, !tbaa !5
  %24 = mul nsw i32 %22, %23
  store i32 %24, ptr %12, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #4
  store i32 0, ptr %13, align 4, !tbaa !5
  br label %25

25:                                               ; preds = %90, %6
  %26 = load i32, ptr %13, align 4, !tbaa !5
  %27 = load i32, ptr %8, align 4, !tbaa !5
  %28 = icmp slt i32 %26, %27
  br i1 %28, label %30, label %29

29:                                               ; preds = %25
  store i32 2, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #4
  br label %93

30:                                               ; preds = %25
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #4
  store i32 0, ptr %15, align 4, !tbaa !5
  br label %31

31:                                               ; preds = %86, %30
  %32 = load i32, ptr %15, align 4, !tbaa !5
  %33 = load i32, ptr %7, align 4, !tbaa !5
  %34 = icmp slt i32 %32, %33
  br i1 %34, label %36, label %35

35:                                               ; preds = %31
  store i32 5, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #4
  br label %89

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

37:                                               ; preds = %82, %36
  %38 = load i32, ptr %16, align 4, !tbaa !5
  %39 = icmp slt i32 %38, 3
  br i1 %39, label %41, label %40

40:                                               ; preds = %37
  store i32 8, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #4
  br label %85

41:                                               ; preds = %37
  %42 = getelementptr inbounds %struct.image, ptr %1, i32 0, i32 3
  %43 = load ptr, ptr %42, align 8, !tbaa !14
  %44 = load i32, ptr %16, align 4, !tbaa !5
  %45 = load i32, ptr %12, align 4, !tbaa !5
  %46 = mul nsw i32 %44, %45
  %47 = load i32, ptr %13, align 4, !tbaa !5
  %48 = load i32, ptr %7, align 4, !tbaa !5
  %49 = mul nsw i32 %47, %48
  %50 = add nsw i32 %46, %49
  %51 = load i32, ptr %15, align 4, !tbaa !5
  %52 = add nsw i32 %50, %51
  %53 = sext i32 %52 to i64
  %54 = getelementptr inbounds float, ptr %43, i64 %53
  %55 = load float, ptr %54, align 4, !tbaa !15
  %56 = fdiv float %55, 2.550000e+02
  %57 = load ptr, ptr %9, align 8, !tbaa !9
  %58 = load i32, ptr %16, align 4, !tbaa !5
  %59 = sext i32 %58 to i64
  %60 = getelementptr inbounds float, ptr %57, i64 %59
  %61 = load float, ptr %60, align 4, !tbaa !15
  %62 = fsub float %56, %61
  %63 = load ptr, ptr %10, align 8, !tbaa !9
  %64 = load i32, ptr %16, align 4, !tbaa !5
  %65 = sext i32 %64 to i64
  %66 = getelementptr inbounds float, ptr %63, i64 %65
  %67 = load float, ptr %66, align 4, !tbaa !15
  %68 = fdiv float %62, %67
  %69 = getelementptr inbounds %struct.image, ptr %0, i32 0, i32 3
  %70 = load ptr, ptr %69, align 8, !tbaa !14
  %71 = load i32, ptr %16, align 4, !tbaa !5
  %72 = load i32, ptr %12, align 4, !tbaa !5
  %73 = mul nsw i32 %71, %72
  %74 = load i32, ptr %13, align 4, !tbaa !5
  %75 = load i32, ptr %7, align 4, !tbaa !5
  %76 = mul nsw i32 %74, %75
  %77 = add nsw i32 %73, %76
  %78 = load i32, ptr %15, align 4, !tbaa !5
  %79 = add nsw i32 %77, %78
  %80 = sext i32 %79 to i64
  %81 = getelementptr inbounds float, ptr %70, i64 %80
  store float %68, ptr %81, align 4, !tbaa !15
  br label %82

82:                                               ; preds = %41
  %83 = load i32, ptr %16, align 4, !tbaa !5
  %84 = add nsw i32 %83, 1
  store i32 %84, ptr %16, align 4, !tbaa !5
  br label %37, !llvm.loop !17

85:                                               ; preds = %40
  br label %86

86:                                               ; preds = %85
  %87 = load i32, ptr %15, align 4, !tbaa !5
  %88 = add nsw i32 %87, 1
  store i32 %88, ptr %15, align 4, !tbaa !5
  br label %31, !llvm.loop !19

89:                                               ; preds = %35
  br label %90

90:                                               ; preds = %89
  %91 = load i32, ptr %13, align 4, !tbaa !5
  %92 = add nsw i32 %91, 1
  store i32 %92, ptr %13, align 4, !tbaa !5
  br label %25, !llvm.loop !20

93:                                               ; preds = %29
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %17, ptr align 8 %1, i64 24, i1 false), !tbaa.struct !13
  call void @_Z10free_image5image(ptr noundef byval(%struct.image) align 8 %17)
  store i32 1, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #4
  ret void
}

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress 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 #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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !6, i64 8}
!12 = !{!"_ZTS5image", !6, i64 0, !6, i64 4, !6, i64 8, !10, i64 16}
!13 = !{i64 0, i64 4, !5, i64 4, i64 4, !5, i64 8, i64 4, !5, i64 16, i64 8, !9}
!14 = !{!12, !10, i64 16}
!15 = !{!16, !16, i64 0}
!16 = !{!"float", !7, i64 0}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = distinct !{!19, !18}
!20 = distinct !{!20, !18}


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

%struct.image = type { i32, i32, i32, ptr }

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z10make_imageiii(ptr dead_on_unwind noalias writable sret(%struct.image) align 8, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z10free_image5image(ptr noundef byval(%struct.image) align 8) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
define dso_local void @_Z12imread2mxnet5imageiiPfS0_(ptr dead_on_unwind noalias nocapture writable sret(%struct.image) align 8 %0, ptr nocapture noundef readonly byval(%struct.image) align 8 %1, i32 noundef %2, i32 noundef %3, ptr nocapture noundef readonly %4, ptr nocapture noundef readonly %5) local_unnamed_addr #0 {
  %7 = getelementptr inbounds i8, ptr %1, i64 8
  %8 = load i32, ptr %7, align 8, !tbaa !5
  tail call void @_Z10make_imageiii(ptr dead_on_unwind nonnull writable sret(%struct.image) align 8 %0, i32 noundef %2, i32 noundef %3, i32 noundef %8)
  %9 = icmp sgt i32 %3, 0
  br i1 %9, label %.preheader28.lr.ph, label %._crit_edge32

.preheader28.lr.ph:                               ; preds = %6
  %10 = icmp sgt i32 %2, 0
  %11 = getelementptr inbounds i8, ptr %1, i64 16
  %12 = load ptr, ptr %11, align 8
  %13 = getelementptr inbounds i8, ptr %0, i64 16
  %14 = load ptr, ptr %13, align 8
  br i1 %10, label %.preheader28.us.preheader, label %._crit_edge32

.preheader28.us.preheader:                        ; preds = %.preheader28.lr.ph
  %wide.trip.count = zext nneg i32 %2 to i64
  %15 = getelementptr i8, ptr %4, i64 4
  %16 = getelementptr i8, ptr %5, i64 4
  %17 = shl nuw i32 %3, 1
  %18 = getelementptr i8, ptr %4, i64 8
  %19 = getelementptr i8, ptr %5, i64 8
  %20 = add nsw i64 %wide.trip.count, -1
  %21 = mul i32 %3, %2
  %22 = shl i32 %21, 1
  %23 = shl nuw nsw i64 %wide.trip.count, 2
  %scevgep37 = getelementptr i8, ptr %14, i64 %23
  %scevgep40 = getelementptr i8, ptr %14, i64 %23
  %scevgep43 = getelementptr i8, ptr %14, i64 %23
  %scevgep46 = getelementptr i8, ptr %12, i64 %23
  %scevgep49 = getelementptr i8, ptr %12, i64 %23
  %scevgep52 = getelementptr i8, ptr %12, i64 %23
  %scevgep54 = getelementptr i8, ptr %4, i64 12
  %scevgep55 = getelementptr i8, ptr %5, i64 12
  %min.iters.check = icmp ult i32 %2, 8
  %24 = trunc nsw i64 %20 to i32
  %25 = trunc nsw i64 %20 to i32
  %26 = icmp ugt i64 %20, 4294967295
  %27 = trunc nsw i64 %20 to i32
  %bound059 = icmp ult ptr %14, %scevgep46
  %bound160 = icmp ult ptr %12, %scevgep37
  %found.conflict61 = and i1 %bound059, %bound160
  %bound0111 = icmp ult ptr %14, %scevgep49
  %bound1112 = icmp ult ptr %12, %scevgep40
  %found.conflict113 = and i1 %bound0111, %bound1112
  %bound0159 = icmp ult ptr %14, %scevgep52
  %bound1160 = icmp ult ptr %12, %scevgep43
  %found.conflict161 = and i1 %bound0159, %bound1160
  %n.vec = and i64 %wide.trip.count, 2147483644
  %cmp.n = icmp eq i64 %n.vec, %wide.trip.count
  br label %.preheader28.us

.preheader28.us:                                  ; preds = %.preheader28.us.preheader, %._crit_edge.us
  %.02631.us = phi i32 [ %109, %._crit_edge.us ], [ 0, %.preheader28.us.preheader ]
  %28 = mul i32 %.02631.us, %2
  %29 = sext i32 %28 to i64
  %30 = shl nsw i64 %29, 2
  %scevgep = getelementptr i8, ptr %14, i64 %30
  %scevgep38 = getelementptr i8, ptr %scevgep37, i64 %30
  %31 = add i32 %21, %28
  %32 = sext i32 %31 to i64
  %33 = shl nsw i64 %32, 2
  %scevgep39 = getelementptr i8, ptr %14, i64 %33
  %scevgep41 = getelementptr i8, ptr %scevgep40, i64 %33
  %34 = add i32 %22, %28
  %35 = sext i32 %34 to i64
  %36 = shl nsw i64 %35, 2
  %scevgep42 = getelementptr i8, ptr %14, i64 %36
  %scevgep44 = getelementptr i8, ptr %scevgep43, i64 %36
  %scevgep45 = getelementptr i8, ptr %12, i64 %30
  %scevgep47 = getelementptr i8, ptr %scevgep46, i64 %30
  %scevgep48 = getelementptr i8, ptr %12, i64 %33
  %scevgep50 = getelementptr i8, ptr %scevgep49, i64 %33
  %scevgep51 = getelementptr i8, ptr %12, i64 %36
  %scevgep53 = getelementptr i8, ptr %scevgep52, i64 %36
  %reass.mul.us = mul i32 %.02631.us, %2
  %reass.add.us.1 = add nuw i32 %.02631.us, %3
  %reass.mul.us.1 = mul i32 %reass.add.us.1, %2
  %reass.add.us.2 = add i32 %17, %.02631.us
  %reass.mul.us.2 = mul i32 %reass.add.us.2, %2
  br i1 %min.iters.check, label %.preheader.us.preheader, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.preheader28.us
  %37 = mul i32 %.02631.us, %2
  %38 = add i32 %22, %37
  %39 = add i32 %21, %37
  %40 = add i32 %37, %24
  %41 = icmp slt i32 %40, %37
  %42 = add i32 %39, %25
  %43 = icmp slt i32 %42, %39
  %44 = or i1 %43, %26
  %45 = add i32 %38, %27
  %46 = icmp slt i32 %45, %38
  %47 = or i1 %41, %44
  %48 = or i1 %46, %47
  br i1 %48, label %.preheader.us.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %vector.scevcheck
  %bound0 = icmp ult ptr %scevgep, %scevgep41
  %bound1 = icmp ult ptr %scevgep39, %scevgep38
  %found.conflict = and i1 %bound0, %bound1
  %bound056 = icmp ult ptr %scevgep, %scevgep44
  %bound157 = icmp ult ptr %scevgep42, %scevgep38
  %found.conflict58 = and i1 %bound056, %bound157
  %conflict.rdx = or i1 %found.conflict, %found.conflict58
  %conflict.rdx62 = or i1 %conflict.rdx, %found.conflict61
  %bound063 = icmp ult ptr %scevgep, %15
  %bound164 = icmp ugt ptr %scevgep38, %4
  %found.conflict65 = and i1 %bound063, %bound164
  %conflict.rdx66 = or i1 %conflict.rdx62, %found.conflict65
  %bound067 = icmp ult ptr %scevgep, %16
  %bound168 = icmp ugt ptr %scevgep38, %5
  %found.conflict69 = and i1 %bound067, %bound168
  %conflict.rdx70 = or i1 %conflict.rdx66, %found.conflict69
  %bound071 = icmp ult ptr %scevgep, %scevgep50
  %bound172 = icmp ult ptr %scevgep48, %scevgep38
  %found.conflict73 = and i1 %bound071, %bound172
  %conflict.rdx74 = or i1 %conflict.rdx70, %found.conflict73
  %bound075 = icmp ult ptr %scevgep, %18
  %bound176 = icmp ult ptr %15, %scevgep38
  %found.conflict77 = and i1 %bound075, %bound176
  %conflict.rdx78 = or i1 %conflict.rdx74, %found.conflict77
  %bound079 = icmp ult ptr %scevgep, %19
  %bound180 = icmp ult ptr %16, %scevgep38
  %found.conflict81 = and i1 %bound079, %bound180
  %conflict.rdx82 = or i1 %conflict.rdx78, %found.conflict81
  %bound083 = icmp ult ptr %scevgep, %scevgep53
  %bound184 = icmp ult ptr %scevgep51, %scevgep38
  %found.conflict85 = and i1 %bound083, %bound184
  %conflict.rdx86 = or i1 %conflict.rdx82, %found.conflict85
  %bound087 = icmp ult ptr %scevgep, %scevgep54
  %bound188 = icmp ult ptr %18, %scevgep38
  %found.conflict89 = and i1 %bound087, %bound188
  %conflict.rdx90 = or i1 %conflict.rdx86, %found.conflict89
  %bound091 = icmp ult ptr %scevgep, %scevgep55
  %bound192 = icmp ult ptr %19, %scevgep38
  %found.conflict93 = and i1 %bound091, %bound192
  %conflict.rdx94 = or i1 %conflict.rdx90, %found.conflict93
  %bound095 = icmp ult ptr %scevgep39, %scevgep44
  %bound196 = icmp ult ptr %scevgep42, %scevgep41
  %found.conflict97 = and i1 %bound095, %bound196
  %conflict.rdx98 = or i1 %conflict.rdx94, %found.conflict97
  %bound099 = icmp ult ptr %scevgep39, %scevgep47
  %bound1100 = icmp ult ptr %scevgep45, %scevgep41
  %found.conflict101 = and i1 %bound099, %bound1100
  %conflict.rdx102 = or i1 %conflict.rdx98, %found.conflict101
  %bound0103 = icmp ult ptr %scevgep39, %15
  %bound1104 = icmp ugt ptr %scevgep41, %4
  %found.conflict105 = and i1 %bound0103, %bound1104
  %conflict.rdx106 = or i1 %conflict.rdx102, %found.conflict105
  %bound0107 = icmp ult ptr %scevgep39, %16
  %bound1108 = icmp ugt ptr %scevgep41, %5
  %found.conflict109 = and i1 %bound0107, %bound1108
  %conflict.rdx110 = or i1 %conflict.rdx106, %found.conflict109
  %conflict.rdx114 = or i1 %conflict.rdx110, %found.conflict113
  %bound0115 = icmp ult ptr %scevgep39, %18
  %bound1116 = icmp ult ptr %15, %scevgep41
  %found.conflict117 = and i1 %bound0115, %bound1116
  %conflict.rdx118 = or i1 %conflict.rdx114, %found.conflict117
  %bound0119 = icmp ult ptr %scevgep39, %19
  %bound1120 = icmp ult ptr %16, %scevgep41
  %found.conflict121 = and i1 %bound0119, %bound1120
  %conflict.rdx122 = or i1 %conflict.rdx118, %found.conflict121
  %bound0123 = icmp ult ptr %scevgep39, %scevgep53
  %bound1124 = icmp ult ptr %scevgep51, %scevgep41
  %found.conflict125 = and i1 %bound0123, %bound1124
  %conflict.rdx126 = or i1 %conflict.rdx122, %found.conflict125
  %bound0127 = icmp ult ptr %scevgep39, %scevgep54
  %bound1128 = icmp ult ptr %18, %scevgep41
  %found.conflict129 = and i1 %bound0127, %bound1128
  %conflict.rdx130 = or i1 %conflict.rdx126, %found.conflict129
  %bound0131 = icmp ult ptr %scevgep39, %scevgep55
  %bound1132 = icmp ult ptr %19, %scevgep41
  %found.conflict133 = and i1 %bound0131, %bound1132
  %conflict.rdx134 = or i1 %conflict.rdx130, %found.conflict133
  %bound0135 = icmp ult ptr %scevgep42, %scevgep47
  %bound1136 = icmp ult ptr %scevgep45, %scevgep44
  %found.conflict137 = and i1 %bound0135, %bound1136
  %conflict.rdx138 = or i1 %conflict.rdx134, %found.conflict137
  %bound0139 = icmp ult ptr %scevgep42, %15
  %bound1140 = icmp ugt ptr %scevgep44, %4
  %found.conflict141 = and i1 %bound0139, %bound1140
  %conflict.rdx142 = or i1 %conflict.rdx138, %found.conflict141
  %bound0143 = icmp ult ptr %scevgep42, %16
  %bound1144 = icmp ugt ptr %scevgep44, %5
  %found.conflict145 = and i1 %bound0143, %bound1144
  %conflict.rdx146 = or i1 %conflict.rdx142, %found.conflict145
  %bound0147 = icmp ult ptr %scevgep42, %scevgep50
  %bound1148 = icmp ult ptr %scevgep48, %scevgep44
  %found.conflict149 = and i1 %bound0147, %bound1148
  %conflict.rdx150 = or i1 %conflict.rdx146, %found.conflict149
  %bound0151 = icmp ult ptr %scevgep42, %18
  %bound1152 = icmp ult ptr %15, %scevgep44
  %found.conflict153 = and i1 %bound0151, %bound1152
  %conflict.rdx154 = or i1 %conflict.rdx150, %found.conflict153
  %bound0155 = icmp ult ptr %scevgep42, %19
  %bound1156 = icmp ult ptr %16, %scevgep44
  %found.conflict157 = and i1 %bound0155, %bound1156
  %conflict.rdx158 = or i1 %conflict.rdx154, %found.conflict157
  %conflict.rdx162 = or i1 %conflict.rdx158, %found.conflict161
  %bound0163 = icmp ult ptr %scevgep42, %scevgep54
  %bound1164 = icmp ult ptr %18, %scevgep44
  %found.conflict165 = and i1 %bound0163, %bound1164
  %conflict.rdx166 = or i1 %conflict.rdx162, %found.conflict165
  %bound0167 = icmp ult ptr %scevgep42, %scevgep55
  %bound1168 = icmp ult ptr %19, %scevgep44
  %found.conflict169 = and i1 %bound0167, %bound1168
  %conflict.rdx170 = or i1 %conflict.rdx166, %found.conflict169
  br i1 %conflict.rdx170, label %.preheader.us.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %49 = load float, ptr %4, align 4, !tbaa !11, !alias.scope !13
  %broadcast.splatinsert = insertelement <4 x float> poison, float %49, i64 0
  %broadcast.splat = shufflevector <4 x float> %broadcast.splatinsert, <4 x float> poison, <4 x i32> zeroinitializer
  %50 = load float, ptr %5, align 4, !tbaa !11, !alias.scope !16
  %broadcast.splatinsert171 = insertelement <4 x float> poison, float %50, i64 0
  %broadcast.splat172 = shufflevector <4 x float> %broadcast.splatinsert171, <4 x float> poison, <4 x i32> zeroinitializer
  %51 = load float, ptr %15, align 4, !tbaa !11, !alias.scope !18
  %broadcast.splatinsert174 = insertelement <4 x float> poison, float %51, i64 0
  %broadcast.splat175 = shufflevector <4 x float> %broadcast.splatinsert174, <4 x float> poison, <4 x i32> zeroinitializer
  %52 = load float, ptr %16, align 4, !tbaa !11, !alias.scope !20
  %broadcast.splatinsert176 = insertelement <4 x float> poison, float %52, i64 0
  %broadcast.splat177 = shufflevector <4 x float> %broadcast.splatinsert176, <4 x float> poison, <4 x i32> zeroinitializer
  %53 = load float, ptr %18, align 4, !tbaa !11, !alias.scope !22
  %broadcast.splatinsert179 = insertelement <4 x float> poison, float %53, i64 0
  %broadcast.splat180 = shufflevector <4 x float> %broadcast.splatinsert179, <4 x float> poison, <4 x i32> zeroinitializer
  %54 = load float, ptr %19, align 4, !tbaa !11, !alias.scope !24
  %broadcast.splatinsert181 = insertelement <4 x float> poison, float %54, i64 0
  %broadcast.splat182 = shufflevector <4 x float> %broadcast.splatinsert181, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %55 = trunc i64 %index to i32
  %56 = add i32 %reass.mul.us, %55
  %57 = sext i32 %56 to i64
  %58 = getelementptr inbounds float, ptr %12, i64 %57
  %wide.load = load <4 x float>, ptr %58, align 4, !tbaa !11, !alias.scope !26
  %59 = fdiv <4 x float> %wide.load, <float 2.550000e+02, float 2.550000e+02, float 2.550000e+02, float 2.550000e+02>
  %60 = fsub <4 x float> %59, %broadcast.splat
  %61 = fdiv <4 x float> %60, %broadcast.splat172
  %62 = getelementptr inbounds float, ptr %14, i64 %57
  store <4 x float> %61, ptr %62, align 4, !tbaa !11, !alias.scope !28, !noalias !30
  %63 = add i32 %reass.mul.us.1, %55
  %64 = sext i32 %63 to i64
  %65 = getelementptr inbounds float, ptr %12, i64 %64
  %wide.load173 = load <4 x float>, ptr %65, align 4, !tbaa !11, !alias.scope !35
  %66 = fdiv <4 x float> %wide.load173, <float 2.550000e+02, float 2.550000e+02, float 2.550000e+02, float 2.550000e+02>
  %67 = fsub <4 x float> %66, %broadcast.splat175
  %68 = fdiv <4 x float> %67, %broadcast.splat177
  %69 = getelementptr inbounds float, ptr %14, i64 %64
  store <4 x float> %68, ptr %69, align 4, !tbaa !11, !alias.scope !36, !noalias !37
  %70 = add i32 %reass.mul.us.2, %55
  %71 = sext i32 %70 to i64
  %72 = getelementptr inbounds float, ptr %12, i64 %71
  %wide.load178 = load <4 x float>, ptr %72, align 4, !tbaa !11, !alias.scope !38
  %73 = fdiv <4 x float> %wide.load178, <float 2.550000e+02, float 2.550000e+02, float 2.550000e+02, float 2.550000e+02>
  %74 = fsub <4 x float> %73, %broadcast.splat180
  %75 = fdiv <4 x float> %74, %broadcast.splat182
  %76 = getelementptr inbounds float, ptr %14, i64 %71
  store <4 x float> %75, ptr %76, align 4, !tbaa !11, !alias.scope !39, !noalias !40
  %index.next = add nuw i64 %index, 4
  %77 = icmp eq i64 %index.next, %n.vec
  br i1 %77, label %middle.block, label %vector.body, !llvm.loop !41

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

.preheader.us.preheader:                          ; preds = %middle.block, %vector.memcheck, %vector.scevcheck, %.preheader28.us
  %indvars.iv.ph = phi i64 [ 0, %vector.memcheck ], [ 0, %vector.scevcheck ], [ 0, %.preheader28.us ], [ %n.vec, %middle.block ]
  br label %.preheader.us

.preheader.us:                                    ; preds = %.preheader.us.preheader, %.preheader.us
  %indvars.iv = phi i64 [ %indvars.iv.next, %.preheader.us ], [ %indvars.iv.ph, %.preheader.us.preheader ]
  %78 = trunc nuw nsw i64 %indvars.iv to i32
  %79 = add i32 %reass.mul.us, %78
  %80 = sext i32 %79 to i64
  %81 = getelementptr inbounds float, ptr %12, i64 %80
  %82 = load float, ptr %81, align 4, !tbaa !11
  %83 = fdiv float %82, 2.550000e+02
  %84 = load float, ptr %4, align 4, !tbaa !11
  %85 = fsub float %83, %84
  %86 = load float, ptr %5, align 4, !tbaa !11
  %87 = fdiv float %85, %86
  %88 = getelementptr inbounds float, ptr %14, i64 %80
  store float %87, ptr %88, align 4, !tbaa !11
  %89 = add i32 %reass.mul.us.1, %78
  %90 = sext i32 %89 to i64
  %91 = getelementptr inbounds float, ptr %12, i64 %90
  %92 = load float, ptr %91, align 4, !tbaa !11
  %93 = fdiv float %92, 2.550000e+02
  %94 = load float, ptr %15, align 4, !tbaa !11
  %95 = fsub float %93, %94
  %96 = load float, ptr %16, align 4, !tbaa !11
  %97 = fdiv float %95, %96
  %98 = getelementptr inbounds float, ptr %14, i64 %90
  store float %97, ptr %98, align 4, !tbaa !11
  %99 = add i32 %reass.mul.us.2, %78
  %100 = sext i32 %99 to i64
  %101 = getelementptr inbounds float, ptr %12, i64 %100
  %102 = load float, ptr %101, align 4, !tbaa !11
  %103 = fdiv float %102, 2.550000e+02
  %104 = load float, ptr %18, align 4, !tbaa !11
  %105 = fsub float %103, %104
  %106 = load float, ptr %19, align 4, !tbaa !11
  %107 = fdiv float %105, %106
  %108 = getelementptr inbounds float, ptr %14, i64 %100
  store float %107, ptr %108, align 4, !tbaa !11
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge.us, label %.preheader.us, !llvm.loop !45

._crit_edge.us:                                   ; preds = %.preheader.us, %middle.block
  %109 = add nuw nsw i32 %.02631.us, 1
  %exitcond36.not = icmp eq i32 %109, %3
  br i1 %exitcond36.not, label %._crit_edge32, label %.preheader28.us, !llvm.loop !46

._crit_edge32:                                    ; preds = %._crit_edge.us, %.preheader28.lr.ph, %6
  tail call void @_Z10free_image5image(ptr noundef nonnull byval(%struct.image) align 8 %1)
  ret void
}

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }

!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, !7, i64 8}
!6 = !{!"_ZTS5image", !7, i64 0, !7, i64 4, !7, i64 8, !10, i64 16}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"any pointer", !8, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"float", !8, i64 0}
!13 = !{!14}
!14 = distinct !{!14, !15}
!15 = distinct !{!15, !"LVerDomain"}
!16 = !{!17}
!17 = distinct !{!17, !15}
!18 = !{!19}
!19 = distinct !{!19, !15}
!20 = !{!21}
!21 = distinct !{!21, !15}
!22 = !{!23}
!23 = distinct !{!23, !15}
!24 = !{!25}
!25 = distinct !{!25, !15}
!26 = !{!27}
!27 = distinct !{!27, !15}
!28 = !{!29}
!29 = distinct !{!29, !15}
!30 = !{!31, !32, !27, !14, !17, !33, !19, !21, !34, !23, !25}
!31 = distinct !{!31, !15}
!32 = distinct !{!32, !15}
!33 = distinct !{!33, !15}
!34 = distinct !{!34, !15}
!35 = !{!33}
!36 = !{!31}
!37 = !{!32, !27, !14, !17, !33, !19, !21, !34, !23, !25}
!38 = !{!34}
!39 = !{!32}
!40 = !{!27, !14, !17, !33, !19, !21, !34, !23, !25}
!41 = distinct !{!41, !42, !43, !44}
!42 = !{!"llvm.loop.mustprogress"}
!43 = !{!"llvm.loop.isvectorized", i32 1}
!44 = !{!"llvm.loop.unroll.runtime.disable"}
!45 = distinct !{!45, !42, !43}
!46 = distinct !{!46, !42}


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