[LLVMdev] bb-vectorizer transforms only part of the block

Frank Winter fwinter at jlab.org
Mon Jun 22 12:50:32 PDT 2015


The loads, stores and float arithmetic in attached function should be 
completely vectorizable. The bb-vectorizer does a good job at first, but 
from instruction %96 on it messes up by adding unnecessary 
vectorshuffles. (The function was designed so that no shuffle would be 
needed in order to vectorize it).

I tested this with llvm 3.6 with the following command:

~/toolchain/install/llvm-3.6/bin/opt -basicaa -bb-vectorize -instcombine 
-S < func_vec_8x8_complex_mul.ll

See below for the output which I truncated after a few vectorshuffles.

Is there a general limitation to bb-vectorize in terms of a maximum 
number of instructions that can be vectorized? Are there any 'magic' 
numbers in the pass that can be tweaked?

Thanks,
Frank


; ModuleID = '<stdin>'
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

define void @main(i64 %lo, i64 %hi, float* noalias %arg0, float* noalias 
%arg1, float* noalias %arg2) {
entrypoint:
   %0 = getelementptr float* %arg1, i64 64
   %1 = getelementptr float* %arg2, i64 64
   %2 = getelementptr float* %arg0, i64 64
   %3 = bitcast float* %arg1 to <4 x float>*
   %4 = bitcast float* %0 to <4 x float>*
   %5 = bitcast float* %arg2 to <4 x float>*
   %6 = bitcast float* %1 to <4 x float>*
   %7 = load <4 x float>* %3, align 16
   %8 = load <4 x float>* %4, align 16
   %9 = load <4 x float>* %5, align 16
   %10 = load <4 x float>* %6, align 16
   %11 = fmul <4 x float> %10, %7
   %12 = fmul <4 x float> %9, %8
   %13 = fadd <4 x float> %12, %11
   %14 = bitcast float* %2 to <4 x float>*
   %15 = fmul <4 x float> %10, %8
   %16 = fmul <4 x float> %9, %7
   %17 = fsub <4 x float> %16, %15
   %18 = bitcast float* %arg0 to <4 x float>*
   store <4 x float> %17, <4 x float>* %18, align 16
   store <4 x float> %13, <4 x float>* %14, align 16
   %19 = getelementptr float* %arg1, i64 4
   %20 = getelementptr float* %arg1, i64 68
   %21 = getelementptr float* %arg2, i64 4
   %22 = getelementptr float* %arg2, i64 68
   %23 = getelementptr float* %arg0, i64 4
   %24 = getelementptr float* %arg0, i64 68
   %25 = bitcast float* %19 to <4 x float>*
   %26 = bitcast float* %20 to <4 x float>*
   %27 = bitcast float* %21 to <4 x float>*
   %28 = bitcast float* %22 to <4 x float>*
   %29 = load <4 x float>* %25, align 16
   %30 = load <4 x float>* %26, align 16
   %31 = load <4 x float>* %27, align 16
   %32 = load <4 x float>* %28, align 16
   %33 = fmul <4 x float> %32, %29
   %34 = fmul <4 x float> %31, %30
   %35 = fadd <4 x float> %34, %33
   %36 = bitcast float* %24 to <4 x float>*
   %37 = fmul <4 x float> %32, %30
   %38 = fmul <4 x float> %31, %29
   %39 = fsub <4 x float> %38, %37
   %40 = bitcast float* %23 to <4 x float>*
   store <4 x float> %39, <4 x float>* %40, align 16
   store <4 x float> %35, <4 x float>* %36, align 16
   %41 = getelementptr float* %arg1, i64 8
   %42 = getelementptr float* %arg1, i64 72
   %43 = getelementptr float* %arg2, i64 8
   %44 = getelementptr float* %arg2, i64 72
   %45 = getelementptr float* %arg0, i64 8
   %46 = getelementptr float* %arg0, i64 72
   %47 = bitcast float* %41 to <4 x float>*
   %48 = bitcast float* %42 to <4 x float>*
   %49 = bitcast float* %43 to <4 x float>*
   %50 = bitcast float* %44 to <4 x float>*
   %51 = load <4 x float>* %47, align 16
   %52 = load <4 x float>* %48, align 16
   %53 = load <4 x float>* %49, align 16
   %54 = load <4 x float>* %50, align 16
   %55 = fmul <4 x float> %54, %51
   %56 = fmul <4 x float> %53, %52
   %57 = fadd <4 x float> %56, %55
   %58 = bitcast float* %46 to <4 x float>*
   %59 = fmul <4 x float> %54, %52
   %60 = fmul <4 x float> %53, %51
   %61 = fsub <4 x float> %60, %59
   %62 = bitcast float* %45 to <4 x float>*
   store <4 x float> %61, <4 x float>* %62, align 16
   store <4 x float> %57, <4 x float>* %58, align 16
   %63 = getelementptr float* %arg1, i64 12
   %64 = getelementptr float* %arg1, i64 76
   %65 = getelementptr float* %arg2, i64 12
   %66 = getelementptr float* %arg2, i64 76
   %67 = getelementptr float* %arg0, i64 12
   %68 = getelementptr float* %arg0, i64 76
   %69 = bitcast float* %63 to <4 x float>*
   %70 = bitcast float* %64 to <4 x float>*
   %71 = bitcast float* %65 to <4 x float>*
   %72 = bitcast float* %66 to <4 x float>*
   %73 = load <4 x float>* %69, align 16
   %74 = load <4 x float>* %70, align 16
   %75 = load <4 x float>* %71, align 16
   %76 = load <4 x float>* %72, align 16
   %77 = fmul <4 x float> %76, %73
   %78 = fmul <4 x float> %75, %74
   %79 = fadd <4 x float> %78, %77
   %80 = bitcast float* %68 to <4 x float>*
   %81 = fmul <4 x float> %76, %74
   %82 = fmul <4 x float> %75, %73
   %83 = fsub <4 x float> %82, %81
   %84 = bitcast float* %67 to <4 x float>*
   store <4 x float> %83, <4 x float>* %84, align 16
   store <4 x float> %79, <4 x float>* %80, align 16
   %85 = getelementptr float* %arg1, i64 16
   %86 = getelementptr float* %arg1, i64 80
   %87 = getelementptr float* %arg2, i64 16
   %88 = getelementptr float* %arg2, i64 80
   %89 = getelementptr float* %arg0, i64 16
   %90 = getelementptr float* %arg0, i64 80
   %91 = bitcast float* %85 to <4 x float>*
   %92 = bitcast float* %86 to <4 x float>*
   %93 = bitcast float* %87 to <4 x float>*
   %94 = bitcast float* %88 to <4 x float>*
   %95 = load <4 x float>* %91, align 16
   %96 = shufflevector <4 x float> %95, <4 x float> undef, <2 x i32> 
<i32 0, i32 1>
   %97 = load <4 x float>* %92, align 16
   %98 = shufflevector <4 x float> %97, <4 x float> undef, <2 x i32> 
<i32 0, i32 1>
   %99 = shufflevector <2 x float> %98, <2 x float> %96, <4 x i32> <i32 
0, i32 1, i32 2, i32 3>
   %100 = load <4 x float>* %93, align 16
   %101 = shufflevector <4 x float> %100, <4 x float> undef, <2 x i32> 
<i32 0, i32 1>
....


-------------- next part --------------
; ModuleID = 'module'
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"


define void @main(i64 %lo, i64 %hi, float* noalias %arg0, float* noalias %arg1, float* noalias %arg2) {
entrypoint:
  %0 = getelementptr float* %arg1, i32 0
  %1 = load float* %0
  %2 = getelementptr float* %arg1, i32 64
  %3 = load float* %2
  %4 = getelementptr float* %arg2, i32 0
  %5 = load float* %4
  %6 = getelementptr float* %arg2, i32 64
  %7 = load float* %6
  %8 = fmul float %7, %1
  %9 = fmul float %5, %3
  %10 = fadd float %9, %8
  %11 = fmul float %7, %3
  %12 = fmul float %5, %1
  %13 = fsub float %12, %11
  %14 = getelementptr float* %arg0, i32 0
  store float %13, float* %14
  %15 = getelementptr float* %arg0, i32 64
  store float %10, float* %15
  %16 = getelementptr float* %arg1, i32 1
  %17 = load float* %16
  %18 = getelementptr float* %arg1, i32 65
  %19 = load float* %18
  %20 = getelementptr float* %arg2, i32 1
  %21 = load float* %20
  %22 = getelementptr float* %arg2, i32 65
  %23 = load float* %22
  %24 = fmul float %23, %17
  %25 = fmul float %21, %19
  %26 = fadd float %25, %24
  %27 = fmul float %23, %19
  %28 = fmul float %21, %17
  %29 = fsub float %28, %27
  %30 = getelementptr float* %arg0, i32 1
  store float %29, float* %30
  %31 = getelementptr float* %arg0, i32 65
  store float %26, float* %31
  %32 = getelementptr float* %arg1, i32 2
  %33 = load float* %32
  %34 = getelementptr float* %arg1, i32 66
  %35 = load float* %34
  %36 = getelementptr float* %arg2, i32 2
  %37 = load float* %36
  %38 = getelementptr float* %arg2, i32 66
  %39 = load float* %38
  %40 = fmul float %39, %33
  %41 = fmul float %37, %35
  %42 = fadd float %41, %40
  %43 = fmul float %39, %35
  %44 = fmul float %37, %33
  %45 = fsub float %44, %43
  %46 = getelementptr float* %arg0, i32 2
  store float %45, float* %46
  %47 = getelementptr float* %arg0, i32 66
  store float %42, float* %47
  %48 = getelementptr float* %arg1, i32 3
  %49 = load float* %48
  %50 = getelementptr float* %arg1, i32 67
  %51 = load float* %50
  %52 = getelementptr float* %arg2, i32 3
  %53 = load float* %52
  %54 = getelementptr float* %arg2, i32 67
  %55 = load float* %54
  %56 = fmul float %55, %49
  %57 = fmul float %53, %51
  %58 = fadd float %57, %56
  %59 = fmul float %55, %51
  %60 = fmul float %53, %49
  %61 = fsub float %60, %59
  %62 = getelementptr float* %arg0, i32 3
  store float %61, float* %62
  %63 = getelementptr float* %arg0, i32 67
  store float %58, float* %63
  %64 = getelementptr float* %arg1, i32 4
  %65 = load float* %64
  %66 = getelementptr float* %arg1, i32 68
  %67 = load float* %66
  %68 = getelementptr float* %arg2, i32 4
  %69 = load float* %68
  %70 = getelementptr float* %arg2, i32 68
  %71 = load float* %70
  %72 = fmul float %71, %65
  %73 = fmul float %69, %67
  %74 = fadd float %73, %72
  %75 = fmul float %71, %67
  %76 = fmul float %69, %65
  %77 = fsub float %76, %75
  %78 = getelementptr float* %arg0, i32 4
  store float %77, float* %78
  %79 = getelementptr float* %arg0, i32 68
  store float %74, float* %79
  %80 = getelementptr float* %arg1, i32 5
  %81 = load float* %80
  %82 = getelementptr float* %arg1, i32 69
  %83 = load float* %82
  %84 = getelementptr float* %arg2, i32 5
  %85 = load float* %84
  %86 = getelementptr float* %arg2, i32 69
  %87 = load float* %86
  %88 = fmul float %87, %81
  %89 = fmul float %85, %83
  %90 = fadd float %89, %88
  %91 = fmul float %87, %83
  %92 = fmul float %85, %81
  %93 = fsub float %92, %91
  %94 = getelementptr float* %arg0, i32 5
  store float %93, float* %94
  %95 = getelementptr float* %arg0, i32 69
  store float %90, float* %95
  %96 = getelementptr float* %arg1, i32 6
  %97 = load float* %96
  %98 = getelementptr float* %arg1, i32 70
  %99 = load float* %98
  %100 = getelementptr float* %arg2, i32 6
  %101 = load float* %100
  %102 = getelementptr float* %arg2, i32 70
  %103 = load float* %102
  %104 = fmul float %103, %97
  %105 = fmul float %101, %99
  %106 = fadd float %105, %104
  %107 = fmul float %103, %99
  %108 = fmul float %101, %97
  %109 = fsub float %108, %107
  %110 = getelementptr float* %arg0, i32 6
  store float %109, float* %110
  %111 = getelementptr float* %arg0, i32 70
  store float %106, float* %111
  %112 = getelementptr float* %arg1, i32 7
  %113 = load float* %112
  %114 = getelementptr float* %arg1, i32 71
  %115 = load float* %114
  %116 = getelementptr float* %arg2, i32 7
  %117 = load float* %116
  %118 = getelementptr float* %arg2, i32 71
  %119 = load float* %118
  %120 = fmul float %119, %113
  %121 = fmul float %117, %115
  %122 = fadd float %121, %120
  %123 = fmul float %119, %115
  %124 = fmul float %117, %113
  %125 = fsub float %124, %123
  %126 = getelementptr float* %arg0, i32 7
  store float %125, float* %126
  %127 = getelementptr float* %arg0, i32 71
  store float %122, float* %127
  %128 = getelementptr float* %arg1, i32 8
  %129 = load float* %128
  %130 = getelementptr float* %arg1, i32 72
  %131 = load float* %130
  %132 = getelementptr float* %arg2, i32 8
  %133 = load float* %132
  %134 = getelementptr float* %arg2, i32 72
  %135 = load float* %134
  %136 = fmul float %135, %129
  %137 = fmul float %133, %131
  %138 = fadd float %137, %136
  %139 = fmul float %135, %131
  %140 = fmul float %133, %129
  %141 = fsub float %140, %139
  %142 = getelementptr float* %arg0, i32 8
  store float %141, float* %142
  %143 = getelementptr float* %arg0, i32 72
  store float %138, float* %143
  %144 = getelementptr float* %arg1, i32 9
  %145 = load float* %144
  %146 = getelementptr float* %arg1, i32 73
  %147 = load float* %146
  %148 = getelementptr float* %arg2, i32 9
  %149 = load float* %148
  %150 = getelementptr float* %arg2, i32 73
  %151 = load float* %150
  %152 = fmul float %151, %145
  %153 = fmul float %149, %147
  %154 = fadd float %153, %152
  %155 = fmul float %151, %147
  %156 = fmul float %149, %145
  %157 = fsub float %156, %155
  %158 = getelementptr float* %arg0, i32 9
  store float %157, float* %158
  %159 = getelementptr float* %arg0, i32 73
  store float %154, float* %159
  %160 = getelementptr float* %arg1, i32 10
  %161 = load float* %160
  %162 = getelementptr float* %arg1, i32 74
  %163 = load float* %162
  %164 = getelementptr float* %arg2, i32 10
  %165 = load float* %164
  %166 = getelementptr float* %arg2, i32 74
  %167 = load float* %166
  %168 = fmul float %167, %161
  %169 = fmul float %165, %163
  %170 = fadd float %169, %168
  %171 = fmul float %167, %163
  %172 = fmul float %165, %161
  %173 = fsub float %172, %171
  %174 = getelementptr float* %arg0, i32 10
  store float %173, float* %174
  %175 = getelementptr float* %arg0, i32 74
  store float %170, float* %175
  %176 = getelementptr float* %arg1, i32 11
  %177 = load float* %176
  %178 = getelementptr float* %arg1, i32 75
  %179 = load float* %178
  %180 = getelementptr float* %arg2, i32 11
  %181 = load float* %180
  %182 = getelementptr float* %arg2, i32 75
  %183 = load float* %182
  %184 = fmul float %183, %177
  %185 = fmul float %181, %179
  %186 = fadd float %185, %184
  %187 = fmul float %183, %179
  %188 = fmul float %181, %177
  %189 = fsub float %188, %187
  %190 = getelementptr float* %arg0, i32 11
  store float %189, float* %190
  %191 = getelementptr float* %arg0, i32 75
  store float %186, float* %191
  %192 = getelementptr float* %arg1, i32 12
  %193 = load float* %192
  %194 = getelementptr float* %arg1, i32 76
  %195 = load float* %194
  %196 = getelementptr float* %arg2, i32 12
  %197 = load float* %196
  %198 = getelementptr float* %arg2, i32 76
  %199 = load float* %198
  %200 = fmul float %199, %193
  %201 = fmul float %197, %195
  %202 = fadd float %201, %200
  %203 = fmul float %199, %195
  %204 = fmul float %197, %193
  %205 = fsub float %204, %203
  %206 = getelementptr float* %arg0, i32 12
  store float %205, float* %206
  %207 = getelementptr float* %arg0, i32 76
  store float %202, float* %207
  %208 = getelementptr float* %arg1, i32 13
  %209 = load float* %208
  %210 = getelementptr float* %arg1, i32 77
  %211 = load float* %210
  %212 = getelementptr float* %arg2, i32 13
  %213 = load float* %212
  %214 = getelementptr float* %arg2, i32 77
  %215 = load float* %214
  %216 = fmul float %215, %209
  %217 = fmul float %213, %211
  %218 = fadd float %217, %216
  %219 = fmul float %215, %211
  %220 = fmul float %213, %209
  %221 = fsub float %220, %219
  %222 = getelementptr float* %arg0, i32 13
  store float %221, float* %222
  %223 = getelementptr float* %arg0, i32 77
  store float %218, float* %223
  %224 = getelementptr float* %arg1, i32 14
  %225 = load float* %224
  %226 = getelementptr float* %arg1, i32 78
  %227 = load float* %226
  %228 = getelementptr float* %arg2, i32 14
  %229 = load float* %228
  %230 = getelementptr float* %arg2, i32 78
  %231 = load float* %230
  %232 = fmul float %231, %225
  %233 = fmul float %229, %227
  %234 = fadd float %233, %232
  %235 = fmul float %231, %227
  %236 = fmul float %229, %225
  %237 = fsub float %236, %235
  %238 = getelementptr float* %arg0, i32 14
  store float %237, float* %238
  %239 = getelementptr float* %arg0, i32 78
  store float %234, float* %239
  %240 = getelementptr float* %arg1, i32 15
  %241 = load float* %240
  %242 = getelementptr float* %arg1, i32 79
  %243 = load float* %242
  %244 = getelementptr float* %arg2, i32 15
  %245 = load float* %244
  %246 = getelementptr float* %arg2, i32 79
  %247 = load float* %246
  %248 = fmul float %247, %241
  %249 = fmul float %245, %243
  %250 = fadd float %249, %248
  %251 = fmul float %247, %243
  %252 = fmul float %245, %241
  %253 = fsub float %252, %251
  %254 = getelementptr float* %arg0, i32 15
  store float %253, float* %254
  %255 = getelementptr float* %arg0, i32 79
  store float %250, float* %255
  %256 = getelementptr float* %arg1, i32 16
  %257 = load float* %256
  %258 = getelementptr float* %arg1, i32 80
  %259 = load float* %258
  %260 = getelementptr float* %arg2, i32 16
  %261 = load float* %260
  %262 = getelementptr float* %arg2, i32 80
  %263 = load float* %262
  %264 = fmul float %263, %257
  %265 = fmul float %261, %259
  %266 = fadd float %265, %264
  %267 = fmul float %263, %259
  %268 = fmul float %261, %257
  %269 = fsub float %268, %267
  %270 = getelementptr float* %arg0, i32 16
  store float %269, float* %270
  %271 = getelementptr float* %arg0, i32 80
  store float %266, float* %271
  %272 = getelementptr float* %arg1, i32 17
  %273 = load float* %272
  %274 = getelementptr float* %arg1, i32 81
  %275 = load float* %274
  %276 = getelementptr float* %arg2, i32 17
  %277 = load float* %276
  %278 = getelementptr float* %arg2, i32 81
  %279 = load float* %278
  %280 = fmul float %279, %273
  %281 = fmul float %277, %275
  %282 = fadd float %281, %280
  %283 = fmul float %279, %275
  %284 = fmul float %277, %273
  %285 = fsub float %284, %283
  %286 = getelementptr float* %arg0, i32 17
  store float %285, float* %286
  %287 = getelementptr float* %arg0, i32 81
  store float %282, float* %287
  %288 = getelementptr float* %arg1, i32 18
  %289 = load float* %288
  %290 = getelementptr float* %arg1, i32 82
  %291 = load float* %290
  %292 = getelementptr float* %arg2, i32 18
  %293 = load float* %292
  %294 = getelementptr float* %arg2, i32 82
  %295 = load float* %294
  %296 = fmul float %295, %289
  %297 = fmul float %293, %291
  %298 = fadd float %297, %296
  %299 = fmul float %295, %291
  %300 = fmul float %293, %289
  %301 = fsub float %300, %299
  %302 = getelementptr float* %arg0, i32 18
  store float %301, float* %302
  %303 = getelementptr float* %arg0, i32 82
  store float %298, float* %303
  %304 = getelementptr float* %arg1, i32 19
  %305 = load float* %304
  %306 = getelementptr float* %arg1, i32 83
  %307 = load float* %306
  %308 = getelementptr float* %arg2, i32 19
  %309 = load float* %308
  %310 = getelementptr float* %arg2, i32 83
  %311 = load float* %310
  %312 = fmul float %311, %305
  %313 = fmul float %309, %307
  %314 = fadd float %313, %312
  %315 = fmul float %311, %307
  %316 = fmul float %309, %305
  %317 = fsub float %316, %315
  %318 = getelementptr float* %arg0, i32 19
  store float %317, float* %318
  %319 = getelementptr float* %arg0, i32 83
  store float %314, float* %319
  %320 = getelementptr float* %arg1, i32 20
  %321 = load float* %320
  %322 = getelementptr float* %arg1, i32 84
  %323 = load float* %322
  %324 = getelementptr float* %arg2, i32 20
  %325 = load float* %324
  %326 = getelementptr float* %arg2, i32 84
  %327 = load float* %326
  %328 = fmul float %327, %321
  %329 = fmul float %325, %323
  %330 = fadd float %329, %328
  %331 = fmul float %327, %323
  %332 = fmul float %325, %321
  %333 = fsub float %332, %331
  %334 = getelementptr float* %arg0, i32 20
  store float %333, float* %334
  %335 = getelementptr float* %arg0, i32 84
  store float %330, float* %335
  %336 = getelementptr float* %arg1, i32 21
  %337 = load float* %336
  %338 = getelementptr float* %arg1, i32 85
  %339 = load float* %338
  %340 = getelementptr float* %arg2, i32 21
  %341 = load float* %340
  %342 = getelementptr float* %arg2, i32 85
  %343 = load float* %342
  %344 = fmul float %343, %337
  %345 = fmul float %341, %339
  %346 = fadd float %345, %344
  %347 = fmul float %343, %339
  %348 = fmul float %341, %337
  %349 = fsub float %348, %347
  %350 = getelementptr float* %arg0, i32 21
  store float %349, float* %350
  %351 = getelementptr float* %arg0, i32 85
  store float %346, float* %351
  %352 = getelementptr float* %arg1, i32 22
  %353 = load float* %352
  %354 = getelementptr float* %arg1, i32 86
  %355 = load float* %354
  %356 = getelementptr float* %arg2, i32 22
  %357 = load float* %356
  %358 = getelementptr float* %arg2, i32 86
  %359 = load float* %358
  %360 = fmul float %359, %353
  %361 = fmul float %357, %355
  %362 = fadd float %361, %360
  %363 = fmul float %359, %355
  %364 = fmul float %357, %353
  %365 = fsub float %364, %363
  %366 = getelementptr float* %arg0, i32 22
  store float %365, float* %366
  %367 = getelementptr float* %arg0, i32 86
  store float %362, float* %367
  %368 = getelementptr float* %arg1, i32 23
  %369 = load float* %368
  %370 = getelementptr float* %arg1, i32 87
  %371 = load float* %370
  %372 = getelementptr float* %arg2, i32 23
  %373 = load float* %372
  %374 = getelementptr float* %arg2, i32 87
  %375 = load float* %374
  %376 = fmul float %375, %369
  %377 = fmul float %373, %371
  %378 = fadd float %377, %376
  %379 = fmul float %375, %371
  %380 = fmul float %373, %369
  %381 = fsub float %380, %379
  %382 = getelementptr float* %arg0, i32 23
  store float %381, float* %382
  %383 = getelementptr float* %arg0, i32 87
  store float %378, float* %383
  %384 = getelementptr float* %arg1, i32 24
  %385 = load float* %384
  %386 = getelementptr float* %arg1, i32 88
  %387 = load float* %386
  %388 = getelementptr float* %arg2, i32 24
  %389 = load float* %388
  %390 = getelementptr float* %arg2, i32 88
  %391 = load float* %390
  %392 = fmul float %391, %385
  %393 = fmul float %389, %387
  %394 = fadd float %393, %392
  %395 = fmul float %391, %387
  %396 = fmul float %389, %385
  %397 = fsub float %396, %395
  %398 = getelementptr float* %arg0, i32 24
  store float %397, float* %398
  %399 = getelementptr float* %arg0, i32 88
  store float %394, float* %399
  %400 = getelementptr float* %arg1, i32 25
  %401 = load float* %400
  %402 = getelementptr float* %arg1, i32 89
  %403 = load float* %402
  %404 = getelementptr float* %arg2, i32 25
  %405 = load float* %404
  %406 = getelementptr float* %arg2, i32 89
  %407 = load float* %406
  %408 = fmul float %407, %401
  %409 = fmul float %405, %403
  %410 = fadd float %409, %408
  %411 = fmul float %407, %403
  %412 = fmul float %405, %401
  %413 = fsub float %412, %411
  %414 = getelementptr float* %arg0, i32 25
  store float %413, float* %414
  %415 = getelementptr float* %arg0, i32 89
  store float %410, float* %415
  %416 = getelementptr float* %arg1, i32 26
  %417 = load float* %416
  %418 = getelementptr float* %arg1, i32 90
  %419 = load float* %418
  %420 = getelementptr float* %arg2, i32 26
  %421 = load float* %420
  %422 = getelementptr float* %arg2, i32 90
  %423 = load float* %422
  %424 = fmul float %423, %417
  %425 = fmul float %421, %419
  %426 = fadd float %425, %424
  %427 = fmul float %423, %419
  %428 = fmul float %421, %417
  %429 = fsub float %428, %427
  %430 = getelementptr float* %arg0, i32 26
  store float %429, float* %430
  %431 = getelementptr float* %arg0, i32 90
  store float %426, float* %431
  %432 = getelementptr float* %arg1, i32 27
  %433 = load float* %432
  %434 = getelementptr float* %arg1, i32 91
  %435 = load float* %434
  %436 = getelementptr float* %arg2, i32 27
  %437 = load float* %436
  %438 = getelementptr float* %arg2, i32 91
  %439 = load float* %438
  %440 = fmul float %439, %433
  %441 = fmul float %437, %435
  %442 = fadd float %441, %440
  %443 = fmul float %439, %435
  %444 = fmul float %437, %433
  %445 = fsub float %444, %443
  %446 = getelementptr float* %arg0, i32 27
  store float %445, float* %446
  %447 = getelementptr float* %arg0, i32 91
  store float %442, float* %447
  %448 = getelementptr float* %arg1, i32 28
  %449 = load float* %448
  %450 = getelementptr float* %arg1, i32 92
  %451 = load float* %450
  %452 = getelementptr float* %arg2, i32 28
  %453 = load float* %452
  %454 = getelementptr float* %arg2, i32 92
  %455 = load float* %454
  %456 = fmul float %455, %449
  %457 = fmul float %453, %451
  %458 = fadd float %457, %456
  %459 = fmul float %455, %451
  %460 = fmul float %453, %449
  %461 = fsub float %460, %459
  %462 = getelementptr float* %arg0, i32 28
  store float %461, float* %462
  %463 = getelementptr float* %arg0, i32 92
  store float %458, float* %463
  %464 = getelementptr float* %arg1, i32 29
  %465 = load float* %464
  %466 = getelementptr float* %arg1, i32 93
  %467 = load float* %466
  %468 = getelementptr float* %arg2, i32 29
  %469 = load float* %468
  %470 = getelementptr float* %arg2, i32 93
  %471 = load float* %470
  %472 = fmul float %471, %465
  %473 = fmul float %469, %467
  %474 = fadd float %473, %472
  %475 = fmul float %471, %467
  %476 = fmul float %469, %465
  %477 = fsub float %476, %475
  %478 = getelementptr float* %arg0, i32 29
  store float %477, float* %478
  %479 = getelementptr float* %arg0, i32 93
  store float %474, float* %479
  %480 = getelementptr float* %arg1, i32 30
  %481 = load float* %480
  %482 = getelementptr float* %arg1, i32 94
  %483 = load float* %482
  %484 = getelementptr float* %arg2, i32 30
  %485 = load float* %484
  %486 = getelementptr float* %arg2, i32 94
  %487 = load float* %486
  %488 = fmul float %487, %481
  %489 = fmul float %485, %483
  %490 = fadd float %489, %488
  %491 = fmul float %487, %483
  %492 = fmul float %485, %481
  %493 = fsub float %492, %491
  %494 = getelementptr float* %arg0, i32 30
  store float %493, float* %494
  %495 = getelementptr float* %arg0, i32 94
  store float %490, float* %495
  %496 = getelementptr float* %arg1, i32 31
  %497 = load float* %496
  %498 = getelementptr float* %arg1, i32 95
  %499 = load float* %498
  %500 = getelementptr float* %arg2, i32 31
  %501 = load float* %500
  %502 = getelementptr float* %arg2, i32 95
  %503 = load float* %502
  %504 = fmul float %503, %497
  %505 = fmul float %501, %499
  %506 = fadd float %505, %504
  %507 = fmul float %503, %499
  %508 = fmul float %501, %497
  %509 = fsub float %508, %507
  %510 = getelementptr float* %arg0, i32 31
  store float %509, float* %510
  %511 = getelementptr float* %arg0, i32 95
  store float %506, float* %511
  %512 = getelementptr float* %arg1, i32 32
  %513 = load float* %512
  %514 = getelementptr float* %arg1, i32 96
  %515 = load float* %514
  %516 = getelementptr float* %arg2, i32 32
  %517 = load float* %516
  %518 = getelementptr float* %arg2, i32 96
  %519 = load float* %518
  %520 = fmul float %519, %513
  %521 = fmul float %517, %515
  %522 = fadd float %521, %520
  %523 = fmul float %519, %515
  %524 = fmul float %517, %513
  %525 = fsub float %524, %523
  %526 = getelementptr float* %arg0, i32 32
  store float %525, float* %526
  %527 = getelementptr float* %arg0, i32 96
  store float %522, float* %527
  %528 = getelementptr float* %arg1, i32 33
  %529 = load float* %528
  %530 = getelementptr float* %arg1, i32 97
  %531 = load float* %530
  %532 = getelementptr float* %arg2, i32 33
  %533 = load float* %532
  %534 = getelementptr float* %arg2, i32 97
  %535 = load float* %534
  %536 = fmul float %535, %529
  %537 = fmul float %533, %531
  %538 = fadd float %537, %536
  %539 = fmul float %535, %531
  %540 = fmul float %533, %529
  %541 = fsub float %540, %539
  %542 = getelementptr float* %arg0, i32 33
  store float %541, float* %542
  %543 = getelementptr float* %arg0, i32 97
  store float %538, float* %543
  %544 = getelementptr float* %arg1, i32 34
  %545 = load float* %544
  %546 = getelementptr float* %arg1, i32 98
  %547 = load float* %546
  %548 = getelementptr float* %arg2, i32 34
  %549 = load float* %548
  %550 = getelementptr float* %arg2, i32 98
  %551 = load float* %550
  %552 = fmul float %551, %545
  %553 = fmul float %549, %547
  %554 = fadd float %553, %552
  %555 = fmul float %551, %547
  %556 = fmul float %549, %545
  %557 = fsub float %556, %555
  %558 = getelementptr float* %arg0, i32 34
  store float %557, float* %558
  %559 = getelementptr float* %arg0, i32 98
  store float %554, float* %559
  %560 = getelementptr float* %arg1, i32 35
  %561 = load float* %560
  %562 = getelementptr float* %arg1, i32 99
  %563 = load float* %562
  %564 = getelementptr float* %arg2, i32 35
  %565 = load float* %564
  %566 = getelementptr float* %arg2, i32 99
  %567 = load float* %566
  %568 = fmul float %567, %561
  %569 = fmul float %565, %563
  %570 = fadd float %569, %568
  %571 = fmul float %567, %563
  %572 = fmul float %565, %561
  %573 = fsub float %572, %571
  %574 = getelementptr float* %arg0, i32 35
  store float %573, float* %574
  %575 = getelementptr float* %arg0, i32 99
  store float %570, float* %575
  %576 = getelementptr float* %arg1, i32 36
  %577 = load float* %576
  %578 = getelementptr float* %arg1, i32 100
  %579 = load float* %578
  %580 = getelementptr float* %arg2, i32 36
  %581 = load float* %580
  %582 = getelementptr float* %arg2, i32 100
  %583 = load float* %582
  %584 = fmul float %583, %577
  %585 = fmul float %581, %579
  %586 = fadd float %585, %584
  %587 = fmul float %583, %579
  %588 = fmul float %581, %577
  %589 = fsub float %588, %587
  %590 = getelementptr float* %arg0, i32 36
  store float %589, float* %590
  %591 = getelementptr float* %arg0, i32 100
  store float %586, float* %591
  %592 = getelementptr float* %arg1, i32 37
  %593 = load float* %592
  %594 = getelementptr float* %arg1, i32 101
  %595 = load float* %594
  %596 = getelementptr float* %arg2, i32 37
  %597 = load float* %596
  %598 = getelementptr float* %arg2, i32 101
  %599 = load float* %598
  %600 = fmul float %599, %593
  %601 = fmul float %597, %595
  %602 = fadd float %601, %600
  %603 = fmul float %599, %595
  %604 = fmul float %597, %593
  %605 = fsub float %604, %603
  %606 = getelementptr float* %arg0, i32 37
  store float %605, float* %606
  %607 = getelementptr float* %arg0, i32 101
  store float %602, float* %607
  %608 = getelementptr float* %arg1, i32 38
  %609 = load float* %608
  %610 = getelementptr float* %arg1, i32 102
  %611 = load float* %610
  %612 = getelementptr float* %arg2, i32 38
  %613 = load float* %612
  %614 = getelementptr float* %arg2, i32 102
  %615 = load float* %614
  %616 = fmul float %615, %609
  %617 = fmul float %613, %611
  %618 = fadd float %617, %616
  %619 = fmul float %615, %611
  %620 = fmul float %613, %609
  %621 = fsub float %620, %619
  %622 = getelementptr float* %arg0, i32 38
  store float %621, float* %622
  %623 = getelementptr float* %arg0, i32 102
  store float %618, float* %623
  %624 = getelementptr float* %arg1, i32 39
  %625 = load float* %624
  %626 = getelementptr float* %arg1, i32 103
  %627 = load float* %626
  %628 = getelementptr float* %arg2, i32 39
  %629 = load float* %628
  %630 = getelementptr float* %arg2, i32 103
  %631 = load float* %630
  %632 = fmul float %631, %625
  %633 = fmul float %629, %627
  %634 = fadd float %633, %632
  %635 = fmul float %631, %627
  %636 = fmul float %629, %625
  %637 = fsub float %636, %635
  %638 = getelementptr float* %arg0, i32 39
  store float %637, float* %638
  %639 = getelementptr float* %arg0, i32 103
  store float %634, float* %639
  %640 = getelementptr float* %arg1, i32 40
  %641 = load float* %640
  %642 = getelementptr float* %arg1, i32 104
  %643 = load float* %642
  %644 = getelementptr float* %arg2, i32 40
  %645 = load float* %644
  %646 = getelementptr float* %arg2, i32 104
  %647 = load float* %646
  %648 = fmul float %647, %641
  %649 = fmul float %645, %643
  %650 = fadd float %649, %648
  %651 = fmul float %647, %643
  %652 = fmul float %645, %641
  %653 = fsub float %652, %651
  %654 = getelementptr float* %arg0, i32 40
  store float %653, float* %654
  %655 = getelementptr float* %arg0, i32 104
  store float %650, float* %655
  %656 = getelementptr float* %arg1, i32 41
  %657 = load float* %656
  %658 = getelementptr float* %arg1, i32 105
  %659 = load float* %658
  %660 = getelementptr float* %arg2, i32 41
  %661 = load float* %660
  %662 = getelementptr float* %arg2, i32 105
  %663 = load float* %662
  %664 = fmul float %663, %657
  %665 = fmul float %661, %659
  %666 = fadd float %665, %664
  %667 = fmul float %663, %659
  %668 = fmul float %661, %657
  %669 = fsub float %668, %667
  %670 = getelementptr float* %arg0, i32 41
  store float %669, float* %670
  %671 = getelementptr float* %arg0, i32 105
  store float %666, float* %671
  %672 = getelementptr float* %arg1, i32 42
  %673 = load float* %672
  %674 = getelementptr float* %arg1, i32 106
  %675 = load float* %674
  %676 = getelementptr float* %arg2, i32 42
  %677 = load float* %676
  %678 = getelementptr float* %arg2, i32 106
  %679 = load float* %678
  %680 = fmul float %679, %673
  %681 = fmul float %677, %675
  %682 = fadd float %681, %680
  %683 = fmul float %679, %675
  %684 = fmul float %677, %673
  %685 = fsub float %684, %683
  %686 = getelementptr float* %arg0, i32 42
  store float %685, float* %686
  %687 = getelementptr float* %arg0, i32 106
  store float %682, float* %687
  %688 = getelementptr float* %arg1, i32 43
  %689 = load float* %688
  %690 = getelementptr float* %arg1, i32 107
  %691 = load float* %690
  %692 = getelementptr float* %arg2, i32 43
  %693 = load float* %692
  %694 = getelementptr float* %arg2, i32 107
  %695 = load float* %694
  %696 = fmul float %695, %689
  %697 = fmul float %693, %691
  %698 = fadd float %697, %696
  %699 = fmul float %695, %691
  %700 = fmul float %693, %689
  %701 = fsub float %700, %699
  %702 = getelementptr float* %arg0, i32 43
  store float %701, float* %702
  %703 = getelementptr float* %arg0, i32 107
  store float %698, float* %703
  %704 = getelementptr float* %arg1, i32 44
  %705 = load float* %704
  %706 = getelementptr float* %arg1, i32 108
  %707 = load float* %706
  %708 = getelementptr float* %arg2, i32 44
  %709 = load float* %708
  %710 = getelementptr float* %arg2, i32 108
  %711 = load float* %710
  %712 = fmul float %711, %705
  %713 = fmul float %709, %707
  %714 = fadd float %713, %712
  %715 = fmul float %711, %707
  %716 = fmul float %709, %705
  %717 = fsub float %716, %715
  %718 = getelementptr float* %arg0, i32 44
  store float %717, float* %718
  %719 = getelementptr float* %arg0, i32 108
  store float %714, float* %719
  %720 = getelementptr float* %arg1, i32 45
  %721 = load float* %720
  %722 = getelementptr float* %arg1, i32 109
  %723 = load float* %722
  %724 = getelementptr float* %arg2, i32 45
  %725 = load float* %724
  %726 = getelementptr float* %arg2, i32 109
  %727 = load float* %726
  %728 = fmul float %727, %721
  %729 = fmul float %725, %723
  %730 = fadd float %729, %728
  %731 = fmul float %727, %723
  %732 = fmul float %725, %721
  %733 = fsub float %732, %731
  %734 = getelementptr float* %arg0, i32 45
  store float %733, float* %734
  %735 = getelementptr float* %arg0, i32 109
  store float %730, float* %735
  %736 = getelementptr float* %arg1, i32 46
  %737 = load float* %736
  %738 = getelementptr float* %arg1, i32 110
  %739 = load float* %738
  %740 = getelementptr float* %arg2, i32 46
  %741 = load float* %740
  %742 = getelementptr float* %arg2, i32 110
  %743 = load float* %742
  %744 = fmul float %743, %737
  %745 = fmul float %741, %739
  %746 = fadd float %745, %744
  %747 = fmul float %743, %739
  %748 = fmul float %741, %737
  %749 = fsub float %748, %747
  %750 = getelementptr float* %arg0, i32 46
  store float %749, float* %750
  %751 = getelementptr float* %arg0, i32 110
  store float %746, float* %751
  %752 = getelementptr float* %arg1, i32 47
  %753 = load float* %752
  %754 = getelementptr float* %arg1, i32 111
  %755 = load float* %754
  %756 = getelementptr float* %arg2, i32 47
  %757 = load float* %756
  %758 = getelementptr float* %arg2, i32 111
  %759 = load float* %758
  %760 = fmul float %759, %753
  %761 = fmul float %757, %755
  %762 = fadd float %761, %760
  %763 = fmul float %759, %755
  %764 = fmul float %757, %753
  %765 = fsub float %764, %763
  %766 = getelementptr float* %arg0, i32 47
  store float %765, float* %766
  %767 = getelementptr float* %arg0, i32 111
  store float %762, float* %767
  %768 = getelementptr float* %arg1, i32 48
  %769 = load float* %768
  %770 = getelementptr float* %arg1, i32 112
  %771 = load float* %770
  %772 = getelementptr float* %arg2, i32 48
  %773 = load float* %772
  %774 = getelementptr float* %arg2, i32 112
  %775 = load float* %774
  %776 = fmul float %775, %769
  %777 = fmul float %773, %771
  %778 = fadd float %777, %776
  %779 = fmul float %775, %771
  %780 = fmul float %773, %769
  %781 = fsub float %780, %779
  %782 = getelementptr float* %arg0, i32 48
  store float %781, float* %782
  %783 = getelementptr float* %arg0, i32 112
  store float %778, float* %783
  %784 = getelementptr float* %arg1, i32 49
  %785 = load float* %784
  %786 = getelementptr float* %arg1, i32 113
  %787 = load float* %786
  %788 = getelementptr float* %arg2, i32 49
  %789 = load float* %788
  %790 = getelementptr float* %arg2, i32 113
  %791 = load float* %790
  %792 = fmul float %791, %785
  %793 = fmul float %789, %787
  %794 = fadd float %793, %792
  %795 = fmul float %791, %787
  %796 = fmul float %789, %785
  %797 = fsub float %796, %795
  %798 = getelementptr float* %arg0, i32 49
  store float %797, float* %798
  %799 = getelementptr float* %arg0, i32 113
  store float %794, float* %799
  %800 = getelementptr float* %arg1, i32 50
  %801 = load float* %800
  %802 = getelementptr float* %arg1, i32 114
  %803 = load float* %802
  %804 = getelementptr float* %arg2, i32 50
  %805 = load float* %804
  %806 = getelementptr float* %arg2, i32 114
  %807 = load float* %806
  %808 = fmul float %807, %801
  %809 = fmul float %805, %803
  %810 = fadd float %809, %808
  %811 = fmul float %807, %803
  %812 = fmul float %805, %801
  %813 = fsub float %812, %811
  %814 = getelementptr float* %arg0, i32 50
  store float %813, float* %814
  %815 = getelementptr float* %arg0, i32 114
  store float %810, float* %815
  %816 = getelementptr float* %arg1, i32 51
  %817 = load float* %816
  %818 = getelementptr float* %arg1, i32 115
  %819 = load float* %818
  %820 = getelementptr float* %arg2, i32 51
  %821 = load float* %820
  %822 = getelementptr float* %arg2, i32 115
  %823 = load float* %822
  %824 = fmul float %823, %817
  %825 = fmul float %821, %819
  %826 = fadd float %825, %824
  %827 = fmul float %823, %819
  %828 = fmul float %821, %817
  %829 = fsub float %828, %827
  %830 = getelementptr float* %arg0, i32 51
  store float %829, float* %830
  %831 = getelementptr float* %arg0, i32 115
  store float %826, float* %831
  %832 = getelementptr float* %arg1, i32 52
  %833 = load float* %832
  %834 = getelementptr float* %arg1, i32 116
  %835 = load float* %834
  %836 = getelementptr float* %arg2, i32 52
  %837 = load float* %836
  %838 = getelementptr float* %arg2, i32 116
  %839 = load float* %838
  %840 = fmul float %839, %833
  %841 = fmul float %837, %835
  %842 = fadd float %841, %840
  %843 = fmul float %839, %835
  %844 = fmul float %837, %833
  %845 = fsub float %844, %843
  %846 = getelementptr float* %arg0, i32 52
  store float %845, float* %846
  %847 = getelementptr float* %arg0, i32 116
  store float %842, float* %847
  %848 = getelementptr float* %arg1, i32 53
  %849 = load float* %848
  %850 = getelementptr float* %arg1, i32 117
  %851 = load float* %850
  %852 = getelementptr float* %arg2, i32 53
  %853 = load float* %852
  %854 = getelementptr float* %arg2, i32 117
  %855 = load float* %854
  %856 = fmul float %855, %849
  %857 = fmul float %853, %851
  %858 = fadd float %857, %856
  %859 = fmul float %855, %851
  %860 = fmul float %853, %849
  %861 = fsub float %860, %859
  %862 = getelementptr float* %arg0, i32 53
  store float %861, float* %862
  %863 = getelementptr float* %arg0, i32 117
  store float %858, float* %863
  %864 = getelementptr float* %arg1, i32 54
  %865 = load float* %864
  %866 = getelementptr float* %arg1, i32 118
  %867 = load float* %866
  %868 = getelementptr float* %arg2, i32 54
  %869 = load float* %868
  %870 = getelementptr float* %arg2, i32 118
  %871 = load float* %870
  %872 = fmul float %871, %865
  %873 = fmul float %869, %867
  %874 = fadd float %873, %872
  %875 = fmul float %871, %867
  %876 = fmul float %869, %865
  %877 = fsub float %876, %875
  %878 = getelementptr float* %arg0, i32 54
  store float %877, float* %878
  %879 = getelementptr float* %arg0, i32 118
  store float %874, float* %879
  %880 = getelementptr float* %arg1, i32 55
  %881 = load float* %880
  %882 = getelementptr float* %arg1, i32 119
  %883 = load float* %882
  %884 = getelementptr float* %arg2, i32 55
  %885 = load float* %884
  %886 = getelementptr float* %arg2, i32 119
  %887 = load float* %886
  %888 = fmul float %887, %881
  %889 = fmul float %885, %883
  %890 = fadd float %889, %888
  %891 = fmul float %887, %883
  %892 = fmul float %885, %881
  %893 = fsub float %892, %891
  %894 = getelementptr float* %arg0, i32 55
  store float %893, float* %894
  %895 = getelementptr float* %arg0, i32 119
  store float %890, float* %895
  %896 = getelementptr float* %arg1, i32 56
  %897 = load float* %896
  %898 = getelementptr float* %arg1, i32 120
  %899 = load float* %898
  %900 = getelementptr float* %arg2, i32 56
  %901 = load float* %900
  %902 = getelementptr float* %arg2, i32 120
  %903 = load float* %902
  %904 = fmul float %903, %897
  %905 = fmul float %901, %899
  %906 = fadd float %905, %904
  %907 = fmul float %903, %899
  %908 = fmul float %901, %897
  %909 = fsub float %908, %907
  %910 = getelementptr float* %arg0, i32 56
  store float %909, float* %910
  %911 = getelementptr float* %arg0, i32 120
  store float %906, float* %911
  %912 = getelementptr float* %arg1, i32 57
  %913 = load float* %912
  %914 = getelementptr float* %arg1, i32 121
  %915 = load float* %914
  %916 = getelementptr float* %arg2, i32 57
  %917 = load float* %916
  %918 = getelementptr float* %arg2, i32 121
  %919 = load float* %918
  %920 = fmul float %919, %913
  %921 = fmul float %917, %915
  %922 = fadd float %921, %920
  %923 = fmul float %919, %915
  %924 = fmul float %917, %913
  %925 = fsub float %924, %923
  %926 = getelementptr float* %arg0, i32 57
  store float %925, float* %926
  %927 = getelementptr float* %arg0, i32 121
  store float %922, float* %927
  %928 = getelementptr float* %arg1, i32 58
  %929 = load float* %928
  %930 = getelementptr float* %arg1, i32 122
  %931 = load float* %930
  %932 = getelementptr float* %arg2, i32 58
  %933 = load float* %932
  %934 = getelementptr float* %arg2, i32 122
  %935 = load float* %934
  %936 = fmul float %935, %929
  %937 = fmul float %933, %931
  %938 = fadd float %937, %936
  %939 = fmul float %935, %931
  %940 = fmul float %933, %929
  %941 = fsub float %940, %939
  %942 = getelementptr float* %arg0, i32 58
  store float %941, float* %942
  %943 = getelementptr float* %arg0, i32 122
  store float %938, float* %943
  %944 = getelementptr float* %arg1, i32 59
  %945 = load float* %944
  %946 = getelementptr float* %arg1, i32 123
  %947 = load float* %946
  %948 = getelementptr float* %arg2, i32 59
  %949 = load float* %948
  %950 = getelementptr float* %arg2, i32 123
  %951 = load float* %950
  %952 = fmul float %951, %945
  %953 = fmul float %949, %947
  %954 = fadd float %953, %952
  %955 = fmul float %951, %947
  %956 = fmul float %949, %945
  %957 = fsub float %956, %955
  %958 = getelementptr float* %arg0, i32 59
  store float %957, float* %958
  %959 = getelementptr float* %arg0, i32 123
  store float %954, float* %959
  %960 = getelementptr float* %arg1, i32 60
  %961 = load float* %960
  %962 = getelementptr float* %arg1, i32 124
  %963 = load float* %962
  %964 = getelementptr float* %arg2, i32 60
  %965 = load float* %964
  %966 = getelementptr float* %arg2, i32 124
  %967 = load float* %966
  %968 = fmul float %967, %961
  %969 = fmul float %965, %963
  %970 = fadd float %969, %968
  %971 = fmul float %967, %963
  %972 = fmul float %965, %961
  %973 = fsub float %972, %971
  %974 = getelementptr float* %arg0, i32 60
  store float %973, float* %974
  %975 = getelementptr float* %arg0, i32 124
  store float %970, float* %975
  %976 = getelementptr float* %arg1, i32 61
  %977 = load float* %976
  %978 = getelementptr float* %arg1, i32 125
  %979 = load float* %978
  %980 = getelementptr float* %arg2, i32 61
  %981 = load float* %980
  %982 = getelementptr float* %arg2, i32 125
  %983 = load float* %982
  %984 = fmul float %983, %977
  %985 = fmul float %981, %979
  %986 = fadd float %985, %984
  %987 = fmul float %983, %979
  %988 = fmul float %981, %977
  %989 = fsub float %988, %987
  %990 = getelementptr float* %arg0, i32 61
  store float %989, float* %990
  %991 = getelementptr float* %arg0, i32 125
  store float %986, float* %991
  %992 = getelementptr float* %arg1, i32 62
  %993 = load float* %992
  %994 = getelementptr float* %arg1, i32 126
  %995 = load float* %994
  %996 = getelementptr float* %arg2, i32 62
  %997 = load float* %996
  %998 = getelementptr float* %arg2, i32 126
  %999 = load float* %998
  %1000 = fmul float %999, %993
  %1001 = fmul float %997, %995
  %1002 = fadd float %1001, %1000
  %1003 = fmul float %999, %995
  %1004 = fmul float %997, %993
  %1005 = fsub float %1004, %1003
  %1006 = getelementptr float* %arg0, i32 62
  store float %1005, float* %1006
  %1007 = getelementptr float* %arg0, i32 126
  store float %1002, float* %1007
  %1008 = getelementptr float* %arg1, i32 63
  %1009 = load float* %1008
  %1010 = getelementptr float* %arg1, i32 127
  %1011 = load float* %1010
  %1012 = getelementptr float* %arg2, i32 63
  %1013 = load float* %1012
  %1014 = getelementptr float* %arg2, i32 127
  %1015 = load float* %1014
  %1016 = fmul float %1015, %1009
  %1017 = fmul float %1013, %1011
  %1018 = fadd float %1017, %1016
  %1019 = fmul float %1015, %1011
  %1020 = fmul float %1013, %1009
  %1021 = fsub float %1020, %1019
  %1022 = getelementptr float* %arg0, i32 63
  store float %1021, float* %1022
  %1023 = getelementptr float* %arg0, i32 127
  store float %1018, float* %1023
  ret void
}


More information about the llvm-dev mailing list