[AArch64][x86] add tests for pessimization of expression with X*2.0 (PR32939); NFC

llvm-svn: 368445
This commit is contained in:
Sanjay Patel 2019-08-09 14:52:31 +00:00
parent 19351b24ca
commit 69ab7a0e45
2 changed files with 58 additions and 0 deletions

View File

@ -164,5 +164,35 @@ define float @fadd_const_multiuse_attr(float %x) {
ret float %a3
}
; PR32939 - https://bugs.llvm.org/show_bug.cgi?id=32939
define double @fmul2_negated(double %a, double %b, double %c) {
; CHECK-LABEL: fmul2_negated:
; CHECK: // %bb.0:
; CHECK-NEXT: fmov d3, #-2.00000000
; CHECK-NEXT: fmul d1, d1, d3
; CHECK-NEXT: fmul d1, d1, d2
; CHECK-NEXT: fadd d0, d0, d1
; CHECK-NEXT: ret
%mul = fmul double %b, 2.0
%mul1 = fmul double %mul, %c
%sub = fsub double %a, %mul1
ret double %sub
}
define <2 x double> @fmul2_negated_vec(<2 x double> %a, <2 x double> %b, <2 x double> %c) {
; CHECK-LABEL: fmul2_negated_vec:
; CHECK: // %bb.0:
; CHECK-NEXT: fmov v3.2d, #-2.00000000
; CHECK-NEXT: fmul v1.2d, v1.2d, v3.2d
; CHECK-NEXT: fmul v1.2d, v1.2d, v2.2d
; CHECK-NEXT: fadd v0.2d, v0.2d, v1.2d
; CHECK-NEXT: ret
%mul = fmul <2 x double> %b, <double 2.0, double 2.0>
%mul1 = fmul <2 x double> %mul, %c
%sub = fsub <2 x double> %a, %mul1
ret <2 x double> %sub
}
declare void @use(double)

View File

@ -247,4 +247,32 @@ define float @fadd_const_multiuse_attr(float %x) #0 {
ret float %a3
}
; PR32939 - https://bugs.llvm.org/show_bug.cgi?id=32939
define double @fmul2_negated(double %a, double %b, double %c) {
; CHECK-LABEL: fmul2_negated:
; CHECK: # %bb.0:
; CHECK-NEXT: mulsd {{.*}}(%rip), %xmm1
; CHECK-NEXT: mulsd %xmm2, %xmm1
; CHECK-NEXT: addsd %xmm1, %xmm0
; CHECK-NEXT: retq
%mul = fmul double %b, 2.0
%mul1 = fmul double %mul, %c
%sub = fsub double %a, %mul1
ret double %sub
}
define <2 x double> @fmul2_negated_vec(<2 x double> %a, <2 x double> %b, <2 x double> %c) {
; CHECK-LABEL: fmul2_negated_vec:
; CHECK: # %bb.0:
; CHECK-NEXT: mulpd {{.*}}(%rip), %xmm1
; CHECK-NEXT: mulpd %xmm2, %xmm1
; CHECK-NEXT: addpd %xmm1, %xmm0
; CHECK-NEXT: retq
%mul = fmul <2 x double> %b, <double 2.0, double 2.0>
%mul1 = fmul <2 x double> %mul, %c
%sub = fsub <2 x double> %a, %mul1
ret <2 x double> %sub
}
attributes #0 = { "less-precise-fpmad"="true" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "unsafe-fp-math"="true" "no-signed-zeros-fp-math"="true" }