<div dir="ltr">Hi Frank,<div><br></div><div>I'm not an Intel expert, but it seems that your Xeon E5 supports AVX, which does have 256-bit vectors. The other two only supports SSE instructions, which are only 128-bit long.</div>
<div><br></div><div>cheers,</div><div>--renato</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On 10 November 2013 06:05, Frank Winter <span dir="ltr"><<a href="mailto:fwinter@jlab.org" target="_blank">fwinter@jlab.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I looked more into this. For the previously sent IR the vector width of 256 bit is found mistakenly (and reproducibly) on this hardware:<br>

<br>
model name    : Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz<br>
<br>
For the same IR the loop vectorizer finds the correct vector width (128 bit) on:<br>
<br>
model name    : Intel(R) Xeon(R) CPU           E5630  @ 2.53GHz<br>
model name    : Intel(R) Core(TM) i7 CPU       M 640  @ 2.80GHz<br>
<br>
Thus, the behavior depends on which hardware I run on.<br>
<br>
I am using the JIT execution engine (original interface).<span class="HOEnZb"><font color="#888888"><br>
<br>
Frank</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
<br>
On 09/11/13 23:50, Frank Winter wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
The loop vectorizer is doing an amazing job so far. Most of the time.<br>
I just came across one function which led to unexpected behavior:<br>
<br>
On this function the loop vectorizer finds a 256 bit vector as the<br>
wides vector type for the x86-64 architecture. (!)<br>
<br>
This is strange, as it was always finding the correct size of 128 bit<br>
as the widest type. I isolated the IR of the function to check if this<br>
is reproducible outside of my application. And to my surprise it is!<br>
<br>
If I run<br>
<br>
opt -O1 -loop-vectorize -debug-only=loop-vectorize -vectorizer-min-trip-count=4 strange.ll -S<br>
<br>
on the IR found below I get:<br>
<br>
LV: Checking a loop in "main"<br>
LV: Found a loop: L3<br>
LV: Found an induction variable.<br>
LV: We need to do 0 pointer comparisons.<br>
LV: We don't need a runtime memory check.<br>
LV: We can vectorize this loop!<br>
LV: Found trip count: 4<br>
LV: The Widest type: 32 bits.<br>
LV: The Widest register is: 256 bits.<br>
<br>
Wow, a Sandybridge processor with 256 bit SIMD?<br>
<br>
The vectorizer carries on and figures that 8 would be the best to go for.<br>
<br>
LV: Vector loop of width 8 costs: 38.<br>
LV: Selecting VF = : 8.<br>
<br>
I didn't look into the machine code but I guess there is something going wrong earlier.<br>
<br>
I am wondering why it's reproducible and depending on the IR?!<br>
<br>
PS When running with -O3 it still find 256 bit, but later decides that it's not worth<br>
vectorizing.<br>
<br>
Frank<br>
<br>
<br>
<br>
<br>
<br>
<br>
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-<u></u>i16:16:16-i32:32:32-i64:64:64-<u></u>f32:32:32-f64:64:64-v64:64:64-<u></u>v128:128:128-a0:0:64-s0:64:64-<u></u>f80:128:128-n8:16:32:64-S128"<br>
<br>
target triple = "x86_64-unknown-linux-elf"<br>
<br>
define void @main(i64 %arg0, i64 %arg1, i64 %arg2, i1 %arg3, i64 %arg4, float* noalias %arg5, float* noalias %arg6, float* noalias %arg7, double* noalias %arg8) {<br>
entrypoint:<br>
  br i1 %arg3, label %L0, label %L1<br>
<br>
L0:                                               ; preds = %entrypoint<br>
  %0 = add nsw i64 %arg0, %arg4<br>
  %1 = add nsw i64 %arg1, %arg4<br>
  br label %L2<br>
<br>
L1:                                               ; preds = %entrypoint<br>
  br label %L2<br>
<br>
L2:                                               ; preds = %L0, %L1<br>
  %2 = phi i64 [ %arg0, %L1 ], [ %0, %L0 ]<br>
  %3 = phi i64 [ %arg1, %L1 ], [ %1, %L0 ]<br>
  %4 = sdiv i64 %2, 4<br>
  %5 = sdiv i64 %3, 4<br>
  br label %L5<br>
<br>
L3:                                               ; preds = %L7, %L5<br>
  %6 = phi i64 [ %528, %L7 ], [ 0, %L5 ]<br>
  %7 = mul i64 %527, 4<br>
  %8 = add nsw i64 %7, %6<br>
  %9 = mul i64 %527, 1<br>
  %10 = add nsw i64 %9, 0<br>
  %11 = mul i64 %10, 9<br>
  %12 = add nsw i64 %11, 0<br>
  %13 = mul i64 %12, 2<br>
  %14 = add nsw i64 %13, 0<br>
  %15 = mul i64 %14, 4<br>
  %16 = add nsw i64 %15, %6<br>
  %17 = mul i64 %527, 4<br>
  %18 = add nsw i64 %17, %6<br>
  %19 = mul i64 %527, 1<br>
  %20 = add nsw i64 %19, 0<br>
  %21 = mul i64 %20, 9<br>
  %22 = add nsw i64 %21, 0<br>
  %23 = mul i64 %22, 2<br>
  %24 = add nsw i64 %23, 1<br>
  %25 = mul i64 %24, 4<br>
  %26 = add nsw i64 %25, %6<br>
  %27 = mul i64 %527, 4<br>
  %28 = add nsw i64 %27, %6<br>
  %29 = mul i64 %527, 1<br>
  %30 = add nsw i64 %29, 0<br>
  %31 = mul i64 %30, 9<br>
  %32 = add nsw i64 %31, 1<br>
  %33 = mul i64 %32, 2<br>
  %34 = add nsw i64 %33, 0<br>
  %35 = mul i64 %34, 4<br>
  %36 = add nsw i64 %35, %6<br>
  %37 = mul i64 %527, 4<br>
  %38 = add nsw i64 %37, %6<br>
  %39 = mul i64 %527, 1<br>
  %40 = add nsw i64 %39, 0<br>
  %41 = mul i64 %40, 9<br>
  %42 = add nsw i64 %41, 1<br>
  %43 = mul i64 %42, 2<br>
  %44 = add nsw i64 %43, 1<br>
  %45 = mul i64 %44, 4<br>
  %46 = add nsw i64 %45, %6<br>
  %47 = mul i64 %527, 4<br>
  %48 = add nsw i64 %47, %6<br>
  %49 = mul i64 %527, 1<br>
  %50 = add nsw i64 %49, 0<br>
  %51 = mul i64 %50, 9<br>
  %52 = add nsw i64 %51, 2<br>
  %53 = mul i64 %52, 2<br>
  %54 = add nsw i64 %53, 0<br>
  %55 = mul i64 %54, 4<br>
  %56 = add nsw i64 %55, %6<br>
  %57 = mul i64 %527, 4<br>
  %58 = add nsw i64 %57, %6<br>
  %59 = mul i64 %527, 1<br>
  %60 = add nsw i64 %59, 0<br>
  %61 = mul i64 %60, 9<br>
  %62 = add nsw i64 %61, 2<br>
  %63 = mul i64 %62, 2<br>
  %64 = add nsw i64 %63, 1<br>
  %65 = mul i64 %64, 4<br>
  %66 = add nsw i64 %65, %6<br>
  %67 = mul i64 %527, 4<br>
  %68 = add nsw i64 %67, %6<br>
  %69 = mul i64 %527, 1<br>
  %70 = add nsw i64 %69, 0<br>
  %71 = mul i64 %70, 9<br>
  %72 = add nsw i64 %71, 3<br>
  %73 = mul i64 %72, 2<br>
  %74 = add nsw i64 %73, 0<br>
  %75 = mul i64 %74, 4<br>
  %76 = add nsw i64 %75, %6<br>
  %77 = mul i64 %527, 4<br>
  %78 = add nsw i64 %77, %6<br>
  %79 = mul i64 %527, 1<br>
  %80 = add nsw i64 %79, 0<br>
  %81 = mul i64 %80, 9<br>
  %82 = add nsw i64 %81, 3<br>
  %83 = mul i64 %82, 2<br>
  %84 = add nsw i64 %83, 1<br>
  %85 = mul i64 %84, 4<br>
  %86 = add nsw i64 %85, %6<br>
  %87 = mul i64 %527, 4<br>
  %88 = add nsw i64 %87, %6<br>
  %89 = mul i64 %527, 1<br>
  %90 = add nsw i64 %89, 0<br>
  %91 = mul i64 %90, 9<br>
  %92 = add nsw i64 %91, 4<br>
  %93 = mul i64 %92, 2<br>
  %94 = add nsw i64 %93, 0<br>
  %95 = mul i64 %94, 4<br>
  %96 = add nsw i64 %95, %6<br>
  %97 = mul i64 %527, 4<br>
  %98 = add nsw i64 %97, %6<br>
  %99 = mul i64 %527, 1<br>
  %100 = add nsw i64 %99, 0<br>
  %101 = mul i64 %100, 9<br>
  %102 = add nsw i64 %101, 4<br>
  %103 = mul i64 %102, 2<br>
  %104 = add nsw i64 %103, 1<br>
  %105 = mul i64 %104, 4<br>
  %106 = add nsw i64 %105, %6<br>
  %107 = mul i64 %527, 4<br>
  %108 = add nsw i64 %107, %6<br>
  %109 = mul i64 %527, 1<br>
  %110 = add nsw i64 %109, 0<br>
  %111 = mul i64 %110, 9<br>
  %112 = add nsw i64 %111, 5<br>
  %113 = mul i64 %112, 2<br>
  %114 = add nsw i64 %113, 0<br>
  %115 = mul i64 %114, 4<br>
  %116 = add nsw i64 %115, %6<br>
  %117 = mul i64 %527, 4<br>
  %118 = add nsw i64 %117, %6<br>
  %119 = mul i64 %527, 1<br>
  %120 = add nsw i64 %119, 0<br>
  %121 = mul i64 %120, 9<br>
  %122 = add nsw i64 %121, 5<br>
  %123 = mul i64 %122, 2<br>
  %124 = add nsw i64 %123, 1<br>
  %125 = mul i64 %124, 4<br>
  %126 = add nsw i64 %125, %6<br>
  %127 = mul i64 %527, 4<br>
  %128 = add nsw i64 %127, %6<br>
  %129 = mul i64 %527, 1<br>
  %130 = add nsw i64 %129, 0<br>
  %131 = mul i64 %130, 9<br>
  %132 = add nsw i64 %131, 6<br>
  %133 = mul i64 %132, 2<br>
  %134 = add nsw i64 %133, 0<br>
  %135 = mul i64 %134, 4<br>
  %136 = add nsw i64 %135, %6<br>
  %137 = mul i64 %527, 4<br>
  %138 = add nsw i64 %137, %6<br>
  %139 = mul i64 %527, 1<br>
  %140 = add nsw i64 %139, 0<br>
  %141 = mul i64 %140, 9<br>
  %142 = add nsw i64 %141, 6<br>
  %143 = mul i64 %142, 2<br>
  %144 = add nsw i64 %143, 1<br>
  %145 = mul i64 %144, 4<br>
  %146 = add nsw i64 %145, %6<br>
  %147 = mul i64 %527, 4<br>
  %148 = add nsw i64 %147, %6<br>
  %149 = mul i64 %527, 1<br>
  %150 = add nsw i64 %149, 0<br>
  %151 = mul i64 %150, 9<br>
  %152 = add nsw i64 %151, 7<br>
  %153 = mul i64 %152, 2<br>
  %154 = add nsw i64 %153, 0<br>
  %155 = mul i64 %154, 4<br>
  %156 = add nsw i64 %155, %6<br>
  %157 = mul i64 %527, 4<br>
  %158 = add nsw i64 %157, %6<br>
  %159 = mul i64 %527, 1<br>
  %160 = add nsw i64 %159, 0<br>
  %161 = mul i64 %160, 9<br>
  %162 = add nsw i64 %161, 7<br>
  %163 = mul i64 %162, 2<br>
  %164 = add nsw i64 %163, 1<br>
  %165 = mul i64 %164, 4<br>
  %166 = add nsw i64 %165, %6<br>
  %167 = mul i64 %527, 4<br>
  %168 = add nsw i64 %167, %6<br>
  %169 = mul i64 %527, 1<br>
  %170 = add nsw i64 %169, 0<br>
  %171 = mul i64 %170, 9<br>
  %172 = add nsw i64 %171, 8<br>
  %173 = mul i64 %172, 2<br>
  %174 = add nsw i64 %173, 0<br>
  %175 = mul i64 %174, 4<br>
  %176 = add nsw i64 %175, %6<br>
  %177 = mul i64 %527, 4<br>
  %178 = add nsw i64 %177, %6<br>
  %179 = mul i64 %527, 1<br>
  %180 = add nsw i64 %179, 0<br>
  %181 = mul i64 %180, 9<br>
  %182 = add nsw i64 %181, 8<br>
  %183 = mul i64 %182, 2<br>
  %184 = add nsw i64 %183, 1<br>
  %185 = mul i64 %184, 4<br>
  %186 = add nsw i64 %185, %6<br>
  %187 = getelementptr float* %arg6, i64 %16<br>
  %188 = load float* %187<br>
  %189 = getelementptr float* %arg6, i64 %26<br>
  %190 = load float* %189<br>
  %191 = getelementptr float* %arg6, i64 %36<br>
  %192 = load float* %191<br>
  %193 = getelementptr float* %arg6, i64 %46<br>
  %194 = load float* %193<br>
  %195 = getelementptr float* %arg6, i64 %56<br>
  %196 = load float* %195<br>
  %197 = getelementptr float* %arg6, i64 %66<br>
  %198 = load float* %197<br>
  %199 = getelementptr float* %arg6, i64 %76<br>
  %200 = load float* %199<br>
  %201 = getelementptr float* %arg6, i64 %86<br>
  %202 = load float* %201<br>
  %203 = getelementptr float* %arg6, i64 %96<br>
  %204 = load float* %203<br>
  %205 = getelementptr float* %arg6, i64 %106<br>
  %206 = load float* %205<br>
  %207 = getelementptr float* %arg6, i64 %116<br>
  %208 = load float* %207<br>
  %209 = getelementptr float* %arg6, i64 %126<br>
  %210 = load float* %209<br>
  %211 = getelementptr float* %arg6, i64 %136<br>
  %212 = load float* %211<br>
  %213 = getelementptr float* %arg6, i64 %146<br>
  %214 = load float* %213<br>
  %215 = getelementptr float* %arg6, i64 %156<br>
  %216 = load float* %215<br>
  %217 = getelementptr float* %arg6, i64 %166<br>
  %218 = load float* %217<br>
  %219 = getelementptr float* %arg6, i64 %176<br>
  %220 = load float* %219<br>
  %221 = getelementptr float* %arg6, i64 %186<br>
  %222 = load float* %221<br>
  %223 = mul i64 %527, 4<br>
  %224 = add nsw i64 %223, %6<br>
  %225 = mul i64 %527, 1<br>
  %226 = add nsw i64 %225, 0<br>
  %227 = mul i64 %226, 9<br>
  %228 = add nsw i64 %227, 0<br>
  %229 = mul i64 %228, 2<br>
  %230 = add nsw i64 %229, 0<br>
  %231 = mul i64 %230, 4<br>
  %232 = add nsw i64 %231, %6<br>
  %233 = mul i64 %527, 4<br>
  %234 = add nsw i64 %233, %6<br>
  %235 = mul i64 %527, 1<br>
  %236 = add nsw i64 %235, 0<br>
  %237 = mul i64 %236, 9<br>
  %238 = add nsw i64 %237, 0<br>
  %239 = mul i64 %238, 2<br>
  %240 = add nsw i64 %239, 1<br>
  %241 = mul i64 %240, 4<br>
  %242 = add nsw i64 %241, %6<br>
  %243 = mul i64 %527, 4<br>
  %244 = add nsw i64 %243, %6<br>
  %245 = mul i64 %527, 1<br>
  %246 = add nsw i64 %245, 0<br>
  %247 = mul i64 %246, 9<br>
  %248 = add nsw i64 %247, 1<br>
  %249 = mul i64 %248, 2<br>
  %250 = add nsw i64 %249, 0<br>
  %251 = mul i64 %250, 4<br>
  %252 = add nsw i64 %251, %6<br>
  %253 = mul i64 %527, 4<br>
  %254 = add nsw i64 %253, %6<br>
  %255 = mul i64 %527, 1<br>
  %256 = add nsw i64 %255, 0<br>
  %257 = mul i64 %256, 9<br>
  %258 = add nsw i64 %257, 1<br>
  %259 = mul i64 %258, 2<br>
  %260 = add nsw i64 %259, 1<br>
  %261 = mul i64 %260, 4<br>
  %262 = add nsw i64 %261, %6<br>
  %263 = mul i64 %527, 4<br>
  %264 = add nsw i64 %263, %6<br>
  %265 = mul i64 %527, 1<br>
  %266 = add nsw i64 %265, 0<br>
  %267 = mul i64 %266, 9<br>
  %268 = add nsw i64 %267, 2<br>
  %269 = mul i64 %268, 2<br>
  %270 = add nsw i64 %269, 0<br>
  %271 = mul i64 %270, 4<br>
  %272 = add nsw i64 %271, %6<br>
  %273 = mul i64 %527, 4<br>
  %274 = add nsw i64 %273, %6<br>
  %275 = mul i64 %527, 1<br>
  %276 = add nsw i64 %275, 0<br>
  %277 = mul i64 %276, 9<br>
  %278 = add nsw i64 %277, 2<br>
  %279 = mul i64 %278, 2<br>
  %280 = add nsw i64 %279, 1<br>
  %281 = mul i64 %280, 4<br>
  %282 = add nsw i64 %281, %6<br>
  %283 = mul i64 %527, 4<br>
  %284 = add nsw i64 %283, %6<br>
  %285 = mul i64 %527, 1<br>
  %286 = add nsw i64 %285, 0<br>
  %287 = mul i64 %286, 9<br>
  %288 = add nsw i64 %287, 3<br>
  %289 = mul i64 %288, 2<br>
  %290 = add nsw i64 %289, 0<br>
  %291 = mul i64 %290, 4<br>
  %292 = add nsw i64 %291, %6<br>
  %293 = mul i64 %527, 4<br>
  %294 = add nsw i64 %293, %6<br>
  %295 = mul i64 %527, 1<br>
  %296 = add nsw i64 %295, 0<br>
  %297 = mul i64 %296, 9<br>
  %298 = add nsw i64 %297, 3<br>
  %299 = mul i64 %298, 2<br>
  %300 = add nsw i64 %299, 1<br>
  %301 = mul i64 %300, 4<br>
  %302 = add nsw i64 %301, %6<br>
  %303 = mul i64 %527, 4<br>
  %304 = add nsw i64 %303, %6<br>
  %305 = mul i64 %527, 1<br>
  %306 = add nsw i64 %305, 0<br>
  %307 = mul i64 %306, 9<br>
  %308 = add nsw i64 %307, 4<br>
  %309 = mul i64 %308, 2<br>
  %310 = add nsw i64 %309, 0<br>
  %311 = mul i64 %310, 4<br>
  %312 = add nsw i64 %311, %6<br>
  %313 = mul i64 %527, 4<br>
  %314 = add nsw i64 %313, %6<br>
  %315 = mul i64 %527, 1<br>
  %316 = add nsw i64 %315, 0<br>
  %317 = mul i64 %316, 9<br>
  %318 = add nsw i64 %317, 4<br>
  %319 = mul i64 %318, 2<br>
  %320 = add nsw i64 %319, 1<br>
  %321 = mul i64 %320, 4<br>
  %322 = add nsw i64 %321, %6<br>
  %323 = mul i64 %527, 4<br>
  %324 = add nsw i64 %323, %6<br>
  %325 = mul i64 %527, 1<br>
  %326 = add nsw i64 %325, 0<br>
  %327 = mul i64 %326, 9<br>
  %328 = add nsw i64 %327, 5<br>
  %329 = mul i64 %328, 2<br>
  %330 = add nsw i64 %329, 0<br>
  %331 = mul i64 %330, 4<br>
  %332 = add nsw i64 %331, %6<br>
  %333 = mul i64 %527, 4<br>
  %334 = add nsw i64 %333, %6<br>
  %335 = mul i64 %527, 1<br>
  %336 = add nsw i64 %335, 0<br>
  %337 = mul i64 %336, 9<br>
  %338 = add nsw i64 %337, 5<br>
  %339 = mul i64 %338, 2<br>
  %340 = add nsw i64 %339, 1<br>
  %341 = mul i64 %340, 4<br>
  %342 = add nsw i64 %341, %6<br>
  %343 = mul i64 %527, 4<br>
  %344 = add nsw i64 %343, %6<br>
  %345 = mul i64 %527, 1<br>
  %346 = add nsw i64 %345, 0<br>
  %347 = mul i64 %346, 9<br>
  %348 = add nsw i64 %347, 6<br>
  %349 = mul i64 %348, 2<br>
  %350 = add nsw i64 %349, 0<br>
  %351 = mul i64 %350, 4<br>
  %352 = add nsw i64 %351, %6<br>
  %353 = mul i64 %527, 4<br>
  %354 = add nsw i64 %353, %6<br>
  %355 = mul i64 %527, 1<br>
  %356 = add nsw i64 %355, 0<br>
  %357 = mul i64 %356, 9<br>
  %358 = add nsw i64 %357, 6<br>
  %359 = mul i64 %358, 2<br>
  %360 = add nsw i64 %359, 1<br>
  %361 = mul i64 %360, 4<br>
  %362 = add nsw i64 %361, %6<br>
  %363 = mul i64 %527, 4<br>
  %364 = add nsw i64 %363, %6<br>
  %365 = mul i64 %527, 1<br>
  %366 = add nsw i64 %365, 0<br>
  %367 = mul i64 %366, 9<br>
  %368 = add nsw i64 %367, 7<br>
  %369 = mul i64 %368, 2<br>
  %370 = add nsw i64 %369, 0<br>
  %371 = mul i64 %370, 4<br>
  %372 = add nsw i64 %371, %6<br>
  %373 = mul i64 %527, 4<br>
  %374 = add nsw i64 %373, %6<br>
  %375 = mul i64 %527, 1<br>
  %376 = add nsw i64 %375, 0<br>
  %377 = mul i64 %376, 9<br>
  %378 = add nsw i64 %377, 7<br>
  %379 = mul i64 %378, 2<br>
  %380 = add nsw i64 %379, 1<br>
  %381 = mul i64 %380, 4<br>
  %382 = add nsw i64 %381, %6<br>
  %383 = mul i64 %527, 4<br>
  %384 = add nsw i64 %383, %6<br>
  %385 = mul i64 %527, 1<br>
  %386 = add nsw i64 %385, 0<br>
  %387 = mul i64 %386, 9<br>
  %388 = add nsw i64 %387, 8<br>
  %389 = mul i64 %388, 2<br>
  %390 = add nsw i64 %389, 0<br>
  %391 = mul i64 %390, 4<br>
  %392 = add nsw i64 %391, %6<br>
  %393 = mul i64 %527, 4<br>
  %394 = add nsw i64 %393, %6<br>
  %395 = mul i64 %527, 1<br>
  %396 = add nsw i64 %395, 0<br>
  %397 = mul i64 %396, 9<br>
  %398 = add nsw i64 %397, 8<br>
  %399 = mul i64 %398, 2<br>
  %400 = add nsw i64 %399, 1<br>
  %401 = mul i64 %400, 4<br>
  %402 = add nsw i64 %401, %6<br>
  %403 = getelementptr float* %arg7, i64 %232<br>
  %404 = load float* %403<br>
  %405 = getelementptr float* %arg7, i64 %242<br>
  %406 = load float* %405<br>
  %407 = getelementptr float* %arg7, i64 %252<br>
  %408 = load float* %407<br>
  %409 = getelementptr float* %arg7, i64 %262<br>
  %410 = load float* %409<br>
  %411 = getelementptr float* %arg7, i64 %272<br>
  %412 = load float* %411<br>
  %413 = getelementptr float* %arg7, i64 %282<br>
  %414 = load float* %413<br>
  %415 = getelementptr float* %arg7, i64 %292<br>
  %416 = load float* %415<br>
  %417 = getelementptr float* %arg7, i64 %302<br>
  %418 = load float* %417<br>
  %419 = getelementptr float* %arg7, i64 %312<br>
  %420 = load float* %419<br>
  %421 = getelementptr float* %arg7, i64 %322<br>
  %422 = load float* %421<br>
  %423 = getelementptr float* %arg7, i64 %332<br>
  %424 = load float* %423<br>
  %425 = getelementptr float* %arg7, i64 %342<br>
  %426 = load float* %425<br>
  %427 = getelementptr float* %arg7, i64 %352<br>
  %428 = load float* %427<br>
  %429 = getelementptr float* %arg7, i64 %362<br>
  %430 = load float* %429<br>
  %431 = getelementptr float* %arg7, i64 %372<br>
  %432 = load float* %431<br>
  %433 = getelementptr float* %arg7, i64 %382<br>
  %434 = load float* %433<br>
  %435 = getelementptr float* %arg7, i64 %392<br>
  %436 = load float* %435<br>
  %437 = getelementptr float* %arg7, i64 %402<br>
  %438 = load float* %437<br>
  %439 = fmul float %406, %188<br>
  %440 = fmul float %404, %190<br>
  %441 = fadd float %440, %439<br>
  %442 = fmul float %406, %190<br>
  %443 = fmul float %404, %188<br>
  %444 = fsub float %443, %442<br>
  %445 = fmul float %410, %200<br>
  %446 = fmul float %408, %202<br>
  %447 = fadd float %446, %445<br>
  %448 = fmul float %410, %202<br>
  %449 = fmul float %408, %200<br>
  %450 = fsub float %449, %448<br>
  %451 = fadd float %444, %450<br>
  %452 = fadd float %441, %447<br>
  %453 = fmul float %414, %212<br>
  %454 = fmul float %412, %214<br>
  %455 = fadd float %454, %453<br>
  %456 = fmul float %414, %214<br>
  %457 = fmul float %412, %212<br>
  %458 = fsub float %457, %456<br>
  %459 = fadd float %451, %458<br>
  %460 = fadd float %452, %455<br>
  %461 = fmul float %418, %192<br>
  %462 = fmul float %416, %194<br>
  %463 = fadd float %462, %461<br>
  %464 = fmul float %418, %194<br>
  %465 = fmul float %416, %192<br>
  %466 = fsub float %465, %464<br>
  %467 = fadd float %459, %466<br>
  %468 = fadd float %460, %463<br>
  %469 = fmul float %422, %204<br>
  %470 = fmul float %420, %206<br>
  %471 = fadd float %470, %469<br>
  %472 = fmul float %422, %206<br>
  %473 = fmul float %420, %204<br>
  %474 = fsub float %473, %472<br>
  %475 = fadd float %467, %474<br>
  %476 = fadd float %468, %471<br>
  %477 = fmul float %426, %216<br>
  %478 = fmul float %424, %218<br>
  %479 = fadd float %478, %477<br>
  %480 = fmul float %426, %218<br>
  %481 = fmul float %424, %216<br>
  %482 = fsub float %481, %480<br>
  %483 = fadd float %475, %482<br>
  %484 = fadd float %476, %479<br>
  %485 = fmul float %430, %196<br>
  %486 = fmul float %428, %198<br>
  %487 = fadd float %486, %485<br>
  %488 = fmul float %430, %198<br>
  %489 = fmul float %428, %196<br>
  %490 = fsub float %489, %488<br>
  %491 = fadd float %483, %490<br>
  %492 = fadd float %484, %487<br>
  %493 = fmul float %434, %208<br>
  %494 = fmul float %432, %210<br>
  %495 = fadd float %494, %493<br>
  %496 = fmul float %434, %210<br>
  %497 = fmul float %432, %208<br>
  %498 = fsub float %497, %496<br>
  %499 = fadd float %491, %498<br>
  %500 = fadd float %492, %495<br>
  %501 = fmul float %438, %220<br>
  %502 = fmul float %436, %222<br>
  %503 = fadd float %502, %501<br>
  %504 = fmul float %438, %222<br>
  %505 = fmul float %436, %220<br>
  %506 = fsub float %505, %504<br>
  %507 = fadd float %499, %506<br>
  %508 = fadd float %500, %503<br>
  %509 = getelementptr double* %arg8, i32 0<br>
  %510 = load double* %509<br>
  %511 = fpext float %507 to double<br>
  %512 = fmul double %510, %511<br>
  %513 = mul i64 %527, 4<br>
  %514 = add nsw i64 %513, %6<br>
  %515 = mul i64 %527, 1<br>
  %516 = add nsw i64 %515, 0<br>
  %517 = mul i64 %516, 1<br>
  %518 = add nsw i64 %517, 0<br>
  %519 = mul i64 %518, 1<br>
  %520 = add nsw i64 %519, 0<br>
  %521 = mul i64 %520, 4<br>
  %522 = add nsw i64 %521, %6<br>
  %523 = getelementptr float* %arg5, i64 %522<br>
  %524 = fptrunc double %512 to float<br>
  store float %524, float* %523<br>
  br label %L7<br>
<br>
L4:                                               ; preds = %L7<br>
  %525 = add nsw i64 %527, 1<br>
  %526 = icmp sge i64 %525, %5<br>
  br i1 %526, label %L6, label %L5<br>
<br>
L5:                                               ; preds = %L4, %L2<br>
  %527 = phi i64 [ %525, %L4 ], [ %4, %L2 ]<br>
  br label %L3<br>
<br>
L6:                                               ; preds = %L4<br>
  ret void<br>
<br>
L7:                                               ; preds = %L3<br>
  %528 = add nsw i64 %6, 1<br>
  %529 = icmp sge i64 %528, 4<br>
  br i1 %529, label %L4, label %L3<br>
}<br>
<br>
<br>
<br>
______________________________<u></u>_________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/<u></u>mailman/listinfo/llvmdev</a><br>
</blockquote>
<br>
<br>
______________________________<u></u>_________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/<u></u>mailman/listinfo/llvmdev</a><br>
</div></div></blockquote></div><br></div>