Skip to content
  1. Feb 15, 2012
  2. Feb 14, 2012
  3. Feb 13, 2012
  4. Feb 12, 2012
    • Nadav Rotem's avatar
      · 34ca89af
      Nadav Rotem authored
      This patch addresses the problem of poor code generation for the zext
      v8i8 -> v8i32 on AVX machines. The codegen often scalarizes ANY_EXTEND nodes.
      The DAGCombiner has two optimizations that can mitigate the problem. First,
      if all of the operands of a BUILD_VECTOR node are extracted from an ZEXT/ANYEXT
      nodes, then it is possible to create a new simplified BUILD_VECTOR which uses
      UNDEFS/ZERO values to eliminate the scalar ZEXT/ANYEXT nodes.
      Second, another dag combine optimization lowers BUILD_VECTOR into a shuffle
      vector instruction.
      
      In the case of zext v8i8->v8i32 on AVX, a value in an XMM register is to be
      shuffled into a wide YMM register.
      
      This patch modifes the second optimization and allows the creation of
      shuffle vectors even when the newly generated vector and the original vector
      from which we extract the values are of different types.
      
      llvm-svn: 150340
      34ca89af
  5. Feb 11, 2012
  6. Feb 10, 2012
    • Jakob Stoklund Olesen's avatar
      Add a static MachineOperand::clobbersPhysReg(). · 024d7ae1
      Jakob Stoklund Olesen authored
      It can be necessary to detach a register mask pointer from its
      MachineOperand. This method is convenient for checking clobbered
      physregs on a detached bitmask pointer.
      
      llvm-svn: 150261
      024d7ae1
    • Jakob Stoklund Olesen's avatar
      Add register mask support to InterferenceCache. · a16ae597
      Jakob Stoklund Olesen authored
      This makes global live range splitting behave identically with and
      without register mask operands.
      
      This is not necessarily the best way of using register masks for live
      range splitting.  It would be more efficient to first split global live
      ranges around calls (i.e., register masks), and reserve the fine grained
      per-physreg interference guidance for global live ranges that do not
      cross calls.
      
      For now the goal is to produce identical assembly when enabling register
      masks.
      
      llvm-svn: 150259
      a16ae597
    • Jakob Stoklund Olesen's avatar
      Remove unused variable. · b7c1715d
      Jakob Stoklund Olesen authored
      llvm-svn: 150258
      b7c1715d
Loading