llvm-6502/lib
Chandler Carruth a46e60eb2e [x86] Generalize BuildVectorSDNode::getConstantSplatValue to work for
any constant, constant FP, or undef splat and to tolerate any undef
lanes in a splat, then replace all uses of isSplatVector in X86's
lowering with it.

This fixes issues where undef lanes in an otherwise splat vector would
prevent the splat logic from firing. It is a touch more awkward to use
this interface, but it is much more accurate. Suggestions for better
interface structuring welcome.

With this fix, the code generated with the widening legalization
strategy for widen_cast-4.ll is *dramatically* improved as the special
lowering strategies for a v16i8 SRA kick in even though the high lanes
are undef.

We also get a slightly different choice for broadcasting an aligned
memory location, and use vpshufd instead of vbroadcastss. This looks
like a minor win for pipelining and domain crossing, but a minor loss
for the number of micro-ops. I suspect its a wash, but folks can easily
tweak the lowering if they want.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@212324 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-04 08:11:49 +00:00
..
Analysis InstSimplify: Fix a bug when INT_MIN is in a sdiv 2014-07-04 00:23:39 +00:00
AsmParser
Bitcode
CodeGen [x86] Generalize BuildVectorSDNode::getConstantSplatValue to work for 2014-07-04 08:11:49 +00:00
DebugInfo
ExecutionEngine ExecutionEngine::create(): fix interpreter fallback when JIT is unavailable 2014-07-01 03:18:49 +00:00
IR IR: cleanup Module::dropReferences 2014-07-03 16:12:55 +00:00
IRReader
LineEditor
Linker
LTO Fix prefix comparison from r212308 2014-07-04 02:01:54 +00:00
MC Invert the MC -> Object dependency. 2014-07-03 02:01:39 +00:00
Object Move createIRObjectFile to the IRObjectFile class and return the concrete type. 2014-07-03 23:03:50 +00:00
Option
ProfileData
Support Remove obsolete function TargetRegistry::getClosestTargetForJIT() 2014-07-01 10:47:13 +00:00
TableGen
Target [x86] Generalize BuildVectorSDNode::getConstantSplatValue to work for 2014-07-04 08:11:49 +00:00
Transforms Run interprocedural const prop before global optimizer 2014-07-03 19:28:15 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile