diff options
Diffstat (limited to 'llvm/test/CodeGen/X86/fsxor-alignment.ll')
| -rw-r--r-- | llvm/test/CodeGen/X86/fsxor-alignment.ll | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/X86/fsxor-alignment.ll b/llvm/test/CodeGen/X86/fsxor-alignment.ll new file mode 100644 index 00000000000..bb55e4466f8 --- /dev/null +++ b/llvm/test/CodeGen/X86/fsxor-alignment.ll @@ -0,0 +1,14 @@ +; RUN: llvm-as < %s | llc -march=x86 -mattr=+sse -enable-unsafe-fp-math | \ +; RUN: grep -v sp | grep xorps | wc -l | grep 2 + +; Don't fold the incoming stack arguments into the xorps instructions used +; to do floating-point negations, because the arguments aren't vectors +; and aren't vector-aligned. + +define void @foo(float* %p, float* %q, float %s, float %y) { + %ss = sub float -0.0, %s + %yy = sub float -0.0, %y + store float %ss, float* %p + store float %yy, float* %q + ret void +} |

