diff options
author | Sanjay Patel <spatel@rotateright.com> | 2014-09-05 22:26:22 +0000 |
---|---|---|
committer | Sanjay Patel <spatel@rotateright.com> | 2014-09-05 22:26:22 +0000 |
commit | 75cc90eddcb3012f839045c72e9eb5dffe698052 (patch) | |
tree | 7a18b6e1865569285cc12621c6bbf0268f33beaa /llvm/test/CodeGen/X86/vec_unsafe-fp-math.ll | |
parent | 47a8a83dc36c82cbb3b6054e14ea11551a661c04 (diff) | |
download | bcm5719-llvm-75cc90eddcb3012f839045c72e9eb5dffe698052.tar.gz bcm5719-llvm-75cc90eddcb3012f839045c72e9eb5dffe698052.zip |
Allow vector fsub ops with constants to get the same optimizations as scalars.
This problem is bigger than just fsub, but this is the minimum fix to solve
fneg for PR20556 ( http://llvm.org/bugs/show_bug.cgi?id=20556 ), and we solve
zero subtraction with the same change.
llvm-svn: 217286
Diffstat (limited to 'llvm/test/CodeGen/X86/vec_unsafe-fp-math.ll')
-rw-r--r-- | llvm/test/CodeGen/X86/vec_unsafe-fp-math.ll | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/X86/vec_unsafe-fp-math.ll b/llvm/test/CodeGen/X86/vec_unsafe-fp-math.ll new file mode 100644 index 00000000000..827d4184d11 --- /dev/null +++ b/llvm/test/CodeGen/X86/vec_unsafe-fp-math.ll @@ -0,0 +1,23 @@ +; RUN: llc < %s -enable-unsafe-fp-math -mtriple=x86_64-unknown-unknown -mcpu=corei7 | FileCheck %s + +; Make sure that vectors get the same benefits as scalars when using unsafe-fp-math. + +; Subtracting zero is free. +define <4 x float> @vec_fsub_zero(<4 x float> %x) { +; CHECK-LABEL: vec_fsub_zero: +; CHECK-NOT: subps +; CHECK-NOT: xorps +; CHECK: retq + %sub = fsub <4 x float> %x, zeroinitializer + ret <4 x float> %sub +} + +; Negating doesn't require subtraction. +define <4 x float> @vec_fneg(<4 x float> %x) { +; CHECK-LABEL: vec_fneg: +; CHECK: xorps {{.*}}LCP{{.*}}, %xmm0 +; CHECK-NOT: subps +; CHECK-NEXT: retq + %sub = fsub <4 x float> zeroinitializer, %x + ret <4 x float> %sub +} |