Before this patch, redundant COPY couldn't be removed for the following case: ``` $R0 = OP ... ... // Read of %R0 $R1 = COPY killed $R0 ``` This patch adds support for tracking the users of the source register during backward propagation, so that we can remove the redundant COPY in the above case and optimize it to: ``` $R1 = OP ... ... // Replace all uses of %R0 with $R1 ```
417 lines
22 KiB
LLVM
417 lines
22 KiB
LLVM
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
|
; RUN: llc -O3 < %s -mcpu=haswell -mtriple=x86_64 | FileCheck %s
|
|
|
|
; Verify that we are not exponentially increasing compiling time.
|
|
define void @tester(float %0, float %1, float %2, float %3, float %4, float %5, float %6, float %7, float %8, float %9, float %10, float %11, float %12, float %13, float %14, float %15, float %16, float %17, float %18, float %19, float %20, float %21, float %22, float %23, float %24, float %25, float %26, float %27, float %28, float %29, float %30, float %31, float %32, float %33, float %34, float %35, float %36, float %37, float %38, float %39, float %40, float %41, float %42, float %43, float %44, float %45, float %46, float %47, float %48, float %49, float %50, float %51, float %52, float %53, float %54, float %55, float %56, float %57, float %58, float %59, float %60, float %61, float %62, float %63, float %64, float %65, float %66, float %67, float %68, float %69, float %70, float %71, float %72, float %73, float %74, float %75, float %76, float %77, float %78, float %79, ptr %80) {
|
|
; CHECK-LABEL: tester:
|
|
; CHECK: # %bb.0: # %entry
|
|
; CHECK-NEXT: vmovaps %xmm3, %xmm13
|
|
; CHECK-NEXT: vmovaps %xmm1, %xmm14
|
|
; CHECK-NEXT: vmovss {{.*#+}} xmm11 = mem[0],zero,zero,zero
|
|
; CHECK-NEXT: vmovss {{.*#+}} xmm8 = mem[0],zero,zero,zero
|
|
; CHECK-NEXT: vmovss {{.*#+}} xmm9 = mem[0],zero,zero,zero
|
|
; CHECK-NEXT: vsubss %xmm1, %xmm0, %xmm12
|
|
; CHECK-NEXT: vmulss %xmm2, %xmm1, %xmm1
|
|
; CHECK-NEXT: vfmsub213ss {{.*#+}} xmm1 = (xmm3 * xmm1) - xmm0
|
|
; CHECK-NEXT: vfnmadd213ss {{.*#+}} xmm5 = -(xmm12 * xmm5) + xmm0
|
|
; CHECK-NEXT: vmulss %xmm4, %xmm5, %xmm2
|
|
; CHECK-NEXT: vmulss %xmm1, %xmm2, %xmm1
|
|
; CHECK-NEXT: vmulss %xmm6, %xmm12, %xmm2
|
|
; CHECK-NEXT: vfnmadd213ss {{.*#+}} xmm2 = -(xmm7 * xmm2) + xmm0
|
|
; CHECK-NEXT: vmulss %xmm1, %xmm2, %xmm1
|
|
; CHECK-NEXT: vmulss %xmm0, %xmm9, %xmm2
|
|
; CHECK-NEXT: vmovss %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
|
|
; CHECK-NEXT: vmulss %xmm2, %xmm8, %xmm2
|
|
; CHECK-NEXT: vfnmadd132ss {{.*#+}} xmm2 = -(xmm2 * mem) + xmm0
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm7, %xmm3
|
|
; CHECK-NEXT: vfnmadd132ss {{.*#+}} xmm3 = -(xmm3 * mem) + xmm0
|
|
; CHECK-NEXT: vmulss %xmm2, %xmm3, %xmm2
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm0, %xmm3
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm3, %xmm4
|
|
; CHECK-NEXT: vfnmadd213ss {{.*#+}} xmm4 = -(xmm11 * xmm4) + xmm0
|
|
; CHECK-NEXT: vmulss %xmm1, %xmm4, %xmm4
|
|
; CHECK-NEXT: vmovss {{.*#+}} xmm1 = mem[0],zero,zero,zero
|
|
; CHECK-NEXT: vfnmadd132ss {{.*#+}} xmm1 = -(xmm1 * mem) + xmm0
|
|
; CHECK-NEXT: vmulss %xmm2, %xmm1, %xmm2
|
|
; CHECK-NEXT: vmovss {{.*#+}} xmm6 = mem[0],zero,zero,zero
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm6, %xmm5
|
|
; CHECK-NEXT: vfnmadd213ss {{.*#+}} xmm5 = -(xmm8 * xmm5) + xmm0
|
|
; CHECK-NEXT: vmulss %xmm4, %xmm5, %xmm4
|
|
; CHECK-NEXT: vmovss {{.*#+}} xmm15 = mem[0],zero,zero,zero
|
|
; CHECK-NEXT: vmulss %xmm0, %xmm15, %xmm1
|
|
; CHECK-NEXT: vmovss %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
|
|
; CHECK-NEXT: vmulss %xmm1, %xmm11, %xmm5
|
|
; CHECK-NEXT: vfnmadd213ss {{.*#+}} xmm5 = -(xmm12 * xmm5) + xmm0
|
|
; CHECK-NEXT: vmulss %xmm2, %xmm5, %xmm2
|
|
; CHECK-NEXT: vmovss {{.*#+}} xmm5 = mem[0],zero,zero,zero
|
|
; CHECK-NEXT: vfnmadd213ss {{.*#+}} xmm5 = -(xmm9 * xmm5) + xmm0
|
|
; CHECK-NEXT: vmulss %xmm4, %xmm5, %xmm4
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm3, %xmm9
|
|
; CHECK-NEXT: vmovss {{.*#+}} xmm3 = mem[0],zero,zero,zero
|
|
; CHECK-NEXT: vfnmadd213ss {{.*#+}} xmm3 = -(xmm9 * xmm3) + xmm0
|
|
; CHECK-NEXT: vmulss %xmm2, %xmm3, %xmm2
|
|
; CHECK-NEXT: vmulss %xmm4, %xmm2, %xmm2
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm2, %xmm2
|
|
; CHECK-NEXT: vmovss {{.*#+}} xmm3 = mem[0],zero,zero,zero
|
|
; CHECK-NEXT: vfnmadd213ss {{.*#+}} xmm3 = -(xmm13 * xmm3) + xmm0
|
|
; CHECK-NEXT: vmulss %xmm2, %xmm3, %xmm2
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm2, %xmm3
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm14, %xmm5
|
|
; CHECK-NEXT: vfnmadd132ss {{.*#+}} xmm5 = -(xmm5 * mem) + xmm0
|
|
; CHECK-NEXT: vmovss {{.*#+}} xmm7 = mem[0],zero,zero,zero
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm7, %xmm10
|
|
; CHECK-NEXT: vfnmadd132ss {{.*#+}} xmm10 = -(xmm10 * mem) + xmm0
|
|
; CHECK-NEXT: vmulss %xmm5, %xmm10, %xmm5
|
|
; CHECK-NEXT: vmulss %xmm3, %xmm5, %xmm3
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm3, %xmm3
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm3, %xmm3
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm3, %xmm3
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm8, %xmm5
|
|
; CHECK-NEXT: vfnmadd132ss {{.*#+}} xmm5 = -(xmm5 * mem) + xmm0
|
|
; CHECK-NEXT: vmulss %xmm3, %xmm5, %xmm3
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm3, %xmm3
|
|
; CHECK-NEXT: vmovss {{.*#+}} xmm5 = mem[0],zero,zero,zero
|
|
; CHECK-NEXT: vfnmadd213ss {{.*#+}} xmm5 = -(xmm14 * xmm5) + xmm0
|
|
; CHECK-NEXT: vmovss {{.*#+}} xmm10 = mem[0],zero,zero,zero
|
|
; CHECK-NEXT: vfnmadd132ss {{.*#+}} xmm10 = -(xmm10 * mem) + xmm0
|
|
; CHECK-NEXT: vmulss %xmm5, %xmm10, %xmm5
|
|
; CHECK-NEXT: vmulss %xmm3, %xmm5, %xmm3
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm3, %xmm3
|
|
; CHECK-NEXT: vmovss {{.*#+}} xmm10 = mem[0],zero,zero,zero
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm15, %xmm1
|
|
; CHECK-NEXT: vmovss %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
|
|
; CHECK-NEXT: vfnmadd213ss {{.*#+}} xmm10 = -(xmm1 * xmm10) + xmm0
|
|
; CHECK-NEXT: vmulss %xmm3, %xmm10, %xmm3
|
|
; CHECK-NEXT: vmulss %xmm0, %xmm12, %xmm15
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm15, %xmm10
|
|
; CHECK-NEXT: vfnmadd132ss {{.*#+}} xmm10 = -(xmm10 * mem) + xmm0
|
|
; CHECK-NEXT: vmovss {{.*#+}} xmm4 = mem[0],zero,zero,zero
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm4, %xmm12
|
|
; CHECK-NEXT: vfnmadd213ss {{.*#+}} xmm12 = -(xmm6 * xmm12) + xmm0
|
|
; CHECK-NEXT: vmulss %xmm10, %xmm12, %xmm10
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm3, %xmm3
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm3, %xmm3
|
|
; CHECK-NEXT: vmulss %xmm3, %xmm10, %xmm12
|
|
; CHECK-NEXT: vmovss {{.*#+}} xmm2 = mem[0],zero,zero,zero
|
|
; CHECK-NEXT: vfnmadd213ss {{.*#+}} xmm2 = -(xmm6 * xmm2) + xmm0
|
|
; CHECK-NEXT: vmovss {{.*#+}} xmm3 = mem[0],zero,zero,zero
|
|
; CHECK-NEXT: vmulss %xmm3, %xmm15, %xmm1
|
|
; CHECK-NEXT: vfnmadd132ss {{.*#+}} xmm1 = -(xmm1 * mem) + xmm0
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm0, %xmm8
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm8, %xmm5
|
|
; CHECK-NEXT: vfnmadd132ss {{.*#+}} xmm5 = -(xmm5 * mem) + xmm0
|
|
; CHECK-NEXT: vmulss %xmm2, %xmm1, %xmm1
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm3, %xmm2
|
|
; CHECK-NEXT: vfnmadd132ss {{.*#+}} xmm2 = -(xmm2 * mem) + xmm0
|
|
; CHECK-NEXT: vmulss %xmm1, %xmm5, %xmm1
|
|
; CHECK-NEXT: vmulss %xmm1, %xmm2, %xmm1
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm3, %xmm2
|
|
; CHECK-NEXT: vfnmadd213ss {{.*#+}} xmm2 = -(xmm4 * xmm2) + xmm0
|
|
; CHECK-NEXT: vmulss %xmm1, %xmm2, %xmm1
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm12, %xmm2
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm2, %xmm2
|
|
; CHECK-NEXT: vmulss %xmm2, %xmm1, %xmm4
|
|
; CHECK-NEXT: vmovss {{.*#+}} xmm12 = mem[0],zero,zero,zero
|
|
; CHECK-NEXT: vmovss {{.*#+}} xmm5 = mem[0],zero,zero,zero
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm5, %xmm3
|
|
; CHECK-NEXT: vfnmadd213ss {{.*#+}} xmm3 = -(xmm12 * xmm3) + xmm0
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm15, %xmm1
|
|
; CHECK-NEXT: vfnmadd132ss {{.*#+}} xmm1 = -(xmm1 * mem) + xmm0
|
|
; CHECK-NEXT: vmovss {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 4-byte Reload
|
|
; CHECK-NEXT: # xmm2 = mem[0],zero,zero,zero
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm2, %xmm2
|
|
; CHECK-NEXT: vmulss %xmm3, %xmm1, %xmm1
|
|
; CHECK-NEXT: vmovss {{.*#+}} xmm3 = mem[0],zero,zero,zero
|
|
; CHECK-NEXT: vfnmadd213ss {{.*#+}} xmm2 = -(xmm3 * xmm2) + xmm0
|
|
; CHECK-NEXT: vmulss %xmm1, %xmm2, %xmm1
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm4, %xmm2
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm2, %xmm2
|
|
; CHECK-NEXT: vmulss %xmm2, %xmm1, %xmm1
|
|
; CHECK-NEXT: vmovss {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 4-byte Reload
|
|
; CHECK-NEXT: # xmm10 = mem[0],zero,zero,zero
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm10, %xmm2
|
|
; CHECK-NEXT: vfnmadd132ss {{.*#+}} xmm6 = -(xmm6 * mem) + xmm0
|
|
; CHECK-NEXT: vfnmadd213ss {{.*#+}} xmm2 = -(xmm12 * xmm2) + xmm0
|
|
; CHECK-NEXT: vmulss %xmm2, %xmm6, %xmm2
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm1, %xmm1
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm1, %xmm1
|
|
; CHECK-NEXT: vfnmadd132ss {{.*#+}} xmm7 = -(xmm7 * mem) + xmm0
|
|
; CHECK-NEXT: vmulss %xmm2, %xmm7, %xmm2
|
|
; CHECK-NEXT: vmulss %xmm1, %xmm2, %xmm1
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm1, %xmm1
|
|
; CHECK-NEXT: vmovss {{.*#+}} xmm2 = mem[0],zero,zero,zero
|
|
; CHECK-NEXT: vfnmadd213ss {{.*#+}} xmm2 = -(xmm13 * xmm2) + xmm0
|
|
; CHECK-NEXT: vmulss %xmm1, %xmm2, %xmm2
|
|
; CHECK-NEXT: vmulss %xmm0, %xmm5, %xmm1
|
|
; CHECK-NEXT: vmulss %xmm3, %xmm1, %xmm1
|
|
; CHECK-NEXT: vfnmadd132ss {{.*#+}} xmm1 = -(xmm1 * mem) + xmm0
|
|
; CHECK-NEXT: vmovss {{.*#+}} xmm3 = mem[0],zero,zero,zero
|
|
; CHECK-NEXT: vfnmadd213ss {{.*#+}} xmm3 = -(xmm5 * xmm3) + xmm0
|
|
; CHECK-NEXT: vmulss %xmm3, %xmm1, %xmm3
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm8, %xmm1
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm8, %xmm4
|
|
; CHECK-NEXT: vfnmadd132ss {{.*#+}} xmm4 = -(xmm4 * mem) + xmm0
|
|
; CHECK-NEXT: vmulss %xmm3, %xmm4, %xmm3
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm2, %xmm2
|
|
; CHECK-NEXT: vmulss %xmm2, %xmm3, %xmm2
|
|
; CHECK-NEXT: vfnmadd213ss {{.*#+}} xmm9 = -(xmm5 * xmm9) + xmm0
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm15, %xmm3
|
|
; CHECK-NEXT: vfnmadd213ss {{.*#+}} xmm3 = -(xmm13 * xmm3) + xmm0
|
|
; CHECK-NEXT: vmovss {{.*#+}} xmm4 = mem[0],zero,zero,zero
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm4, %xmm4
|
|
; CHECK-NEXT: vfnmadd132ss {{.*#+}} xmm4 = -(xmm4 * mem) + xmm0
|
|
; CHECK-NEXT: vmulss %xmm3, %xmm9, %xmm3
|
|
; CHECK-NEXT: vmulss %xmm3, %xmm4, %xmm3
|
|
; CHECK-NEXT: vfnmadd132ss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm11 # 4-byte Folded Reload
|
|
; CHECK-NEXT: # xmm11 = -(xmm11 * mem) + xmm0
|
|
; CHECK-NEXT: vmulss %xmm3, %xmm11, %xmm3
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm0, %xmm4
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm4, %xmm4
|
|
; CHECK-NEXT: vfnmadd132ss {{.*#+}} xmm4 = -(xmm4 * mem) + xmm0
|
|
; CHECK-NEXT: vmovss {{.*#+}} xmm5 = mem[0],zero,zero,zero
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm5, %xmm6
|
|
; CHECK-NEXT: vmulss %xmm5, %xmm14, %xmm5
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm15, %xmm7
|
|
; CHECK-NEXT: vmulss %xmm15, %xmm13, %xmm8
|
|
; CHECK-NEXT: vmovss {{.*#+}} xmm11 = mem[0],zero,zero,zero
|
|
; CHECK-NEXT: vfnmadd213ss {{.*#+}} xmm8 = -(xmm11 * xmm8) + xmm0
|
|
; CHECK-NEXT: vmovss {{.*#+}} xmm9 = mem[0],zero,zero,zero
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm9, %xmm9
|
|
; CHECK-NEXT: vfnmadd213ss {{.*#+}} xmm9 = -(xmm11 * xmm9) + xmm0
|
|
; CHECK-NEXT: vfnmadd213ss {{.*#+}} xmm6 = -(xmm11 * xmm6) + xmm0
|
|
; CHECK-NEXT: vfnmadd213ss {{.*#+}} xmm5 = -(xmm11 * xmm5) + xmm0
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm10, %xmm10
|
|
; CHECK-NEXT: vmulss %xmm0, %xmm12, %xmm11
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm11, %xmm11
|
|
; CHECK-NEXT: vmovss {{.*#+}} xmm12 = mem[0],zero,zero,zero
|
|
; CHECK-NEXT: vfnmadd213ss {{.*#+}} xmm11 = -(xmm12 * xmm11) + xmm0
|
|
; CHECK-NEXT: vfnmadd213ss {{.*#+}} xmm10 = -(xmm12 * xmm10) + xmm0
|
|
; CHECK-NEXT: vfmsub213ss {{.*#+}} xmm7 = (xmm13 * xmm7) - xmm0
|
|
; CHECK-NEXT: vfnmadd132ss {{.*#+}} xmm1 = -(xmm1 * mem) + xmm0
|
|
; CHECK-NEXT: vmulss %xmm3, %xmm1, %xmm0
|
|
; CHECK-NEXT: vmulss %xmm0, %xmm8, %xmm0
|
|
; CHECK-NEXT: vmulss %xmm0, %xmm9, %xmm0
|
|
; CHECK-NEXT: vmulss %xmm0, %xmm6, %xmm0
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm2, %xmm1
|
|
; CHECK-NEXT: vmulss %xmm1, %xmm0, %xmm0
|
|
; CHECK-NEXT: vmulss %xmm4, %xmm5, %xmm1
|
|
; CHECK-NEXT: vmulss %xmm1, %xmm11, %xmm1
|
|
; CHECK-NEXT: vmulss %xmm1, %xmm10, %xmm1
|
|
; CHECK-NEXT: vmulss {{[0-9]+}}(%rsp), %xmm0, %xmm0
|
|
; CHECK-NEXT: vmulss %xmm1, %xmm7, %xmm1
|
|
; CHECK-NEXT: vmulss %xmm0, %xmm1, %xmm0
|
|
; CHECK-NEXT: vmovss %xmm0, (%rdi)
|
|
; CHECK-NEXT: retq
|
|
entry:
|
|
%81 = fsub reassoc nsz contract float %0, %1
|
|
%82 = fmul reassoc nsz contract float %1, %2
|
|
%83 = fmul reassoc nsz contract float %3, %82
|
|
%84 = fsub reassoc nsz contract float %0, %83
|
|
%85 = fmul reassoc nsz contract float %84, %4
|
|
%86 = fmul reassoc nsz contract float %81, %5
|
|
%87 = fsub reassoc nsz contract float %0, %86
|
|
%88 = fmul reassoc nsz contract float %87, %85
|
|
%89 = fmul reassoc nsz contract float %81, %6
|
|
%90 = fmul reassoc nsz contract float %89, %7
|
|
%91 = fsub reassoc nsz contract float %0, %90
|
|
%92 = fmul reassoc nsz contract float %91, %88
|
|
%93 = fmul reassoc nsz contract float %8, %0
|
|
%94 = fmul reassoc nsz contract float %93, %9
|
|
%95 = fmul reassoc nsz contract float %94, %10
|
|
%96 = fsub reassoc nsz contract float %0, %95
|
|
%97 = fmul reassoc nsz contract float %96, %92
|
|
%98 = fmul reassoc nsz contract float %11, %7
|
|
%99 = fmul reassoc nsz contract float %98, %12
|
|
%100 = fsub reassoc nsz contract float %0, %99
|
|
%101 = fmul reassoc nsz contract float %100, %97
|
|
%102 = fmul reassoc nsz contract float %13, %0
|
|
%103 = fmul reassoc nsz contract float %102, %14
|
|
%104 = fmul reassoc nsz contract float %103, %15
|
|
%105 = fsub reassoc nsz contract float %0, %104
|
|
%106 = fmul reassoc nsz contract float %105, %101
|
|
%107 = fmul reassoc nsz contract float %16, %17
|
|
%108 = fsub reassoc nsz contract float %0, %107
|
|
%109 = fmul reassoc nsz contract float %108, %106
|
|
%110 = fmul reassoc nsz contract float %18, %19
|
|
%111 = fmul reassoc nsz contract float %110, %9
|
|
%112 = fsub reassoc nsz contract float %0, %111
|
|
%113 = fmul reassoc nsz contract float %112, %109
|
|
%114 = fmul reassoc nsz contract float %20, %0
|
|
%115 = fmul reassoc nsz contract float %114, %15
|
|
%116 = fmul reassoc nsz contract float %81, %115
|
|
%117 = fsub reassoc nsz contract float %0, %116
|
|
%118 = fmul reassoc nsz contract float %117, %113
|
|
%119 = fmul reassoc nsz contract float %8, %21
|
|
%120 = fsub reassoc nsz contract float %0, %119
|
|
%121 = fmul reassoc nsz contract float %120, %118
|
|
%122 = fmul reassoc nsz contract float %102, %22
|
|
%123 = fmul reassoc nsz contract float %122, %23
|
|
%124 = fsub reassoc nsz contract float %0, %123
|
|
%125 = fmul reassoc nsz contract float %124, %121
|
|
%126 = fmul reassoc nsz contract float %125, %24
|
|
%127 = fmul reassoc nsz contract float %3, %25
|
|
%128 = fsub reassoc nsz contract float %0, %127
|
|
%129 = fmul reassoc nsz contract float %128, %126
|
|
%130 = fmul reassoc nsz contract float %129, %26
|
|
%131 = fmul reassoc nsz contract float %27, %1
|
|
%132 = fmul reassoc nsz contract float %131, %28
|
|
%133 = fsub reassoc nsz contract float %0, %132
|
|
%134 = fmul reassoc nsz contract float %133, %130
|
|
%135 = fmul reassoc nsz contract float %29, %30
|
|
%136 = fmul reassoc nsz contract float %135, %31
|
|
%137 = fsub reassoc nsz contract float %0, %136
|
|
%138 = fmul reassoc nsz contract float %137, %134
|
|
%139 = fmul reassoc nsz contract float %138, %32
|
|
%140 = fmul reassoc nsz contract float %139, %33
|
|
%141 = fmul reassoc nsz contract float %140, %34
|
|
%142 = fmul reassoc nsz contract float %35, %9
|
|
%143 = fmul reassoc nsz contract float %142, %36
|
|
%144 = fsub reassoc nsz contract float %0, %143
|
|
%145 = fmul reassoc nsz contract float %144, %141
|
|
%146 = fmul reassoc nsz contract float %145, %37
|
|
%147 = fmul reassoc nsz contract float %1, %38
|
|
%148 = fsub reassoc nsz contract float %0, %147
|
|
%149 = fmul reassoc nsz contract float %148, %146
|
|
%150 = fmul reassoc nsz contract float %39, %40
|
|
%151 = fsub reassoc nsz contract float %0, %150
|
|
%152 = fmul reassoc nsz contract float %151, %149
|
|
%153 = fmul reassoc nsz contract float %152, %41
|
|
%154 = fmul reassoc nsz contract float %20, %42
|
|
%155 = fmul reassoc nsz contract float %154, %43
|
|
%156 = fsub reassoc nsz contract float %0, %155
|
|
%157 = fmul reassoc nsz contract float %156, %153
|
|
%158 = fmul reassoc nsz contract float %157, %44
|
|
%159 = fmul reassoc nsz contract float %158, %45
|
|
%160 = fmul reassoc nsz contract float %81, %0
|
|
%161 = fmul reassoc nsz contract float %160, %46
|
|
%162 = fmul reassoc nsz contract float %161, %14
|
|
%163 = fsub reassoc nsz contract float %0, %162
|
|
%164 = fmul reassoc nsz contract float %163, %159
|
|
%165 = fmul reassoc nsz contract float %8, %47
|
|
%166 = fmul reassoc nsz contract float %18, %165
|
|
%167 = fsub reassoc nsz contract float %0, %166
|
|
%168 = fmul reassoc nsz contract float %167, %164
|
|
%169 = fmul reassoc nsz contract float %168, %48
|
|
%170 = fmul reassoc nsz contract float %169, %49
|
|
%171 = fmul reassoc nsz contract float %18, %50
|
|
%172 = fsub reassoc nsz contract float %0, %171
|
|
%173 = fmul reassoc nsz contract float %172, %170
|
|
%174 = fmul reassoc nsz contract float %16, %160
|
|
%175 = fmul reassoc nsz contract float %174, %12
|
|
%176 = fsub reassoc nsz contract float %0, %175
|
|
%177 = fmul reassoc nsz contract float %176, %173
|
|
%178 = fmul reassoc nsz contract float %51, %0
|
|
%179 = fmul reassoc nsz contract float %178, %22
|
|
%180 = fmul reassoc nsz contract float %179, %52
|
|
%181 = fsub reassoc nsz contract float %0, %180
|
|
%182 = fmul reassoc nsz contract float %181, %177
|
|
%183 = fmul reassoc nsz contract float %27, %16
|
|
%184 = fmul reassoc nsz contract float %183, %53
|
|
%185 = fsub reassoc nsz contract float %0, %184
|
|
%186 = fmul reassoc nsz contract float %185, %182
|
|
%187 = fmul reassoc nsz contract float %16, %54
|
|
%188 = fmul reassoc nsz contract float %8, %187
|
|
%189 = fsub reassoc nsz contract float %0, %188
|
|
%190 = fmul reassoc nsz contract float %189, %186
|
|
%191 = fmul reassoc nsz contract float %190, %55
|
|
%192 = fmul reassoc nsz contract float %191, %56
|
|
%193 = fmul reassoc nsz contract float %57, %58
|
|
%194 = fmul reassoc nsz contract float %193, %59
|
|
%195 = fsub reassoc nsz contract float %0, %194
|
|
%196 = fmul reassoc nsz contract float %195, %192
|
|
%197 = fmul reassoc nsz contract float %13, %160
|
|
%198 = fmul reassoc nsz contract float %197, %36
|
|
%199 = fsub reassoc nsz contract float %0, %198
|
|
%200 = fmul reassoc nsz contract float %199, %196
|
|
%201 = fmul reassoc nsz contract float %93, %60
|
|
%202 = fmul reassoc nsz contract float %201, %61
|
|
%203 = fsub reassoc nsz contract float %0, %202
|
|
%204 = fmul reassoc nsz contract float %203, %200
|
|
%205 = fmul reassoc nsz contract float %204, %62
|
|
%206 = fmul reassoc nsz contract float %205, %63
|
|
%207 = fmul reassoc nsz contract float %114, %9
|
|
%208 = fmul reassoc nsz contract float %207, %59
|
|
%209 = fsub reassoc nsz contract float %0, %208
|
|
%210 = fmul reassoc nsz contract float %209, %206
|
|
%211 = fmul reassoc nsz contract float %18, %64
|
|
%212 = fsub reassoc nsz contract float %0, %211
|
|
%213 = fmul reassoc nsz contract float %212, %210
|
|
%214 = fmul reassoc nsz contract float %29, %65
|
|
%215 = fsub reassoc nsz contract float %0, %214
|
|
%216 = fmul reassoc nsz contract float %215, %213
|
|
%217 = fmul reassoc nsz contract float %216, %66
|
|
%218 = fmul reassoc nsz contract float %3, %67
|
|
%219 = fsub reassoc nsz contract float %0, %218
|
|
%220 = fmul reassoc nsz contract float %219, %217
|
|
%221 = fmul reassoc nsz contract float %220, %68
|
|
%222 = fmul reassoc nsz contract float %57, %69
|
|
%223 = fsub reassoc nsz contract float %0, %222
|
|
%224 = fmul reassoc nsz contract float %223, %221
|
|
%225 = fmul reassoc nsz contract float %57, %0
|
|
%226 = fmul reassoc nsz contract float %225, %61
|
|
%227 = fmul reassoc nsz contract float %226, %12
|
|
%228 = fsub reassoc nsz contract float %0, %227
|
|
%229 = fmul reassoc nsz contract float %228, %224
|
|
%230 = fmul reassoc nsz contract float %178, %70
|
|
%231 = fmul reassoc nsz contract float %230, %46
|
|
%232 = fsub reassoc nsz contract float %0, %231
|
|
%233 = fmul reassoc nsz contract float %232, %229
|
|
%234 = fmul reassoc nsz contract float %233, %71
|
|
%235 = fmul reassoc nsz contract float %57, %122
|
|
%236 = fsub reassoc nsz contract float %0, %235
|
|
%237 = fmul reassoc nsz contract float %236, %234
|
|
%238 = fmul reassoc nsz contract float %20, %160
|
|
%239 = fmul reassoc nsz contract float %3, %238
|
|
%240 = fsub reassoc nsz contract float %0, %239
|
|
%241 = fmul reassoc nsz contract float %240, %237
|
|
%242 = fmul reassoc nsz contract float %16, %72
|
|
%243 = fmul reassoc nsz contract float %242, %73
|
|
%244 = fsub reassoc nsz contract float %0, %243
|
|
%245 = fmul reassoc nsz contract float %244, %241
|
|
%246 = fmul reassoc nsz contract float %154, %15
|
|
%247 = fsub reassoc nsz contract float %0, %246
|
|
%248 = fmul reassoc nsz contract float %247, %245
|
|
%249 = fmul reassoc nsz contract float %178, %23
|
|
%250 = fmul reassoc nsz contract float %249, %74
|
|
%251 = fsub reassoc nsz contract float %0, %250
|
|
%252 = fmul reassoc nsz contract float %251, %248
|
|
%253 = fmul reassoc nsz contract float %3, %160
|
|
%254 = fmul reassoc nsz contract float %51, %253
|
|
%255 = fsub reassoc nsz contract float %0, %254
|
|
%256 = fmul reassoc nsz contract float %255, %252
|
|
%257 = fmul reassoc nsz contract float %13, %75
|
|
%258 = fmul reassoc nsz contract float %257, %51
|
|
%259 = fsub reassoc nsz contract float %0, %258
|
|
%260 = fmul reassoc nsz contract float %259, %256
|
|
%261 = fmul reassoc nsz contract float %8, %76
|
|
%262 = fmul reassoc nsz contract float %51, %261
|
|
%263 = fsub reassoc nsz contract float %0, %262
|
|
%264 = fmul reassoc nsz contract float %263, %260
|
|
%265 = fmul reassoc nsz contract float %264, %77
|
|
%266 = fmul reassoc nsz contract float %39, %0
|
|
%267 = fmul reassoc nsz contract float %266, %78
|
|
%268 = fmul reassoc nsz contract float %267, %14
|
|
%269 = fsub reassoc nsz contract float %0, %268
|
|
%270 = fmul reassoc nsz contract float %269, %265
|
|
%271 = fmul reassoc nsz contract float %1, %76
|
|
%272 = fmul reassoc nsz contract float %51, %271
|
|
%273 = fsub reassoc nsz contract float %0, %272
|
|
%274 = fmul reassoc nsz contract float %273, %270
|
|
%275 = fmul reassoc nsz contract float %0, %59
|
|
%276 = fmul reassoc nsz contract float %275, %79
|
|
%277 = fmul reassoc nsz contract float %276, %36
|
|
%278 = fsub reassoc nsz contract float %0, %277
|
|
%279 = fmul reassoc nsz contract float %278, %274
|
|
%280 = fmul reassoc nsz contract float %114, %22
|
|
%281 = fmul reassoc nsz contract float %280, %36
|
|
%282 = fsub reassoc nsz contract float %0, %281
|
|
%283 = fmul reassoc nsz contract float %282, %279
|
|
%284 = fmul reassoc nsz contract float %0, %43
|
|
%285 = fmul reassoc nsz contract float %284, %81
|
|
%286 = fmul reassoc nsz contract float %3, %285
|
|
%287 = fsub reassoc nsz contract float %0, %286
|
|
%288 = fmul reassoc nsz contract float %287, %283
|
|
store float %288, ptr %80, align 4
|
|
ret void
|
|
}
|