Skip to content
  1. Aug 09, 2011
  2. Aug 08, 2011
  3. Aug 07, 2011
  4. Aug 06, 2011
  5. Aug 05, 2011
    • Jim Grosbach's avatar
      ARM indexed load assembly parsing and encoding. · c320c852
      Jim Grosbach authored
      More parsing support for indexed loads. Fix pre-indexed with writeback
      parsing for register offsets and handle basic post-indexed offsets.
      
      llvm-svn: 136982
      c320c852
    • Jakob Stoklund Olesen's avatar
      Detect proper register sub-classes. · 5122467b
      Jakob Stoklund Olesen authored
      Some instructions require restricted register classes, but most of the
      time that doesn't affect register allocation. For example, some
      instructions don't work with the stack pointer, but that is a reserved
      register anyway.
      
      Sometimes it matters, GR32_ABCD only has 4 allocatable registers. For
      such a proper sub-class, the register allocator should try to enable
      register class inflation since that makes more registers available for
      allocation.
      
      Make sure only legal super-classes are considered. For example, tGPR is
      not a proper sub-class in Thumb mode, but in ARM mode it is.
      
      llvm-svn: 136981
      5122467b
    • Jim Grosbach's avatar
      ARM refactor indexed store instructions. · f0c95cad
      Jim Grosbach authored
      Refactor STR[B] pre and post indexed instructions to use addressing modes for
      memory operands, which is necessary for assembly parsing and is more consistent
      with the rest of the memory instruction definitions. Make some incremental
      progress on refactoring away the mega-operand addrmode2 along the way, which
      is nice.
      
      llvm-svn: 136978
      f0c95cad
    • Jim Grosbach's avatar
      Add ARM LDR parsing tests. · 0f2dd284
      Jim Grosbach authored
      llvm-svn: 136977
      0f2dd284
    • Jakob Stoklund Olesen's avatar
      Fix liveness computations in BranchFolding. · d633abeb
      Jakob Stoklund Olesen authored
      The old code would look at kills and defs in one pass over the
      instruction operands, causing problems with this code:
      
        %R0<def>, %CPSR<def,dead> = tLSLri %R5<kill>, 2, pred:14, pred:%noreg
        %R0<def>, %CPSR<def,dead> = tADDrr %R4<kill>, %R0<kill>, pred:14, %pred:%noreg
      
      The last instruction kills and redefines %R0, so it is still live after
      the instruction.
      
      This caused a register scavenger crash when compiling 483.xalancbmk for
      armv6. I am not including a test case because it requires too much bad
      luck to expose this old bug.
      
      First you need to convince the register allocator to use %R0 twice on
      the tADDrr instruction, then you have to convince BranchFolding to do
      something that causes it to run the register scavenger on he bad block.
      
      <rdar://problem/9898200>
      
      llvm-svn: 136973
      d633abeb
    • Jim Grosbach's avatar
      ARM simplify the postidx_reg operand encoding. · a70fbfd5
      Jim Grosbach authored
      The immediate portion of the operand is just a boolean (the 'U' bit indicating
      add vs. subtract). Treat it as such.
      
      llvm-svn: 136969
      a70fbfd5
    • Jim Grosbach's avatar
      ARM use a dedicated printer for postidx_reg operands. · bafce840
      Jim Grosbach authored
      llvm-svn: 136968
      bafce840
    • Bob Wilson's avatar
    • Chandler Carruth's avatar
      Silence unused variable warnings in release builds. · 2536b51a
      Chandler Carruth authored
      llvm-svn: 136956
      2536b51a
Loading