[X86][AVX] Missing AVX1 memory folding float instructions
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Mon, 19 Jan 2015 22:40:45 +0000 (22:40 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Mon, 19 Jan 2015 22:40:45 +0000 (22:40 +0000)
commit2a2f94c5f2bb3ead41a9c48cd8a9ba538b77433d
tree34e29044cf9de64446a3c5c4b04e7d8aaabc1a8c
parentfc19f3986dff77bb00735cc5a42e611e1a998003
[X86][AVX] Missing AVX1 memory folding float instructions

Now that we can create much more exhaustive X86 memory folding tests, this patch adds the missing AVX1/F16C floating point instruction stack foldings we can easily test for including the scalar intrinsics (add, div, max, min, mul, sub), conversions float/int to double, half precision conversions, rounding, dot product and bit test. The patch also adds a couple of obviously missing SSE instructions (more to follow once we have full SSE testing).

Now that scalar folding is working it broke a very old test (2006-10-07-ScalarSSEMiscompile.ll) - this test appears to make no sense as its trying to ensure that a scalar subtraction isn't folded as it 'would zero the top elts of the loaded vector' - this test just appears to be wrong to me.

Differential Revision: http://reviews.llvm.org/D7055

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@226513 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86InstrInfo.cpp
test/CodeGen/X86/2006-10-07-ScalarSSEMiscompile.ll [deleted file]
test/CodeGen/X86/avx1-stack-reload-folding.ll