46 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7 -mattr=+vsx -disable-ppc-vsx-fma-mutation=false | FileCheck %s3 4declare double @llvm.sqrt.f64(double)5 6; Test several VSX FMA mutation opportunities.7 8; This is reasonable transformation since it eliminates extra register copy.9define double @foo3_fmf(double %a) nounwind {10; CHECK-LABEL: foo3_fmf:11; CHECK: # %bb.0:12; CHECK-NEXT: xstsqrtdp 0, 113; CHECK-NEXT: bc 12, 2, .LBB0_214; CHECK-NEXT: # %bb.1:15; CHECK-NEXT: vspltisw 2, -316; CHECK-NEXT: xsrsqrtedp 0, 117; CHECK-NEXT: addis 3, 2, .LCPI0_0@toc@ha18; CHECK-NEXT: xvcvsxwdp 3, 3419; CHECK-NEXT: xsmuldp 2, 1, 020; CHECK-NEXT: fmr 4, 321; CHECK-NEXT: xsmaddadp 4, 2, 022; CHECK-NEXT: lfs 2, .LCPI0_0@toc@l(3)23; CHECK-NEXT: xsmuldp 0, 0, 224; CHECK-NEXT: xsmuldp 0, 0, 425; CHECK-NEXT: xsmuldp 1, 1, 026; CHECK-NEXT: xsmaddadp 3, 1, 027; CHECK-NEXT: xsmuldp 0, 1, 228; CHECK-NEXT: xsmuldp 1, 0, 329; CHECK-NEXT: blr30; CHECK-NEXT: .LBB0_2:31; CHECK-NEXT: xssqrtdp 1, 132; CHECK-NEXT: blr33 %r = call contract reassoc afn ninf double @llvm.sqrt.f64(double %a)34 ret double %r35}36 37define double @foo3_safe(double %a) nounwind {38; CHECK-LABEL: foo3_safe:39; CHECK: # %bb.0:40; CHECK-NEXT: xssqrtdp 1, 141; CHECK-NEXT: blr42 %r = call double @llvm.sqrt.f64(double %a)43 ret double %r44}45 46