<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">Hi Renato,<br>
<br>
you are right! There is 'avx' support:<br>
<br>
fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat
pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx
pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good
xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor
ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2
x2apic popcnt aes xsave avx lahf_lm ida arat epb xsaveopt pln pts
dts tpr_shadow vnmi flexpriority ept vpid<br>
<br>
This is still strange: Why is this the only IR where 256 bit
vectors are found and for all other functions it finds 128 bit
vectors. This should be independent of the IR, right? So far I
have tested a bunch of about 20 functions generated and vectorized
with this method. When processing all but this one the loop
vectorizer finds 128 bit vectors as the widest. Only for this IR
the loop vectorizer 'sees' the 256 bit version. Any idea?<br>
<br>
Frank<br>
<br>
<br>
On 10/11/13 09:39, Renato Golin wrote:<br>
</div>
<blockquote
cite="mid:CAMSE1kfXuSS3AbhTDY3KycBiddOfBHFbMoaZ8zv_6S_Hu7g6+Q@mail.gmail.com"
type="cite">
<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
<<a moz-do-not-send="true" href="mailto:fwinter@jlab.org">fwinter@jlab.org</a>>
wrote:<br>
<blockquote class="gmail_quote">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).<font
color="#888888"><br>
<br>
Frank</font>
<div class="HOEnZb">
<div class="h5"><br>
<br>
<br>
On 09/11/13 23:50, Frank Winter wrote:<br>
<blockquote class="gmail_quote">
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-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-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>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a moz-do-not-send="true"
href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>
<a moz-do-not-send="true"
href="http://llvm.cs.uiuc.edu">http://llvm.cs.uiuc.edu</a><br>
<a moz-do-not-send="true"
href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
</blockquote>
<br>
<br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a moz-do-not-send="true"
href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>
<a moz-do-not-send="true"
href="http://llvm.cs.uiuc.edu">http://llvm.cs.uiuc.edu</a><br>
<a moz-do-not-send="true"
href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</blockquote>
<br>
<br>
</body>
</html>