[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / X86 / 2008-01-16-FPStackifierAssert.ll
blobeb8439fc1795e4da91f53946bc6f04ecebb3e536
1 ; RUN: llc < %s -mtriple=i686-- -mattr=+sse2 -regalloc=fast -optimize-regalloc=0
3 define void @SolveCubic(double %a, double %b, double %c, double %d, i32* %solutions, double* %x) {
4 entry:
5         %tmp71 = load x86_fp80, x86_fp80* null, align 16                ; <x86_fp80> [#uses=1]
6         %tmp72 = fdiv x86_fp80 %tmp71, 0xKC000C000000000000000          ; <x86_fp80> [#uses=1]
7         %tmp73 = fadd x86_fp80 0xK00000000000000000000, %tmp72          ; <x86_fp80> [#uses=1]
8         %tmp7374 = fptrunc x86_fp80 %tmp73 to double            ; <double> [#uses=1]
9         store double %tmp7374, double* null, align 8
10         %tmp81 = load double, double* null, align 8             ; <double> [#uses=1]
11         %tmp82 = fadd double %tmp81, 0x401921FB54442D18         ; <double> [#uses=1]
12         %tmp83 = fdiv double %tmp82, 3.000000e+00               ; <double> [#uses=1]
13         %tmp84 = call double @cos( double %tmp83 )              ; <double> [#uses=1]
14         %tmp85 = fmul double 0.000000e+00, %tmp84               ; <double> [#uses=1]
15         %tmp8586 = fpext double %tmp85 to x86_fp80              ; <x86_fp80> [#uses=1]
16         %tmp87 = load x86_fp80, x86_fp80* null, align 16                ; <x86_fp80> [#uses=1]
17         %tmp88 = fdiv x86_fp80 %tmp87, 0xKC000C000000000000000          ; <x86_fp80> [#uses=1]
18         %tmp89 = fadd x86_fp80 %tmp8586, %tmp88         ; <x86_fp80> [#uses=1]
19         %tmp8990 = fptrunc x86_fp80 %tmp89 to double            ; <double> [#uses=1]
20         store double %tmp8990, double* null, align 8
21         %tmp97 = load double, double* null, align 8             ; <double> [#uses=1]
22         %tmp98 = fadd double %tmp97, 0x402921FB54442D18         ; <double> [#uses=1]
23         %tmp99 = fdiv double %tmp98, 3.000000e+00               ; <double> [#uses=1]
24         %tmp100 = call double @cos( double %tmp99 )             ; <double> [#uses=1]
25         %tmp101 = fmul double 0.000000e+00, %tmp100             ; <double> [#uses=1]
26         %tmp101102 = fpext double %tmp101 to x86_fp80           ; <x86_fp80> [#uses=1]
27         %tmp103 = load x86_fp80, x86_fp80* null, align 16               ; <x86_fp80> [#uses=1]
28         %tmp104 = fdiv x86_fp80 %tmp103, 0xKC000C000000000000000                ; <x86_fp80> [#uses=1]
29         %tmp105 = fadd x86_fp80 %tmp101102, %tmp104             ; <x86_fp80> [#uses=1]
30         %tmp105106 = fptrunc x86_fp80 %tmp105 to double         ; <double> [#uses=1]
31         store double %tmp105106, double* null, align 8
32         ret void
35 declare double @cos(double)