Skip to content
  1. Sep 06, 2011
    • Duncan Sands's avatar
      Add codegen support for vector select (in the IR this means a select · f2641e1b
      Duncan Sands authored
      with a vector condition); such selects become VSELECT codegen nodes.
      This patch also removes VSETCC codegen nodes, unifying them with SETCC
      nodes (codegen was actually often using SETCC for vector SETCC already).
      This ensures that various DAG combiner optimizations kick in for vector
      comparisons.  Passes dragonegg bootstrap with no testsuite regressions
      (nightly testsuite as well as "make check-all").  Patch mostly by
      Nadav Rotem.
      
      llvm-svn: 139159
      f2641e1b
    • Evan Cheng's avatar
      Fix fall outs from my recent change on how carry bit is modeled during isel. · 0b758ed6
      Evan Cheng authored
      Now the 'S' instructions, e.g. ADDS, treat S bit as optional operand as well.
      Also fix isel hook to correctly set the optional operand.
      rdar://10073745
      
      llvm-svn: 139157
      0b758ed6
    • Jim Grosbach's avatar
      ARM .code directive should always go to the streamer. · f471ac3c
      Jim Grosbach authored
      Even if there's no mode switch performed, the .code directive should still
      be sent to the output streamer. Otherwise, for example, an output asm stream
      is not equivalent to the input stream which generated it (a dependency on
      the input target triple arm vs. thumb is introduced which was not originally
      there).
      
      llvm-svn: 139155
      f471ac3c
    • Rafael Espindola's avatar
      Fix style issues and typos found by Duncan. · db5823dc
      Rafael Espindola authored
      llvm-svn: 139154
      db5823dc
    • Jakob Stoklund Olesen's avatar
      Atomic pseudos don't use (as in read) CPSR. They clobber it. · 50ef7611
      Jakob Stoklund Olesen authored
      llvm-svn: 139148
      50ef7611
    • Duncan Sands's avatar
      Split the init.trampoline intrinsic, which currently combines GCC's · a098436b
      Duncan Sands authored
      init.trampoline and adjust.trampoline intrinsics, into two intrinsics
      like in GCC.  While having one combined intrinsic is tempting, it is
      not natural because typically the trampoline initialization needs to
      be done in one function, and the result of adjust trampoline is needed
      in a different (nested) function.  To get around this llvm-gcc hacks the
      nested function lowering code to insert an additional parent variable
      holding the adjust.trampoline result that can be accessed from the child
      function.  Dragonegg doesn't have the luxury of tweaking GCC code, so it
      stored the result of adjust.trampoline in the memory GCC set aside for
      the trampoline itself (this is always available in the child function),
      and set up some new memory (using an alloca) to hold the trampoline.
      Unfortunately this breaks Go which allocates trampoline memory on the
      heap and wants to use it even after the parent has exited (!).  Rather
      than doing even more hacks to get Go working, it seemed best to just use
      two intrinsics like in GCC.  Patch mostly by Sanjoy Das.
      
      llvm-svn: 139140
      a098436b
  2. Sep 05, 2011
  3. Sep 03, 2011
  4. Sep 02, 2011
Loading