1; RUN: llc < %s -march=ppc32 -fp-contract=fast | FileCheck %s 2 3define double @test_FMADD1(double %A, double %B, double %C) { 4 %D = fmul double %A, %B ; <double> [#uses=1] 5 %E = fadd double %D, %C ; <double> [#uses=1] 6 ret double %E 7; CHECK-LABEL: test_FMADD1: 8; CHECK: fmadd 9; CHECK-NEXT: blr 10} 11 12define double @test_FMADD2(double %A, double %B, double %C) { 13 %D = fmul double %A, %B ; <double> [#uses=1] 14 %E = fadd double %D, %C ; <double> [#uses=1] 15 ret double %E 16; CHECK-LABEL: test_FMADD2: 17; CHECK: fmadd 18; CHECK-NEXT: blr 19} 20 21define double @test_FMSUB(double %A, double %B, double %C) { 22 %D = fmul double %A, %B ; <double> [#uses=1] 23 %E = fsub double %D, %C ; <double> [#uses=1] 24 ret double %E 25; CHECK-LABEL: test_FMSUB: 26; CHECK: fmsub 27; CHECK-NEXT: blr 28} 29 30define double @test_FNMADD1(double %A, double %B, double %C) { 31 %D = fmul double %A, %B ; <double> [#uses=1] 32 %E = fadd double %D, %C ; <double> [#uses=1] 33 %F = fsub double -0.000000e+00, %E ; <double> [#uses=1] 34 ret double %F 35; CHECK-LABEL: test_FNMADD1: 36; CHECK: fnmadd 37; CHECK-NEXT: blr 38} 39 40define double @test_FNMADD2(double %A, double %B, double %C) { 41 %D = fmul double %A, %B ; <double> [#uses=1] 42 %E = fadd double %C, %D ; <double> [#uses=1] 43 %F = fsub double -0.000000e+00, %E ; <double> [#uses=1] 44 ret double %F 45; CHECK-LABEL: test_FNMADD2: 46; CHECK: fnmadd 47; CHECK-NEXT: blr 48} 49 50define double @test_FNMSUB1(double %A, double %B, double %C) { 51 %D = fmul double %A, %B ; <double> [#uses=1] 52 %E = fsub double %C, %D ; <double> [#uses=1] 53 ret double %E 54; CHECK-LABEL: test_FNMSUB1: 55; CHECK: fnmsub 56; CHECK-NEXT: blr 57} 58 59define double @test_FNMSUB2(double %A, double %B, double %C) { 60 %D = fmul double %A, %B ; <double> [#uses=1] 61 %E = fsub double %D, %C ; <double> [#uses=1] 62 %F = fsub double -0.000000e+00, %E ; <double> [#uses=1] 63 ret double %F 64; CHECK-LABEL: test_FNMSUB2: 65; CHECK: fnmsub 66; CHECK-NEXT: blr 67} 68 69define float @test_FNMSUBS(float %A, float %B, float %C) { 70 %D = fmul float %A, %B ; <float> [#uses=1] 71 %E = fsub float %D, %C ; <float> [#uses=1] 72 %F = fsub float -0.000000e+00, %E ; <float> [#uses=1] 73 ret float %F 74; CHECK-LABEL: test_FNMSUBS: 75; CHECK: fnmsubs 76; CHECK-NEXT: blr 77} 78