1; RUN: llc < %s -march=ppc32 | \ 2; RUN: egrep {fn?madd|fn?msub} | count 8 3 4define double @test_FMADD1(double %A, double %B, double %C) { 5 %D = fmul double %A, %B ; <double> [#uses=1] 6 %E = fadd double %D, %C ; <double> [#uses=1] 7 ret double %E 8} 9 10define double @test_FMADD2(double %A, double %B, double %C) { 11 %D = fmul double %A, %B ; <double> [#uses=1] 12 %E = fadd double %D, %C ; <double> [#uses=1] 13 ret double %E 14} 15 16define double @test_FMSUB(double %A, double %B, double %C) { 17 %D = fmul double %A, %B ; <double> [#uses=1] 18 %E = fsub double %D, %C ; <double> [#uses=1] 19 ret double %E 20} 21 22define double @test_FNMADD1(double %A, double %B, double %C) { 23 %D = fmul double %A, %B ; <double> [#uses=1] 24 %E = fadd double %D, %C ; <double> [#uses=1] 25 %F = fsub double -0.000000e+00, %E ; <double> [#uses=1] 26 ret double %F 27} 28 29define double @test_FNMADD2(double %A, double %B, double %C) { 30 %D = fmul double %A, %B ; <double> [#uses=1] 31 %E = fadd double %C, %D ; <double> [#uses=1] 32 %F = fsub double -0.000000e+00, %E ; <double> [#uses=1] 33 ret double %F 34} 35 36define double @test_FNMSUB1(double %A, double %B, double %C) { 37 %D = fmul double %A, %B ; <double> [#uses=1] 38 %E = fsub double %C, %D ; <double> [#uses=1] 39 ret double %E 40} 41 42define double @test_FNMSUB2(double %A, double %B, double %C) { 43 %D = fmul double %A, %B ; <double> [#uses=1] 44 %E = fsub double %D, %C ; <double> [#uses=1] 45 %F = fsub double -0.000000e+00, %E ; <double> [#uses=1] 46 ret double %F 47} 48 49define float @test_FNMSUBS(float %A, float %B, float %C) { 50 %D = fmul float %A, %B ; <float> [#uses=1] 51 %E = fsub float %D, %C ; <float> [#uses=1] 52 %F = fsub float -0.000000e+00, %E ; <float> [#uses=1] 53 ret float %F 54} 55