Index: llvm/lib/Transforms/Scalar/NewGVN.cpp =================================================================== --- llvm/lib/Transforms/Scalar/NewGVN.cpp +++ llvm/lib/Transforms/Scalar/NewGVN.cpp @@ -510,6 +510,9 @@ // Number of function arguments, used by ranking unsigned int NumFuncArgs = 0; + // Number of basic blocks in the function. + size_t NumFuncBlocks; + // RPOOrdering of basic blocks DenseMap RPOOrdering; @@ -2991,7 +2994,7 @@ ProcessedCount.insert({V, 1}); } else { ++ProcessedCount[V]; - assert(ProcessedCount[V] < 100 && + assert(ProcessedCount[V] < NumFuncBlocks * 100 && "Seem to have processed the same Value a lot"); } #endif @@ -3390,6 +3393,8 @@ StartingVNCounter = DebugCounter::getCounterValue(VNCounter); bool Changed = false; NumFuncArgs = F.arg_size(); + NumFuncBlocks = F.size(); + MSSAWalker = MSSA->getWalker(); SingletonDeadExpression = new (ExpressionAllocator) DeadExpression(); Index: llvm/test/Transforms/NewGVN/bug50444.ll =================================================================== --- /dev/null +++ llvm/test/Transforms/NewGVN/bug50444.ll @@ -0,0 +1,1099 @@ +; RUN: opt -S -newgvn %s | FileCheck %s + +; This previously would assert that a value was seen "too many times" +; (100), but it does in fact appear that many times. + +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-linux-gnu" + +%0 = type { [6 x <2 x float>] } + +; The second half of the getelementptrs pairs should be deleted +; CHECK-LABEL: @new_gvn_crash( +; CHECK: getelementptr +; CHECK-NEXT: add +define void @new_gvn_crash() { +bb: + %i = alloca [3 x <2 x double>], align 16 + br label %bb1 + +bb1: ; preds = %bb10, %bb + %i2 = phi i64 [ 0, %bb ], [ %i11, %bb10 ] + br label %bb3 + +bb3: ; preds = %bb1 + %i4 = icmp eq i64 %i2, 0 + br i1 %i4, label %bb10, label %bb9 + +bb5: ; preds = %bb9, %bb5 + %i6 = phi i64 [ 0, %bb9 ], [ %i7, %bb5 ] + %i7 = add nuw nsw i64 %i6, 1 + %i8 = icmp ne i64 %i7, %i2 + br i1 %i8, label %bb5, label %bb12 + +bb9: ; preds = %bb3 + br label %bb5 + +bb10: ; preds = %bb3 + %i11 = add nuw nsw i64 %i2, 1 + br label %bb1 + +bb12: ; preds = %bb5 + br label %bb13 + +bb13: ; preds = %bb13, %bb12 + %i14 = phi i64 [ 0, %bb12 ], [ %i17, %bb13 ] + %i15 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i14 + %i16 = getelementptr inbounds <2 x double>, <2 x double>* %i15, i32 0, i32 0 + %i17 = add nuw nsw i64 %i14, 1 + %i18 = icmp ne i64 %i17, %i2 + br i1 %i18, label %bb13, label %bb19 + +bb19: ; preds = %bb13 + br label %bb20 + +bb20: ; preds = %bb20, %bb19 + %i21 = phi i64 [ 0, %bb19 ], [ %i24, %bb20 ] + %i22 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i21 + %i23 = getelementptr inbounds <2 x double>, <2 x double>* %i22, i32 0, i32 0 + %i24 = add nuw nsw i64 %i21, 1 + %i25 = icmp ne i64 %i24, %i2 + br i1 %i25, label %bb20, label %bb26 + +bb26: ; preds = %bb20 + br label %bb27 + +bb27: ; preds = %bb27, %bb26 + %i28 = phi i64 [ 0, %bb26 ], [ %i31, %bb27 ] + %i29 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i28 + %i30 = getelementptr inbounds <2 x double>, <2 x double>* %i29, i32 0, i32 0 + %i31 = add nuw nsw i64 %i28, 1 + %i32 = icmp ne i64 %i31, %i2 + br i1 %i32, label %bb27, label %bb33 + +bb33: ; preds = %bb27 + br label %bb34 + +bb34: ; preds = %bb34, %bb33 + %i35 = phi i64 [ 0, %bb33 ], [ %i38, %bb34 ] + %i36 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i35 + %i37 = getelementptr inbounds <2 x double>, <2 x double>* %i36, i32 0, i32 0 + %i38 = add nuw nsw i64 %i35, 1 + %i39 = icmp ne i64 %i38, %i2 + br i1 %i39, label %bb34, label %bb40 + +bb40: ; preds = %bb34 + br label %bb41 + +bb41: ; preds = %bb41, %bb40 + %i42 = phi i64 [ 0, %bb40 ], [ %i45, %bb41 ] + %i43 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i42 + %i44 = getelementptr inbounds <2 x double>, <2 x double>* %i43, i32 0, i32 0 + %i45 = add nuw nsw i64 %i42, 1 + %i46 = icmp ne i64 %i45, %i2 + br i1 %i46, label %bb41, label %bb47 + +bb47: ; preds = %bb41 + br label %bb48 + +bb48: ; preds = %bb48, %bb47 + %i49 = phi i64 [ 0, %bb47 ], [ %i52, %bb48 ] + %i50 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i49 + %i51 = getelementptr inbounds <2 x double>, <2 x double>* %i50, i32 0, i32 0 + %i52 = add nuw nsw i64 %i49, 1 + %i53 = icmp ne i64 %i52, %i2 + br i1 %i53, label %bb48, label %bb54 + +bb54: ; preds = %bb48 + br label %bb55 + +bb55: ; preds = %bb55, %bb54 + %i56 = phi i64 [ 0, %bb54 ], [ %i59, %bb55 ] + %i57 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i56 + %i58 = getelementptr inbounds <2 x double>, <2 x double>* %i57, i32 0, i32 0 + %i59 = add nuw nsw i64 %i56, 1 + %i60 = icmp ne i64 %i59, %i2 + br i1 %i60, label %bb55, label %bb61 + +bb61: ; preds = %bb55 + br label %bb62 + +bb62: ; preds = %bb62, %bb61 + %i63 = phi i64 [ 0, %bb61 ], [ %i66, %bb62 ] + %i64 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i63 + %i65 = getelementptr inbounds <2 x double>, <2 x double>* %i64, i32 0, i32 0 + %i66 = add nuw nsw i64 %i63, 1 + %i67 = icmp ne i64 %i66, %i2 + br i1 %i67, label %bb62, label %bb68 + +bb68: ; preds = %bb62 + br label %bb69 + +bb69: ; preds = %bb69, %bb68 + %i70 = phi i64 [ 0, %bb68 ], [ %i73, %bb69 ] + %i71 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i70 + %i72 = getelementptr inbounds <2 x double>, <2 x double>* %i71, i32 0, i32 0 + %i73 = add nuw nsw i64 %i70, 1 + %i74 = icmp ne i64 %i73, %i2 + br i1 %i74, label %bb69, label %bb75 + +bb75: ; preds = %bb69 + br label %bb76 + +bb76: ; preds = %bb76, %bb75 + %i77 = phi i64 [ 0, %bb75 ], [ %i80, %bb76 ] + %i78 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i77 + %i79 = getelementptr inbounds <2 x double>, <2 x double>* %i78, i32 0, i32 0 + %i80 = add nuw nsw i64 %i77, 1 + %i81 = icmp ne i64 %i80, %i2 + br i1 %i81, label %bb76, label %bb82 + +bb82: ; preds = %bb76 + br label %bb83 + +bb83: ; preds = %bb83, %bb82 + %i84 = phi i64 [ 0, %bb82 ], [ %i87, %bb83 ] + %i85 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i84 + %i86 = getelementptr inbounds <2 x double>, <2 x double>* %i85, i32 0, i32 0 + %i87 = add nuw nsw i64 %i84, 1 + %i88 = icmp ne i64 %i87, %i2 + br i1 %i88, label %bb83, label %bb89 + +bb89: ; preds = %bb83 + br label %bb90 + +bb90: ; preds = %bb90, %bb89 + %i91 = phi i64 [ 0, %bb89 ], [ %i94, %bb90 ] + %i92 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i91 + %i93 = getelementptr inbounds <2 x double>, <2 x double>* %i92, i32 0, i32 0 + %i94 = add nuw nsw i64 %i91, 1 + %i95 = icmp ne i64 %i94, %i2 + br i1 %i95, label %bb90, label %bb96 + +bb96: ; preds = %bb90 + br label %bb97 + +bb97: ; preds = %bb97, %bb96 + %i98 = phi i64 [ 0, %bb96 ], [ %i101, %bb97 ] + %i99 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i98 + %i100 = getelementptr inbounds <2 x double>, <2 x double>* %i99, i32 0, i32 0 + %i101 = add nuw nsw i64 %i98, 1 + %i102 = icmp ne i64 %i101, %i2 + br i1 %i102, label %bb97, label %bb103 + +bb103: ; preds = %bb97 + br label %bb104 + +bb104: ; preds = %bb104, %bb103 + %i105 = phi i64 [ 0, %bb103 ], [ %i108, %bb104 ] + %i106 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i105 + %i107 = getelementptr inbounds <2 x double>, <2 x double>* %i106, i32 0, i32 0 + %i108 = add nuw nsw i64 %i105, 1 + %i109 = icmp ne i64 %i108, %i2 + br i1 %i109, label %bb104, label %bb110 + +bb110: ; preds = %bb104 + br label %bb111 + +bb111: ; preds = %bb111, %bb110 + %i112 = phi i64 [ 0, %bb110 ], [ %i115, %bb111 ] + %i113 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i112 + %i114 = getelementptr inbounds <2 x double>, <2 x double>* %i113, i32 0, i32 0 + %i115 = add nuw nsw i64 %i112, 1 + %i116 = icmp ne i64 %i115, %i2 + br i1 %i116, label %bb111, label %bb117 + +bb117: ; preds = %bb111 + br label %bb118 + +bb118: ; preds = %bb118, %bb117 + %i119 = phi i64 [ 0, %bb117 ], [ %i122, %bb118 ] + %i120 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i119 + %i121 = getelementptr inbounds <2 x double>, <2 x double>* %i120, i32 0, i32 0 + %i122 = add nuw nsw i64 %i119, 1 + %i123 = icmp ne i64 %i122, %i2 + br i1 %i123, label %bb118, label %bb124 + +bb124: ; preds = %bb118 + br label %bb125 + +bb125: ; preds = %bb125, %bb124 + %i126 = phi i64 [ 0, %bb124 ], [ %i129, %bb125 ] + %i127 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i126 + %i128 = getelementptr inbounds <2 x double>, <2 x double>* %i127, i32 0, i32 0 + %i129 = add nuw nsw i64 %i126, 1 + %i130 = icmp ne i64 %i129, %i2 + br i1 %i130, label %bb125, label %bb131 + +bb131: ; preds = %bb125 + br label %bb132 + +bb132: ; preds = %bb132, %bb131 + %i133 = phi i64 [ 0, %bb131 ], [ %i136, %bb132 ] + %i134 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i133 + %i135 = getelementptr inbounds <2 x double>, <2 x double>* %i134, i32 0, i32 0 + %i136 = add nuw nsw i64 %i133, 1 + %i137 = icmp ne i64 %i136, %i2 + br i1 %i137, label %bb132, label %bb138 + +bb138: ; preds = %bb132 + br label %bb139 + +bb139: ; preds = %bb139, %bb138 + %i140 = phi i64 [ 0, %bb138 ], [ %i143, %bb139 ] + %i141 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i140 + %i142 = getelementptr inbounds <2 x double>, <2 x double>* %i141, i32 0, i32 0 + %i143 = add nuw nsw i64 %i140, 1 + %i144 = icmp ne i64 %i143, %i2 + br i1 %i144, label %bb139, label %bb145 + +bb145: ; preds = %bb139 + br label %bb146 + +bb146: ; preds = %bb146, %bb145 + %i147 = phi i64 [ 0, %bb145 ], [ %i150, %bb146 ] + %i148 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i147 + %i149 = getelementptr inbounds <2 x double>, <2 x double>* %i148, i32 0, i32 0 + %i150 = add nuw nsw i64 %i147, 1 + %i151 = icmp ne i64 %i150, %i2 + br i1 %i151, label %bb146, label %bb152 + +bb152: ; preds = %bb146 + br label %bb153 + +bb153: ; preds = %bb153, %bb152 + %i154 = phi i64 [ 0, %bb152 ], [ %i157, %bb153 ] + %i155 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i154 + %i156 = getelementptr inbounds <2 x double>, <2 x double>* %i155, i32 0, i32 0 + %i157 = add nuw nsw i64 %i154, 1 + %i158 = icmp ne i64 %i157, %i2 + br i1 %i158, label %bb153, label %bb159 + +bb159: ; preds = %bb153 + br label %bb160 + +bb160: ; preds = %bb160, %bb159 + %i161 = phi i64 [ 0, %bb159 ], [ %i164, %bb160 ] + %i162 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i161 + %i163 = getelementptr inbounds <2 x double>, <2 x double>* %i162, i32 0, i32 0 + %i164 = add nuw nsw i64 %i161, 1 + %i165 = icmp ne i64 %i164, %i2 + br i1 %i165, label %bb160, label %bb166 + +bb166: ; preds = %bb160 + br label %bb167 + +bb167: ; preds = %bb167, %bb166 + %i168 = phi i64 [ 0, %bb166 ], [ %i171, %bb167 ] + %i169 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i168 + %i170 = getelementptr inbounds <2 x double>, <2 x double>* %i169, i32 0, i32 0 + %i171 = add nuw nsw i64 %i168, 1 + %i172 = icmp ne i64 %i171, %i2 + br i1 %i172, label %bb167, label %bb173 + +bb173: ; preds = %bb167 + br label %bb174 + +bb174: ; preds = %bb174, %bb173 + %i175 = phi i64 [ 0, %bb173 ], [ %i178, %bb174 ] + %i176 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i175 + %i177 = getelementptr inbounds <2 x double>, <2 x double>* %i176, i32 0, i32 0 + %i178 = add nuw nsw i64 %i175, 1 + %i179 = icmp ne i64 %i178, %i2 + br i1 %i179, label %bb174, label %bb180 + +bb180: ; preds = %bb174 + br label %bb181 + +bb181: ; preds = %bb181, %bb180 + %i182 = phi i64 [ 0, %bb180 ], [ %i185, %bb181 ] + %i183 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i182 + %i184 = getelementptr inbounds <2 x double>, <2 x double>* %i183, i32 0, i32 0 + %i185 = add nuw nsw i64 %i182, 1 + %i186 = icmp ne i64 %i185, %i2 + br i1 %i186, label %bb181, label %bb187 + +bb187: ; preds = %bb181 + br label %bb188 + +bb188: ; preds = %bb188, %bb187 + %i189 = phi i64 [ 0, %bb187 ], [ %i192, %bb188 ] + %i190 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i189 + %i191 = getelementptr inbounds <2 x double>, <2 x double>* %i190, i32 0, i32 0 + %i192 = add nuw nsw i64 %i189, 1 + %i193 = icmp ne i64 %i192, %i2 + br i1 %i193, label %bb188, label %bb194 + +bb194: ; preds = %bb188 + br label %bb195 + +bb195: ; preds = %bb195, %bb194 + %i196 = phi i64 [ 0, %bb194 ], [ %i199, %bb195 ] + %i197 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i196 + %i198 = getelementptr inbounds <2 x double>, <2 x double>* %i197, i32 0, i32 0 + %i199 = add nuw nsw i64 %i196, 1 + %i200 = icmp ne i64 %i199, %i2 + br i1 %i200, label %bb195, label %bb201 + +bb201: ; preds = %bb195 + br label %bb202 + +bb202: ; preds = %bb202, %bb201 + %i203 = phi i64 [ 0, %bb201 ], [ %i206, %bb202 ] + %i204 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i203 + %i205 = getelementptr inbounds <2 x double>, <2 x double>* %i204, i32 0, i32 0 + %i206 = add nuw nsw i64 %i203, 1 + %i207 = icmp ne i64 %i206, %i2 + br i1 %i207, label %bb202, label %bb208 + +bb208: ; preds = %bb202 + br label %bb209 + +bb209: ; preds = %bb209, %bb208 + %i210 = phi i64 [ 0, %bb208 ], [ %i213, %bb209 ] + %i211 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i210 + %i212 = getelementptr inbounds <2 x double>, <2 x double>* %i211, i32 0, i32 0 + %i213 = add nuw nsw i64 %i210, 1 + %i214 = icmp ne i64 %i213, %i2 + br i1 %i214, label %bb209, label %bb215 + +bb215: ; preds = %bb209 + br label %bb216 + +bb216: ; preds = %bb216, %bb215 + %i217 = phi i64 [ 0, %bb215 ], [ %i220, %bb216 ] + %i218 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i217 + %i219 = getelementptr inbounds <2 x double>, <2 x double>* %i218, i32 0, i32 0 + %i220 = add nuw nsw i64 %i217, 1 + %i221 = icmp ne i64 %i220, %i2 + br i1 %i221, label %bb216, label %bb222 + +bb222: ; preds = %bb216 + br label %bb223 + +bb223: ; preds = %bb223, %bb222 + %i224 = phi i64 [ 0, %bb222 ], [ %i227, %bb223 ] + %i225 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i224 + %i226 = getelementptr inbounds <2 x double>, <2 x double>* %i225, i32 0, i32 0 + %i227 = add nuw nsw i64 %i224, 1 + %i228 = icmp ne i64 %i227, %i2 + br i1 %i228, label %bb223, label %bb229 + +bb229: ; preds = %bb223 + br label %bb230 + +bb230: ; preds = %bb230, %bb229 + %i231 = phi i64 [ 0, %bb229 ], [ %i234, %bb230 ] + %i232 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i231 + %i233 = getelementptr inbounds <2 x double>, <2 x double>* %i232, i32 0, i32 0 + %i234 = add nuw nsw i64 %i231, 1 + %i235 = icmp ne i64 %i234, %i2 + br i1 %i235, label %bb230, label %bb236 + +bb236: ; preds = %bb230 + br label %bb237 + +bb237: ; preds = %bb237, %bb236 + %i238 = phi i64 [ 0, %bb236 ], [ %i241, %bb237 ] + %i239 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i238 + %i240 = getelementptr inbounds <2 x double>, <2 x double>* %i239, i32 0, i32 0 + %i241 = add nuw nsw i64 %i238, 1 + %i242 = icmp ne i64 %i241, %i2 + br i1 %i242, label %bb237, label %bb243 + +bb243: ; preds = %bb237 + br label %bb244 + +bb244: ; preds = %bb244, %bb243 + %i245 = phi i64 [ 0, %bb243 ], [ %i248, %bb244 ] + %i246 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i245 + %i247 = getelementptr inbounds <2 x double>, <2 x double>* %i246, i32 0, i32 0 + %i248 = add nuw nsw i64 %i245, 1 + %i249 = icmp ne i64 %i248, %i2 + br i1 %i249, label %bb244, label %bb250 + +bb250: ; preds = %bb244 + br label %bb251 + +bb251: ; preds = %bb251, %bb250 + %i252 = phi i64 [ 0, %bb250 ], [ %i255, %bb251 ] + %i253 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i252 + %i254 = getelementptr inbounds <2 x double>, <2 x double>* %i253, i32 0, i32 0 + %i255 = add nuw nsw i64 %i252, 1 + %i256 = icmp ne i64 %i255, %i2 + br i1 %i256, label %bb251, label %bb257 + +bb257: ; preds = %bb251 + br label %bb258 + +bb258: ; preds = %bb258, %bb257 + %i259 = phi i64 [ 0, %bb257 ], [ %i262, %bb258 ] + %i260 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i259 + %i261 = getelementptr inbounds <2 x double>, <2 x double>* %i260, i32 0, i32 0 + %i262 = add nuw nsw i64 %i259, 1 + %i263 = icmp ne i64 %i262, %i2 + br i1 %i263, label %bb258, label %bb264 + +bb264: ; preds = %bb258 + br label %bb265 + +bb265: ; preds = %bb265, %bb264 + %i266 = phi i64 [ 0, %bb264 ], [ %i269, %bb265 ] + %i267 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i266 + %i268 = getelementptr inbounds <2 x double>, <2 x double>* %i267, i32 0, i32 0 + %i269 = add nuw nsw i64 %i266, 1 + %i270 = icmp ne i64 %i269, %i2 + br i1 %i270, label %bb265, label %bb271 + +bb271: ; preds = %bb265 + br label %bb272 + +bb272: ; preds = %bb272, %bb271 + %i273 = phi i64 [ 0, %bb271 ], [ %i276, %bb272 ] + %i274 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i273 + %i275 = getelementptr inbounds <2 x double>, <2 x double>* %i274, i32 0, i32 0 + %i276 = add nuw nsw i64 %i273, 1 + %i277 = icmp ne i64 %i276, %i2 + br i1 %i277, label %bb272, label %bb278 + +bb278: ; preds = %bb272 + br label %bb279 + +bb279: ; preds = %bb279, %bb278 + %i280 = phi i64 [ 0, %bb278 ], [ %i283, %bb279 ] + %i281 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i280 + %i282 = getelementptr inbounds <2 x double>, <2 x double>* %i281, i32 0, i32 0 + %i283 = add nuw nsw i64 %i280, 1 + %i284 = icmp ne i64 %i283, %i2 + br i1 %i284, label %bb279, label %bb285 + +bb285: ; preds = %bb279 + br label %bb286 + +bb286: ; preds = %bb286, %bb285 + %i287 = phi i64 [ 0, %bb285 ], [ %i290, %bb286 ] + %i288 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i287 + %i289 = getelementptr inbounds <2 x double>, <2 x double>* %i288, i32 0, i32 0 + %i290 = add nuw nsw i64 %i287, 1 + %i291 = icmp ne i64 %i290, %i2 + br i1 %i291, label %bb286, label %bb292 + +bb292: ; preds = %bb286 + br label %bb293 + +bb293: ; preds = %bb293, %bb292 + %i294 = phi i64 [ 0, %bb292 ], [ %i297, %bb293 ] + %i295 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i294 + %i296 = getelementptr inbounds <2 x double>, <2 x double>* %i295, i32 0, i32 0 + %i297 = add nuw nsw i64 %i294, 1 + %i298 = icmp ne i64 %i297, %i2 + br i1 %i298, label %bb293, label %bb299 + +bb299: ; preds = %bb293 + br label %bb300 + +bb300: ; preds = %bb300, %bb299 + %i301 = phi i64 [ 0, %bb299 ], [ %i304, %bb300 ] + %i302 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i301 + %i303 = getelementptr inbounds <2 x double>, <2 x double>* %i302, i32 0, i32 0 + %i304 = add nuw nsw i64 %i301, 1 + %i305 = icmp ne i64 %i304, %i2 + br i1 %i305, label %bb300, label %bb306 + +bb306: ; preds = %bb300 + br label %bb307 + +bb307: ; preds = %bb307, %bb306 + %i308 = phi i64 [ 0, %bb306 ], [ %i311, %bb307 ] + %i309 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i308 + %i310 = getelementptr inbounds <2 x double>, <2 x double>* %i309, i32 0, i32 0 + %i311 = add nuw nsw i64 %i308, 1 + %i312 = icmp ne i64 %i311, %i2 + br i1 %i312, label %bb307, label %bb313 + +bb313: ; preds = %bb307 + br label %bb314 + +bb314: ; preds = %bb314, %bb313 + %i315 = phi i64 [ 0, %bb313 ], [ %i318, %bb314 ] + %i316 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i315 + %i317 = getelementptr inbounds <2 x double>, <2 x double>* %i316, i32 0, i32 0 + %i318 = add nuw nsw i64 %i315, 1 + %i319 = icmp ne i64 %i318, %i2 + br i1 %i319, label %bb314, label %bb320 + +bb320: ; preds = %bb314 + br label %bb321 + +bb321: ; preds = %bb321, %bb320 + %i322 = phi i64 [ 0, %bb320 ], [ %i325, %bb321 ] + %i323 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i322 + %i324 = getelementptr inbounds <2 x double>, <2 x double>* %i323, i32 0, i32 0 + %i325 = add nuw nsw i64 %i322, 1 + %i326 = icmp ne i64 %i325, %i2 + br i1 %i326, label %bb321, label %bb327 + +bb327: ; preds = %bb321 + br label %bb328 + +bb328: ; preds = %bb328, %bb327 + %i329 = phi i64 [ 0, %bb327 ], [ %i332, %bb328 ] + %i330 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i329 + %i331 = getelementptr inbounds <2 x double>, <2 x double>* %i330, i32 0, i32 0 + %i332 = add nuw nsw i64 %i329, 1 + %i333 = icmp ne i64 %i332, %i2 + br i1 %i333, label %bb328, label %bb334 + +bb334: ; preds = %bb328 + br label %bb335 + +bb335: ; preds = %bb335, %bb334 + %i336 = phi i64 [ 0, %bb334 ], [ %i339, %bb335 ] + %i337 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i336 + %i338 = getelementptr inbounds <2 x double>, <2 x double>* %i337, i32 0, i32 0 + %i339 = add nuw nsw i64 %i336, 1 + %i340 = icmp ne i64 %i339, %i2 + br i1 %i340, label %bb335, label %bb341 + +bb341: ; preds = %bb335 + br label %bb342 + +bb342: ; preds = %bb342, %bb341 + %i343 = phi i64 [ 0, %bb341 ], [ %i346, %bb342 ] + %i344 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i343 + %i345 = getelementptr inbounds <2 x double>, <2 x double>* %i344, i32 0, i32 0 + %i346 = add nuw nsw i64 %i343, 1 + %i347 = icmp ne i64 %i346, %i2 + br i1 %i347, label %bb342, label %bb348 + +bb348: ; preds = %bb342 + br label %bb349 + +bb349: ; preds = %bb349, %bb348 + %i350 = phi i64 [ 0, %bb348 ], [ %i353, %bb349 ] + %i351 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i350 + %i352 = getelementptr inbounds <2 x double>, <2 x double>* %i351, i32 0, i32 0 + %i353 = add nuw nsw i64 %i350, 1 + %i354 = icmp ne i64 %i353, %i2 + br i1 %i354, label %bb349, label %bb355 + +bb355: ; preds = %bb349 + br label %bb356 + +bb356: ; preds = %bb356, %bb355 + %i357 = phi i64 [ 0, %bb355 ], [ %i360, %bb356 ] + %i358 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i357 + %i359 = getelementptr inbounds <2 x double>, <2 x double>* %i358, i32 0, i32 0 + %i360 = add nuw nsw i64 %i357, 1 + %i361 = icmp ne i64 %i360, %i2 + br i1 %i361, label %bb356, label %bb362 + +bb362: ; preds = %bb356 + br label %bb363 + +bb363: ; preds = %bb363, %bb362 + %i364 = phi i64 [ 0, %bb362 ], [ %i367, %bb363 ] + %i365 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i364 + %i366 = getelementptr inbounds <2 x double>, <2 x double>* %i365, i32 0, i32 0 + %i367 = add nuw nsw i64 %i364, 1 + %i368 = icmp ne i64 %i367, %i2 + br i1 %i368, label %bb363, label %bb369 + +bb369: ; preds = %bb363 + br label %bb370 + +bb370: ; preds = %bb370, %bb369 + %i371 = phi i64 [ 0, %bb369 ], [ %i374, %bb370 ] + %i372 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i371 + %i373 = getelementptr inbounds <2 x double>, <2 x double>* %i372, i32 0, i32 0 + %i374 = add nuw nsw i64 %i371, 1 + %i375 = icmp ne i64 %i374, %i2 + br i1 %i375, label %bb370, label %bb376 + +bb376: ; preds = %bb370 + br label %bb377 + +bb377: ; preds = %bb377, %bb376 + %i378 = phi i64 [ 0, %bb376 ], [ %i381, %bb377 ] + %i379 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i378 + %i380 = getelementptr inbounds <2 x double>, <2 x double>* %i379, i32 0, i32 0 + %i381 = add nuw nsw i64 %i378, 1 + %i382 = icmp ne i64 %i381, %i2 + br i1 %i382, label %bb377, label %bb383 + +bb383: ; preds = %bb377 + br label %bb384 + +bb384: ; preds = %bb384, %bb383 + %i385 = phi i64 [ 0, %bb383 ], [ %i388, %bb384 ] + %i386 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i385 + %i387 = getelementptr inbounds <2 x double>, <2 x double>* %i386, i32 0, i32 0 + %i388 = add nuw nsw i64 %i385, 1 + %i389 = icmp ne i64 %i388, %i2 + br i1 %i389, label %bb384, label %bb390 + +bb390: ; preds = %bb384 + br label %bb391 + +bb391: ; preds = %bb391, %bb390 + %i392 = phi i64 [ 0, %bb390 ], [ %i395, %bb391 ] + %i393 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i392 + %i394 = getelementptr inbounds <2 x double>, <2 x double>* %i393, i32 0, i32 0 + %i395 = add nuw nsw i64 %i392, 1 + %i396 = icmp ne i64 %i395, %i2 + br i1 %i396, label %bb391, label %bb397 + +bb397: ; preds = %bb391 + br label %bb398 + +bb398: ; preds = %bb398, %bb397 + %i399 = phi i64 [ 0, %bb397 ], [ %i402, %bb398 ] + %i400 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i399 + %i401 = getelementptr inbounds <2 x double>, <2 x double>* %i400, i32 0, i32 0 + %i402 = add nuw nsw i64 %i399, 1 + %i403 = icmp ne i64 %i402, %i2 + br i1 %i403, label %bb398, label %bb404 + +bb404: ; preds = %bb398 + br label %bb405 + +bb405: ; preds = %bb405, %bb404 + %i406 = phi i64 [ 0, %bb404 ], [ %i409, %bb405 ] + %i407 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i406 + %i408 = getelementptr inbounds <2 x double>, <2 x double>* %i407, i32 0, i32 0 + %i409 = add nuw nsw i64 %i406, 1 + %i410 = icmp ne i64 %i409, %i2 + br i1 %i410, label %bb405, label %bb411 + +bb411: ; preds = %bb405 + br label %bb412 + +bb412: ; preds = %bb412, %bb411 + %i413 = phi i64 [ 0, %bb411 ], [ %i416, %bb412 ] + %i414 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i413 + %i415 = getelementptr inbounds <2 x double>, <2 x double>* %i414, i32 0, i32 0 + %i416 = add nuw nsw i64 %i413, 1 + %i417 = icmp ne i64 %i416, %i2 + br i1 %i417, label %bb412, label %bb418 + +bb418: ; preds = %bb412 + br label %bb419 + +bb419: ; preds = %bb419, %bb418 + %i420 = phi i64 [ 0, %bb418 ], [ %i423, %bb419 ] + %i421 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i420 + %i422 = getelementptr inbounds <2 x double>, <2 x double>* %i421, i32 0, i32 0 + %i423 = add nuw nsw i64 %i420, 1 + %i424 = icmp ne i64 %i423, %i2 + br i1 %i424, label %bb419, label %bb425 + +bb425: ; preds = %bb419 + br label %bb426 + +bb426: ; preds = %bb426, %bb425 + %i427 = phi i64 [ 0, %bb425 ], [ %i430, %bb426 ] + %i428 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i427 + %i429 = getelementptr inbounds <2 x double>, <2 x double>* %i428, i32 0, i32 0 + %i430 = add nuw nsw i64 %i427, 1 + %i431 = icmp ne i64 %i430, %i2 + br i1 %i431, label %bb426, label %bb432 + +bb432: ; preds = %bb426 + br label %bb433 + +bb433: ; preds = %bb433, %bb432 + %i434 = phi i64 [ 0, %bb432 ], [ %i437, %bb433 ] + %i435 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i434 + %i436 = getelementptr inbounds <2 x double>, <2 x double>* %i435, i32 0, i32 0 + %i437 = add nuw nsw i64 %i434, 1 + %i438 = icmp ne i64 %i437, %i2 + br i1 %i438, label %bb433, label %bb439 + +bb439: ; preds = %bb433 + br label %bb440 + +bb440: ; preds = %bb440, %bb439 + %i441 = phi i64 [ 0, %bb439 ], [ %i444, %bb440 ] + %i442 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i441 + %i443 = getelementptr inbounds <2 x double>, <2 x double>* %i442, i32 0, i32 0 + %i444 = add nuw nsw i64 %i441, 1 + %i445 = icmp ne i64 %i444, %i2 + br i1 %i445, label %bb440, label %bb446 + +bb446: ; preds = %bb440 + br label %bb447 + +bb447: ; preds = %bb447, %bb446 + %i448 = phi i64 [ 0, %bb446 ], [ %i451, %bb447 ] + %i449 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i448 + %i450 = getelementptr inbounds <2 x double>, <2 x double>* %i449, i32 0, i32 0 + %i451 = add nuw nsw i64 %i448, 1 + %i452 = icmp ne i64 %i451, %i2 + br i1 %i452, label %bb447, label %bb453 + +bb453: ; preds = %bb447 + br label %bb454 + +bb454: ; preds = %bb454, %bb453 + %i455 = phi i64 [ 0, %bb453 ], [ %i458, %bb454 ] + %i456 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i455 + %i457 = getelementptr inbounds <2 x double>, <2 x double>* %i456, i32 0, i32 0 + %i458 = add nuw nsw i64 %i455, 1 + %i459 = icmp ne i64 %i458, %i2 + br i1 %i459, label %bb454, label %bb460 + +bb460: ; preds = %bb454 + br label %bb461 + +bb461: ; preds = %bb461, %bb460 + %i462 = phi i64 [ 0, %bb460 ], [ %i465, %bb461 ] + %i463 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i462 + %i464 = getelementptr inbounds <2 x double>, <2 x double>* %i463, i32 0, i32 0 + %i465 = add nuw nsw i64 %i462, 1 + %i466 = icmp ne i64 %i465, %i2 + br i1 %i466, label %bb461, label %bb467 + +bb467: ; preds = %bb461 + br label %bb468 + +bb468: ; preds = %bb468, %bb467 + %i469 = phi i64 [ 0, %bb467 ], [ %i472, %bb468 ] + %i470 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i469 + %i471 = getelementptr inbounds <2 x double>, <2 x double>* %i470, i32 0, i32 0 + %i472 = add nuw nsw i64 %i469, 1 + %i473 = icmp ne i64 %i472, %i2 + br i1 %i473, label %bb468, label %bb474 + +bb474: ; preds = %bb468 + br label %bb475 + +bb475: ; preds = %bb475, %bb474 + %i476 = phi i64 [ 0, %bb474 ], [ %i479, %bb475 ] + %i477 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i476 + %i478 = getelementptr inbounds <2 x double>, <2 x double>* %i477, i32 0, i32 0 + %i479 = add nuw nsw i64 %i476, 1 + %i480 = icmp ne i64 %i479, %i2 + br i1 %i480, label %bb475, label %bb481 + +bb481: ; preds = %bb475 + br label %bb482 + +bb482: ; preds = %bb482, %bb481 + %i483 = phi i64 [ 0, %bb481 ], [ %i486, %bb482 ] + %i484 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i483 + %i485 = getelementptr inbounds <2 x double>, <2 x double>* %i484, i32 0, i32 0 + %i486 = add nuw nsw i64 %i483, 1 + %i487 = icmp ne i64 %i486, %i2 + br i1 %i487, label %bb482, label %bb488 + +bb488: ; preds = %bb482 + br label %bb489 + +bb489: ; preds = %bb489, %bb488 + %i490 = phi i64 [ 0, %bb488 ], [ %i493, %bb489 ] + %i491 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i490 + %i492 = getelementptr inbounds <2 x double>, <2 x double>* %i491, i32 0, i32 0 + %i493 = add nuw nsw i64 %i490, 1 + %i494 = icmp ne i64 %i493, %i2 + br i1 %i494, label %bb489, label %bb495 + +bb495: ; preds = %bb489 + br label %bb496 + +bb496: ; preds = %bb496, %bb495 + %i497 = phi i64 [ 0, %bb495 ], [ %i500, %bb496 ] + %i498 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i497 + %i499 = getelementptr inbounds <2 x double>, <2 x double>* %i498, i32 0, i32 0 + %i500 = add nuw nsw i64 %i497, 1 + %i501 = icmp ne i64 %i500, %i2 + br i1 %i501, label %bb496, label %bb502 + +bb502: ; preds = %bb496 + br label %bb503 + +bb503: ; preds = %bb503, %bb502 + %i504 = phi i64 [ 0, %bb502 ], [ %i507, %bb503 ] + %i505 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i504 + %i506 = getelementptr inbounds <2 x double>, <2 x double>* %i505, i32 0, i32 0 + %i507 = add nuw nsw i64 %i504, 1 + %i508 = icmp ne i64 %i507, %i2 + br i1 %i508, label %bb503, label %bb509 + +bb509: ; preds = %bb503 + br label %bb510 + +bb510: ; preds = %bb510, %bb509 + %i511 = phi i64 [ 0, %bb509 ], [ %i514, %bb510 ] + %i512 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i511 + %i513 = getelementptr inbounds <2 x double>, <2 x double>* %i512, i32 0, i32 0 + %i514 = add nuw nsw i64 %i511, 1 + %i515 = icmp ne i64 %i514, %i2 + br i1 %i515, label %bb510, label %bb516 + +bb516: ; preds = %bb510 + br label %bb517 + +bb517: ; preds = %bb517, %bb516 + %i518 = phi i64 [ 0, %bb516 ], [ %i521, %bb517 ] + %i519 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i518 + %i520 = getelementptr inbounds <2 x double>, <2 x double>* %i519, i32 0, i32 0 + %i521 = add nuw nsw i64 %i518, 1 + %i522 = icmp ne i64 %i521, %i2 + br i1 %i522, label %bb517, label %bb523 + +bb523: ; preds = %bb517 + br label %bb524 + +bb524: ; preds = %bb524, %bb523 + %i525 = phi i64 [ 0, %bb523 ], [ %i528, %bb524 ] + %i526 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i525 + %i527 = getelementptr inbounds <2 x double>, <2 x double>* %i526, i32 0, i32 0 + %i528 = add nuw nsw i64 %i525, 1 + %i529 = icmp ne i64 %i528, %i2 + br i1 %i529, label %bb524, label %bb530 + +bb530: ; preds = %bb524 + br label %bb531 + +bb531: ; preds = %bb531, %bb530 + %i532 = phi i64 [ 0, %bb530 ], [ %i535, %bb531 ] + %i533 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i532 + %i534 = getelementptr inbounds <2 x double>, <2 x double>* %i533, i32 0, i32 0 + %i535 = add nuw nsw i64 %i532, 1 + %i536 = icmp ne i64 %i535, %i2 + br i1 %i536, label %bb531, label %bb537 + +bb537: ; preds = %bb531 + br label %bb538 + +bb538: ; preds = %bb538, %bb537 + %i539 = phi i64 [ 0, %bb537 ], [ %i542, %bb538 ] + %i540 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i539 + %i541 = getelementptr inbounds <2 x double>, <2 x double>* %i540, i32 0, i32 0 + %i542 = add nuw nsw i64 %i539, 1 + %i543 = icmp ne i64 %i542, %i2 + br i1 %i543, label %bb538, label %bb544 + +bb544: ; preds = %bb538 + br label %bb545 + +bb545: ; preds = %bb545, %bb544 + %i546 = phi i64 [ 0, %bb544 ], [ %i549, %bb545 ] + %i547 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i546 + %i548 = getelementptr inbounds <2 x double>, <2 x double>* %i547, i32 0, i32 0 + %i549 = add nuw nsw i64 %i546, 1 + %i550 = icmp ne i64 %i549, %i2 + br i1 %i550, label %bb545, label %bb551 + +bb551: ; preds = %bb545 + br label %bb552 + +bb552: ; preds = %bb552, %bb551 + %i553 = phi i64 [ 0, %bb551 ], [ %i556, %bb552 ] + %i554 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i553 + %i555 = getelementptr inbounds <2 x double>, <2 x double>* %i554, i32 0, i32 0 + %i556 = add nuw nsw i64 %i553, 1 + %i557 = icmp ne i64 %i556, %i2 + br i1 %i557, label %bb552, label %bb558 + +bb558: ; preds = %bb552 + br label %bb559 + +bb559: ; preds = %bb559, %bb558 + %i560 = phi i64 [ 0, %bb558 ], [ %i563, %bb559 ] + %i561 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i560 + %i562 = getelementptr inbounds <2 x double>, <2 x double>* %i561, i32 0, i32 0 + %i563 = add nuw nsw i64 %i560, 1 + %i564 = icmp ne i64 %i563, %i2 + br i1 %i564, label %bb559, label %bb565 + +bb565: ; preds = %bb559 + br label %bb566 + +bb566: ; preds = %bb566, %bb565 + %i567 = phi i64 [ 0, %bb565 ], [ %i570, %bb566 ] + %i568 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i567 + %i569 = getelementptr inbounds <2 x double>, <2 x double>* %i568, i32 0, i32 0 + %i570 = add nuw nsw i64 %i567, 1 + %i571 = icmp ne i64 %i570, %i2 + br i1 %i571, label %bb566, label %bb572 + +bb572: ; preds = %bb566 + br label %bb573 + +bb573: ; preds = %bb573, %bb572 + %i574 = phi i64 [ 0, %bb572 ], [ %i577, %bb573 ] + %i575 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i574 + %i576 = getelementptr inbounds <2 x double>, <2 x double>* %i575, i32 0, i32 0 + %i577 = add nuw nsw i64 %i574, 1 + %i578 = icmp ne i64 %i577, %i2 + br i1 %i578, label %bb573, label %bb579 + +bb579: ; preds = %bb573 + br label %bb580 + +bb580: ; preds = %bb580, %bb579 + %i581 = phi i64 [ 0, %bb579 ], [ %i584, %bb580 ] + %i582 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i581 + %i583 = getelementptr inbounds <2 x double>, <2 x double>* %i582, i32 0, i32 0 + %i584 = add nuw nsw i64 %i581, 1 + %i585 = icmp ne i64 %i584, %i2 + br i1 %i585, label %bb580, label %bb586 + +bb586: ; preds = %bb580 + br label %bb587 + +bb587: ; preds = %bb587, %bb586 + %i588 = phi i64 [ 0, %bb586 ], [ %i591, %bb587 ] + %i589 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i588 + %i590 = getelementptr inbounds <2 x double>, <2 x double>* %i589, i32 0, i32 0 + %i591 = add nuw nsw i64 %i588, 1 + %i592 = icmp ne i64 %i591, %i2 + br i1 %i592, label %bb587, label %bb593 + +bb593: ; preds = %bb587 + br label %bb594 + +bb594: ; preds = %bb594, %bb593 + %i595 = phi i64 [ 0, %bb593 ], [ %i598, %bb594 ] + %i596 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i595 + %i597 = getelementptr inbounds <2 x double>, <2 x double>* %i596, i32 0, i32 0 + %i598 = add nuw nsw i64 %i595, 1 + %i599 = icmp ne i64 %i598, %i2 + br i1 %i599, label %bb594, label %bb600 + +bb600: ; preds = %bb594 + br label %bb601 + +bb601: ; preds = %bb601, %bb600 + %i602 = phi i64 [ 0, %bb600 ], [ %i605, %bb601 ] + %i603 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i602 + %i604 = getelementptr inbounds <2 x double>, <2 x double>* %i603, i32 0, i32 0 + %i605 = add nuw nsw i64 %i602, 1 + %i606 = icmp ne i64 %i605, %i2 + br i1 %i606, label %bb601, label %bb607 + +bb607: ; preds = %bb601 + br label %bb608 + +bb608: ; preds = %bb608, %bb607 + %i609 = phi i64 [ 0, %bb607 ], [ %i612, %bb608 ] + %i610 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i609 + %i611 = getelementptr inbounds <2 x double>, <2 x double>* %i610, i32 0, i32 0 + %i612 = add nuw nsw i64 %i609, 1 + %i613 = icmp ne i64 %i612, %i2 + br i1 %i613, label %bb608, label %bb614 + +bb614: ; preds = %bb608 + br label %bb615 + +bb615: ; preds = %bb615, %bb614 + %i616 = phi i64 [ 0, %bb614 ], [ %i619, %bb615 ] + %i617 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i616 + %i618 = getelementptr inbounds <2 x double>, <2 x double>* %i617, i32 0, i32 0 + %i619 = add nuw nsw i64 %i616, 1 + %i620 = icmp ne i64 %i619, %i2 + br i1 %i620, label %bb615, label %bb621 + +bb621: ; preds = %bb615 + br label %bb622 + +bb622: ; preds = %bb622, %bb621 + %i623 = phi i64 [ 0, %bb621 ], [ %i626, %bb622 ] + %i624 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i623 + %i625 = getelementptr inbounds <2 x double>, <2 x double>* %i624, i32 0, i32 0 + %i626 = add nuw nsw i64 %i623, 1 + %i627 = icmp ne i64 %i626, %i2 + br i1 %i627, label %bb622, label %bb628 + +bb628: ; preds = %bb622 + br label %bb629 + +bb629: ; preds = %bb629, %bb628 + %i630 = phi i64 [ 0, %bb628 ], [ %i633, %bb629 ] + %i631 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i630 + %i632 = getelementptr inbounds <2 x double>, <2 x double>* %i631, i32 0, i32 0 + %i633 = add nuw nsw i64 %i630, 1 + %i634 = icmp ne i64 %i633, %i2 + br i1 %i634, label %bb629, label %bb635 + +bb635: ; preds = %bb629 + br label %bb636 + +bb636: ; preds = %bb636, %bb635 + %i637 = phi i64 [ 0, %bb635 ], [ %i640, %bb636 ] + %i638 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i637 + %i639 = getelementptr inbounds <2 x double>, <2 x double>* %i638, i32 0, i32 0 + %i640 = add nuw nsw i64 %i637, 1 + %i641 = icmp ne i64 %i640, %i2 + br i1 %i641, label %bb636, label %bb642 + +bb642: ; preds = %bb636 + br label %bb643 + +bb643: ; preds = %bb643, %bb642 + %i644 = phi i64 [ 0, %bb642 ], [ %i647, %bb643 ] + %i645 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i644 + %i646 = getelementptr inbounds <2 x double>, <2 x double>* %i645, i32 0, i32 0 + %i647 = add nuw nsw i64 %i644, 1 + %i648 = icmp ne i64 %i647, %i2 + br i1 %i648, label %bb643, label %bb649 + +bb649: ; preds = %bb643 + br label %bb650 + +bb650: ; preds = %bb650, %bb649 + %i651 = phi i64 [ 0, %bb649 ], [ %i654, %bb650 ] + %i652 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i651 + %i653 = getelementptr inbounds <2 x double>, <2 x double>* %i652, i32 0, i32 0 + %i654 = add nuw nsw i64 %i651, 1 + %i655 = icmp ne i64 %i654, %i2 + br i1 %i655, label %bb650, label %bb656 + +bb656: ; preds = %bb650 + br label %bb657 + +bb657: ; preds = %bb657, %bb656 + %i658 = phi i64 [ 0, %bb656 ], [ %i661, %bb657 ] + %i659 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i658 + %i660 = getelementptr inbounds <2 x double>, <2 x double>* %i659, i32 0, i32 0 + %i661 = add nuw nsw i64 %i658, 1 + %i662 = icmp ne i64 %i661, %i2 + br i1 %i662, label %bb657, label %bb663 + +bb663: ; preds = %bb657 + br label %bb664 + +bb664: ; preds = %bb664, %bb663 + %i665 = phi i64 [ 0, %bb663 ], [ %i668, %bb664 ] + %i666 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i665 + %i667 = getelementptr inbounds <2 x double>, <2 x double>* %i666, i32 0, i32 0 + %i668 = add nuw nsw i64 %i665, 1 + %i669 = icmp ne i64 %i668, %i2 + br i1 %i669, label %bb664, label %bb670 + +bb670: ; preds = %bb664 + br label %bb671 + +bb671: ; preds = %bb671, %bb670 + %i672 = phi i64 [ 0, %bb670 ], [ %i673, %bb671 ] + %i673 = add nuw nsw i64 %i672, 1 + %i674 = icmp ne i64 %i673, %i2 + br i1 %i674, label %bb671, label %bb675 + +bb675: ; preds = %bb671 + br label %bb676 + +bb676: ; preds = %bb676, %bb675 + %i677 = phi i64 [ 0, %bb675 ], [ %i680, %bb676 ] + %i678 = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* %i, i32 0, i64 %i677 + %i679 = getelementptr inbounds <2 x double>, <2 x double>* %i678, i32 0, i32 0 + %i680 = add nuw nsw i64 %i677, 1 + %i681 = icmp ne i64 %i680, %i2 + br i1 %i681, label %bb676, label %bb682 + +bb682: ; preds = %bb676 + %i683 = getelementptr inbounds [3 x [512 x %0]], [3 x [512 x %0]]* undef, i64 0, i64 %i2, i64 undef + %i684 = getelementptr inbounds %0, %0* %i683, i64 0, i32 0, i64 0, i32 0 + ret void +}