; CHECK-P7-NEXT: fmul 1, 1, 0
; CHECK-P7-NEXT: blr
; CHECK-P7-NEXT: .LBB20_2:
-; CHECK-P7-NEXT: addis 3, 2, .LCPI20_2@toc@ha
-; CHECK-P7-NEXT: lfs 1, .LCPI20_2@toc@l(3)
+; CHECK-P7-NEXT: fsqrt 1, 1
; CHECK-P7-NEXT: blr
;
; CHECK-P8-LABEL: foo3_fmf:
; CHECK-P8: # %bb.0:
; CHECK-P8-NEXT: xstsqrtdp 0, 1
-; CHECK-P8-NEXT: xxlxor 0, 0, 0
; CHECK-P8-NEXT: bc 12, 2, .LBB20_2
; CHECK-P8-NEXT: # %bb.1:
; CHECK-P8-NEXT: xsrsqrtedp 0, 1
; CHECK-P8-NEXT: xsmuldp 1, 1, 0
; CHECK-P8-NEXT: xsmaddadp 3, 1, 0
; CHECK-P8-NEXT: xsmuldp 0, 1, 4
-; CHECK-P8-NEXT: xsmuldp 0, 0, 3
+; CHECK-P8-NEXT: xsmuldp 1, 0, 3
+; CHECK-P8-NEXT: blr
; CHECK-P8-NEXT: .LBB20_2:
-; CHECK-P8-NEXT: fmr 1, 0
+; CHECK-P8-NEXT: xssqrtdp 1, 1
; CHECK-P8-NEXT: blr
;
; CHECK-P9-LABEL: foo3_fmf:
; CHECK-P9: # %bb.0:
; CHECK-P9-NEXT: xstsqrtdp 0, 1
-; CHECK-P9-NEXT: xxlxor 0, 0, 0
; CHECK-P9-NEXT: bc 12, 2, .LBB20_2
; CHECK-P9-NEXT: # %bb.1:
; CHECK-P9-NEXT: xsrsqrtedp 0, 1
; CHECK-P9-NEXT: xsmuldp 1, 1, 0
; CHECK-P9-NEXT: xsmaddadp 3, 1, 0
; CHECK-P9-NEXT: xsmuldp 0, 1, 2
-; CHECK-P9-NEXT: xsmuldp 0, 0, 3
+; CHECK-P9-NEXT: xsmuldp 1, 0, 3
+; CHECK-P9-NEXT: blr
; CHECK-P9-NEXT: .LBB20_2:
-; CHECK-P9-NEXT: fmr 1, 0
+; CHECK-P9-NEXT: xssqrtdp 1, 1
; CHECK-P9-NEXT: blr
%r = call reassoc ninf afn double @llvm.sqrt.f64(double %a)
ret double %r
define <2 x double> @hoo4_fmf(<2 x double> %a) #1 {
; CHECK-P7-LABEL: hoo4_fmf:
; CHECK-P7: # %bb.0:
-; CHECK-P7-NEXT: addis 3, 2, .LCPI26_2@toc@ha
; CHECK-P7-NEXT: ftsqrt 0, 1
-; CHECK-P7-NEXT: fmr 3, 1
-; CHECK-P7-NEXT: addis 4, 2, .LCPI26_0@toc@ha
-; CHECK-P7-NEXT: lfs 0, .LCPI26_2@toc@l(3)
-; CHECK-P7-NEXT: addis 3, 2, .LCPI26_1@toc@ha
-; CHECK-P7-NEXT: lfs 5, .LCPI26_0@toc@l(4)
-; CHECK-P7-NEXT: lfs 4, .LCPI26_1@toc@l(3)
-; CHECK-P7-NEXT: fmr 1, 0
-; CHECK-P7-NEXT: bc 4, 2, .LBB26_3
+; CHECK-P7-NEXT: addis 3, 2, .LCPI26_0@toc@ha
+; CHECK-P7-NEXT: addis 4, 2, .LCPI26_1@toc@ha
+; CHECK-P7-NEXT: lfs 3, .LCPI26_0@toc@l(3)
+; CHECK-P7-NEXT: lfs 0, .LCPI26_1@toc@l(4)
+; CHECK-P7-NEXT: bc 12, 2, .LBB26_3
; CHECK-P7-NEXT: # %bb.1:
+; CHECK-P7-NEXT: frsqrte 4, 1
+; CHECK-P7-NEXT: fmul 5, 1, 4
+; CHECK-P7-NEXT: fmadd 5, 5, 4, 3
+; CHECK-P7-NEXT: fmul 4, 4, 0
+; CHECK-P7-NEXT: fmul 4, 4, 5
+; CHECK-P7-NEXT: fmul 1, 1, 4
+; CHECK-P7-NEXT: fmadd 4, 1, 4, 3
+; CHECK-P7-NEXT: fmul 1, 1, 0
+; CHECK-P7-NEXT: fmul 1, 1, 4
; CHECK-P7-NEXT: ftsqrt 0, 2
; CHECK-P7-NEXT: bc 4, 2, .LBB26_4
; CHECK-P7-NEXT: .LBB26_2:
-; CHECK-P7-NEXT: fmr 2, 0
+; CHECK-P7-NEXT: fsqrt 2, 2
; CHECK-P7-NEXT: blr
; CHECK-P7-NEXT: .LBB26_3:
-; CHECK-P7-NEXT: frsqrte 1, 3
-; CHECK-P7-NEXT: fmul 6, 3, 1
-; CHECK-P7-NEXT: fmadd 6, 6, 1, 5
-; CHECK-P7-NEXT: fmul 1, 1, 4
-; CHECK-P7-NEXT: fmul 1, 1, 6
-; CHECK-P7-NEXT: fmul 3, 3, 1
-; CHECK-P7-NEXT: fmadd 1, 3, 1, 5
-; CHECK-P7-NEXT: fmul 3, 3, 4
-; CHECK-P7-NEXT: fmul 1, 3, 1
+; CHECK-P7-NEXT: fsqrt 1, 1
; CHECK-P7-NEXT: ftsqrt 0, 2
; CHECK-P7-NEXT: bc 12, 2, .LBB26_2
; CHECK-P7-NEXT: .LBB26_4:
-; CHECK-P7-NEXT: frsqrte 0, 2
-; CHECK-P7-NEXT: fmul 3, 2, 0
-; CHECK-P7-NEXT: fmadd 3, 3, 0, 5
-; CHECK-P7-NEXT: fmul 0, 0, 4
-; CHECK-P7-NEXT: fmul 0, 0, 3
-; CHECK-P7-NEXT: fmul 2, 2, 0
-; CHECK-P7-NEXT: fmadd 0, 2, 0, 5
+; CHECK-P7-NEXT: frsqrte 4, 2
+; CHECK-P7-NEXT: fmul 5, 2, 4
+; CHECK-P7-NEXT: fmadd 5, 5, 4, 3
+; CHECK-P7-NEXT: fmul 4, 4, 0
+; CHECK-P7-NEXT: fmul 4, 4, 5
; CHECK-P7-NEXT: fmul 2, 2, 4
+; CHECK-P7-NEXT: fmadd 3, 2, 4, 3
; CHECK-P7-NEXT: fmul 0, 2, 0
-; CHECK-P7-NEXT: fmr 2, 0
+; CHECK-P7-NEXT: fmul 2, 0, 3
; CHECK-P7-NEXT: blr
;
; CHECK-P8-LABEL: hoo4_fmf: