1; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu < %s | FileCheck %s 2 3; Following test case checks: 4; a / D; b / D; c / D; 5; => 6; recip = 1.0 / D; a * recip; b * recip; c * recip; 7 8define void @three_fdiv_double(double %D, double %a, double %b, double %c) #0 { 9; CHECK-LABEL: three_fdiv_double: 10; CHECK: fdiv {{[0-9]}} 11; CHECK-NOT: fdiv 12; CHECK: fmul 13; CHECK: fmul 14; CHECK: fmul 15 %div = fdiv arcp double %a, %D 16 %div1 = fdiv arcp double %b, %D 17 %div2 = fdiv arcp double %c, %D 18 tail call void @foo_3d(double %div, double %div1, double %div2) 19 ret void 20} 21 22define void @two_fdiv_double(double %D, double %a, double %b) #0 { 23; CHECK-LABEL: two_fdiv_double: 24; CHECK: fdiv {{[0-9]}} 25; CHECK: fdiv {{[0-9]}} 26; CHECK-NOT: fmul 27 %div = fdiv arcp double %a, %D 28 %div1 = fdiv arcp double %b, %D 29 tail call void @foo_2d(double %div, double %div1) 30 ret void 31} 32 33declare void @foo_3d(double, double, double) 34declare void @foo_3_2xd(<2 x double>, <2 x double>, <2 x double>) 35declare void @foo_2d(double, double) 36