Skip to content
  1. Feb 04, 2012
  2. Feb 03, 2012
  3. Feb 02, 2012
    • Jakob Stoklund Olesen's avatar
      Add pseudo-registers for pairs, triples, and quads of D registers. · caed1c93
      Jakob Stoklund Olesen authored
      NEON loads and stores accept single and double spaced pairs, triples,
      and quads of D registers.  This patch adds new register classes to
      accurately model those constraints:
      
        Dn, Dn+1    Dn, Dn+2
        ----------------------
        DPair       DPairSpc
        DTriple     DTripleSpc
        DQuad       DQuadSpc
      
      Also extend the existing QQ and QQQQ register classes to contains all Q
      pairs and quads instead of just the aligned ones.
      
      These new register classes will make it possible to accurately model
      constraints on NEON loads and stores, and we can get rid of all the NEON
      pseudo-instructions.  The late scheduler will be able to accurately
      model instruction dependencies from the explicit operands.
      
      This more than doubles the number of ARM registers, but the backend
      passes are quite good at handling this. The llc -O0 compile time only
      regresses by 1.5%.  Future work on register mask operands will recover
      this regression.
      
      llvm-svn: 149640
      caed1c93
    • Benjamin Kramer's avatar
      BBVectorize: Simplify code, no functionality change. · f61f60d9
      Benjamin Kramer authored
      Also silences warnings about bodyless for loops.
      
      llvm-svn: 149612
      f61f60d9
Loading