1. 18 Oct, 2016 1 commit
    • zhengxing.li's avatar
      [turbofan][X64] Movzxbl/Movsxbl/Movzxwl/Movsxwl also zero extend to 64bit. · 3145befb
      zhengxing.li authored
        movzxbl/movsxbl/movzxwl/movsxwl operations implicitly zero-extend to 64-bit on x64, So It's not necessary to generate a "movl" instruction to zero-extend.
      
        For example, movzxbl/movl instruction sequence occurs frequently in v8 interpreter bytecode handler.
        such as:
        kind = BYTECODE_HANDLER
        name = LdaSmi
        compiler = turbofan
        Instructions (size = 76)
        0x184870a3ce40 0 430fbe442601 movsxbl rax,[r14+r12*1+0x1]
        0x184870a3ce46 6 48c1e020 REX.W shlq rax, 32
        0x184870a3ce4a 10 498d5c2402 REX.W leaq rbx,[r12+0x2]
        0x184870a3ce4f 15 420fb61433 movzxbl rdx,[rbx+r14*1]
        0x184870a3ce54 20 8bd2 movl rdx,rdx          <---------------------- here is a redundant "movl"
        0x184870a3ce56 22 4883fa1e REX.W cmpq rdx,0x1e
        0x184870a3ce5a 26 0f8518000000 jnz 56 (0x184870a3ce78)
      
        This CL also referenced to CL #36038 (https://codereview.chromium.org/1950013003 ) for adding test cases.
      
      BUG=
      
      Review-Url: https://codereview.chromium.org/2427483002
      Cr-Commit-Position: refs/heads/master@{#40375}
      3145befb
  2. 18 Aug, 2016 1 commit
  3. 08 Aug, 2016 2 commits
  4. 05 Aug, 2016 2 commits
  5. 11 Dec, 2015 1 commit
  6. 10 Dec, 2015 1 commit
    • jarin's avatar
      [turbofan] Make MachineType a pair of enums. · bb2a830d
      jarin authored
      MachineType is now a class with two enum fields:
      - MachineRepresentation
      - MachineSemantic
      
      Both enums are usable on their own, and this change switches some places from using MachineType to use just MachineRepresentation. Most notably:
      - register allocator now uses just the representation.
      - Phi and Select nodes only refer to representations.
      
      Review URL: https://codereview.chromium.org/1513543003
      
      Cr-Commit-Position: refs/heads/master@{#32738}
      bb2a830d
  7. 29 Oct, 2015 1 commit
  8. 26 Oct, 2015 1 commit
    • rmcilroy's avatar
      [Interpreter] Add support for loading from / storing to outer context variables. · c0c214da
      rmcilroy authored
      Adds support for loading from and storing to outer context
      variables. Also adds support for declaring functions on contexts and
      locals. Finally, fixes a couple of issues with StaContextSlot where
      we weren't emitting the write barrier and therefore would crash in the
      GC.
      
      Also added code so that --print-bytecode will output the
      function name before the bytecodes, and replaces MachineType with StoreRepresentation in RawMachineAssembler::Store and updates tests.
      
      BUG=v8:4280
      LOG=N
      
      Review URL: https://codereview.chromium.org/1425633002
      
      Cr-Commit-Position: refs/heads/master@{#31584}
      c0c214da
  9. 11 Apr, 2015 1 commit
  10. 08 Apr, 2015 1 commit
  11. 07 Apr, 2015 1 commit
    • bmeurer's avatar
      [x64] Match -0 - x with sign bit flip. · a1b2c275
      bmeurer authored
      We can use xorps/xorpd on Intel CPUs to flip the sign bit. Ideally we'd
      use a RIP-relative 128-bit constant in the code object, as OCaml/GCC
      does, however that requires 128-bit alignment for code objects, which is
      not yet implemented. So for now we materialize the mask inline.
      
      R=dcarney@chromium.org
      
      Review URL: https://codereview.chromium.org/1046893002
      
      Cr-Commit-Position: refs/heads/master@{#27611}
      a1b2c275
  12. 30 Mar, 2015 1 commit
    • bmeurer's avatar
      [turbofan] Add backend support for float32 operations. · 8dad78cd
      bmeurer authored
      This adds the basics necessary to support float32 operations in TurboFan.
      The actual functionality required to detect safe float32 operations will
      be added based on this later. Therefore this does not affect production
      code except for some cleanup/refactoring.
      
      In detail, this patchset contains the following features:
      - Add support for float32 operations to arm, arm64, ia32 and x64
        backends.
      - Add float32 machine operators.
      - Add support for float32 constants to simplified lowering.
      - Handle float32 representation for phis in simplified lowering.
      
      In addition, contains the following (related) cleanups:
      - Fix/unify naming of backend instructions.
      - Use AVX comparisons when available.
      - Extend ArchOpcodeField to 9 bits (required for arm64).
      - Refactor some code duplication in instruction selectors.
      
      BUG=v8:3589
      LOG=n
      R=dcarney@chromium.org
      
      Review URL: https://codereview.chromium.org/1044793002
      
      Cr-Commit-Position: refs/heads/master@{#27509}
      8dad78cd
  13. 20 Mar, 2015 1 commit
  14. 09 Mar, 2015 1 commit
  15. 23 Feb, 2015 1 commit
  16. 19 Feb, 2015 1 commit
  17. 18 Feb, 2015 1 commit
  18. 05 Dec, 2014 1 commit
  19. 01 Dec, 2014 2 commits
  20. 24 Nov, 2014 1 commit
  21. 21 Nov, 2014 1 commit
  22. 20 Nov, 2014 1 commit
  23. 07 Nov, 2014 1 commit
  24. 05 Nov, 2014 1 commit
  25. 03 Nov, 2014 1 commit
  26. 31 Oct, 2014 1 commit
  27. 24 Oct, 2014 1 commit
  28. 14 Oct, 2014 1 commit
  29. 06 Oct, 2014 1 commit
  30. 01 Oct, 2014 2 commits