; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/TESTING/MATGEN (clahilb)

; 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.complex = type { float, float }

@clahilb_.d1 = external hidden global [8 x %struct.complex], align 16
@clahilb_.d2 = external hidden global [8 x %struct.complex], align 16
@clahilb_.invd1 = external hidden global [8 x %struct.complex], align 16
@clahilb_.invd2 = external hidden global [8 x %struct.complex], align 16
@.str = external hidden unnamed_addr constant [8 x i8], align 1
@c__2 = external hidden global i32, align 4
@.str.1 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [5 x i8], align 1
@c_b6 = external hidden global %struct.complex, align 4

; Function Attrs: nounwind uwtable
define dso_local void @clahilb_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10) #0 {
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca float, align 4
  %35 = alloca %struct.complex, align 4
  %36 = alloca %struct.complex, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca [2 x i8], align 1
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca %struct.complex, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  store ptr %0, ptr %12, align 8, !tbaa !5
  store ptr %1, ptr %13, align 8, !tbaa !5
  store ptr %2, ptr %14, align 8, !tbaa !5
  store ptr %3, ptr %15, align 8, !tbaa !5
  store ptr %4, ptr %16, align 8, !tbaa !5
  store ptr %5, ptr %17, align 8, !tbaa !5
  store ptr %6, ptr %18, align 8, !tbaa !5
  store ptr %7, ptr %19, align 8, !tbaa !5
  store ptr %8, ptr %20, align 8, !tbaa !5
  store ptr %9, ptr %21, align 8, !tbaa !5
  store ptr %10, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.start.p0(i64 2, ptr %41) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #4
  %48 = load ptr, ptr %20, align 8, !tbaa !5
  %49 = getelementptr inbounds float, ptr %48, i32 -1
  store ptr %49, ptr %20, align 8, !tbaa !5
  %50 = load ptr, ptr %15, align 8, !tbaa !5
  %51 = load i32, ptr %50, align 4, !tbaa !9
  store i32 %51, ptr %23, align 4, !tbaa !9
  %52 = load i32, ptr %23, align 4, !tbaa !9
  %53 = mul nsw i32 %52, 1
  %54 = add nsw i32 1, %53
  store i32 %54, ptr %24, align 4, !tbaa !9
  %55 = load i32, ptr %24, align 4, !tbaa !9
  %56 = load ptr, ptr %14, align 8, !tbaa !5
  %57 = sext i32 %55 to i64
  %58 = sub i64 0, %57
  %59 = getelementptr inbounds %struct.complex, ptr %56, i64 %58
  store ptr %59, ptr %14, align 8, !tbaa !5
  %60 = load ptr, ptr %17, align 8, !tbaa !5
  %61 = load i32, ptr %60, align 4, !tbaa !9
  store i32 %61, ptr %25, align 4, !tbaa !9
  %62 = load i32, ptr %25, align 4, !tbaa !9
  %63 = mul nsw i32 %62, 1
  %64 = add nsw i32 1, %63
  store i32 %64, ptr %26, align 4, !tbaa !9
  %65 = load i32, ptr %26, align 4, !tbaa !9
  %66 = load ptr, ptr %16, align 8, !tbaa !5
  %67 = sext i32 %65 to i64
  %68 = sub i64 0, %67
  %69 = getelementptr inbounds %struct.complex, ptr %66, i64 %68
  store ptr %69, ptr %16, align 8, !tbaa !5
  %70 = load ptr, ptr %19, align 8, !tbaa !5
  %71 = load i32, ptr %70, align 4, !tbaa !9
  store i32 %71, ptr %27, align 4, !tbaa !9
  %72 = load i32, ptr %27, align 4, !tbaa !9
  %73 = mul nsw i32 %72, 1
  %74 = add nsw i32 1, %73
  store i32 %74, ptr %28, align 4, !tbaa !9
  %75 = load i32, ptr %28, align 4, !tbaa !9
  %76 = load ptr, ptr %18, align 8, !tbaa !5
  %77 = sext i32 %75 to i64
  %78 = sub i64 0, %77
  %79 = getelementptr inbounds %struct.complex, ptr %76, i64 %78
  store ptr %79, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #4
  store i32 0, ptr %45, align 4, !tbaa !9
  store i32 2, ptr %46, align 4, !tbaa !9
  br label %80

80:                                               ; preds = %105, %11
  %81 = load i32, ptr %45, align 4, !tbaa !9
  %82 = load i32, ptr %46, align 4, !tbaa !9
  %83 = icmp slt i32 %81, %82
  br i1 %83, label %84, label %93

84:                                               ; preds = %80
  %85 = load ptr, ptr %22, align 8, !tbaa !5
  %86 = getelementptr inbounds i8, ptr %85, i64 1
  %87 = load i32, ptr %45, align 4, !tbaa !9
  %88 = sext i32 %87 to i64
  %89 = getelementptr inbounds i8, ptr %86, i64 %88
  %90 = load i8, ptr %89, align 1, !tbaa !11
  %91 = sext i8 %90 to i32
  %92 = icmp ne i32 %91, 0
  br label %93

93:                                               ; preds = %84, %80
  %94 = phi i1 [ false, %80 ], [ %92, %84 ]
  br i1 %94, label %95, label %108

95:                                               ; preds = %93
  %96 = load ptr, ptr %22, align 8, !tbaa !5
  %97 = getelementptr inbounds i8, ptr %96, i64 1
  %98 = load i32, ptr %45, align 4, !tbaa !9
  %99 = sext i32 %98 to i64
  %100 = getelementptr inbounds i8, ptr %97, i64 %99
  %101 = load i8, ptr %100, align 1, !tbaa !11
  %102 = load i32, ptr %45, align 4, !tbaa !9
  %103 = sext i32 %102 to i64
  %104 = getelementptr inbounds [2 x i8], ptr %41, i64 0, i64 %103
  store i8 %101, ptr %104, align 1, !tbaa !11
  br label %105

105:                                              ; preds = %95
  %106 = load i32, ptr %45, align 4, !tbaa !9
  %107 = add nsw i32 %106, 1
  store i32 %107, ptr %45, align 4, !tbaa !9
  br label %80, !llvm.loop !12

108:                                              ; preds = %93
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  %109 = load ptr, ptr %21, align 8, !tbaa !5
  store i32 0, ptr %109, align 4, !tbaa !9
  %110 = load ptr, ptr %12, align 8, !tbaa !5
  %111 = load i32, ptr %110, align 4, !tbaa !9
  %112 = icmp slt i32 %111, 0
  br i1 %112, label %117, label %113

113:                                              ; preds = %108
  %114 = load ptr, ptr %12, align 8, !tbaa !5
  %115 = load i32, ptr %114, align 4, !tbaa !9
  %116 = icmp sgt i32 %115, 11
  br i1 %116, label %117, label %119

117:                                              ; preds = %113, %108
  %118 = load ptr, ptr %21, align 8, !tbaa !5
  store i32 -1, ptr %118, align 4, !tbaa !9
  br label %153

119:                                              ; preds = %113
  %120 = load ptr, ptr %13, align 8, !tbaa !5
  %121 = load i32, ptr %120, align 4, !tbaa !9
  %122 = icmp slt i32 %121, 0
  br i1 %122, label %123, label %125

123:                                              ; preds = %119
  %124 = load ptr, ptr %21, align 8, !tbaa !5
  store i32 -2, ptr %124, align 4, !tbaa !9
  br label %152

125:                                              ; preds = %119
  %126 = load ptr, ptr %15, align 8, !tbaa !5
  %127 = load i32, ptr %126, align 4, !tbaa !9
  %128 = load ptr, ptr %12, align 8, !tbaa !5
  %129 = load i32, ptr %128, align 4, !tbaa !9
  %130 = icmp slt i32 %127, %129
  br i1 %130, label %131, label %133

131:                                              ; preds = %125
  %132 = load ptr, ptr %21, align 8, !tbaa !5
  store i32 -4, ptr %132, align 4, !tbaa !9
  br label %151

133:                                              ; preds = %125
  %134 = load ptr, ptr %17, align 8, !tbaa !5
  %135 = load i32, ptr %134, align 4, !tbaa !9
  %136 = load ptr, ptr %12, align 8, !tbaa !5
  %137 = load i32, ptr %136, align 4, !tbaa !9
  %138 = icmp slt i32 %135, %137
  br i1 %138, label %139, label %141

139:                                              ; preds = %133
  %140 = load ptr, ptr %21, align 8, !tbaa !5
  store i32 -6, ptr %140, align 4, !tbaa !9
  br label %150

141:                                              ; preds = %133
  %142 = load ptr, ptr %19, align 8, !tbaa !5
  %143 = load i32, ptr %142, align 4, !tbaa !9
  %144 = load ptr, ptr %12, align 8, !tbaa !5
  %145 = load i32, ptr %144, align 4, !tbaa !9
  %146 = icmp slt i32 %143, %145
  br i1 %146, label %147, label %149

147:                                              ; preds = %141
  %148 = load ptr, ptr %21, align 8, !tbaa !5
  store i32 -8, ptr %148, align 4, !tbaa !9
  br label %149

149:                                              ; preds = %147, %141
  br label %150

150:                                              ; preds = %149, %139
  br label %151

151:                                              ; preds = %150, %131
  br label %152

152:                                              ; preds = %151, %123
  br label %153

153:                                              ; preds = %152, %117
  %154 = load ptr, ptr %21, align 8, !tbaa !5
  %155 = load i32, ptr %154, align 4, !tbaa !9
  %156 = icmp slt i32 %155, 0
  br i1 %156, label %157, label %162

157:                                              ; preds = %153
  %158 = load ptr, ptr %21, align 8, !tbaa !5
  %159 = load i32, ptr %158, align 4, !tbaa !9
  %160 = sub nsw i32 0, %159
  store i32 %160, ptr %29, align 4, !tbaa !9
  %161 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %29, i32 noundef 7)
  store i32 1, ptr %47, align 4
  br label %708

162:                                              ; preds = %153
  %163 = load ptr, ptr %12, align 8, !tbaa !5
  %164 = load i32, ptr %163, align 4, !tbaa !9
  %165 = icmp sgt i32 %164, 6
  br i1 %165, label %166, label %168

166:                                              ; preds = %162
  %167 = load ptr, ptr %21, align 8, !tbaa !5
  store i32 1, ptr %167, align 4, !tbaa !9
  br label %168

168:                                              ; preds = %166, %162
  store i32 1, ptr %39, align 4, !tbaa !9
  %169 = load ptr, ptr %12, align 8, !tbaa !5
  %170 = load i32, ptr %169, align 4, !tbaa !9
  %171 = shl i32 %170, 1
  %172 = sub nsw i32 %171, 1
  store i32 %172, ptr %29, align 4, !tbaa !9
  store i32 2, ptr %37, align 4, !tbaa !9
  br label %173

173:                                              ; preds = %198, %168
  %174 = load i32, ptr %37, align 4, !tbaa !9
  %175 = load i32, ptr %29, align 4, !tbaa !9
  %176 = icmp sle i32 %174, %175
  br i1 %176, label %177, label %201

177:                                              ; preds = %173
  %178 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %178, ptr %43, align 4, !tbaa !9
  %179 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %179, ptr %42, align 4, !tbaa !9
  %180 = load i32, ptr %43, align 4, !tbaa !9
  %181 = load i32, ptr %42, align 4, !tbaa !9
  %182 = srem i32 %180, %181
  store i32 %182, ptr %40, align 4, !tbaa !9
  br label %183

183:                                              ; preds = %186, %177
  %184 = load i32, ptr %40, align 4, !tbaa !9
  %185 = icmp ne i32 %184, 0
  br i1 %185, label %186, label %192

186:                                              ; preds = %183
  %187 = load i32, ptr %42, align 4, !tbaa !9
  store i32 %187, ptr %43, align 4, !tbaa !9
  %188 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %188, ptr %42, align 4, !tbaa !9
  %189 = load i32, ptr %43, align 4, !tbaa !9
  %190 = load i32, ptr %42, align 4, !tbaa !9
  %191 = srem i32 %189, %190
  store i32 %191, ptr %40, align 4, !tbaa !9
  br label %183, !llvm.loop !14

192:                                              ; preds = %183
  %193 = load i32, ptr %39, align 4, !tbaa !9
  %194 = load i32, ptr %42, align 4, !tbaa !9
  %195 = sdiv i32 %193, %194
  %196 = load i32, ptr %37, align 4, !tbaa !9
  %197 = mul nsw i32 %195, %196
  store i32 %197, ptr %39, align 4, !tbaa !9
  br label %198

198:                                              ; preds = %192
  %199 = load i32, ptr %37, align 4, !tbaa !9
  %200 = add nsw i32 %199, 1
  store i32 %200, ptr %37, align 4, !tbaa !9
  br label %173, !llvm.loop !15

201:                                              ; preds = %173
  %202 = getelementptr inbounds [2 x i8], ptr %41, i64 0, i64 0
  %203 = call i32 @lsamen_(ptr noundef @c__2, ptr noundef %202, ptr noundef @.str.1)
  %204 = icmp ne i32 %203, 0
  br i1 %204, label %205, label %310

205:                                              ; preds = %201
  %206 = load ptr, ptr %12, align 8, !tbaa !5
  %207 = load i32, ptr %206, align 4, !tbaa !9
  store i32 %207, ptr %29, align 4, !tbaa !9
  store i32 1, ptr %38, align 4, !tbaa !9
  br label %208

208:                                              ; preds = %306, %205
  %209 = load i32, ptr %38, align 4, !tbaa !9
  %210 = load i32, ptr %29, align 4, !tbaa !9
  %211 = icmp sle i32 %209, %210
  br i1 %211, label %212, label %309

212:                                              ; preds = %208
  %213 = load ptr, ptr %12, align 8, !tbaa !5
  %214 = load i32, ptr %213, align 4, !tbaa !9
  store i32 %214, ptr %30, align 4, !tbaa !9
  store i32 1, ptr %37, align 4, !tbaa !9
  br label %215

215:                                              ; preds = %302, %212
  %216 = load i32, ptr %37, align 4, !tbaa !9
  %217 = load i32, ptr %30, align 4, !tbaa !9
  %218 = icmp sle i32 %216, %217
  br i1 %218, label %219, label %305

219:                                              ; preds = %215
  %220 = load i32, ptr %37, align 4, !tbaa !9
  %221 = load i32, ptr %38, align 4, !tbaa !9
  %222 = load i32, ptr %23, align 4, !tbaa !9
  %223 = mul nsw i32 %221, %222
  %224 = add nsw i32 %220, %223
  store i32 %224, ptr %31, align 4, !tbaa !9
  %225 = load i32, ptr %38, align 4, !tbaa !9
  %226 = srem i32 %225, 8
  store i32 %226, ptr %32, align 4, !tbaa !9
  %227 = load i32, ptr %39, align 4, !tbaa !9
  %228 = sitofp i32 %227 to float
  %229 = load i32, ptr %37, align 4, !tbaa !9
  %230 = load i32, ptr %38, align 4, !tbaa !9
  %231 = add nsw i32 %229, %230
  %232 = sub nsw i32 %231, 1
  %233 = sitofp i32 %232 to float
  %234 = fdiv float %228, %233
  store float %234, ptr %34, align 4, !tbaa !16
  %235 = load float, ptr %34, align 4, !tbaa !16
  %236 = load i32, ptr %32, align 4, !tbaa !9
  %237 = sext i32 %236 to i64
  %238 = getelementptr inbounds [8 x %struct.complex], ptr @clahilb_.d1, i64 0, i64 %237
  %239 = getelementptr inbounds %struct.complex, ptr %238, i32 0, i32 0
  %240 = load float, ptr %239, align 8, !tbaa !18
  %241 = fmul float %235, %240
  %242 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  store float %241, ptr %242, align 4, !tbaa !18
  %243 = load float, ptr %34, align 4, !tbaa !16
  %244 = load i32, ptr %32, align 4, !tbaa !9
  %245 = sext i32 %244 to i64
  %246 = getelementptr inbounds [8 x %struct.complex], ptr @clahilb_.d1, i64 0, i64 %245
  %247 = getelementptr inbounds %struct.complex, ptr %246, i32 0, i32 1
  %248 = load float, ptr %247, align 4, !tbaa !20
  %249 = fmul float %243, %248
  %250 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  store float %249, ptr %250, align 4, !tbaa !20
  %251 = load i32, ptr %37, align 4, !tbaa !9
  %252 = srem i32 %251, 8
  store i32 %252, ptr %33, align 4, !tbaa !9
  %253 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  %254 = load float, ptr %253, align 4, !tbaa !18
  %255 = load i32, ptr %33, align 4, !tbaa !9
  %256 = sext i32 %255 to i64
  %257 = getelementptr inbounds [8 x %struct.complex], ptr @clahilb_.d1, i64 0, i64 %256
  %258 = getelementptr inbounds %struct.complex, ptr %257, i32 0, i32 0
  %259 = load float, ptr %258, align 8, !tbaa !18
  %260 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  %261 = load float, ptr %260, align 4, !tbaa !20
  %262 = load i32, ptr %33, align 4, !tbaa !9
  %263 = sext i32 %262 to i64
  %264 = getelementptr inbounds [8 x %struct.complex], ptr @clahilb_.d1, i64 0, i64 %263
  %265 = getelementptr inbounds %struct.complex, ptr %264, i32 0, i32 1
  %266 = load float, ptr %265, align 4, !tbaa !20
  %267 = fmul float %261, %266
  %268 = fneg float %267
  %269 = call float @llvm.fmuladd.f32(float %254, float %259, float %268)
  %270 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  store float %269, ptr %270, align 4, !tbaa !18
  %271 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  %272 = load float, ptr %271, align 4, !tbaa !18
  %273 = load i32, ptr %33, align 4, !tbaa !9
  %274 = sext i32 %273 to i64
  %275 = getelementptr inbounds [8 x %struct.complex], ptr @clahilb_.d1, i64 0, i64 %274
  %276 = getelementptr inbounds %struct.complex, ptr %275, i32 0, i32 1
  %277 = load float, ptr %276, align 4, !tbaa !20
  %278 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  %279 = load float, ptr %278, align 4, !tbaa !20
  %280 = load i32, ptr %33, align 4, !tbaa !9
  %281 = sext i32 %280 to i64
  %282 = getelementptr inbounds [8 x %struct.complex], ptr @clahilb_.d1, i64 0, i64 %281
  %283 = getelementptr inbounds %struct.complex, ptr %282, i32 0, i32 0
  %284 = load float, ptr %283, align 8, !tbaa !18
  %285 = fmul float %279, %284
  %286 = call float @llvm.fmuladd.f32(float %272, float %277, float %285)
  %287 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  store float %286, ptr %287, align 4, !tbaa !20
  %288 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %289 = load float, ptr %288, align 4, !tbaa !18
  %290 = load ptr, ptr %14, align 8, !tbaa !5
  %291 = load i32, ptr %31, align 4, !tbaa !9
  %292 = sext i32 %291 to i64
  %293 = getelementptr inbounds %struct.complex, ptr %290, i64 %292
  %294 = getelementptr inbounds %struct.complex, ptr %293, i32 0, i32 0
  store float %289, ptr %294, align 4, !tbaa !18
  %295 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %296 = load float, ptr %295, align 4, !tbaa !20
  %297 = load ptr, ptr %14, align 8, !tbaa !5
  %298 = load i32, ptr %31, align 4, !tbaa !9
  %299 = sext i32 %298 to i64
  %300 = getelementptr inbounds %struct.complex, ptr %297, i64 %299
  %301 = getelementptr inbounds %struct.complex, ptr %300, i32 0, i32 1
  store float %296, ptr %301, align 4, !tbaa !20
  br label %302

302:                                              ; preds = %219
  %303 = load i32, ptr %37, align 4, !tbaa !9
  %304 = add nsw i32 %303, 1
  store i32 %304, ptr %37, align 4, !tbaa !9
  br label %215, !llvm.loop !21

305:                                              ; preds = %215
  br label %306

306:                                              ; preds = %305
  %307 = load i32, ptr %38, align 4, !tbaa !9
  %308 = add nsw i32 %307, 1
  store i32 %308, ptr %38, align 4, !tbaa !9
  br label %208, !llvm.loop !22

309:                                              ; preds = %208
  br label %415

310:                                              ; preds = %201
  %311 = load ptr, ptr %12, align 8, !tbaa !5
  %312 = load i32, ptr %311, align 4, !tbaa !9
  store i32 %312, ptr %29, align 4, !tbaa !9
  store i32 1, ptr %38, align 4, !tbaa !9
  br label %313

313:                                              ; preds = %411, %310
  %314 = load i32, ptr %38, align 4, !tbaa !9
  %315 = load i32, ptr %29, align 4, !tbaa !9
  %316 = icmp sle i32 %314, %315
  br i1 %316, label %317, label %414

317:                                              ; preds = %313
  %318 = load ptr, ptr %12, align 8, !tbaa !5
  %319 = load i32, ptr %318, align 4, !tbaa !9
  store i32 %319, ptr %30, align 4, !tbaa !9
  store i32 1, ptr %37, align 4, !tbaa !9
  br label %320

320:                                              ; preds = %407, %317
  %321 = load i32, ptr %37, align 4, !tbaa !9
  %322 = load i32, ptr %30, align 4, !tbaa !9
  %323 = icmp sle i32 %321, %322
  br i1 %323, label %324, label %410

324:                                              ; preds = %320
  %325 = load i32, ptr %37, align 4, !tbaa !9
  %326 = load i32, ptr %38, align 4, !tbaa !9
  %327 = load i32, ptr %23, align 4, !tbaa !9
  %328 = mul nsw i32 %326, %327
  %329 = add nsw i32 %325, %328
  store i32 %329, ptr %31, align 4, !tbaa !9
  %330 = load i32, ptr %38, align 4, !tbaa !9
  %331 = srem i32 %330, 8
  store i32 %331, ptr %32, align 4, !tbaa !9
  %332 = load i32, ptr %39, align 4, !tbaa !9
  %333 = sitofp i32 %332 to float
  %334 = load i32, ptr %37, align 4, !tbaa !9
  %335 = load i32, ptr %38, align 4, !tbaa !9
  %336 = add nsw i32 %334, %335
  %337 = sub nsw i32 %336, 1
  %338 = sitofp i32 %337 to float
  %339 = fdiv float %333, %338
  store float %339, ptr %34, align 4, !tbaa !16
  %340 = load float, ptr %34, align 4, !tbaa !16
  %341 = load i32, ptr %32, align 4, !tbaa !9
  %342 = sext i32 %341 to i64
  %343 = getelementptr inbounds [8 x %struct.complex], ptr @clahilb_.d1, i64 0, i64 %342
  %344 = getelementptr inbounds %struct.complex, ptr %343, i32 0, i32 0
  %345 = load float, ptr %344, align 8, !tbaa !18
  %346 = fmul float %340, %345
  %347 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  store float %346, ptr %347, align 4, !tbaa !18
  %348 = load float, ptr %34, align 4, !tbaa !16
  %349 = load i32, ptr %32, align 4, !tbaa !9
  %350 = sext i32 %349 to i64
  %351 = getelementptr inbounds [8 x %struct.complex], ptr @clahilb_.d1, i64 0, i64 %350
  %352 = getelementptr inbounds %struct.complex, ptr %351, i32 0, i32 1
  %353 = load float, ptr %352, align 4, !tbaa !20
  %354 = fmul float %348, %353
  %355 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  store float %354, ptr %355, align 4, !tbaa !20
  %356 = load i32, ptr %37, align 4, !tbaa !9
  %357 = srem i32 %356, 8
  store i32 %357, ptr %33, align 4, !tbaa !9
  %358 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  %359 = load float, ptr %358, align 4, !tbaa !18
  %360 = load i32, ptr %33, align 4, !tbaa !9
  %361 = sext i32 %360 to i64
  %362 = getelementptr inbounds [8 x %struct.complex], ptr @clahilb_.d2, i64 0, i64 %361
  %363 = getelementptr inbounds %struct.complex, ptr %362, i32 0, i32 0
  %364 = load float, ptr %363, align 8, !tbaa !18
  %365 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  %366 = load float, ptr %365, align 4, !tbaa !20
  %367 = load i32, ptr %33, align 4, !tbaa !9
  %368 = sext i32 %367 to i64
  %369 = getelementptr inbounds [8 x %struct.complex], ptr @clahilb_.d2, i64 0, i64 %368
  %370 = getelementptr inbounds %struct.complex, ptr %369, i32 0, i32 1
  %371 = load float, ptr %370, align 4, !tbaa !20
  %372 = fmul float %366, %371
  %373 = fneg float %372
  %374 = call float @llvm.fmuladd.f32(float %359, float %364, float %373)
  %375 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  store float %374, ptr %375, align 4, !tbaa !18
  %376 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  %377 = load float, ptr %376, align 4, !tbaa !18
  %378 = load i32, ptr %33, align 4, !tbaa !9
  %379 = sext i32 %378 to i64
  %380 = getelementptr inbounds [8 x %struct.complex], ptr @clahilb_.d2, i64 0, i64 %379
  %381 = getelementptr inbounds %struct.complex, ptr %380, i32 0, i32 1
  %382 = load float, ptr %381, align 4, !tbaa !20
  %383 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  %384 = load float, ptr %383, align 4, !tbaa !20
  %385 = load i32, ptr %33, align 4, !tbaa !9
  %386 = sext i32 %385 to i64
  %387 = getelementptr inbounds [8 x %struct.complex], ptr @clahilb_.d2, i64 0, i64 %386
  %388 = getelementptr inbounds %struct.complex, ptr %387, i32 0, i32 0
  %389 = load float, ptr %388, align 8, !tbaa !18
  %390 = fmul float %384, %389
  %391 = call float @llvm.fmuladd.f32(float %377, float %382, float %390)
  %392 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  store float %391, ptr %392, align 4, !tbaa !20
  %393 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %394 = load float, ptr %393, align 4, !tbaa !18
  %395 = load ptr, ptr %14, align 8, !tbaa !5
  %396 = load i32, ptr %31, align 4, !tbaa !9
  %397 = sext i32 %396 to i64
  %398 = getelementptr inbounds %struct.complex, ptr %395, i64 %397
  %399 = getelementptr inbounds %struct.complex, ptr %398, i32 0, i32 0
  store float %394, ptr %399, align 4, !tbaa !18
  %400 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %401 = load float, ptr %400, align 4, !tbaa !20
  %402 = load ptr, ptr %14, align 8, !tbaa !5
  %403 = load i32, ptr %31, align 4, !tbaa !9
  %404 = sext i32 %403 to i64
  %405 = getelementptr inbounds %struct.complex, ptr %402, i64 %404
  %406 = getelementptr inbounds %struct.complex, ptr %405, i32 0, i32 1
  store float %401, ptr %406, align 4, !tbaa !20
  br label %407

407:                                              ; preds = %324
  %408 = load i32, ptr %37, align 4, !tbaa !9
  %409 = add nsw i32 %408, 1
  store i32 %409, ptr %37, align 4, !tbaa !9
  br label %320, !llvm.loop !23

410:                                              ; preds = %320
  br label %411

411:                                              ; preds = %410
  %412 = load i32, ptr %38, align 4, !tbaa !9
  %413 = add nsw i32 %412, 1
  store i32 %413, ptr %38, align 4, !tbaa !9
  br label %313, !llvm.loop !24

414:                                              ; preds = %313
  br label %415

415:                                              ; preds = %414, %309
  %416 = load i32, ptr %39, align 4, !tbaa !9
  %417 = sitofp i32 %416 to float
  store float %417, ptr %34, align 4, !tbaa !16
  %418 = load float, ptr %34, align 4, !tbaa !16
  %419 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  store float %418, ptr %419, align 4, !tbaa !18
  %420 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  store float 0.000000e+00, ptr %420, align 4, !tbaa !20
  %421 = load ptr, ptr %12, align 8, !tbaa !5
  %422 = load ptr, ptr %13, align 8, !tbaa !5
  %423 = load ptr, ptr %18, align 8, !tbaa !5
  %424 = load i32, ptr %28, align 4, !tbaa !9
  %425 = sext i32 %424 to i64
  %426 = getelementptr inbounds %struct.complex, ptr %423, i64 %425
  %427 = load ptr, ptr %19, align 8, !tbaa !5
  call void @claset_(ptr noundef @.str.2, ptr noundef %421, ptr noundef %422, ptr noundef @c_b6, ptr noundef %44, ptr noundef %426, ptr noundef %427)
  %428 = load ptr, ptr %12, align 8, !tbaa !5
  %429 = load i32, ptr %428, align 4, !tbaa !9
  %430 = sitofp i32 %429 to float
  %431 = load ptr, ptr %20, align 8, !tbaa !5
  %432 = getelementptr inbounds float, ptr %431, i64 1
  store float %430, ptr %432, align 4, !tbaa !16
  %433 = load ptr, ptr %12, align 8, !tbaa !5
  %434 = load i32, ptr %433, align 4, !tbaa !9
  store i32 %434, ptr %29, align 4, !tbaa !9
  store i32 2, ptr %38, align 4, !tbaa !9
  br label %435

435:                                              ; preds = %472, %415
  %436 = load i32, ptr %38, align 4, !tbaa !9
  %437 = load i32, ptr %29, align 4, !tbaa !9
  %438 = icmp sle i32 %436, %437
  br i1 %438, label %439, label %475

439:                                              ; preds = %435
  %440 = load ptr, ptr %20, align 8, !tbaa !5
  %441 = load i32, ptr %38, align 4, !tbaa !9
  %442 = sub nsw i32 %441, 1
  %443 = sext i32 %442 to i64
  %444 = getelementptr inbounds float, ptr %440, i64 %443
  %445 = load float, ptr %444, align 4, !tbaa !16
  %446 = load i32, ptr %38, align 4, !tbaa !9
  %447 = sub nsw i32 %446, 1
  %448 = sitofp i32 %447 to float
  %449 = fdiv float %445, %448
  %450 = load i32, ptr %38, align 4, !tbaa !9
  %451 = sub nsw i32 %450, 1
  %452 = load ptr, ptr %12, align 8, !tbaa !5
  %453 = load i32, ptr %452, align 4, !tbaa !9
  %454 = sub nsw i32 %451, %453
  %455 = sitofp i32 %454 to float
  %456 = fmul float %449, %455
  %457 = load i32, ptr %38, align 4, !tbaa !9
  %458 = sub nsw i32 %457, 1
  %459 = sitofp i32 %458 to float
  %460 = fdiv float %456, %459
  %461 = load ptr, ptr %12, align 8, !tbaa !5
  %462 = load i32, ptr %461, align 4, !tbaa !9
  %463 = load i32, ptr %38, align 4, !tbaa !9
  %464 = add nsw i32 %462, %463
  %465 = sub nsw i32 %464, 1
  %466 = sitofp i32 %465 to float
  %467 = fmul float %460, %466
  %468 = load ptr, ptr %20, align 8, !tbaa !5
  %469 = load i32, ptr %38, align 4, !tbaa !9
  %470 = sext i32 %469 to i64
  %471 = getelementptr inbounds float, ptr %468, i64 %470
  store float %467, ptr %471, align 4, !tbaa !16
  br label %472

472:                                              ; preds = %439
  %473 = load i32, ptr %38, align 4, !tbaa !9
  %474 = add nsw i32 %473, 1
  store i32 %474, ptr %38, align 4, !tbaa !9
  br label %435, !llvm.loop !25

475:                                              ; preds = %435
  %476 = getelementptr inbounds [2 x i8], ptr %41, i64 0, i64 0
  %477 = call i32 @lsamen_(ptr noundef @c__2, ptr noundef %476, ptr noundef @.str.1)
  %478 = icmp ne i32 %477, 0
  br i1 %478, label %479, label %593

479:                                              ; preds = %475
  %480 = load ptr, ptr %13, align 8, !tbaa !5
  %481 = load i32, ptr %480, align 4, !tbaa !9
  store i32 %481, ptr %29, align 4, !tbaa !9
  store i32 1, ptr %38, align 4, !tbaa !9
  br label %482

482:                                              ; preds = %589, %479
  %483 = load i32, ptr %38, align 4, !tbaa !9
  %484 = load i32, ptr %29, align 4, !tbaa !9
  %485 = icmp sle i32 %483, %484
  br i1 %485, label %486, label %592

486:                                              ; preds = %482
  %487 = load ptr, ptr %12, align 8, !tbaa !5
  %488 = load i32, ptr %487, align 4, !tbaa !9
  store i32 %488, ptr %30, align 4, !tbaa !9
  store i32 1, ptr %37, align 4, !tbaa !9
  br label %489

489:                                              ; preds = %585, %486
  %490 = load i32, ptr %37, align 4, !tbaa !9
  %491 = load i32, ptr %30, align 4, !tbaa !9
  %492 = icmp sle i32 %490, %491
  br i1 %492, label %493, label %588

493:                                              ; preds = %489
  %494 = load i32, ptr %37, align 4, !tbaa !9
  %495 = load i32, ptr %38, align 4, !tbaa !9
  %496 = load i32, ptr %25, align 4, !tbaa !9
  %497 = mul nsw i32 %495, %496
  %498 = add nsw i32 %494, %497
  store i32 %498, ptr %31, align 4, !tbaa !9
  %499 = load i32, ptr %38, align 4, !tbaa !9
  %500 = srem i32 %499, 8
  store i32 %500, ptr %32, align 4, !tbaa !9
  %501 = load ptr, ptr %20, align 8, !tbaa !5
  %502 = load i32, ptr %37, align 4, !tbaa !9
  %503 = sext i32 %502 to i64
  %504 = getelementptr inbounds float, ptr %501, i64 %503
  %505 = load float, ptr %504, align 4, !tbaa !16
  %506 = load ptr, ptr %20, align 8, !tbaa !5
  %507 = load i32, ptr %38, align 4, !tbaa !9
  %508 = sext i32 %507 to i64
  %509 = getelementptr inbounds float, ptr %506, i64 %508
  %510 = load float, ptr %509, align 4, !tbaa !16
  %511 = fmul float %505, %510
  %512 = load i32, ptr %37, align 4, !tbaa !9
  %513 = load i32, ptr %38, align 4, !tbaa !9
  %514 = add nsw i32 %512, %513
  %515 = sub nsw i32 %514, 1
  %516 = sitofp i32 %515 to float
  %517 = fdiv float %511, %516
  store float %517, ptr %34, align 4, !tbaa !16
  %518 = load float, ptr %34, align 4, !tbaa !16
  %519 = load i32, ptr %32, align 4, !tbaa !9
  %520 = sext i32 %519 to i64
  %521 = getelementptr inbounds [8 x %struct.complex], ptr @clahilb_.invd1, i64 0, i64 %520
  %522 = getelementptr inbounds %struct.complex, ptr %521, i32 0, i32 0
  %523 = load float, ptr %522, align 8, !tbaa !18
  %524 = fmul float %518, %523
  %525 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  store float %524, ptr %525, align 4, !tbaa !18
  %526 = load float, ptr %34, align 4, !tbaa !16
  %527 = load i32, ptr %32, align 4, !tbaa !9
  %528 = sext i32 %527 to i64
  %529 = getelementptr inbounds [8 x %struct.complex], ptr @clahilb_.invd1, i64 0, i64 %528
  %530 = getelementptr inbounds %struct.complex, ptr %529, i32 0, i32 1
  %531 = load float, ptr %530, align 4, !tbaa !20
  %532 = fmul float %526, %531
  %533 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  store float %532, ptr %533, align 4, !tbaa !20
  %534 = load i32, ptr %37, align 4, !tbaa !9
  %535 = srem i32 %534, 8
  store i32 %535, ptr %33, align 4, !tbaa !9
  %536 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  %537 = load float, ptr %536, align 4, !tbaa !18
  %538 = load i32, ptr %33, align 4, !tbaa !9
  %539 = sext i32 %538 to i64
  %540 = getelementptr inbounds [8 x %struct.complex], ptr @clahilb_.invd1, i64 0, i64 %539
  %541 = getelementptr inbounds %struct.complex, ptr %540, i32 0, i32 0
  %542 = load float, ptr %541, align 8, !tbaa !18
  %543 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  %544 = load float, ptr %543, align 4, !tbaa !20
  %545 = load i32, ptr %33, align 4, !tbaa !9
  %546 = sext i32 %545 to i64
  %547 = getelementptr inbounds [8 x %struct.complex], ptr @clahilb_.invd1, i64 0, i64 %546
  %548 = getelementptr inbounds %struct.complex, ptr %547, i32 0, i32 1
  %549 = load float, ptr %548, align 4, !tbaa !20
  %550 = fmul float %544, %549
  %551 = fneg float %550
  %552 = call float @llvm.fmuladd.f32(float %537, float %542, float %551)
  %553 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  store float %552, ptr %553, align 4, !tbaa !18
  %554 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  %555 = load float, ptr %554, align 4, !tbaa !18
  %556 = load i32, ptr %33, align 4, !tbaa !9
  %557 = sext i32 %556 to i64
  %558 = getelementptr inbounds [8 x %struct.complex], ptr @clahilb_.invd1, i64 0, i64 %557
  %559 = getelementptr inbounds %struct.complex, ptr %558, i32 0, i32 1
  %560 = load float, ptr %559, align 4, !tbaa !20
  %561 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  %562 = load float, ptr %561, align 4, !tbaa !20
  %563 = load i32, ptr %33, align 4, !tbaa !9
  %564 = sext i32 %563 to i64
  %565 = getelementptr inbounds [8 x %struct.complex], ptr @clahilb_.invd1, i64 0, i64 %564
  %566 = getelementptr inbounds %struct.complex, ptr %565, i32 0, i32 0
  %567 = load float, ptr %566, align 8, !tbaa !18
  %568 = fmul float %562, %567
  %569 = call float @llvm.fmuladd.f32(float %555, float %560, float %568)
  %570 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  store float %569, ptr %570, align 4, !tbaa !20
  %571 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %572 = load float, ptr %571, align 4, !tbaa !18
  %573 = load ptr, ptr %16, align 8, !tbaa !5
  %574 = load i32, ptr %31, align 4, !tbaa !9
  %575 = sext i32 %574 to i64
  %576 = getelementptr inbounds %struct.complex, ptr %573, i64 %575
  %577 = getelementptr inbounds %struct.complex, ptr %576, i32 0, i32 0
  store float %572, ptr %577, align 4, !tbaa !18
  %578 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %579 = load float, ptr %578, align 4, !tbaa !20
  %580 = load ptr, ptr %16, align 8, !tbaa !5
  %581 = load i32, ptr %31, align 4, !tbaa !9
  %582 = sext i32 %581 to i64
  %583 = getelementptr inbounds %struct.complex, ptr %580, i64 %582
  %584 = getelementptr inbounds %struct.complex, ptr %583, i32 0, i32 1
  store float %579, ptr %584, align 4, !tbaa !20
  br label %585

585:                                              ; preds = %493
  %586 = load i32, ptr %37, align 4, !tbaa !9
  %587 = add nsw i32 %586, 1
  store i32 %587, ptr %37, align 4, !tbaa !9
  br label %489, !llvm.loop !26

588:                                              ; preds = %489
  br label %589

589:                                              ; preds = %588
  %590 = load i32, ptr %38, align 4, !tbaa !9
  %591 = add nsw i32 %590, 1
  store i32 %591, ptr %38, align 4, !tbaa !9
  br label %482, !llvm.loop !27

592:                                              ; preds = %482
  br label %707

593:                                              ; preds = %475
  %594 = load ptr, ptr %13, align 8, !tbaa !5
  %595 = load i32, ptr %594, align 4, !tbaa !9
  store i32 %595, ptr %29, align 4, !tbaa !9
  store i32 1, ptr %38, align 4, !tbaa !9
  br label %596

596:                                              ; preds = %703, %593
  %597 = load i32, ptr %38, align 4, !tbaa !9
  %598 = load i32, ptr %29, align 4, !tbaa !9
  %599 = icmp sle i32 %597, %598
  br i1 %599, label %600, label %706

600:                                              ; preds = %596
  %601 = load ptr, ptr %12, align 8, !tbaa !5
  %602 = load i32, ptr %601, align 4, !tbaa !9
  store i32 %602, ptr %30, align 4, !tbaa !9
  store i32 1, ptr %37, align 4, !tbaa !9
  br label %603

603:                                              ; preds = %699, %600
  %604 = load i32, ptr %37, align 4, !tbaa !9
  %605 = load i32, ptr %30, align 4, !tbaa !9
  %606 = icmp sle i32 %604, %605
  br i1 %606, label %607, label %702

607:                                              ; preds = %603
  %608 = load i32, ptr %37, align 4, !tbaa !9
  %609 = load i32, ptr %38, align 4, !tbaa !9
  %610 = load i32, ptr %25, align 4, !tbaa !9
  %611 = mul nsw i32 %609, %610
  %612 = add nsw i32 %608, %611
  store i32 %612, ptr %31, align 4, !tbaa !9
  %613 = load i32, ptr %38, align 4, !tbaa !9
  %614 = srem i32 %613, 8
  store i32 %614, ptr %32, align 4, !tbaa !9
  %615 = load ptr, ptr %20, align 8, !tbaa !5
  %616 = load i32, ptr %37, align 4, !tbaa !9
  %617 = sext i32 %616 to i64
  %618 = getelementptr inbounds float, ptr %615, i64 %617
  %619 = load float, ptr %618, align 4, !tbaa !16
  %620 = load ptr, ptr %20, align 8, !tbaa !5
  %621 = load i32, ptr %38, align 4, !tbaa !9
  %622 = sext i32 %621 to i64
  %623 = getelementptr inbounds float, ptr %620, i64 %622
  %624 = load float, ptr %623, align 4, !tbaa !16
  %625 = fmul float %619, %624
  %626 = load i32, ptr %37, align 4, !tbaa !9
  %627 = load i32, ptr %38, align 4, !tbaa !9
  %628 = add nsw i32 %626, %627
  %629 = sub nsw i32 %628, 1
  %630 = sitofp i32 %629 to float
  %631 = fdiv float %625, %630
  store float %631, ptr %34, align 4, !tbaa !16
  %632 = load float, ptr %34, align 4, !tbaa !16
  %633 = load i32, ptr %32, align 4, !tbaa !9
  %634 = sext i32 %633 to i64
  %635 = getelementptr inbounds [8 x %struct.complex], ptr @clahilb_.invd2, i64 0, i64 %634
  %636 = getelementptr inbounds %struct.complex, ptr %635, i32 0, i32 0
  %637 = load float, ptr %636, align 8, !tbaa !18
  %638 = fmul float %632, %637
  %639 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  store float %638, ptr %639, align 4, !tbaa !18
  %640 = load float, ptr %34, align 4, !tbaa !16
  %641 = load i32, ptr %32, align 4, !tbaa !9
  %642 = sext i32 %641 to i64
  %643 = getelementptr inbounds [8 x %struct.complex], ptr @clahilb_.invd2, i64 0, i64 %642
  %644 = getelementptr inbounds %struct.complex, ptr %643, i32 0, i32 1
  %645 = load float, ptr %644, align 4, !tbaa !20
  %646 = fmul float %640, %645
  %647 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  store float %646, ptr %647, align 4, !tbaa !20
  %648 = load i32, ptr %37, align 4, !tbaa !9
  %649 = srem i32 %648, 8
  store i32 %649, ptr %33, align 4, !tbaa !9
  %650 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  %651 = load float, ptr %650, align 4, !tbaa !18
  %652 = load i32, ptr %33, align 4, !tbaa !9
  %653 = sext i32 %652 to i64
  %654 = getelementptr inbounds [8 x %struct.complex], ptr @clahilb_.invd1, i64 0, i64 %653
  %655 = getelementptr inbounds %struct.complex, ptr %654, i32 0, i32 0
  %656 = load float, ptr %655, align 8, !tbaa !18
  %657 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  %658 = load float, ptr %657, align 4, !tbaa !20
  %659 = load i32, ptr %33, align 4, !tbaa !9
  %660 = sext i32 %659 to i64
  %661 = getelementptr inbounds [8 x %struct.complex], ptr @clahilb_.invd1, i64 0, i64 %660
  %662 = getelementptr inbounds %struct.complex, ptr %661, i32 0, i32 1
  %663 = load float, ptr %662, align 4, !tbaa !20
  %664 = fmul float %658, %663
  %665 = fneg float %664
  %666 = call float @llvm.fmuladd.f32(float %651, float %656, float %665)
  %667 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  store float %666, ptr %667, align 4, !tbaa !18
  %668 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  %669 = load float, ptr %668, align 4, !tbaa !18
  %670 = load i32, ptr %33, align 4, !tbaa !9
  %671 = sext i32 %670 to i64
  %672 = getelementptr inbounds [8 x %struct.complex], ptr @clahilb_.invd1, i64 0, i64 %671
  %673 = getelementptr inbounds %struct.complex, ptr %672, i32 0, i32 1
  %674 = load float, ptr %673, align 4, !tbaa !20
  %675 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  %676 = load float, ptr %675, align 4, !tbaa !20
  %677 = load i32, ptr %33, align 4, !tbaa !9
  %678 = sext i32 %677 to i64
  %679 = getelementptr inbounds [8 x %struct.complex], ptr @clahilb_.invd1, i64 0, i64 %678
  %680 = getelementptr inbounds %struct.complex, ptr %679, i32 0, i32 0
  %681 = load float, ptr %680, align 8, !tbaa !18
  %682 = fmul float %676, %681
  %683 = call float @llvm.fmuladd.f32(float %669, float %674, float %682)
  %684 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  store float %683, ptr %684, align 4, !tbaa !20
  %685 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %686 = load float, ptr %685, align 4, !tbaa !18
  %687 = load ptr, ptr %16, align 8, !tbaa !5
  %688 = load i32, ptr %31, align 4, !tbaa !9
  %689 = sext i32 %688 to i64
  %690 = getelementptr inbounds %struct.complex, ptr %687, i64 %689
  %691 = getelementptr inbounds %struct.complex, ptr %690, i32 0, i32 0
  store float %686, ptr %691, align 4, !tbaa !18
  %692 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %693 = load float, ptr %692, align 4, !tbaa !20
  %694 = load ptr, ptr %16, align 8, !tbaa !5
  %695 = load i32, ptr %31, align 4, !tbaa !9
  %696 = sext i32 %695 to i64
  %697 = getelementptr inbounds %struct.complex, ptr %694, i64 %696
  %698 = getelementptr inbounds %struct.complex, ptr %697, i32 0, i32 1
  store float %693, ptr %698, align 4, !tbaa !20
  br label %699

699:                                              ; preds = %607
  %700 = load i32, ptr %37, align 4, !tbaa !9
  %701 = add nsw i32 %700, 1
  store i32 %701, ptr %37, align 4, !tbaa !9
  br label %603, !llvm.loop !28

702:                                              ; preds = %603
  br label %703

703:                                              ; preds = %702
  %704 = load i32, ptr %38, align 4, !tbaa !9
  %705 = add nsw i32 %704, 1
  store i32 %705, ptr %38, align 4, !tbaa !9
  br label %596, !llvm.loop !29

706:                                              ; preds = %596
  br label %707

707:                                              ; preds = %706, %592
  store i32 1, ptr %47, align 4
  br label %708

708:                                              ; preds = %707, %157
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 2, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #4
  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 willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1

declare i32 @xerbla_(ptr noundef, ptr noundef, i32 noundef) #2

declare i32 @lsamen_(ptr noundef, ptr noundef, ptr noundef) #2

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

declare void @claset_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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 = { "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 = !{!"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 = !{!7, !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !13}
!15 = distinct !{!15, !13}
!16 = !{!17, !17, i64 0}
!17 = !{!"float", !7, i64 0}
!18 = !{!19, !17, i64 0}
!19 = !{!"", !17, i64 0, !17, i64 4}
!20 = !{!19, !17, i64 4}
!21 = distinct !{!21, !13}
!22 = distinct !{!22, !13}
!23 = distinct !{!23, !13}
!24 = distinct !{!24, !13}
!25 = distinct !{!25, !13}
!26 = distinct !{!26, !13}
!27 = distinct !{!27, !13}
!28 = distinct !{!28, !13}
!29 = distinct !{!29, !13}


; 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.complex = type { float, float }

@clahilb_.d1 = external hidden local_unnamed_addr global [8 x %struct.complex], align 16
@clahilb_.d2 = external hidden local_unnamed_addr global [8 x %struct.complex], align 16
@clahilb_.invd1 = external hidden local_unnamed_addr global [8 x %struct.complex], align 16
@clahilb_.invd2 = external hidden local_unnamed_addr global [8 x %struct.complex], align 16
@.str = external hidden unnamed_addr constant [8 x i8], align 1
@c__2 = external hidden global i32, align 4
@.str.1 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [5 x i8], align 1
@c_b6 = external hidden global %struct.complex, align 4

; Function Attrs: nounwind uwtable
define dso_local void @clahilb_(ptr noundef %0, ptr noundef %1, ptr nocapture noundef writeonly %2, ptr nocapture noundef readonly %3, ptr nocapture noundef writeonly %4, ptr nocapture noundef readonly %5, ptr noundef %6, ptr noundef %7, ptr nocapture noundef %8, ptr nocapture noundef writeonly %9, ptr nocapture noundef readonly %10) local_unnamed_addr #0 {
  %12 = alloca i32, align 4
  %13 = alloca [2 x i8], align 1
  %14 = alloca %struct.complex, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #4
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %13) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #4
  %15 = getelementptr inbounds i8, ptr %8, i64 -4
  %16 = load i32, ptr %3, align 4, !tbaa !5
  %narrow = xor i32 %16, -1
  %17 = sext i32 %narrow to i64
  %18 = getelementptr inbounds %struct.complex, ptr %2, i64 %17
  %19 = load i32, ptr %5, align 4, !tbaa !5
  %narrow222 = xor i32 %19, -1
  %20 = sext i32 %narrow222 to i64
  %21 = getelementptr inbounds %struct.complex, ptr %4, i64 %20
  %22 = getelementptr inbounds i8, ptr %10, i64 1
  %23 = load i8, ptr %22, align 1, !tbaa !9
  %.not = icmp eq i8 %23, 0
  br i1 %.not, label %.critedge, label %24

24:                                               ; preds = %11
  store i8 %23, ptr %13, align 1, !tbaa !9
  %25 = getelementptr inbounds i8, ptr %10, i64 2
  %26 = load i8, ptr %25, align 1, !tbaa !9
  %.not.1 = icmp eq i8 %26, 0
  br i1 %.not.1, label %.critedge, label %27

27:                                               ; preds = %24
  %28 = getelementptr inbounds i8, ptr %13, i64 1
  store i8 %26, ptr %28, align 1, !tbaa !9
  br label %.critedge

.critedge:                                        ; preds = %27, %24, %11
  store i32 0, ptr %9, align 4, !tbaa !5
  %29 = load i32, ptr %0, align 4, !tbaa !5
  %or.cond = icmp ugt i32 %29, 11
  br i1 %or.cond, label %.thread, label %30

30:                                               ; preds = %.critedge
  %31 = load i32, ptr %1, align 4, !tbaa !5
  %32 = icmp slt i32 %31, 0
  br i1 %32, label %.thread, label %33

33:                                               ; preds = %30
  %34 = load i32, ptr %3, align 4, !tbaa !5
  %35 = icmp slt i32 %34, %29
  br i1 %35, label %.thread, label %36

36:                                               ; preds = %33
  %37 = load i32, ptr %5, align 4, !tbaa !5
  %38 = icmp slt i32 %37, %29
  br i1 %38, label %.thread, label %39

39:                                               ; preds = %36
  %40 = load i32, ptr %7, align 4, !tbaa !5
  %41 = icmp slt i32 %40, %29
  br i1 %41, label %.thread, label %43

.thread:                                          ; preds = %39, %36, %33, %30, %.critedge
  %.sink = phi i32 [ -1, %.critedge ], [ -2, %30 ], [ -4, %33 ], [ -6, %36 ], [ -8, %39 ]
  %.neg = phi i32 [ 1, %.critedge ], [ 2, %30 ], [ 4, %33 ], [ 6, %36 ], [ 8, %39 ]
  store i32 %.sink, ptr %9, align 4, !tbaa !5
  store i32 %.neg, ptr %12, align 4, !tbaa !5
  %42 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %12, i32 noundef 7) #4
  br label %.loopexit

43:                                               ; preds = %39
  %44 = icmp ugt i32 %29, 6
  br i1 %44, label %45, label %46

45:                                               ; preds = %43
  store i32 1, ptr %9, align 4, !tbaa !5
  %.pre = load i32, ptr %0, align 4, !tbaa !5
  br label %46

46:                                               ; preds = %45, %43
  %47 = phi i32 [ %.pre, %45 ], [ %29, %43 ]
  %48 = shl i32 %47, 1
  %.not223.not244 = icmp sgt i32 %48, 2
  br i1 %.not223.not244, label %.lr.ph248, label %._crit_edge249

.lr.ph248:                                        ; preds = %46, %._crit_edge
  %.0213246 = phi i32 [ %52, %._crit_edge ], [ 1, %46 ]
  %.0215245 = phi i32 [ %53, %._crit_edge ], [ 2, %46 ]
  %49 = srem i32 %.0213246, %.0215245
  %.not235241 = icmp eq i32 %49, 0
  br i1 %.not235241, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph248, %.lr.ph
  %.0211243 = phi i32 [ %.0212242, %.lr.ph ], [ %.0215245, %.lr.ph248 ]
  %.0212242 = phi i32 [ %50, %.lr.ph ], [ %49, %.lr.ph248 ]
  %50 = srem i32 %.0211243, %.0212242
  %.not235 = icmp eq i32 %50, 0
  br i1 %.not235, label %._crit_edge, label %.lr.ph, !llvm.loop !10

._crit_edge:                                      ; preds = %.lr.ph, %.lr.ph248
  %.0211.lcssa = phi i32 [ %.0215245, %.lr.ph248 ], [ %.0212242, %.lr.ph ]
  %51 = sdiv i32 %.0213246, %.0211.lcssa
  %52 = mul nsw i32 %51, %.0215245
  %53 = add nuw nsw i32 %.0215245, 1
  %exitcond.not = icmp eq i32 %53, %48
  br i1 %exitcond.not, label %._crit_edge249.loopexit, label %.lr.ph248, !llvm.loop !12

._crit_edge249.loopexit:                          ; preds = %._crit_edge
  %54 = sitofp i32 %52 to float
  br label %._crit_edge249

._crit_edge249:                                   ; preds = %._crit_edge249.loopexit, %46
  %.0213.lcssa = phi float [ 1.000000e+00, %46 ], [ %54, %._crit_edge249.loopexit ]
  %55 = call i32 @lsamen_(ptr noundef nonnull @c__2, ptr noundef nonnull %13, ptr noundef nonnull @.str.1) #4
  %.not224 = icmp eq i32 %55, 0
  %56 = load i32, ptr %0, align 4, !tbaa !5
  %.not225261 = icmp slt i32 %56, 1
  br i1 %.not224, label %126, label %57

57:                                               ; preds = %._crit_edge249
  br i1 %.not225261, label %.loopexit237, label %.preheader238.lr.ph

.preheader238.lr.ph:                              ; preds = %57
  %58 = add nuw i32 %56, 1
  %59 = sext i32 %16 to i64
  %wide.trip.count296 = zext i32 %58 to i64
  %60 = add nsw i64 %wide.trip.count296, -2
  %61 = shl nsw i64 %59, 3
  %62 = shl nsw i64 %17, 3
  %63 = getelementptr i8, ptr %2, i64 %61
  %64 = getelementptr i8, ptr %63, i64 %62
  %scevgep = getelementptr i8, ptr %64, i64 8
  %65 = shl nuw nsw i64 %wide.trip.count296, 3
  %66 = add nsw i64 %65, -8
  %67 = mul i64 %66, %59
  %68 = getelementptr i8, ptr %2, i64 %67
  %69 = getelementptr i8, ptr %68, i64 %62
  %70 = getelementptr i8, ptr %69, i64 %65
  %scevgep344 = getelementptr i8, ptr %70, i64 -4
  %71 = getelementptr i8, ptr @clahilb_.d1, i64 %65
  %scevgep345 = getelementptr i8, ptr %71, i64 -4
  %72 = getelementptr i8, ptr %2, i64 %61
  %73 = getelementptr i8, ptr %72, i64 %62
  %scevgep348 = getelementptr i8, ptr %73, i64 12
  %74 = getelementptr i8, ptr %2, i64 %67
  %75 = getelementptr i8, ptr %74, i64 %62
  %scevgep349 = getelementptr i8, ptr %75, i64 %65
  %scevgep350 = getelementptr i8, ptr @clahilb_.d1, i64 %65
  %76 = zext nneg i32 %56 to i64
  %min.iters.check = icmp ult i32 %56, 4
  %77 = and i64 %60, 7
  %78 = icmp eq i64 %77, 7
  %79 = icmp ugt i64 %60, 7
  %80 = or i1 %78, %79
  %bound0 = icmp ult ptr %scevgep, %scevgep345
  %bound1 = icmp ugt ptr %scevgep344, getelementptr inbounds (i8, ptr @clahilb_.d1, i64 8)
  %found.conflict = and i1 %bound0, %bound1
  %stride.check355 = icmp slt i32 %16, 0
  %bound0356 = icmp ult ptr %scevgep348, %scevgep350
  %bound1357 = icmp ugt ptr %scevgep349, getelementptr inbounds (i8, ptr @clahilb_.d1, i64 12)
  %found.conflict358 = and i1 %bound0356, %bound1357
  %n.vec = and i64 %76, 2147483644
  %ind.end = or disjoint i64 %n.vec, 1
  %broadcast.splatinsert366 = insertelement <4 x float> poison, float %.0213.lcssa, i64 0
  %broadcast.splat367 = shufflevector <4 x float> %broadcast.splatinsert366, <4 x float> poison, <4 x i32> zeroinitializer
  %cmp.n = icmp eq i64 %n.vec, %76
  br label %.preheader238

.preheader238:                                    ; preds = %.preheader238.lr.ph, %._crit_edge254
  %indvar = phi i3 [ 0, %.preheader238.lr.ph ], [ %indvar.next, %._crit_edge254 ]
  %indvars.iv293 = phi i64 [ 1, %.preheader238.lr.ph ], [ %indvars.iv.next294, %._crit_edge254 ]
  %81 = add i3 %indvar, 1
  %82 = zext i3 %81 to i64
  %83 = shl nuw nsw i64 %82, 3
  %scevgep346 = getelementptr i8, ptr @clahilb_.d1, i64 %83
  %scevgep347 = getelementptr i8, ptr getelementptr inbounds (i8, ptr @clahilb_.d1, i64 4), i64 %83
  %scevgep351 = getelementptr i8, ptr getelementptr inbounds (i8, ptr @clahilb_.d1, i64 8), i64 %83
  %84 = mul nsw i64 %indvars.iv293, %59
  %85 = and i64 %indvars.iv293, 7
  %86 = add nuw i64 %indvars.iv293, 4294967295
  %87 = getelementptr inbounds [8 x %struct.complex], ptr @clahilb_.d1, i64 0, i64 %85
  %88 = getelementptr inbounds i8, ptr %87, i64 4
  %invariant.gep = getelementptr %struct.complex, ptr %18, i64 %84
  %brmerge = select i1 %min.iters.check, i1 true, i1 %80
  br i1 %brmerge, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.preheader238
  %bound0352 = icmp ult ptr %scevgep, %scevgep347
  %bound1353 = icmp ult ptr %scevgep346, %scevgep344
  %found.conflict354 = and i1 %bound0352, %bound1353
  %89 = or i1 %found.conflict354, %stride.check355
  %conflict.rdx = or i1 %found.conflict, %89
  %conflict.rdx360 = or i1 %found.conflict358, %conflict.rdx
  %bound0361 = icmp ult ptr %scevgep348, %scevgep351
  %bound1362 = icmp ult ptr %scevgep347, %scevgep349
  %found.conflict363 = and i1 %bound0361, %bound1362
  %conflict.rdx365 = or i1 %found.conflict363, %conflict.rdx360
  br i1 %conflict.rdx365, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %broadcast.splatinsert = insertelement <4 x i64> poison, i64 %86, i64 0
  %broadcast.splat = shufflevector <4 x i64> %broadcast.splatinsert, <4 x i64> 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 ]
  %vec.ind = phi <4 x i64> [ <i64 1, i64 2, i64 3, i64 4>, %vector.ph ], [ %vec.ind.next, %vector.body ]
  %offset.idx = or disjoint i64 %index, 1
  %90 = add <4 x i64> %broadcast.splat, %vec.ind
  %91 = trunc <4 x i64> %90 to <4 x i32>
  %92 = sitofp <4 x i32> %91 to <4 x float>
  %93 = fdiv <4 x float> %broadcast.splat367, %92
  %94 = load float, ptr %87, align 8, !tbaa !13, !alias.scope !16
  %broadcast.splatinsert368 = insertelement <4 x float> poison, float %94, i64 0
  %broadcast.splat369 = shufflevector <4 x float> %broadcast.splatinsert368, <4 x float> poison, <4 x i32> zeroinitializer
  %95 = fmul <4 x float> %93, %broadcast.splat369
  %96 = load float, ptr %88, align 4, !tbaa !19, !alias.scope !20
  %broadcast.splatinsert370 = insertelement <4 x float> poison, float %96, i64 0
  %broadcast.splat371 = shufflevector <4 x float> %broadcast.splatinsert370, <4 x float> poison, <4 x i32> zeroinitializer
  %97 = fmul <4 x float> %93, %broadcast.splat371
  %98 = and i64 %offset.idx, 5
  %99 = getelementptr inbounds [8 x %struct.complex], ptr @clahilb_.d1, i64 0, i64 %98
  %wide.vec = load <8 x float>, ptr %99, align 8, !tbaa !22
  %strided.vec = shufflevector <8 x float> %wide.vec, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec372 = shufflevector <8 x float> %wide.vec, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %100 = fneg <4 x float> %97
  %101 = fmul <4 x float> %strided.vec372, %100
  %102 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %95, <4 x float> %strided.vec, <4 x float> %101)
  %103 = fmul <4 x float> %97, %strided.vec
  %104 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %95, <4 x float> %strided.vec372, <4 x float> %103)
  %105 = getelementptr %struct.complex, ptr %invariant.gep, i64 %offset.idx
  %interleaved.vec = shufflevector <4 x float> %102, <4 x float> %104, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec, ptr %105, align 4, !tbaa !22
  %index.next = add nuw i64 %index, 4
  %vec.ind.next = add <4 x i64> %vec.ind, <i64 4, i64 4, i64 4, i64 4>
  %106 = icmp eq i64 %index.next, %n.vec
  br i1 %106, label %middle.block, label %vector.body, !llvm.loop !23

middle.block:                                     ; preds = %vector.body
  br i1 %cmp.n, label %._crit_edge254, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %.preheader238, %middle.block, %vector.memcheck
  %indvars.iv.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.preheader238 ], [ %ind.end, %middle.block ]
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %scalar.ph ], [ %indvars.iv.ph, %scalar.ph.preheader ]
  %107 = add i64 %86, %indvars.iv
  %108 = trunc i64 %107 to i32
  %109 = sitofp i32 %108 to float
  %110 = fdiv float %.0213.lcssa, %109
  %111 = load float, ptr %87, align 8, !tbaa !13
  %112 = fmul float %110, %111
  %113 = load float, ptr %88, align 4, !tbaa !19
  %114 = fmul float %110, %113
  %115 = and i64 %indvars.iv, 7
  %116 = getelementptr inbounds [8 x %struct.complex], ptr @clahilb_.d1, i64 0, i64 %115
  %117 = fneg float %114
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %indvars.iv
  %118 = load <2 x float>, ptr %116, align 8, !tbaa !22
  %119 = insertelement <2 x float> poison, float %114, i64 0
  %120 = insertelement <2 x float> %119, float %117, i64 1
  %121 = fmul <2 x float> %118, %120
  %122 = shufflevector <2 x float> %121, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %123 = insertelement <2 x float> poison, float %112, i64 0
  %124 = shufflevector <2 x float> %123, <2 x float> poison, <2 x i32> zeroinitializer
  %125 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %124, <2 x float> %118, <2 x float> %122)
  store <2 x float> %125, ptr %gep, align 4, !tbaa !22
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond292.not = icmp eq i64 %indvars.iv.next, %wide.trip.count296
  br i1 %exitcond292.not, label %._crit_edge254, label %scalar.ph, !llvm.loop !26

._crit_edge254:                                   ; preds = %scalar.ph, %middle.block
  %indvars.iv.next294 = add nuw nsw i64 %indvars.iv293, 1
  %exitcond297.not = icmp eq i64 %indvars.iv.next294, %wide.trip.count296
  %indvar.next = add i3 %indvar, 1
  br i1 %exitcond297.not, label %.loopexit237, label %.preheader238, !llvm.loop !27

126:                                              ; preds = %._crit_edge249
  br i1 %.not225261, label %.loopexit237, label %.preheader.lr.ph

.preheader.lr.ph:                                 ; preds = %126
  %127 = add nuw i32 %56, 1
  %128 = sext i32 %16 to i64
  %wide.trip.count306 = zext i32 %127 to i64
  %129 = add nsw i64 %wide.trip.count306, -2
  %130 = shl nsw i64 %128, 3
  %131 = shl nsw i64 %17, 3
  %132 = getelementptr i8, ptr %2, i64 %130
  %133 = getelementptr i8, ptr %132, i64 %131
  %scevgep375 = getelementptr i8, ptr %133, i64 8
  %134 = shl nuw nsw i64 %wide.trip.count306, 3
  %135 = add nsw i64 %134, -8
  %136 = mul i64 %135, %128
  %137 = getelementptr i8, ptr %2, i64 %136
  %138 = getelementptr i8, ptr %137, i64 %131
  %139 = getelementptr i8, ptr %138, i64 %134
  %scevgep376 = getelementptr i8, ptr %139, i64 -4
  %140 = getelementptr i8, ptr @clahilb_.d2, i64 %134
  %scevgep381 = getelementptr i8, ptr %140, i64 -4
  %141 = getelementptr i8, ptr %2, i64 %130
  %142 = getelementptr i8, ptr %141, i64 %131
  %scevgep382 = getelementptr i8, ptr %142, i64 12
  %143 = getelementptr i8, ptr %2, i64 %136
  %144 = getelementptr i8, ptr %143, i64 %131
  %scevgep383 = getelementptr i8, ptr %144, i64 %134
  %scevgep385 = getelementptr i8, ptr @clahilb_.d2, i64 %134
  %145 = zext nneg i32 %56 to i64
  %min.iters.check407 = icmp ult i32 %56, 4
  %146 = and i64 %129, 7
  %147 = icmp eq i64 %146, 7
  %148 = icmp ugt i64 %129, 7
  %149 = or i1 %147, %148
  %bound0390 = icmp ult ptr %scevgep375, %scevgep381
  %bound1391 = icmp ugt ptr %scevgep376, getelementptr inbounds (i8, ptr @clahilb_.d2, i64 8)
  %found.conflict392 = and i1 %bound0390, %bound1391
  %stride.check393 = icmp slt i32 %16, 0
  %150 = or i1 %found.conflict392, %stride.check393
  %bound0400 = icmp ult ptr %scevgep382, %scevgep385
  %bound1401 = icmp ugt ptr %scevgep383, getelementptr inbounds (i8, ptr @clahilb_.d2, i64 12)
  %found.conflict402 = and i1 %bound0400, %bound1401
  %n.vec410 = and i64 %145, 2147483644
  %ind.end411 = or disjoint i64 %n.vec410, 1
  %broadcast.splatinsert420 = insertelement <4 x float> poison, float %.0213.lcssa, i64 0
  %broadcast.splat421 = shufflevector <4 x float> %broadcast.splatinsert420, <4 x float> poison, <4 x i32> zeroinitializer
  %cmp.n431 = icmp eq i64 %n.vec410, %145
  br label %.preheader

.preheader:                                       ; preds = %.preheader.lr.ph, %._crit_edge260
  %indvar377 = phi i3 [ 0, %.preheader.lr.ph ], [ %indvar.next378, %._crit_edge260 ]
  %indvars.iv303 = phi i64 [ 1, %.preheader.lr.ph ], [ %indvars.iv.next304, %._crit_edge260 ]
  %151 = add i3 %indvar377, 1
  %152 = zext i3 %151 to i64
  %153 = shl nuw nsw i64 %152, 3
  %scevgep379 = getelementptr i8, ptr @clahilb_.d1, i64 %153
  %scevgep380 = getelementptr i8, ptr getelementptr inbounds (i8, ptr @clahilb_.d1, i64 4), i64 %153
  %scevgep384 = getelementptr i8, ptr getelementptr inbounds (i8, ptr @clahilb_.d1, i64 8), i64 %153
  %154 = mul nsw i64 %indvars.iv303, %128
  %155 = and i64 %indvars.iv303, 7
  %156 = add nuw i64 %indvars.iv303, 4294967295
  %157 = getelementptr inbounds [8 x %struct.complex], ptr @clahilb_.d1, i64 0, i64 %155
  %158 = getelementptr inbounds i8, ptr %157, i64 4
  %invariant.gep336 = getelementptr %struct.complex, ptr %18, i64 %154
  %brmerge550 = select i1 %min.iters.check407, i1 true, i1 %149
  br i1 %brmerge550, label %scalar.ph406.preheader, label %vector.memcheck374

vector.memcheck374:                               ; preds = %.preheader
  %bound0386 = icmp ult ptr %scevgep375, %scevgep380
  %bound1387 = icmp ult ptr %scevgep379, %scevgep376
  %found.conflict388 = and i1 %bound0386, %bound1387
  %conflict.rdx394 = or i1 %found.conflict388, %150
  %bound0395 = icmp ult ptr %scevgep382, %scevgep384
  %bound1396 = icmp ult ptr %scevgep380, %scevgep383
  %found.conflict397 = and i1 %bound0395, %bound1396
  %conflict.rdx399 = or i1 %found.conflict397, %conflict.rdx394
  %conflict.rdx404 = or i1 %found.conflict402, %conflict.rdx399
  br i1 %conflict.rdx404, label %scalar.ph406.preheader, label %vector.ph408

vector.ph408:                                     ; preds = %vector.memcheck374
  %broadcast.splatinsert418 = insertelement <4 x i64> poison, i64 %156, i64 0
  %broadcast.splat419 = shufflevector <4 x i64> %broadcast.splatinsert418, <4 x i64> poison, <4 x i32> zeroinitializer
  br label %vector.body413

vector.body413:                                   ; preds = %vector.body413, %vector.ph408
  %index414 = phi i64 [ 0, %vector.ph408 ], [ %index.next430, %vector.body413 ]
  %vec.ind415 = phi <4 x i64> [ <i64 1, i64 2, i64 3, i64 4>, %vector.ph408 ], [ %vec.ind.next416, %vector.body413 ]
  %offset.idx417 = or disjoint i64 %index414, 1
  %159 = add <4 x i64> %broadcast.splat419, %vec.ind415
  %160 = trunc <4 x i64> %159 to <4 x i32>
  %161 = sitofp <4 x i32> %160 to <4 x float>
  %162 = fdiv <4 x float> %broadcast.splat421, %161
  %163 = load float, ptr %157, align 8, !tbaa !13, !alias.scope !28
  %broadcast.splatinsert422 = insertelement <4 x float> poison, float %163, i64 0
  %broadcast.splat423 = shufflevector <4 x float> %broadcast.splatinsert422, <4 x float> poison, <4 x i32> zeroinitializer
  %164 = fmul <4 x float> %162, %broadcast.splat423
  %165 = load float, ptr %158, align 4, !tbaa !19, !alias.scope !31
  %broadcast.splatinsert424 = insertelement <4 x float> poison, float %165, i64 0
  %broadcast.splat425 = shufflevector <4 x float> %broadcast.splatinsert424, <4 x float> poison, <4 x i32> zeroinitializer
  %166 = fmul <4 x float> %162, %broadcast.splat425
  %167 = and i64 %offset.idx417, 5
  %168 = getelementptr inbounds [8 x %struct.complex], ptr @clahilb_.d2, i64 0, i64 %167
  %wide.vec426 = load <8 x float>, ptr %168, align 8, !tbaa !22
  %strided.vec427 = shufflevector <8 x float> %wide.vec426, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec428 = shufflevector <8 x float> %wide.vec426, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %169 = fneg <4 x float> %166
  %170 = fmul <4 x float> %strided.vec428, %169
  %171 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %164, <4 x float> %strided.vec427, <4 x float> %170)
  %172 = fmul <4 x float> %166, %strided.vec427
  %173 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %164, <4 x float> %strided.vec428, <4 x float> %172)
  %174 = getelementptr %struct.complex, ptr %invariant.gep336, i64 %offset.idx417
  %interleaved.vec429 = shufflevector <4 x float> %171, <4 x float> %173, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec429, ptr %174, align 4, !tbaa !22
  %index.next430 = add nuw i64 %index414, 4
  %vec.ind.next416 = add <4 x i64> %vec.ind415, <i64 4, i64 4, i64 4, i64 4>
  %175 = icmp eq i64 %index.next430, %n.vec410
  br i1 %175, label %middle.block405, label %vector.body413, !llvm.loop !33

middle.block405:                                  ; preds = %vector.body413
  br i1 %cmp.n431, label %._crit_edge260, label %scalar.ph406.preheader

scalar.ph406.preheader:                           ; preds = %.preheader, %middle.block405, %vector.memcheck374
  %indvars.iv298.ph = phi i64 [ 1, %vector.memcheck374 ], [ 1, %.preheader ], [ %ind.end411, %middle.block405 ]
  br label %scalar.ph406

scalar.ph406:                                     ; preds = %scalar.ph406.preheader, %scalar.ph406
  %indvars.iv298 = phi i64 [ %indvars.iv.next299, %scalar.ph406 ], [ %indvars.iv298.ph, %scalar.ph406.preheader ]
  %176 = add i64 %156, %indvars.iv298
  %177 = trunc i64 %176 to i32
  %178 = sitofp i32 %177 to float
  %179 = fdiv float %.0213.lcssa, %178
  %180 = load float, ptr %157, align 8, !tbaa !13
  %181 = fmul float %179, %180
  %182 = load float, ptr %158, align 4, !tbaa !19
  %183 = fmul float %179, %182
  %184 = and i64 %indvars.iv298, 7
  %185 = getelementptr inbounds [8 x %struct.complex], ptr @clahilb_.d2, i64 0, i64 %184
  %186 = fneg float %183
  %gep337 = getelementptr %struct.complex, ptr %invariant.gep336, i64 %indvars.iv298
  %187 = load <2 x float>, ptr %185, align 8, !tbaa !22
  %188 = insertelement <2 x float> poison, float %183, i64 0
  %189 = insertelement <2 x float> %188, float %186, i64 1
  %190 = fmul <2 x float> %187, %189
  %191 = shufflevector <2 x float> %190, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %192 = insertelement <2 x float> poison, float %181, i64 0
  %193 = shufflevector <2 x float> %192, <2 x float> poison, <2 x i32> zeroinitializer
  %194 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %193, <2 x float> %187, <2 x float> %191)
  store <2 x float> %194, ptr %gep337, align 4, !tbaa !22
  %indvars.iv.next299 = add nuw nsw i64 %indvars.iv298, 1
  %exitcond302.not = icmp eq i64 %indvars.iv.next299, %wide.trip.count306
  br i1 %exitcond302.not, label %._crit_edge260, label %scalar.ph406, !llvm.loop !34

._crit_edge260:                                   ; preds = %scalar.ph406, %middle.block405
  %indvars.iv.next304 = add nuw nsw i64 %indvars.iv303, 1
  %exitcond307.not = icmp eq i64 %indvars.iv.next304, %wide.trip.count306
  %indvar.next378 = add i3 %indvar377, 1
  br i1 %exitcond307.not, label %.loopexit237, label %.preheader, !llvm.loop !35

.loopexit237:                                     ; preds = %._crit_edge254, %._crit_edge260, %57, %126
  store float %.0213.lcssa, ptr %14, align 4, !tbaa !13
  %195 = getelementptr inbounds i8, ptr %14, i64 4
  store float 0.000000e+00, ptr %195, align 4, !tbaa !19
  call void @claset_(ptr noundef nonnull @.str.2, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull @c_b6, ptr noundef nonnull %14, ptr noundef %6, ptr noundef nonnull %7) #4
  %196 = load i32, ptr %0, align 4, !tbaa !5
  %197 = sitofp i32 %196 to float
  store float %197, ptr %8, align 4, !tbaa !22
  %.not228263 = icmp slt i32 %196, 2
  br i1 %.not228263, label %._crit_edge267, label %.lr.ph266

.lr.ph266:                                        ; preds = %.loopexit237
  %198 = add nsw i32 %196, -1
  %199 = add nuw i32 %196, 1
  %wide.trip.count311 = zext i32 %199 to i64
  %xtraiter = and i64 %wide.trip.count311, 1
  %200 = icmp eq i32 %199, 3
  br i1 %200, label %._crit_edge267.loopexit.unr-lcssa, label %.lr.ph266.new

.lr.ph266.new:                                    ; preds = %.lr.ph266
  %201 = and i64 %wide.trip.count311, 4294967294
  %202 = add nsw i64 %201, -4
  br label %203

203:                                              ; preds = %203, %.lr.ph266.new
  %204 = phi float [ %197, %.lr.ph266.new ], [ %231, %203 ]
  %indvars.iv308 = phi i64 [ 2, %.lr.ph266.new ], [ %indvars.iv.next309.1, %203 ]
  %niter = phi i64 [ 0, %.lr.ph266.new ], [ %niter.next.1, %203 ]
  %205 = add nsw i64 %indvars.iv308, -1
  %206 = trunc nuw nsw i64 %205 to i32
  %207 = sitofp i32 %206 to float
  %208 = fdiv float %204, %207
  %209 = trunc i64 %205 to i32
  %210 = sub i32 %209, %196
  %211 = sitofp i32 %210 to float
  %212 = fmul float %208, %211
  %213 = fdiv float %212, %207
  %214 = trunc nuw nsw i64 %indvars.iv308 to i32
  %215 = add i32 %198, %214
  %216 = sitofp i32 %215 to float
  %217 = fmul float %213, %216
  %218 = getelementptr inbounds float, ptr %15, i64 %indvars.iv308
  store float %217, ptr %218, align 4, !tbaa !22
  %219 = trunc nuw nsw i64 %indvars.iv308 to i32
  %220 = sitofp i32 %219 to float
  %221 = fdiv float %217, %220
  %222 = trunc i64 %indvars.iv308 to i32
  %223 = sub i32 %222, %196
  %224 = sitofp i32 %223 to float
  %225 = fmul float %221, %224
  %226 = fdiv float %225, %220
  %227 = trunc i64 %indvars.iv308 to i32
  %228 = or disjoint i32 %227, 1
  %229 = add i32 %198, %228
  %230 = sitofp i32 %229 to float
  %231 = fmul float %226, %230
  %232 = getelementptr float, ptr %8, i64 %indvars.iv308
  store float %231, ptr %232, align 4, !tbaa !22
  %indvars.iv.next309.1 = add nuw nsw i64 %indvars.iv308, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter, %202
  br i1 %niter.ncmp.1, label %._crit_edge267.loopexit.unr-lcssa, label %203, !llvm.loop !36

._crit_edge267.loopexit.unr-lcssa:                ; preds = %203, %.lr.ph266
  %.unr = phi float [ %197, %.lr.ph266 ], [ %231, %203 ]
  %indvars.iv308.unr = phi i64 [ 2, %.lr.ph266 ], [ %indvars.iv.next309.1, %203 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge267, label %._crit_edge267.loopexit.epilog-lcssa

._crit_edge267.loopexit.epilog-lcssa:             ; preds = %._crit_edge267.loopexit.unr-lcssa
  %233 = add nsw i64 %indvars.iv308.unr, -1
  %234 = trunc nuw nsw i64 %233 to i32
  %235 = sitofp i32 %234 to float
  %236 = fdiv float %.unr, %235
  %237 = trunc i64 %233 to i32
  %238 = sub i32 %237, %196
  %239 = sitofp i32 %238 to float
  %240 = fmul float %236, %239
  %241 = fdiv float %240, %235
  %242 = trunc nuw nsw i64 %indvars.iv308.unr to i32
  %243 = add i32 %198, %242
  %244 = sitofp i32 %243 to float
  %245 = fmul float %241, %244
  %246 = getelementptr inbounds float, ptr %15, i64 %indvars.iv308.unr
  store float %245, ptr %246, align 4, !tbaa !22
  br label %._crit_edge267

._crit_edge267:                                   ; preds = %._crit_edge267.loopexit.epilog-lcssa, %._crit_edge267.loopexit.unr-lcssa, %.loopexit237
  %247 = call i32 @lsamen_(ptr noundef nonnull @c__2, ptr noundef nonnull %13, ptr noundef nonnull @.str.1) #4
  %.not229 = icmp eq i32 %247, 0
  %248 = load i32, ptr %1, align 4, !tbaa !5
  %.not230282 = icmp slt i32 %248, 1
  br i1 %.not229, label %327, label %249

249:                                              ; preds = %._crit_edge267
  br i1 %.not230282, label %.loopexit, label %.lr.ph276

.lr.ph276:                                        ; preds = %249
  %250 = load i32, ptr %0, align 4, !tbaa !5
  %.not233268 = icmp slt i32 %250, 1
  br i1 %.not233268, label %.loopexit, label %.lr.ph271.preheader

.lr.ph271.preheader:                              ; preds = %.lr.ph276
  %251 = add nuw i32 %250, 1
  %252 = sext i32 %19 to i64
  %253 = add nuw i32 %248, 1
  %wide.trip.count321 = zext i32 %253 to i64
  %wide.trip.count316 = zext i32 %251 to i64
  %254 = add nsw i64 %wide.trip.count316, -2
  %255 = shl nsw i64 %252, 3
  %256 = shl nsw i64 %20, 3
  %257 = getelementptr i8, ptr %4, i64 %255
  %258 = getelementptr i8, ptr %257, i64 %256
  %scevgep434 = getelementptr i8, ptr %258, i64 8
  %259 = shl nuw nsw i64 %wide.trip.count321, 3
  %260 = add nsw i64 %259, -8
  %261 = mul i64 %260, %252
  %262 = shl nuw nsw i64 %wide.trip.count316, 3
  %263 = getelementptr i8, ptr %4, i64 %261
  %264 = getelementptr i8, ptr %263, i64 %256
  %scevgep435 = getelementptr i8, ptr %264, i64 %262
  %265 = shl nuw nsw i64 %wide.trip.count321, 2
  %266 = getelementptr i8, ptr %8, i64 %265
  %scevgep436 = getelementptr i8, ptr %266, i64 -4
  %267 = shl nuw nsw i64 %wide.trip.count316, 2
  %268 = getelementptr i8, ptr %8, i64 %267
  %scevgep437 = getelementptr i8, ptr %268, i64 -4
  %scevgep438 = getelementptr i8, ptr @clahilb_.invd1, i64 %262
  %269 = zext nneg i32 %250 to i64
  %min.iters.check464 = icmp ult i32 %250, 4
  %270 = and i64 %254, 7
  %271 = icmp eq i64 %270, 7
  %272 = icmp ugt i64 %254, 7
  %273 = or i1 %271, %272
  %bound0443 = icmp ult ptr %scevgep434, %scevgep436
  %bound1444 = icmp ugt ptr %scevgep435, %8
  %found.conflict445 = and i1 %bound0443, %bound1444
  %bound0447 = icmp ult ptr %scevgep434, %scevgep437
  %bound1448 = icmp ugt ptr %scevgep435, %8
  %found.conflict449 = and i1 %bound0447, %bound1448
  %stride.check450 = icmp slt i32 %19, 0
  %274 = or i1 %found.conflict449, %stride.check450
  %conflict.rdx451 = or i1 %found.conflict445, %274
  %bound0452 = icmp ult ptr %scevgep434, %scevgep438
  %bound1453 = icmp ugt ptr %scevgep435, getelementptr inbounds (i8, ptr @clahilb_.invd1, i64 8)
  %found.conflict454 = and i1 %bound0452, %bound1453
  %conflict.rdx456 = or i1 %found.conflict454, %conflict.rdx451
  %n.vec467 = and i64 %269, 2147483644
  %ind.end468 = or disjoint i64 %n.vec467, 1
  %cmp.n488 = icmp eq i64 %n.vec467, %269
  br label %.lr.ph271

.lr.ph271:                                        ; preds = %.lr.ph271.preheader, %._crit_edge272
  %indvar439 = phi i3 [ 0, %.lr.ph271.preheader ], [ %indvar.next440, %._crit_edge272 ]
  %indvars.iv318 = phi i64 [ 1, %.lr.ph271.preheader ], [ %indvars.iv.next319, %._crit_edge272 ]
  %275 = add i3 %indvar439, 1
  %276 = zext i3 %275 to i64
  %277 = shl nuw nsw i64 %276, 3
  %scevgep441 = getelementptr i8, ptr @clahilb_.invd1, i64 %277
  %scevgep442 = getelementptr i8, ptr getelementptr inbounds (i8, ptr @clahilb_.invd1, i64 8), i64 %277
  %278 = mul nsw i64 %indvars.iv318, %252
  %279 = and i64 %indvars.iv318, 7
  %280 = getelementptr inbounds float, ptr %15, i64 %indvars.iv318
  %281 = add nuw i64 %indvars.iv318, 4294967295
  %282 = getelementptr inbounds [8 x %struct.complex], ptr @clahilb_.invd1, i64 0, i64 %279
  %283 = getelementptr inbounds i8, ptr %282, i64 4
  %invariant.gep338 = getelementptr %struct.complex, ptr %21, i64 %278
  %brmerge551 = select i1 %min.iters.check464, i1 true, i1 %273
  br i1 %brmerge551, label %scalar.ph463.preheader, label %vector.memcheck433

vector.memcheck433:                               ; preds = %.lr.ph271
  %bound0457 = icmp ult ptr %scevgep434, %scevgep442
  %bound1458 = icmp ult ptr %scevgep441, %scevgep435
  %found.conflict459 = and i1 %bound0457, %bound1458
  %conflict.rdx461 = or i1 %found.conflict459, %conflict.rdx456
  br i1 %conflict.rdx461, label %scalar.ph463.preheader, label %vector.ph465

vector.ph465:                                     ; preds = %vector.memcheck433
  %broadcast.splatinsert477 = insertelement <4 x i64> poison, i64 %281, i64 0
  %broadcast.splat478 = shufflevector <4 x i64> %broadcast.splatinsert477, <4 x i64> poison, <4 x i32> zeroinitializer
  br label %vector.body470

vector.body470:                                   ; preds = %vector.body470, %vector.ph465
  %index471 = phi i64 [ 0, %vector.ph465 ], [ %index.next487, %vector.body470 ]
  %vec.ind472 = phi <4 x i64> [ <i64 1, i64 2, i64 3, i64 4>, %vector.ph465 ], [ %vec.ind.next473, %vector.body470 ]
  %offset.idx474 = or disjoint i64 %index471, 1
  %284 = getelementptr float, ptr %8, i64 %index471
  %wide.load = load <4 x float>, ptr %284, align 4, !tbaa !22, !alias.scope !37
  %285 = load float, ptr %280, align 4, !tbaa !22, !alias.scope !40
  %broadcast.splatinsert475 = insertelement <4 x float> poison, float %285, i64 0
  %broadcast.splat476 = shufflevector <4 x float> %broadcast.splatinsert475, <4 x float> poison, <4 x i32> zeroinitializer
  %286 = fmul <4 x float> %wide.load, %broadcast.splat476
  %287 = add <4 x i64> %broadcast.splat478, %vec.ind472
  %288 = trunc <4 x i64> %287 to <4 x i32>
  %289 = sitofp <4 x i32> %288 to <4 x float>
  %290 = fdiv <4 x float> %286, %289
  %291 = load float, ptr %282, align 8, !tbaa !13, !alias.scope !42
  %broadcast.splatinsert479 = insertelement <4 x float> poison, float %291, i64 0
  %broadcast.splat480 = shufflevector <4 x float> %broadcast.splatinsert479, <4 x float> poison, <4 x i32> zeroinitializer
  %292 = fmul <4 x float> %broadcast.splat480, %290
  %293 = load float, ptr %283, align 4, !tbaa !19, !alias.scope !42
  %broadcast.splatinsert481 = insertelement <4 x float> poison, float %293, i64 0
  %broadcast.splat482 = shufflevector <4 x float> %broadcast.splatinsert481, <4 x float> poison, <4 x i32> zeroinitializer
  %294 = fmul <4 x float> %290, %broadcast.splat482
  %295 = and i64 %offset.idx474, 5
  %296 = getelementptr inbounds [8 x %struct.complex], ptr @clahilb_.invd1, i64 0, i64 %295
  %wide.vec483 = load <8 x float>, ptr %296, align 8, !tbaa !22
  %strided.vec484 = shufflevector <8 x float> %wide.vec483, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec485 = shufflevector <8 x float> %wide.vec483, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %297 = fneg <4 x float> %294
  %298 = fmul <4 x float> %strided.vec485, %297
  %299 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %292, <4 x float> %strided.vec484, <4 x float> %298)
  %300 = fmul <4 x float> %294, %strided.vec484
  %301 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %292, <4 x float> %strided.vec485, <4 x float> %300)
  %302 = getelementptr %struct.complex, ptr %invariant.gep338, i64 %offset.idx474
  %interleaved.vec486 = shufflevector <4 x float> %299, <4 x float> %301, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec486, ptr %302, align 4, !tbaa !22
  %index.next487 = add nuw i64 %index471, 4
  %vec.ind.next473 = add <4 x i64> %vec.ind472, <i64 4, i64 4, i64 4, i64 4>
  %303 = icmp eq i64 %index.next487, %n.vec467
  br i1 %303, label %middle.block462, label %vector.body470, !llvm.loop !44

middle.block462:                                  ; preds = %vector.body470
  br i1 %cmp.n488, label %._crit_edge272, label %scalar.ph463.preheader

scalar.ph463.preheader:                           ; preds = %.lr.ph271, %middle.block462, %vector.memcheck433
  %indvars.iv313.ph = phi i64 [ 1, %vector.memcheck433 ], [ 1, %.lr.ph271 ], [ %ind.end468, %middle.block462 ]
  br label %scalar.ph463

scalar.ph463:                                     ; preds = %scalar.ph463.preheader, %scalar.ph463
  %indvars.iv313 = phi i64 [ %indvars.iv.next314, %scalar.ph463 ], [ %indvars.iv313.ph, %scalar.ph463.preheader ]
  %304 = getelementptr inbounds float, ptr %15, i64 %indvars.iv313
  %305 = load float, ptr %304, align 4, !tbaa !22
  %306 = load float, ptr %280, align 4, !tbaa !22
  %307 = fmul float %305, %306
  %308 = add i64 %281, %indvars.iv313
  %309 = trunc i64 %308 to i32
  %310 = sitofp i32 %309 to float
  %311 = fdiv float %307, %310
  %312 = load float, ptr %282, align 8, !tbaa !13
  %313 = fmul float %312, %311
  %314 = load float, ptr %283, align 4, !tbaa !19
  %315 = fmul float %311, %314
  %316 = and i64 %indvars.iv313, 7
  %317 = getelementptr inbounds [8 x %struct.complex], ptr @clahilb_.invd1, i64 0, i64 %316
  %318 = fneg float %315
  %gep339 = getelementptr %struct.complex, ptr %invariant.gep338, i64 %indvars.iv313
  %319 = load <2 x float>, ptr %317, align 8, !tbaa !22
  %320 = insertelement <2 x float> poison, float %315, i64 0
  %321 = insertelement <2 x float> %320, float %318, i64 1
  %322 = fmul <2 x float> %319, %321
  %323 = shufflevector <2 x float> %322, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %324 = insertelement <2 x float> poison, float %313, i64 0
  %325 = shufflevector <2 x float> %324, <2 x float> poison, <2 x i32> zeroinitializer
  %326 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %325, <2 x float> %319, <2 x float> %323)
  store <2 x float> %326, ptr %gep339, align 4, !tbaa !22
  %indvars.iv.next314 = add nuw nsw i64 %indvars.iv313, 1
  %exitcond317.not = icmp eq i64 %indvars.iv.next314, %wide.trip.count316
  br i1 %exitcond317.not, label %._crit_edge272, label %scalar.ph463, !llvm.loop !45

._crit_edge272:                                   ; preds = %scalar.ph463, %middle.block462
  %indvars.iv.next319 = add nuw nsw i64 %indvars.iv318, 1
  %exitcond322.not = icmp eq i64 %indvars.iv.next319, %wide.trip.count321
  %indvar.next440 = add i3 %indvar439, 1
  br i1 %exitcond322.not, label %.loopexit, label %.lr.ph271, !llvm.loop !46

327:                                              ; preds = %._crit_edge267
  br i1 %.not230282, label %.loopexit, label %.lr.ph285

.lr.ph285:                                        ; preds = %327
  %328 = load i32, ptr %0, align 4, !tbaa !5
  %.not231277 = icmp slt i32 %328, 1
  br i1 %.not231277, label %.loopexit, label %.lr.ph280.preheader

.lr.ph280.preheader:                              ; preds = %.lr.ph285
  %329 = add nuw i32 %328, 1
  %330 = sext i32 %19 to i64
  %331 = add nuw i32 %248, 1
  %wide.trip.count331 = zext i32 %331 to i64
  %wide.trip.count326 = zext i32 %329 to i64
  %332 = add nsw i64 %wide.trip.count326, -2
  %333 = shl nsw i64 %330, 3
  %334 = shl nsw i64 %20, 3
  %335 = getelementptr i8, ptr %4, i64 %333
  %336 = getelementptr i8, ptr %335, i64 %334
  %scevgep491 = getelementptr i8, ptr %336, i64 8
  %337 = shl nuw nsw i64 %wide.trip.count331, 3
  %338 = add nsw i64 %337, -8
  %339 = mul i64 %338, %330
  %340 = shl nuw nsw i64 %wide.trip.count326, 3
  %341 = getelementptr i8, ptr %4, i64 %339
  %342 = getelementptr i8, ptr %341, i64 %334
  %scevgep492 = getelementptr i8, ptr %342, i64 %340
  %343 = shl nuw nsw i64 %wide.trip.count331, 2
  %344 = getelementptr i8, ptr %8, i64 %343
  %scevgep493 = getelementptr i8, ptr %344, i64 -4
  %345 = shl nuw nsw i64 %wide.trip.count326, 2
  %346 = getelementptr i8, ptr %8, i64 %345
  %scevgep494 = getelementptr i8, ptr %346, i64 -4
  %scevgep499 = getelementptr i8, ptr @clahilb_.invd1, i64 %340
  %347 = zext nneg i32 %328 to i64
  %min.iters.check521 = icmp ult i32 %328, 4
  %348 = and i64 %332, 7
  %349 = icmp eq i64 %348, 7
  %350 = icmp ugt i64 %332, 7
  %351 = or i1 %349, %350
  %bound0500 = icmp ult ptr %scevgep491, %scevgep493
  %bound1501 = icmp ugt ptr %scevgep492, %8
  %found.conflict502 = and i1 %bound0500, %bound1501
  %bound0504 = icmp ult ptr %scevgep491, %scevgep494
  %bound1505 = icmp ugt ptr %scevgep492, %8
  %found.conflict506 = and i1 %bound0504, %bound1505
  %stride.check507 = icmp slt i32 %19, 0
  %352 = or i1 %found.conflict506, %stride.check507
  %conflict.rdx508 = or i1 %found.conflict502, %352
  %bound0514 = icmp ult ptr %scevgep491, %scevgep499
  %bound1515 = icmp ugt ptr %scevgep492, getelementptr inbounds (i8, ptr @clahilb_.invd1, i64 8)
  %found.conflict516 = and i1 %bound0514, %bound1515
  %n.vec524 = and i64 %347, 2147483644
  %ind.end525 = or disjoint i64 %n.vec524, 1
  %cmp.n546 = icmp eq i64 %n.vec524, %347
  br label %.lr.ph280

.lr.ph280:                                        ; preds = %.lr.ph280.preheader, %._crit_edge281
  %indvar495 = phi i3 [ 0, %.lr.ph280.preheader ], [ %indvar.next496, %._crit_edge281 ]
  %indvars.iv328 = phi i64 [ 1, %.lr.ph280.preheader ], [ %indvars.iv.next329, %._crit_edge281 ]
  %353 = add i3 %indvar495, 1
  %354 = zext i3 %353 to i64
  %355 = shl nuw nsw i64 %354, 3
  %scevgep497 = getelementptr i8, ptr @clahilb_.invd2, i64 %355
  %scevgep498 = getelementptr i8, ptr getelementptr inbounds (i8, ptr @clahilb_.invd2, i64 8), i64 %355
  %356 = mul nsw i64 %indvars.iv328, %330
  %357 = and i64 %indvars.iv328, 7
  %358 = getelementptr inbounds float, ptr %15, i64 %indvars.iv328
  %359 = add nuw i64 %indvars.iv328, 4294967295
  %360 = getelementptr inbounds [8 x %struct.complex], ptr @clahilb_.invd2, i64 0, i64 %357
  %361 = getelementptr inbounds i8, ptr %360, i64 4
  %invariant.gep340 = getelementptr %struct.complex, ptr %21, i64 %356
  %brmerge552 = select i1 %min.iters.check521, i1 true, i1 %351
  br i1 %brmerge552, label %scalar.ph520.preheader, label %vector.memcheck490

vector.memcheck490:                               ; preds = %.lr.ph280
  %bound0509 = icmp ult ptr %scevgep491, %scevgep498
  %bound1510 = icmp ult ptr %scevgep497, %scevgep492
  %found.conflict511 = and i1 %bound0509, %bound1510
  %conflict.rdx513 = or i1 %found.conflict511, %conflict.rdx508
  %conflict.rdx518 = or i1 %found.conflict516, %conflict.rdx513
  br i1 %conflict.rdx518, label %scalar.ph520.preheader, label %vector.ph522

vector.ph522:                                     ; preds = %vector.memcheck490
  %broadcast.splatinsert535 = insertelement <4 x i64> poison, i64 %359, i64 0
  %broadcast.splat536 = shufflevector <4 x i64> %broadcast.splatinsert535, <4 x i64> poison, <4 x i32> zeroinitializer
  br label %vector.body527

vector.body527:                                   ; preds = %vector.body527, %vector.ph522
  %index528 = phi i64 [ 0, %vector.ph522 ], [ %index.next545, %vector.body527 ]
  %vec.ind529 = phi <4 x i64> [ <i64 1, i64 2, i64 3, i64 4>, %vector.ph522 ], [ %vec.ind.next530, %vector.body527 ]
  %offset.idx531 = or disjoint i64 %index528, 1
  %362 = getelementptr float, ptr %8, i64 %index528
  %wide.load532 = load <4 x float>, ptr %362, align 4, !tbaa !22, !alias.scope !47
  %363 = load float, ptr %358, align 4, !tbaa !22, !alias.scope !50
  %broadcast.splatinsert533 = insertelement <4 x float> poison, float %363, i64 0
  %broadcast.splat534 = shufflevector <4 x float> %broadcast.splatinsert533, <4 x float> poison, <4 x i32> zeroinitializer
  %364 = fmul <4 x float> %wide.load532, %broadcast.splat534
  %365 = add <4 x i64> %broadcast.splat536, %vec.ind529
  %366 = trunc <4 x i64> %365 to <4 x i32>
  %367 = sitofp <4 x i32> %366 to <4 x float>
  %368 = fdiv <4 x float> %364, %367
  %369 = load float, ptr %360, align 8, !tbaa !13, !alias.scope !52
  %broadcast.splatinsert537 = insertelement <4 x float> poison, float %369, i64 0
  %broadcast.splat538 = shufflevector <4 x float> %broadcast.splatinsert537, <4 x float> poison, <4 x i32> zeroinitializer
  %370 = fmul <4 x float> %broadcast.splat538, %368
  %371 = load float, ptr %361, align 4, !tbaa !19, !alias.scope !52
  %broadcast.splatinsert539 = insertelement <4 x float> poison, float %371, i64 0
  %broadcast.splat540 = shufflevector <4 x float> %broadcast.splatinsert539, <4 x float> poison, <4 x i32> zeroinitializer
  %372 = fmul <4 x float> %368, %broadcast.splat540
  %373 = and i64 %offset.idx531, 5
  %374 = getelementptr inbounds [8 x %struct.complex], ptr @clahilb_.invd1, i64 0, i64 %373
  %wide.vec541 = load <8 x float>, ptr %374, align 8, !tbaa !22
  %strided.vec542 = shufflevector <8 x float> %wide.vec541, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec543 = shufflevector <8 x float> %wide.vec541, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %375 = fneg <4 x float> %372
  %376 = fmul <4 x float> %strided.vec543, %375
  %377 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %370, <4 x float> %strided.vec542, <4 x float> %376)
  %378 = fmul <4 x float> %372, %strided.vec542
  %379 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %370, <4 x float> %strided.vec543, <4 x float> %378)
  %380 = getelementptr %struct.complex, ptr %invariant.gep340, i64 %offset.idx531
  %interleaved.vec544 = shufflevector <4 x float> %377, <4 x float> %379, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec544, ptr %380, align 4, !tbaa !22
  %index.next545 = add nuw i64 %index528, 4
  %vec.ind.next530 = add <4 x i64> %vec.ind529, <i64 4, i64 4, i64 4, i64 4>
  %381 = icmp eq i64 %index.next545, %n.vec524
  br i1 %381, label %middle.block519, label %vector.body527, !llvm.loop !54

middle.block519:                                  ; preds = %vector.body527
  br i1 %cmp.n546, label %._crit_edge281, label %scalar.ph520.preheader

scalar.ph520.preheader:                           ; preds = %.lr.ph280, %middle.block519, %vector.memcheck490
  %indvars.iv323.ph = phi i64 [ 1, %vector.memcheck490 ], [ 1, %.lr.ph280 ], [ %ind.end525, %middle.block519 ]
  br label %scalar.ph520

scalar.ph520:                                     ; preds = %scalar.ph520.preheader, %scalar.ph520
  %indvars.iv323 = phi i64 [ %indvars.iv.next324, %scalar.ph520 ], [ %indvars.iv323.ph, %scalar.ph520.preheader ]
  %382 = getelementptr inbounds float, ptr %15, i64 %indvars.iv323
  %383 = load float, ptr %382, align 4, !tbaa !22
  %384 = load float, ptr %358, align 4, !tbaa !22
  %385 = fmul float %383, %384
  %386 = add i64 %359, %indvars.iv323
  %387 = trunc i64 %386 to i32
  %388 = sitofp i32 %387 to float
  %389 = fdiv float %385, %388
  %390 = load float, ptr %360, align 8, !tbaa !13
  %391 = fmul float %390, %389
  %392 = load float, ptr %361, align 4, !tbaa !19
  %393 = fmul float %389, %392
  %394 = and i64 %indvars.iv323, 7
  %395 = getelementptr inbounds [8 x %struct.complex], ptr @clahilb_.invd1, i64 0, i64 %394
  %396 = fneg float %393
  %gep341 = getelementptr %struct.complex, ptr %invariant.gep340, i64 %indvars.iv323
  %397 = load <2 x float>, ptr %395, align 8, !tbaa !22
  %398 = insertelement <2 x float> poison, float %393, i64 0
  %399 = insertelement <2 x float> %398, float %396, i64 1
  %400 = fmul <2 x float> %397, %399
  %401 = shufflevector <2 x float> %400, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %402 = insertelement <2 x float> poison, float %391, i64 0
  %403 = shufflevector <2 x float> %402, <2 x float> poison, <2 x i32> zeroinitializer
  %404 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %403, <2 x float> %397, <2 x float> %401)
  store <2 x float> %404, ptr %gep341, align 4, !tbaa !22
  %indvars.iv.next324 = add nuw nsw i64 %indvars.iv323, 1
  %exitcond327.not = icmp eq i64 %indvars.iv.next324, %wide.trip.count326
  br i1 %exitcond327.not, label %._crit_edge281, label %scalar.ph520, !llvm.loop !55

._crit_edge281:                                   ; preds = %scalar.ph520, %middle.block519
  %indvars.iv.next329 = add nuw nsw i64 %indvars.iv328, 1
  %exitcond332.not = icmp eq i64 %indvars.iv.next329, %wide.trip.count331
  %indvar.next496 = add i3 %indvar495, 1
  br i1 %exitcond332.not, label %.loopexit, label %.lr.ph280, !llvm.loop !56

.loopexit:                                        ; preds = %._crit_edge272, %._crit_edge281, %.lr.ph285, %.lr.ph276, %249, %327, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #4
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %13) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #4
  ret void
}

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

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

declare i32 @xerbla_(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

declare i32 @lsamen_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @claset_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; 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>) #3

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

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 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = distinct !{!10, !11}
!11 = !{!"llvm.loop.mustprogress"}
!12 = distinct !{!12, !11}
!13 = !{!14, !15, i64 0}
!14 = !{!"", !15, i64 0, !15, i64 4}
!15 = !{!"float", !7, i64 0}
!16 = !{!17}
!17 = distinct !{!17, !18}
!18 = distinct !{!18, !"LVerDomain"}
!19 = !{!14, !15, i64 4}
!20 = !{!21}
!21 = distinct !{!21, !18}
!22 = !{!15, !15, i64 0}
!23 = distinct !{!23, !11, !24, !25}
!24 = !{!"llvm.loop.isvectorized", i32 1}
!25 = !{!"llvm.loop.unroll.runtime.disable"}
!26 = distinct !{!26, !11, !24}
!27 = distinct !{!27, !11}
!28 = !{!29}
!29 = distinct !{!29, !30}
!30 = distinct !{!30, !"LVerDomain"}
!31 = !{!32}
!32 = distinct !{!32, !30}
!33 = distinct !{!33, !11, !24, !25}
!34 = distinct !{!34, !11, !24}
!35 = distinct !{!35, !11}
!36 = distinct !{!36, !11}
!37 = !{!38}
!38 = distinct !{!38, !39}
!39 = distinct !{!39, !"LVerDomain"}
!40 = !{!41}
!41 = distinct !{!41, !39}
!42 = !{!43}
!43 = distinct !{!43, !39}
!44 = distinct !{!44, !11, !24, !25}
!45 = distinct !{!45, !11, !24}
!46 = distinct !{!46, !11}
!47 = !{!48}
!48 = distinct !{!48, !49}
!49 = distinct !{!49, !"LVerDomain"}
!50 = !{!51}
!51 = distinct !{!51, !49}
!52 = !{!53}
!53 = distinct !{!53, !49}
!54 = distinct !{!54, !11, !24, !25}
!55 = distinct !{!55, !11, !24}
!56 = distinct !{!56, !11}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalDCEPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass