Skip to content
  • Chris Lattner's avatar
    Rewrite chain handling validation and input TokenFactor handling · b884fe86
    Chris Lattner authored
    stuff now that we don't care about emulating the old broken 
    behavior of the old isel.  This eliminates the 
    'CheckChainCompatible' check (along with IsChainCompatible) which
    did an incorrect and inefficient scan *up* the chain nodes which
    happened as the pattern was being formed and does the validation
    at the end in HandleMergeInputChains when it forms a structural 
    pattern.  This scans "down" the graph, which means that it is
    quickly bounded by nodes already selected.  This also handles
    token factors that get "trapped" in the dag.
    
    Removing the CheckChainCompatible nodes also shrinks the 
    generated tables by about 6K for X86 (down to 83K).
    
    There are two pieces remaining before I can nuke PreprocessRMW:
    1. I xfailed a test because we're now producing worse code in a 
       case that has nothing to do with the change: it turns out that
       our use of MorphNodeTo will leave dead nodes in the graph
       which (depending on how the graph is walked) end up causing
       bogus uses of chains and blocking matches.  This is really 
       bad for other reasons, so I'll fix this in a follow-up patch.
    
    2. CheckFoldableChainNode needs to be improved to handle the TF.
    
    llvm-svn: 97539
    b884fe86
Loading