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
    • Benjamin Kramer's avatar
      Put instruction names into an indexed string table on the side, removing a... · bf152d57
      Benjamin Kramer authored
      Put instruction names into an indexed string table on the side, removing a pointer from MCInstrDesc.
      
      Make them accessible through MCInstrInfo. They are only used for debugging purposes so this doesn't
      have an impact on performance. X86MCTargetDesc.o goes from 630K to 461K on x86_64.
      
      llvm-svn: 150245
      bf152d57
    • Andrew Trick's avatar
      comment grammar · 09fc1bb6
      Andrew Trick authored
      llvm-svn: 150233
      09fc1bb6
    • Andrew Trick's avatar
      RegAlloc superpass: includes phi elimination, coalescing, and scheduling. · d3f8fe81
      Andrew Trick authored
      Creates a configurable regalloc pipeline.
      
      Ensure specific llc options do what they say and nothing more: -reglloc=... has no effect other than selecting the allocator pass itself. This patch introduces a new umbrella flag, "-optimize-regalloc", to enable/disable the optimizing regalloc "superpass". This allows for example testing coalscing and scheduling under -O0 or vice-versa.
      
      When a CodeGen pass requires the MachineFunction to have a particular property, we need to explicitly define that property so it can be directly queried rather than naming a specific Pass. For example, to check for SSA, use MRI->isSSA, not addRequired<PHIElimination>.
      
      CodeGen transformation passes are never "required" as an analysis
      
      ProcessImplicitDefs does not require LiveVariables.
      
      We have a plan to massively simplify some of the early passes within the regalloc superpass.
      
      llvm-svn: 150226
      d3f8fe81
    • Andrew Trick's avatar
      whitespace · 9363b597
      Andrew Trick authored
      llvm-svn: 150225
      9363b597
    • Lang Hames's avatar
      Remove unused 'isAlias' parameter. · 351fc56a
      Lang Hames authored
      llvm-svn: 150224
      351fc56a
    • Jakob Stoklund Olesen's avatar
      Constrain the regmask search space for local live ranges. · 9ef50bd6
      Jakob Stoklund Olesen authored
      When checking a local live range for interference, restrict the binary
      search to the single block.
      
      llvm-svn: 150220
      9ef50bd6
    • Jakob Stoklund Olesen's avatar
      Cache basic block boundaries for faster RegMaskSlots access. · 25c4195e
      Jakob Stoklund Olesen authored
      Provide API to get a list of register mask slots and bits in a basic
      block.
      
      llvm-svn: 150219
      25c4195e
Loading