[LLVMdev] loop vectorizer erroneously finds 256 bit vectors

Renato Golin renato.golin at linaro.org
Sun Nov 10 06:39:07 PST 2013


Hi Frank,

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.

cheers,
--renato


On 10 November 2013 06:05, Frank Winter <fwinter at jlab.org> wrote:

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


More information about the llvm-dev mailing list