Skip to content
  1. Sep 03, 2010
  2. Mar 01, 2010
  3. Jul 03, 2009
  4. Feb 18, 2009
  5. May 31, 2008
    • Dan Gohman's avatar
      Teach the DAGISelEmitter to not compute the variable_ops operand · bd3390c7
      Dan Gohman authored
      index for the input pattern in terms of the output pattern. Instead
      keep track of how many fixed operands the input pattern actually
      has, and have the input matching code pass the output-emitting
      function that index value. This simplifies the code, disentangles
      variables_ops from the support for predication operations, and
      makes variable_ops more robust.
      
      llvm-svn: 51808
      bd3390c7
  6. Apr 03, 2008
    • Dan Gohman's avatar
      Move instruction flag inference out of InstrInfoEmitter and into · fc4ad7de
      Dan Gohman authored
      CodeGenDAGPatterns, where it can be used in other tablegen backends.
      This allows the inference to be done for DAGISelEmitter so that it
      gets accurate mayLoad/mayStore/isSimpleLoad flags. 
      
      This brings MemOperand functionality back to where it was before
      48329. However, it doesn't solve the problem of anonymous patterns
      which expand to code that does loads or stores.
      
      llvm-svn: 49123
      fc4ad7de
  7. Jan 06, 2008
  8. Jan 05, 2008
  9. Dec 29, 2007
  10. Sep 13, 2007
    • Evan Cheng's avatar
      Initial support for multi-result patterns: · 59c39dc1
      Evan Cheng authored
      1.
      [(set GR32:$dst, (add GR32:$src1, GR32:$src2)),
       (modify EFLAGS)]
      This indicates the source pattern expects the instruction would produce 2 values. The first is the result of the addition. The second is an implicit definition in register EFLAGS.
      2.
      def : Pat<(parallel (addc GR32:$src1, GR32:$src2), (modify EFLAGS)), ()>
      Similar to #1 except this is used for def : Pat patterns.
      
      llvm-svn: 41897
      59c39dc1
  11. Jul 06, 2007
  12. Nov 04, 2006
  13. Oct 11, 2006
  14. Aug 26, 2006
    • Evan Cheng's avatar
      A bit more clean up. · eaf9fba2
      Evan Cheng authored
      llvm-svn: 29893
      eaf9fba2
    • Evan Cheng's avatar
      - Clean up tablegen dag isel generator code. · 548bd0dc
      Evan Cheng authored
      - Clean up the code generated by tablegen:
        * AddToISelQueue now takes one argument.
        * ComplexPattern matching condition can now be shared.
        * Eliminate passing unnecessary arguments to emit routines.
        * Eliminate some unneeded SDOperand declarations in select routines.
        * Other minor clean ups.
      - This reduces foot print slightly: X86ISelDAGToDAG.o is reduced from 971k
        to 823k.
      
      llvm-svn: 29892
      548bd0dc
  15. Aug 08, 2006
  16. Jul 16, 2006
  17. Jul 15, 2006
    • Evan Cheng's avatar
      Reduce instruction selection code size and stack frame size by factoring · 69367fed
      Evan Cheng authored
      code that emit target specific nodes into emit functions that are uniquified
      and shared among selection routines.
      e.g. This reduces X86ISelDAGToDAG.o (release) from ~2M to ~1.5M. Stack frame
      size of Select_store from ~13k down to ~8k.
      This is the first step. Further work to enable more sharing will follow.
      
      llvm-svn: 29158
      69367fed
  18. May 17, 2006
  19. Apr 19, 2006
  20. Mar 25, 2006
    • Chris Lattner's avatar
      Change approach so that we get codegen for free for intrinsics. With this, · c8565ed6
      Chris Lattner authored
      intrinsics that don't take pointer arguments now work.  For example, we can
      compile this:
      
      int test3( __m128d *A) {
        return _mm_movemask_pd(*A);
      }
      int test4( __m128 *A) {
        return _mm_movemask_ps(*A);
      }
      
      to this:
      
      _test3:
              movl 4(%esp), %eax
              movapd (%eax), %xmm0
              movmskpd %xmm0, %eax
              ret
      _test4:
              movl 4(%esp), %eax
              movaps (%eax), %xmm0
              movmskps %xmm0, %eax
              ret
      
      llvm-svn: 27090
      c8565ed6
  21. Mar 24, 2006
  22. Mar 20, 2006
  23. Feb 09, 2006
  24. Feb 07, 2006
  25. Feb 05, 2006
    • Evan Cheng's avatar
      Allow more loads to be folded which were previously prevented from happening · 368f20e5
      Evan Cheng authored
      due to ordering issue. i.e. they were selected for chain use first.
      Now at load select time, check if it is being selected for a chain use and if
      it has only a single real use. If so, return a HANDLENODE (with the load as
      its operand) in its place and record it.
      When it is folded or the load is selected for a real use, the isel records it
      as the replacement for the HANDLENODE. The replacement is done when all nodes
      are selected.
      This scheme exposed a couple of problems where cycles can happen. (See comments
      in EmitMatchCode() for descriptions of the problems and their workaround /
      solutions.) These problems have been resolved with a small compile time
      penality.
      
      llvm-svn: 25995
      368f20e5
  26. Jan 29, 2006
  27. Jan 27, 2006
  28. Jan 17, 2006
  29. Jan 09, 2006
  30. Dec 30, 2005
  31. Dec 23, 2005
  32. Dec 22, 2005
Loading