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