1; RUN: opt < %s -instcombine -mtriple=x86_64-apple-macosx -S | FileCheck %s
2target triple = "x86_64-apple-macosx"
3
4define double @test1(double %a, double %b) nounwind {
5  %wa = fpext double %a to x86_fp80
6  %wb = fpext double %b to x86_fp80
7  %wr = fadd x86_fp80 %wa, %wb
8  %r = fptrunc x86_fp80 %wr to double
9  ret double %r
10; CHECK: test1
11; CHECK: fadd x86_fp80
12; CHECK: ret
13}
14
15define double @test2(double %a, double %b) nounwind {
16  %wa = fpext double %a to x86_fp80
17  %wb = fpext double %b to x86_fp80
18  %wr = fsub x86_fp80 %wa, %wb
19  %r = fptrunc x86_fp80 %wr to double
20  ret double %r
21; CHECK: test2
22; CHECK: fsub x86_fp80
23; CHECK: ret
24}
25
26define double @test3(double %a, double %b) nounwind {
27  %wa = fpext double %a to x86_fp80
28  %wb = fpext double %b to x86_fp80
29  %wr = fmul x86_fp80 %wa, %wb
30  %r = fptrunc x86_fp80 %wr to double
31  ret double %r
32; CHECK: test3
33; CHECK: fmul x86_fp80
34; CHECK: ret
35}
36
37define double @test4(double %a, half %b) nounwind {
38  %wa = fpext double %a to x86_fp80
39  %wb = fpext half %b to x86_fp80
40  %wr = fmul x86_fp80 %wa, %wb
41  %r = fptrunc x86_fp80 %wr to double
42  ret double %r
43; CHECK: test4
44; CHECK: fmul double
45; CHECK: ret
46}
47
48define double @test5(double %a, double %b) nounwind {
49  %wa = fpext double %a to x86_fp80
50  %wb = fpext double %b to x86_fp80
51  %wr = fdiv x86_fp80 %wa, %wb
52  %r = fptrunc x86_fp80 %wr to double
53  ret double %r
54; CHECK: test5
55; CHECK: fdiv x86_fp80
56; CHECK: ret
57}
58