llvm-6502/lib
Andrew Trick a6a9ac5aa1 Fix the ExecutionDepsFix pass to handle AVX instructions.
This pass is needed to break false dependencies. Without it, unlucky
register assignment can result in wild (5x) swings in
performance. This pass was trying to handle AVX but not getting it
right. AVX doesn't have partial register defs, it has unused register
reads in which the high bits of a source operand are copied into the
unused bits of the dest.

Fixing this requires conservative liveness analysis. This is awkard
because the pass already has its own pseudo-liveness. However, proper
liveness is expensive, and we would like to use a generic utility to
compute it. The fix only invokes liveness on-demand. It is rare to
detect a case that needs undef-read dependence breaking, but when it
happens, it can be needed many times within a very large block.

I think the existing heuristic which uses a register window of 16 is
too conservative for loop-carried false dependencies. If the loop is a
reduction. The out-of-order engine may be able to execute several loop
iterations in parallel. However, I'll leave this tuning exercise for
next time.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192635 91177308-0d34-0410-b5e6-96231b3b80d8
2013-10-14 22:19:03 +00:00
..
Analysis Rename DataLayout variables TD -> DL 2013-10-03 19:50:01 +00:00
AsmParser Add a GlobalAlias::isValidLinkage to reduce code duplication. 2013-10-09 16:07:32 +00:00
Bitcode AutoUpgrade: upgrade from scalar TBAA format to struct-path aware TBAA format. 2013-09-28 00:22:27 +00:00
CodeGen Fix the ExecutionDepsFix pass to handle AVX instructions. 2013-10-14 22:19:03 +00:00
DebugInfo [DebugInfo] Further simplify DWARFDebugAranges public interface 2013-10-02 07:12:47 +00:00
ExecutionEngine Adding multiple object support to MCJIT EH frame handling 2013-10-11 21:25:48 +00:00
IR Debug Info: In DIBuilder, the context field of subprogram is updated to use 2013-10-10 18:40:01 +00:00
IRReader
Linker Add missing #include's to cctype when using isdigit/alpha/etc. 2013-10-12 00:55:57 +00:00
LTO Add a MCTargetStreamer interface. 2013-10-08 13:08:17 +00:00
MC MC: Don't assume incoming StringRef's are null terminated. 2013-10-13 22:09:26 +00:00
Object Add missing #include's to cctype when using isdigit/alpha/etc. 2013-10-12 00:55:57 +00:00
Option
Support Windows: Fix a typo in an assert 2013-10-14 01:17:32 +00:00
TableGen
Target Fix the ExecutionDepsFix pass to handle AVX instructions. 2013-10-14 22:19:03 +00:00
Transforms Remove lib/Transforms/Instrumentation/ProfilingUtils.* 2013-10-14 16:46:46 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile