Skip to content
  1. Aug 17, 2012
  2. Aug 16, 2012
  3. Aug 14, 2012
    • Jim Grosbach's avatar
      Switch the fixed-length disassembler to be table-driven. · ecaef49f
      Jim Grosbach authored
      Refactor the TableGen'erated fixed length disassemblmer to use a
      table-driven state machine rather than a massive set of nested
      switch() statements.
      
      As a result, the ARM Disassembler (ARMDisassembler.cpp) builds much more
      quickly and generates a smaller end result. For a Release+Asserts build on
      a 16GB 3.4GHz i7 iMac w/ SSD:
      
      Time to compile at -O2 (averaged w/ hot caches):
        Previous: 35.5s
        New:       8.9s
      
      TEXT size:
        Previous: 447,251
        New:      297,661
      
      Builds in 25% of the time previously required and generates code 66% of
      the size.
      
      Execution time of the disassembler is only slightly slower (7% disassembling
      10 million ARM instructions, 19.6s vs 21.0s). The new implementation has
      not yet been tuned, however, so the performance should almost certainly
      be recoverable should it become a concern.
      
      llvm-svn: 161888
      ecaef49f
  4. Aug 10, 2012
  5. Aug 09, 2012
  6. Aug 07, 2012
  7. Aug 06, 2012
    • Jack Carter's avatar
      Mips relocations R_MIPS_HIGHER and R_MIPS_HIGHEST. · 84491abb
      Jack Carter authored
      These 2 relocations gain access to the 
      highest and the second highest 16 bits
      of a 64 bit object.
      
      R_MIPS_HIGHER %higher(A+S)
      The %higher(x) function is [ (((long long) x + 0x80008000LL) >> 32) & 0xffff ]. 
      
      R_MIPS_HIGHEST %highest(A+S)
      The %highest(x) function is [ (((long long) x + 0x800080008000LL) >> 48) & 0xffff ]. 
      
      llvm-svn: 161348
      84491abb
  8. Aug 04, 2012
  9. Aug 02, 2012
  10. Aug 01, 2012
  11. Jul 31, 2012
  12. Jul 27, 2012
  13. Jul 26, 2012
  14. Jul 25, 2012
  15. Jul 24, 2012
  16. Jul 23, 2012
  17. Jul 21, 2012
  18. Jul 18, 2012
    • Jack Carter's avatar
      Mips specific inline asm operand modifier 'M': · a62ba828
      Jack Carter authored
      Print the high order register of a double word register operand.
      
      In 32 bit mode, a 64 bit double word integer will be represented
      by 2 32 bit registers. This modifier causes the high order register
      to be used in the asm expression. It is useful if you are using 
      doubles in assembler and continue to control register to variable
      relationships.
      
      This patch also fixes a related bug in a previous patch:
      
          case 'D': // Second part of a double word register operand
          case 'L': // Low order register of a double word register operand
          case 'M': // High order register of a double word register operand
      
      I got 'D' and 'M' confused. The second part of a double word operand
      will only match 'M' for one of the endianesses. I had 'L' and 'D'
      be the opposite twins when 'L' and 'M' are.
      
      llvm-svn: 160429
      a62ba828
    • Akira Hatanaka's avatar
      Clean up Mips16InstrFormats.td and Mips16InstrInfo.td. · f640f040
      Akira Hatanaka authored
      Patch by Reed Kotler.
      
      llvm-svn: 160403
      f640f040
  19. Jul 16, 2012
    • Jack Carter's avatar
      Doubleword Shift Left Logical Plus 32 · f649043a
      Jack Carter authored
      Mips shift instructions DSLL, DSRL and DSRA are transformed into
      DSLL32, DSRL32 and DSRA32 respectively if the shift amount is between
      32 and 63
      
      Here is a description of DSLL:
      
      Purpose: Doubleword Shift Left Logical Plus 32
      To execute a left-shift of a doubleword by a fixed amount--32 to 63 bits
      
      Description: GPR[rd] <- GPR[rt] << (sa+32)
      
      The 64-bit doubleword contents of GPR rt are shifted left, inserting
       zeros into the emptied bits; the result is placed in
      GPR rd. The bit-shift amount in the range 0 to 31 is specified by sa.
      
      This patch implements the direct object output of these instructions.
      
      llvm-svn: 160277
      f649043a
Loading