1. 27 Jun, 2017 1 commit
  2. 12 Jun, 2017 1 commit
  3. 09 Jun, 2017 4 commits
  4. 09 Jan, 2017 2 commits
    • Henrik Gramner's avatar
      x86inc: Avoid using eax/rax for storing the stack pointer · cd09e3b3
      Henrik Gramner authored
      When allocating stack space with an alignment requirement that is larger
      than the current stack alignment we need to store a copy of the original
      stack pointer in order to be able to restore it later.
      
      If we chose to use another register for this purpose we should not pick
      eax/rax since it can be overwritten as a return value.
      cd09e3b3
    • Henrik Gramner's avatar
      x86inc: Avoid using eax/rax for storing the stack pointer · 3cba1ad7
      Henrik Gramner authored
      When allocating stack space with an alignment requirement that is larger
      than the current stack alignment we need to store a copy of the original
      stack pointer in order to be able to restore it later.
      
      If we chose to use another register for this purpose we should not pick
      eax/rax since it can be overwritten as a return value.
      Signed-off-by: 's avatarAnton Khirnov <anton@khirnov.net>
      3cba1ad7
  5. 16 May, 2016 4 commits
  6. 20 Apr, 2016 4 commits
  7. 23 Jan, 2016 8 commits
  8. 21 Jan, 2016 7 commits
    • Geza Lore's avatar
      x86inc: Add debug symbols indicating sizes of compiled functions · d39c229e
      Geza Lore authored
      Some debuggers/profilers use this metadata to determine which function a
      given instruction is in; without it they get can confused by local labels
      (if you haven't stripped those). On the other hand, some tools are still
      confused even with this metadata. e.g. this fixes `gdb`, but not `perf`.
      
      Currently only implemented for ELF.
      d39c229e
    • Henrik Gramner's avatar
      x86inc: Avoid creating unnecessary local labels · d3662777
      Henrik Gramner authored
      The REP_RET workaround is only needed on old AMD cpus, and the labels clutter
      up the symbol table and confuse debugging/profiling tools, so use EQU to
      create SHN_ABS symbols instead of creating local labels. Furthermore, skip
      the workaround completely in functions that definitely won't run on such cpus.
      
      Note that EQU is just creating a local label when using nasm instead of yasm.
      This is probably a bug, but at least it doesn't break anything.
      d3662777
    • Henrik Gramner's avatar
      x86inc: Simplify AUTO_REP_RET · 87b587d4
      Henrik Gramner authored
      cpuflags is never undefined any more, it's set to 0 instead.
      
      Also fix an incorrect comment.
      87b587d4
    • Henrik Gramner's avatar
      x86inc: Use more consistent indentation · 2d60b18c
      Henrik Gramner authored
      2d60b18c
    • Henrik Gramner's avatar
      x86inc: Preserve arguments when allocating stack space · dfe771dc
      Henrik Gramner authored
      When allocating stack space with a larger alignment than the known stack
      alignment a temporary register is used for storing the stack pointer.
      Ensure that this isn't one of the registers used for passing arguments.
      dfe771dc
    • Henrik Gramner's avatar
      x86inc: Improve FMA instruction handling · b1496008
      Henrik Gramner authored
       * Correctly handle FMA instructions with memory operands.
       * Print a warning if FMA instructions are used without the correct cpuflag.
       * Simplify the instantiation code.
       * Clarify documentation.
      
      Only the last operand in FMA3 instructions can be a memory operand. When
      converting FMA4 instructions to FMA3 instructions we can utilize the fact
      that multiply is a commutative operation and reorder operands if necessary
      to ensure that a memory operand is used only as the last operand.
      b1496008
    • Henrik Gramner's avatar
      6cbd0fdf
  9. 28 Oct, 2015 1 commit
  10. 01 Oct, 2015 1 commit
  11. 13 Aug, 2015 1 commit
  12. 11 Aug, 2015 6 commits