Skip to content
  1. Jul 18, 2008
  2. Jul 17, 2008
    • Dan Gohman's avatar
      When printing MemOperand nodes, only use print() for · 7168de78
      Dan Gohman authored
      PseudoSourceValue values, which never have names. Use getName()
      for all other values, because we want to print just a short summary
      of the value, not the entire instruction.
      
      llvm-svn: 53738
      7168de78
    • Evan Cheng's avatar
    • Duncan Sands's avatar
      Use a legal type for elements of the vector_shuffle · 656b256a
      Duncan Sands authored
      mask.  These are just indices into the shuffled vector
      so their type is unrelated to the type of the
      shuffled elements (which is what was being used before).
      This fixes vec_shuffle-11.ll when using LegalizeTypes.
      What seems to have happened is that Dan's recent change
      r53687, which corrected the result type of the shuffle,
      somehow caused LegalizeTypes to notice that the mask
      operand was a BUILD_VECTOR with a legal type but elements
      of an illegal type (i64).  LegalizeTypes legalized this
      by introducing a new BUILD_VECTOR of i32 and bitcasting
      it to the old type.  But the mask operand is not supposed
      to be a bitcast but a straight BUILD_VECTOR of constants,
      causing a crash.
      
      llvm-svn: 53729
      656b256a
    • Dan Gohman's avatar
      Add a new function, ReplaceAllUsesOfValuesWith, which handles bulk · 17059681
      Dan Gohman authored
      replacement of multiple values. This is slightly more efficient
      than doing multiple ReplaceAllUsesOfValueWith calls, and theoretically
      could be optimized even further. However, an important property of this
      new function is that it handles the case where the source value set and
      destination value set overlap. This makes it feasible for isel to use
      SelectNodeTo in many very common cases, which is advantageous because
      SelectNodeTo avoids a temporary node and it doesn't require CSEMap
      updates for users of values that don't change position.
      
      Revamp MorphNodeTo, which is what does all the work of SelectNodeTo, to
      handle operand lists more efficiently, and to correctly handle a number
      of corner cases to which its new wider use exposes it.
      
      This commit also includes a change to the encoding of post-isel opcodes
      in SDNodes; now instead of being sandwiched between the target-independent
      pre-isel opcodes and the target-dependent pre-isel opcodes, post-isel
      opcodes are now represented as negative values. This makes it possible
      to test if an opcode is pre-isel or post-isel without having to know
      the size of the current target's post-isel instruction set.
      
      These changes speed up llc overall by 3% and reduce memory usage by 10%
      on the InstructionCombining.cpp testcase with -fast and -regalloc=local.
      
      llvm-svn: 53728
      17059681
    • Duncan Sands's avatar
      LegalizeTypes support for what seems to be the · 7e5edf1a
      Duncan Sands authored
      only missing ppc long double operations: FNEG
      and FP_EXTEND.
      
      llvm-svn: 53723
      7e5edf1a
    • Duncan Sands's avatar
      Turn LegalizeTypes back off again for the moment: · d9256a7c
      Duncan Sands authored
      it is breaking Darwin bootstrap due to missing
      functionality.
      
      llvm-svn: 53721
      d9256a7c
    • Duncan Sands's avatar
      Factorize some code for determining which libcall to use. · 77a3d05f
      Duncan Sands authored
      llvm-svn: 53713
      77a3d05f
  3. Jul 16, 2008
  4. Jul 15, 2008
  5. Jul 14, 2008
  6. Jul 12, 2008
  7. Jul 11, 2008
Loading