1. 22 Apr, 2016 3 commits
    • epertoso's avatar
      [turbofan] Add the Verifier to the pipeline for code stubs. · 339000bf
      epertoso authored
      Removes some control edges added from the RawMachineAssembler to the end of the graph.
      Adds a parameter that tells the Verifier to ignore effect and control inputs.
      
      Review URL: https://codereview.chromium.org/1912853003
      
      Cr-Commit-Position: refs/heads/master@{#35731}
      339000bf
    • bmeurer's avatar
      [turbofan] Move more type checks to the representation selector. · 550c0f9f
      bmeurer authored
      Get rid of further typing checks from ChangeLowering and put them into
      the representation selection pass instead (encoding the information in
      the operator instead).
      
      Drive-by-change: Rename ChangeSmiToInt32 to ChangeTaggedSignedToInt32
      for consistency about naming Tagged, TaggedSigned and TaggedPointer.
      
      R=jarin@chromium.org
      
      Review URL: https://codereview.chromium.org/1909343002
      
      Cr-Commit-Position: refs/heads/master@{#35723}
      550c0f9f
    • bmeurer's avatar
      [turbofan] Optimize tagged conversion based on type. · 861295bf
      bmeurer authored
      If we have to convert a float64 value to tagged representation and we
      already know that the value is either in Signed31/Signed32 or
      Unsigned32 range, then we can just convert the float64 to word32 and
      use the fast word32 to tagged conversion. Doing this in
      ChangeLowering (or the effect linearization pass) would be unsound, as
      the types on the nodes are no longer usable.
      
      This removes all Type uses from effect linearization. There's still some
      work to be done for ChangeLowering tho.
      
      R=jarin@chromium.org
      
      Review URL: https://codereview.chromium.org/1908093002
      
      Cr-Commit-Position: refs/heads/master@{#35713}
      861295bf
  2. 21 Apr, 2016 1 commit
  3. 20 Apr, 2016 1 commit
    • bmeurer's avatar
      [turbofan] Remove phase ordering problem in JSToNumber lowering. · 95f0d4ed
      bmeurer authored
      Previously we had to run SimplifiedLowering, ChangeLowering and
      JSGenericLowering independently and exactly in this order to
      achieve great performance for the common case of JSToNumber (i.e.
      input is already a Smi or a HeapNumber). This phase ordering
      problem already causes trouble with not being able to run the
      generic lowering phase earlier, but also blocks proper plain
      primitive ToNumber optimizations. So this properly integrates
      JSToNumber into the truncation analysis and optimizes according
      to the truncation (either Word32 or Float64).
      
      R=jarin@chromium.org
      
      Review URL: https://codereview.chromium.org/1901803002
      
      Cr-Commit-Position: refs/heads/master@{#35643}
      95f0d4ed
  4. 18 Apr, 2016 2 commits
  5. 16 Apr, 2016 2 commits
  6. 15 Apr, 2016 1 commit
  7. 14 Apr, 2016 2 commits
  8. 12 Apr, 2016 2 commits
  9. 11 Apr, 2016 1 commit
  10. 02 Apr, 2016 3 commits
    • machenbach's avatar
      Revert of Turbofan: Add MachineOperators for SIMD. (patchset #1 id:1 of... · 8625c489
      machenbach authored
      Revert of Turbofan: Add MachineOperators for SIMD. (patchset #1 id:1 of https://codereview.chromium.org/1850383002/ )
      
      Reason for revert:
      The first revert did help after all. See comments on:
      https://codereview.chromium.org/1848433003/
      
      Original issue's description:
      > Reland of Turbofan: Add MachineOperators for SIMD. (patchset #1 id:1 of https://codereview.chromium.org/1850373002/ )
      >
      > Reason for revert:
      > Revert didn't help. Still we need to figure out what bothers the msan build.
      >
      > Original issue's description:
      > > Revert of Turbofan: Add MachineOperators for SIMD. (patchset #5 id:70001 of https://codereview.chromium.org/1848433003/ )
      > >
      > > Reason for revert:
      > > [Sheriff] Speculative revert. Compile now times out on msan:
      > > https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20arm64%20-%20sim%20-%20MSAN/builds/7705
      > >
      > > Original issue's description:
      > > > Turbofan: Add MachineOperators for SIMD.
      > > >
      > > > Takes the SIMD runtime intrinsics as a starting point for defining TF machine operators. The rationale for omitting functions is:
      > > >
      > > >  - UInt constructors. int and uint aren't distinguished in wasm.
      > > >  - Check functions.
      > > >  - 'FromXxxBits' functions. These are essentially casts.
      > > >  - Simple Load / Store functions. Existing load / store with SIMD type should work.
      > > >  - Uint functions, except where their behavior is bitwise different from the Int function.
      > > >
      > > > Skipped fns:
      > > >
      > > > Float32x4Check
      > > > Float32x4FromInt32x4Bits
      > > > Float32x4FromUint32x4Bits
      > > > Float32x4FromInt16x8Bits
      > > > Float32x4FromUint16x8Bits
      > > > Float32x4FromInt8x16Bits
      > > > Float32x4FromUint8x16Bits
      > > > Float32x4Load
      > > > Float32x4Store
      > > >
      > > > Int32x4Check
      > > > Int32x4FromUint32x4
      > > > Int32x4FromFloat32x4Bits
      > > > Int32x4FromUint32x4Bits
      > > > Int32x4FromInt16x8Bits
      > > > Int32x4FromUint16x8Bits
      > > > Int32x4FromInt8x16Bits
      > > > Int32x4FromUint8x16Bits
      > > > Int32x4Load
      > > > Int32x4Store
      > > >
      > > > CreateUint32x4
      > > > Uint32x4Check
      > > > Uint32x4ExtractLane
      > > > Uint32x4ReplaceLane
      > > > Uint32x4Add
      > > > Uint32x4Sub
      > > > Uint32x4Mul
      > > > Uint32x4And
      > > > Uint32x4Or
      > > > Uint32x4Xor
      > > > Uint32x4Not
      > > > Uint32x4Equal
      > > > Uint32x4NotEqual
      > > > Uint32x4Select
      > > > Uint32x4Swizzle
      > > > Uint32x4Shuffle
      > > > Uint32x4FromInt32x4
      > > > Uint32x4FromFloat32x4Bits
      > > > Uint32x4FromInt32x4Bits
      > > > Uint32x4FromInt16x8Bits
      > > > Uint32x4FromUint16x8Bits
      > > > Uint32x4FromInt8x16Bits
      > > > Uint32x4FromUint8x16Bits
      > > > Uint32x4Load
      > > > Uint32x4Load1
      > > > Uint32x4Load2
      > > > Uint32x4Load3
      > > > Uint32x4Store
      > > > Uint32x4Store1
      > > > Uint32x4Store2
      > > > Uint32x4Store3
      > > >
      > > > Bool32x4Check
      > > >
      > > > Int16x8Check
      > > > Int16x8FromUint16x8
      > > > Int16x8FromFloat32x4Bits
      > > > Int16x8FromInt32x4Bits
      > > > Int16x8FromUint32x4Bits
      > > > Int16x8FromUint16x8Bits
      > > > Int16x8FromInt8x16Bits
      > > > Int16x8FromUint8x16Bits
      > > > Int16x8Load
      > > > Int16x8Store
      > > >
      > > > CreateUint16x8
      > > > Uint16x8Check
      > > > Uint16x8ExtractLane
      > > > Uint16x8ReplaceLane
      > > > Uint16x8Add
      > > > Uint16x8Sub
      > > > Uint16x8Mul
      > > > Uint16x8And
      > > > Uint16x8Or
      > > > Uint16x8Xor
      > > > Uint16x8Not
      > > > Uint16x8Equal
      > > > Uint16x8NotEqual
      > > > Uint16x8Select
      > > > Uint16x8Swizzle
      > > > Uint16x8Shuffle
      > > > Uint16x8FromInt16x8
      > > > Uint16x8FromFloat32x4Bits
      > > > Uint16x8FromInt32x4Bits
      > > > Uint16x8FromUint32x4Bits
      > > > Uint16x8FromInt16x8Bits
      > > > Uint16x8FromInt8x16Bits
      > > > Uint16x8FromUint8x16Bits
      > > > Uint16x8Load
      > > > Uint16x8Store
      > > >
      > > > Bool16x8Check
      > > >
      > > > Int8x16Check
      > > > Int8x16FromUint8x16
      > > > Int8x16FromFloat32x4Bits
      > > > Int8x16FromInt32x4Bits
      > > > Int8x16FromUint32x4Bits
      > > > Int8x16FromInt16x8Bits
      > > > Int8x16FromUint16x8Bits
      > > > Int8x16FromUint8x16Bits
      > > > Int8x16Load
      > > > Int8x16Store
      > > >
      > > > CreateUint8x16
      > > > Uint8x16Check
      > > > Uint8x16ExtractLane
      > > > Uint8x16ReplaceLane
      > > > Uint8x16Add
      > > > Uint8x16Sub
      > > > Uint8x16Mul
      > > > Uint8x16And
      > > > Uint8x16Or
      > > > Uint8x16Xor
      > > > Uint8x16Not
      > > > Uint8x16Equal
      > > > Uint8x16NotEqual
      > > > Uint8x16Select
      > > > Uint8x16Swizzle
      > > > Uint8x16Shuffle
      > > > Uint8x16FromInt8x16
      > > > Uint8x16FromFloat32x4Bits
      > > > Uint8x16FromInt32x4Bits
      > > > Uint8x16FromUint32x4Bits
      > > > Uint8x16FromInt16x8Bits
      > > > Uint8x16FromUint16x8Bits
      > > > Uint8x16FromInt8x16Bits
      > > > Uint8x16Load
      > > > Uint8x16Store
      > > >
      > > > Bool8x16Check
      > > >
      > > > LOG=N
      > > > BUG=v8:4124
      > > >
      > > > Committed: https://crrev.com/3831d41e4ce7b162775732cb6ac1f8139e60aa30
      > > > Cr-Commit-Position: refs/heads/master@{#35213}
      > >
      > > TBR=bradnelson@chromium.org,gdeepti@chromium.org,titzer@chromium.org,mtrofin@chromium.org,bradnelson@google.com,bmeurer@chromium.org,bbudge@chromium.org
      > > # Skipping CQ checks because original CL landed less than 1 days ago.
      > > NOPRESUBMIT=true
      > > NOTREECHECKS=true
      > > NOTRY=true
      > > BUG=v8:4124
      > >
      > > Committed: https://crrev.com/8481ec6016992e0b9ffb70137e9ff8fcd4135bba
      > > Cr-Commit-Position: refs/heads/master@{#35220}
      >
      > TBR=bradnelson@chromium.org,gdeepti@chromium.org,titzer@chromium.org,mtrofin@chromium.org,bradnelson@google.com,bmeurer@chromium.org,bbudge@chromium.org
      > # Skipping CQ checks because original CL landed less than 1 days ago.
      > NOPRESUBMIT=true
      > NOTREECHECKS=true
      > NOTRY=true
      > BUG=v8:4124
      >
      > Committed: https://crrev.com/1f46e3ee8cec6b06b30b569e5688de095c4661ff
      > Cr-Commit-Position: refs/heads/master@{#35221}
      
      TBR=bradnelson@chromium.org,gdeepti@chromium.org,titzer@chromium.org,mtrofin@chromium.org,bradnelson@google.com,bmeurer@chromium.org,bbudge@chromium.org
      # Skipping CQ checks because original CL landed less than 1 days ago.
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=v8:4124
      
      Review URL: https://codereview.chromium.org/1846413002
      
      Cr-Commit-Position: refs/heads/master@{#35222}
      8625c489
    • machenbach's avatar
      Reland of Turbofan: Add MachineOperators for SIMD. (patchset #1 id:1 of... · 1f46e3ee
      machenbach authored
      Reland of Turbofan: Add MachineOperators for SIMD. (patchset #1 id:1 of https://codereview.chromium.org/1850373002/ )
      
      Reason for revert:
      Revert didn't help. Still we need to figure out what bothers the msan build.
      
      Original issue's description:
      > Revert of Turbofan: Add MachineOperators for SIMD. (patchset #5 id:70001 of https://codereview.chromium.org/1848433003/ )
      >
      > Reason for revert:
      > [Sheriff] Speculative revert. Compile now times out on msan:
      > https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20arm64%20-%20sim%20-%20MSAN/builds/7705
      >
      > Original issue's description:
      > > Turbofan: Add MachineOperators for SIMD.
      > >
      > > Takes the SIMD runtime intrinsics as a starting point for defining TF machine operators. The rationale for omitting functions is:
      > >
      > >  - UInt constructors. int and uint aren't distinguished in wasm.
      > >  - Check functions.
      > >  - 'FromXxxBits' functions. These are essentially casts.
      > >  - Simple Load / Store functions. Existing load / store with SIMD type should work.
      > >  - Uint functions, except where their behavior is bitwise different from the Int function.
      > >
      > > Skipped fns:
      > >
      > > Float32x4Check
      > > Float32x4FromInt32x4Bits
      > > Float32x4FromUint32x4Bits
      > > Float32x4FromInt16x8Bits
      > > Float32x4FromUint16x8Bits
      > > Float32x4FromInt8x16Bits
      > > Float32x4FromUint8x16Bits
      > > Float32x4Load
      > > Float32x4Store
      > >
      > > Int32x4Check
      > > Int32x4FromUint32x4
      > > Int32x4FromFloat32x4Bits
      > > Int32x4FromUint32x4Bits
      > > Int32x4FromInt16x8Bits
      > > Int32x4FromUint16x8Bits
      > > Int32x4FromInt8x16Bits
      > > Int32x4FromUint8x16Bits
      > > Int32x4Load
      > > Int32x4Store
      > >
      > > CreateUint32x4
      > > Uint32x4Check
      > > Uint32x4ExtractLane
      > > Uint32x4ReplaceLane
      > > Uint32x4Add
      > > Uint32x4Sub
      > > Uint32x4Mul
      > > Uint32x4And
      > > Uint32x4Or
      > > Uint32x4Xor
      > > Uint32x4Not
      > > Uint32x4Equal
      > > Uint32x4NotEqual
      > > Uint32x4Select
      > > Uint32x4Swizzle
      > > Uint32x4Shuffle
      > > Uint32x4FromInt32x4
      > > Uint32x4FromFloat32x4Bits
      > > Uint32x4FromInt32x4Bits
      > > Uint32x4FromInt16x8Bits
      > > Uint32x4FromUint16x8Bits
      > > Uint32x4FromInt8x16Bits
      > > Uint32x4FromUint8x16Bits
      > > Uint32x4Load
      > > Uint32x4Load1
      > > Uint32x4Load2
      > > Uint32x4Load3
      > > Uint32x4Store
      > > Uint32x4Store1
      > > Uint32x4Store2
      > > Uint32x4Store3
      > >
      > > Bool32x4Check
      > >
      > > Int16x8Check
      > > Int16x8FromUint16x8
      > > Int16x8FromFloat32x4Bits
      > > Int16x8FromInt32x4Bits
      > > Int16x8FromUint32x4Bits
      > > Int16x8FromUint16x8Bits
      > > Int16x8FromInt8x16Bits
      > > Int16x8FromUint8x16Bits
      > > Int16x8Load
      > > Int16x8Store
      > >
      > > CreateUint16x8
      > > Uint16x8Check
      > > Uint16x8ExtractLane
      > > Uint16x8ReplaceLane
      > > Uint16x8Add
      > > Uint16x8Sub
      > > Uint16x8Mul
      > > Uint16x8And
      > > Uint16x8Or
      > > Uint16x8Xor
      > > Uint16x8Not
      > > Uint16x8Equal
      > > Uint16x8NotEqual
      > > Uint16x8Select
      > > Uint16x8Swizzle
      > > Uint16x8Shuffle
      > > Uint16x8FromInt16x8
      > > Uint16x8FromFloat32x4Bits
      > > Uint16x8FromInt32x4Bits
      > > Uint16x8FromUint32x4Bits
      > > Uint16x8FromInt16x8Bits
      > > Uint16x8FromInt8x16Bits
      > > Uint16x8FromUint8x16Bits
      > > Uint16x8Load
      > > Uint16x8Store
      > >
      > > Bool16x8Check
      > >
      > > Int8x16Check
      > > Int8x16FromUint8x16
      > > Int8x16FromFloat32x4Bits
      > > Int8x16FromInt32x4Bits
      > > Int8x16FromUint32x4Bits
      > > Int8x16FromInt16x8Bits
      > > Int8x16FromUint16x8Bits
      > > Int8x16FromUint8x16Bits
      > > Int8x16Load
      > > Int8x16Store
      > >
      > > CreateUint8x16
      > > Uint8x16Check
      > > Uint8x16ExtractLane
      > > Uint8x16ReplaceLane
      > > Uint8x16Add
      > > Uint8x16Sub
      > > Uint8x16Mul
      > > Uint8x16And
      > > Uint8x16Or
      > > Uint8x16Xor
      > > Uint8x16Not
      > > Uint8x16Equal
      > > Uint8x16NotEqual
      > > Uint8x16Select
      > > Uint8x16Swizzle
      > > Uint8x16Shuffle
      > > Uint8x16FromInt8x16
      > > Uint8x16FromFloat32x4Bits
      > > Uint8x16FromInt32x4Bits
      > > Uint8x16FromUint32x4Bits
      > > Uint8x16FromInt16x8Bits
      > > Uint8x16FromUint16x8Bits
      > > Uint8x16FromInt8x16Bits
      > > Uint8x16Load
      > > Uint8x16Store
      > >
      > > Bool8x16Check
      > >
      > > LOG=N
      > > BUG=v8:4124
      > >
      > > Committed: https://crrev.com/3831d41e4ce7b162775732cb6ac1f8139e60aa30
      > > Cr-Commit-Position: refs/heads/master@{#35213}
      >
      > TBR=bradnelson@chromium.org,gdeepti@chromium.org,titzer@chromium.org,mtrofin@chromium.org,bradnelson@google.com,bmeurer@chromium.org,bbudge@chromium.org
      > # Skipping CQ checks because original CL landed less than 1 days ago.
      > NOPRESUBMIT=true
      > NOTREECHECKS=true
      > NOTRY=true
      > BUG=v8:4124
      >
      > Committed: https://crrev.com/8481ec6016992e0b9ffb70137e9ff8fcd4135bba
      > Cr-Commit-Position: refs/heads/master@{#35220}
      
      TBR=bradnelson@chromium.org,gdeepti@chromium.org,titzer@chromium.org,mtrofin@chromium.org,bradnelson@google.com,bmeurer@chromium.org,bbudge@chromium.org
      # Skipping CQ checks because original CL landed less than 1 days ago.
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=v8:4124
      
      Review URL: https://codereview.chromium.org/1850383002
      
      Cr-Commit-Position: refs/heads/master@{#35221}
      1f46e3ee
    • machenbach's avatar
      Revert of Turbofan: Add MachineOperators for SIMD. (patchset #5 id:70001 of... · 8481ec60
      machenbach authored
      Revert of Turbofan: Add MachineOperators for SIMD. (patchset #5 id:70001 of https://codereview.chromium.org/1848433003/ )
      
      Reason for revert:
      [Sheriff] Speculative revert. Compile now times out on msan:
      https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20arm64%20-%20sim%20-%20MSAN/builds/7705
      
      Original issue's description:
      > Turbofan: Add MachineOperators for SIMD.
      >
      > Takes the SIMD runtime intrinsics as a starting point for defining TF machine operators. The rationale for omitting functions is:
      >
      >  - UInt constructors. int and uint aren't distinguished in wasm.
      >  - Check functions.
      >  - 'FromXxxBits' functions. These are essentially casts.
      >  - Simple Load / Store functions. Existing load / store with SIMD type should work.
      >  - Uint functions, except where their behavior is bitwise different from the Int function.
      >
      > Skipped fns:
      >
      > Float32x4Check
      > Float32x4FromInt32x4Bits
      > Float32x4FromUint32x4Bits
      > Float32x4FromInt16x8Bits
      > Float32x4FromUint16x8Bits
      > Float32x4FromInt8x16Bits
      > Float32x4FromUint8x16Bits
      > Float32x4Load
      > Float32x4Store
      >
      > Int32x4Check
      > Int32x4FromUint32x4
      > Int32x4FromFloat32x4Bits
      > Int32x4FromUint32x4Bits
      > Int32x4FromInt16x8Bits
      > Int32x4FromUint16x8Bits
      > Int32x4FromInt8x16Bits
      > Int32x4FromUint8x16Bits
      > Int32x4Load
      > Int32x4Store
      >
      > CreateUint32x4
      > Uint32x4Check
      > Uint32x4ExtractLane
      > Uint32x4ReplaceLane
      > Uint32x4Add
      > Uint32x4Sub
      > Uint32x4Mul
      > Uint32x4And
      > Uint32x4Or
      > Uint32x4Xor
      > Uint32x4Not
      > Uint32x4Equal
      > Uint32x4NotEqual
      > Uint32x4Select
      > Uint32x4Swizzle
      > Uint32x4Shuffle
      > Uint32x4FromInt32x4
      > Uint32x4FromFloat32x4Bits
      > Uint32x4FromInt32x4Bits
      > Uint32x4FromInt16x8Bits
      > Uint32x4FromUint16x8Bits
      > Uint32x4FromInt8x16Bits
      > Uint32x4FromUint8x16Bits
      > Uint32x4Load
      > Uint32x4Load1
      > Uint32x4Load2
      > Uint32x4Load3
      > Uint32x4Store
      > Uint32x4Store1
      > Uint32x4Store2
      > Uint32x4Store3
      >
      > Bool32x4Check
      >
      > Int16x8Check
      > Int16x8FromUint16x8
      > Int16x8FromFloat32x4Bits
      > Int16x8FromInt32x4Bits
      > Int16x8FromUint32x4Bits
      > Int16x8FromUint16x8Bits
      > Int16x8FromInt8x16Bits
      > Int16x8FromUint8x16Bits
      > Int16x8Load
      > Int16x8Store
      >
      > CreateUint16x8
      > Uint16x8Check
      > Uint16x8ExtractLane
      > Uint16x8ReplaceLane
      > Uint16x8Add
      > Uint16x8Sub
      > Uint16x8Mul
      > Uint16x8And
      > Uint16x8Or
      > Uint16x8Xor
      > Uint16x8Not
      > Uint16x8Equal
      > Uint16x8NotEqual
      > Uint16x8Select
      > Uint16x8Swizzle
      > Uint16x8Shuffle
      > Uint16x8FromInt16x8
      > Uint16x8FromFloat32x4Bits
      > Uint16x8FromInt32x4Bits
      > Uint16x8FromUint32x4Bits
      > Uint16x8FromInt16x8Bits
      > Uint16x8FromInt8x16Bits
      > Uint16x8FromUint8x16Bits
      > Uint16x8Load
      > Uint16x8Store
      >
      > Bool16x8Check
      >
      > Int8x16Check
      > Int8x16FromUint8x16
      > Int8x16FromFloat32x4Bits
      > Int8x16FromInt32x4Bits
      > Int8x16FromUint32x4Bits
      > Int8x16FromInt16x8Bits
      > Int8x16FromUint16x8Bits
      > Int8x16FromUint8x16Bits
      > Int8x16Load
      > Int8x16Store
      >
      > CreateUint8x16
      > Uint8x16Check
      > Uint8x16ExtractLane
      > Uint8x16ReplaceLane
      > Uint8x16Add
      > Uint8x16Sub
      > Uint8x16Mul
      > Uint8x16And
      > Uint8x16Or
      > Uint8x16Xor
      > Uint8x16Not
      > Uint8x16Equal
      > Uint8x16NotEqual
      > Uint8x16Select
      > Uint8x16Swizzle
      > Uint8x16Shuffle
      > Uint8x16FromInt8x16
      > Uint8x16FromFloat32x4Bits
      > Uint8x16FromInt32x4Bits
      > Uint8x16FromUint32x4Bits
      > Uint8x16FromInt16x8Bits
      > Uint8x16FromUint16x8Bits
      > Uint8x16FromInt8x16Bits
      > Uint8x16Load
      > Uint8x16Store
      >
      > Bool8x16Check
      >
      > LOG=N
      > BUG=v8:4124
      >
      > Committed: https://crrev.com/3831d41e4ce7b162775732cb6ac1f8139e60aa30
      > Cr-Commit-Position: refs/heads/master@{#35213}
      
      TBR=bradnelson@chromium.org,gdeepti@chromium.org,titzer@chromium.org,mtrofin@chromium.org,bradnelson@google.com,bmeurer@chromium.org,bbudge@chromium.org
      # Skipping CQ checks because original CL landed less than 1 days ago.
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=v8:4124
      
      Review URL: https://codereview.chromium.org/1850373002
      
      Cr-Commit-Position: refs/heads/master@{#35220}
      8481ec60
  11. 01 Apr, 2016 6 commits
    • bbudge's avatar
      Turbofan: Add MachineOperators for SIMD. · 3831d41e
      bbudge authored
      IMPORTANT NOTE: This will likely be macroized to reduce boilerplate. Publishing now to start discussion about approach, which ops are needed, etc. Omitted functions are commented out in machine-operator.h so start there.
      
      Takes the SIMD runtime intrinsics as a starting point for defining TF machine operators. The rationale for omitting functions is:
      
       - UInt constructors. int and uint aren't distinguished in wasm.
       - Check functions.
       - 'FromXxxBits' functions. These are essentially casts.
       - Simple Load / Store functions. Existing load / store with SIMD type should work.
       - Uint functions, except where their behavior is bitwise different from the Int function.
      
      Skipped fns:
      
      Float32x4Check
      Float32x4FromInt32x4Bits
      Float32x4FromUint32x4Bits
      Float32x4FromInt16x8Bits
      Float32x4FromUint16x8Bits
      Float32x4FromInt8x16Bits
      Float32x4FromUint8x16Bits
      Float32x4Load
      Float32x4Store
      
      Int32x4Check
      Int32x4FromUint32x4
      Int32x4FromFloat32x4Bits
      Int32x4FromUint32x4Bits
      Int32x4FromInt16x8Bits
      Int32x4FromUint16x8Bits
      Int32x4FromInt8x16Bits
      Int32x4FromUint8x16Bits
      Int32x4Load
      Int32x4Store
      
      CreateUint32x4
      Uint32x4Check
      Uint32x4ExtractLane
      Uint32x4ReplaceLane
      Uint32x4Add
      Uint32x4Sub
      Uint32x4Mul
      Uint32x4And
      Uint32x4Or
      Uint32x4Xor
      Uint32x4Not
      Uint32x4Equal
      Uint32x4NotEqual
      Uint32x4Select
      Uint32x4Swizzle
      Uint32x4Shuffle
      Uint32x4FromInt32x4
      Uint32x4FromFloat32x4Bits
      Uint32x4FromInt32x4Bits
      Uint32x4FromInt16x8Bits
      Uint32x4FromUint16x8Bits
      Uint32x4FromInt8x16Bits
      Uint32x4FromUint8x16Bits
      Uint32x4Load
      Uint32x4Load1
      Uint32x4Load2
      Uint32x4Load3
      Uint32x4Store
      Uint32x4Store1
      Uint32x4Store2
      Uint32x4Store3
      
      Bool32x4Check
      
      Int16x8Check
      Int16x8FromUint16x8
      Int16x8FromFloat32x4Bits
      Int16x8FromInt32x4Bits
      Int16x8FromUint32x4Bits
      Int16x8FromUint16x8Bits
      Int16x8FromInt8x16Bits
      Int16x8FromUint8x16Bits
      Int16x8Load
      Int16x8Store
      
      CreateUint16x8
      Uint16x8Check
      Uint16x8ExtractLane
      Uint16x8ReplaceLane
      Uint16x8Add
      Uint16x8Sub
      Uint16x8Mul
      Uint16x8And
      Uint16x8Or
      Uint16x8Xor
      Uint16x8Not
      Uint16x8Equal
      Uint16x8NotEqual
      Uint16x8Select
      Uint16x8Swizzle
      Uint16x8Shuffle
      Uint16x8FromInt16x8
      Uint16x8FromFloat32x4Bits
      Uint16x8FromInt32x4Bits
      Uint16x8FromUint32x4Bits
      Uint16x8FromInt16x8Bits
      Uint16x8FromInt8x16Bits
      Uint16x8FromUint8x16Bits
      Uint16x8Load
      Uint16x8Store
      
      Bool16x8Check
      
      Int8x16Check
      Int8x16FromUint8x16
      Int8x16FromFloat32x4Bits
      Int8x16FromInt32x4Bits
      Int8x16FromUint32x4Bits
      Int8x16FromInt16x8Bits
      Int8x16FromUint16x8Bits
      Int8x16FromUint8x16Bits
      Int8x16Load
      Int8x16Store
      
      CreateUint8x16
      Uint8x16Check
      Uint8x16ExtractLane
      Uint8x16ReplaceLane
      Uint8x16Add
      Uint8x16Sub
      Uint8x16Mul
      Uint8x16And
      Uint8x16Or
      Uint8x16Xor
      Uint8x16Not
      Uint8x16Equal
      Uint8x16NotEqual
      Uint8x16Select
      Uint8x16Swizzle
      Uint8x16Shuffle
      Uint8x16FromInt8x16
      Uint8x16FromFloat32x4Bits
      Uint8x16FromInt32x4Bits
      Uint8x16FromUint32x4Bits
      Uint8x16FromInt16x8Bits
      Uint8x16FromUint16x8Bits
      Uint8x16FromInt8x16Bits
      Uint8x16Load
      Uint8x16Store
      
      Bool8x16Check
      
      LOG=N
      BUG=v8:4124
      
      Review URL: https://codereview.chromium.org/1848433003
      
      Cr-Commit-Position: refs/heads/master@{#35213}
      3831d41e
    • bmeurer's avatar
      [builtins] Migrate Math.clz32 to a TurboFan builtin. · eaa92feb
      bmeurer authored
      This allows us to remove the troublesome %_MathClz32 intrinsic and also
      allows us to utilize the functionality that is already available in
      TurboFan. Also introduce a proper NumberClz32 operator so we don't need
      to introduce a machine operator at the JS level.
      
      R=epertoso@chromium.org
      
      Review URL: https://codereview.chromium.org/1852553003
      
      Cr-Commit-Position: refs/heads/master@{#35208}
      eaa92feb
    • bmeurer's avatar
      [turbofan] Introduce JSToInteger and JSToLength operators. · 10b365ab
      bmeurer authored
      These operators will be easier to optimize, and we can remove some
      unnecessary clutter from the intrinsic lowering.
      
      Drive-by-cleanup: Some alpha sorting of the type conversion operator
      business.
      
      R=mstarzinger@chromium.org
      
      Review URL: https://codereview.chromium.org/1848243002
      
      Cr-Commit-Position: refs/heads/master@{#35197}
      10b365ab
    • jochen's avatar
      Expose a lower bound of malloc'd memory via heap statistics · cb7aa79b
      jochen authored
      We expect that the majority of malloc'd memory held by V8 is allocated
      in Zone objects. Introduce an Allocator class that is used by Zones to
      manage memory, and allows for querying the current usage.
      
      BUG=none
      R=titzer@chromium.org,bmeurer@chromium.org,jarin@chromium.org
      LOG=n
      TBR=rossberg@chromium.org
      
      Review URL: https://codereview.chromium.org/1847543002
      
      Cr-Commit-Position: refs/heads/master@{#35196}
      cb7aa79b
    • yangguo's avatar
      Revert of [compiler] Add relocatable pointer constants for wasm memory... · 2069ab22
      yangguo authored
      Revert of [compiler] Add relocatable pointer constants for wasm memory references. (patchset #14 id:300001 of https://codereview.chromium.org/1759383003/ )
      
      Reason for revert:
      Test failures: https://build.chromium.org/p/client.v8/builders/V8%20Mac64/builds/8046
      
      Original issue's description:
      > [compiler] Add relocatable pointer constants for wasm memory references.
      >
      > Add relocatable pointers for wasm memory references that need to be updated when wasm GrowMemory is used. Code generator changes to accept relocatable constants as immediates.
      >
      > R=titzer@chromium.org, yangguo@chromium.org, bradnelson@chromium.org
      >
      > Committed: https://crrev.com/eb5fe0df64ec0add423b2a1f6fb62d5a33dce2a5
      > Cr-Commit-Position: refs/heads/master@{#35182}
      
      TBR=bradnelson@chromium.org,titzer@chromium.org,gdeepti@google.com
      # Skipping CQ checks because original CL landed less than 1 days ago.
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      
      Review URL: https://codereview.chromium.org/1846083005
      
      Cr-Commit-Position: refs/heads/master@{#35185}
      2069ab22
    • gdeepti's avatar
      [compiler] Add relocatable pointer constants for wasm memory references. · eb5fe0df
      gdeepti authored
      Add relocatable pointers for wasm memory references that need to be updated when wasm GrowMemory is used. Code generator changes to accept relocatable constants as immediates.
      
      R=titzer@chromium.org, yangguo@chromium.org, bradnelson@chromium.org
      
      Review URL: https://codereview.chromium.org/1759383003
      
      Cr-Commit-Position: refs/heads/master@{#35182}
      eb5fe0df
  12. 31 Mar, 2016 1 commit
    • ahaas's avatar
      [wasm] Fixed float-to-int conversion tests. · ac7f0e2b
      ahaas authored
      *) For all tests the input validation was incorrect, i.e. some values
      were considered invalid although they were valid. The problem was that
      values which are outside int range can get in range through truncation.
      
      *) Removed an assertion in the x64 code generation of
      TruncateFloat64ToUint32 which trapped on negative inputs.
      
      *) Introduced a new TF operator TruncateFloat32ToUint32 which does
      the same as ChangeFloat32ToUint32 but does not trap on negative inputs.
      
      R=titzer@chromium.org
      
      Review URL: https://codereview.chromium.org/1843983002
      
      Cr-Commit-Position: refs/heads/master@{#35176}
      ac7f0e2b
  13. 30 Mar, 2016 2 commits
    • bmeurer's avatar
      [builtins] Make Math.ceil, Math.trunc and Math.round optimizable. · 8d20f2fe
      bmeurer authored
      Migrate Math.ceil, Math.round and Math.trunc to TurboFan code stubs,
      similar to what we did with Math.floor, and make these builtins properly
      optimizable in TurboFan via appropriate simplified operators NumberCeil,
      NumberRound and NumberTrunc, which are intended to be reusable for
      ToInteger and ToLength optimizations that will be done in a followup CL.
      
      Also allows us to kill the funky %RoundNumber runtime function, which
      was quite heavy.
      
      Improve test coverage for Math.ceil and Math.trunc a lot, especially
      making sure that we also properly trigger the TurboFan builtin reducer
      case.
      
      R=jarin@chromium.org
      BUG=v8:4059
      LOG=n
      
      Review URL: https://codereview.chromium.org/1841993002
      
      Cr-Commit-Position: refs/heads/master@{#35135}
      8d20f2fe
    • ahaas's avatar
      [wasm] Int64Lowering of Int64Mul on ia32 and arm. · 40bdbef9
      ahaas authored
      Int64Mul is lowered to a new turbofan operator, Int32MulPair. The new
      operator takes 4 inputs an generates 2 outputs. The inputs are the low
      word of the left input, high word of the left input, the low word of the
      right input, and high word of the right input. The ouputs are the low
      and high word of the result of the multiplication.
      
      R=titzer@chromium.org, v8-arm-ports@googlegroups.com
      
      Review URL: https://codereview.chromium.org/1807273002
      
      Cr-Commit-Position: refs/heads/master@{#35131}
      40bdbef9
  14. 29 Mar, 2016 1 commit
    • bmeurer's avatar
      [turbofan] Introduce NumberFloor simplified operator. · 43216574
      bmeurer authored
      The NumberFloor operator matches exactly the semantics of the Math.floor
      builtin on Numbers. It uses hardware rounding instructions if available,
      but provides a full fallback solution that is compatible with Math.floor.
      The lowering is optimizable based on types if needed later, i.e. we
      already optimize it for the case that the input is already an Integer
      (in the EcmaScript sense, including NaN and -0), but we could add more
      optimizations, like combining NumberFloor and NumberDivide in the
      future, if necessary.
      
      R=jarin@chromium.org
      BUG=v8:2890,v8:4059
      LOG=n
      
      Review URL: https://codereview.chromium.org/1843533003
      
      Cr-Commit-Position: refs/heads/master@{#35090}
      43216574
  15. 21 Mar, 2016 1 commit
    • bmeurer's avatar
      [stubs] Split ToNumberStub into reusable subparts. · b7aa4c3a
      bmeurer authored
      Split ToNumberStub into the entry ToNumberStub, and two new stubs,
      StringToNumberStub and NonNumberToNumberStub, which can be used when we
      already know something about the input (i.e. in various branches of the
      code stubs, or in TurboFan graphs).
      
      Also introduce an appropriate StringToNumber simplified operator for
      TurboFan, that is pure and is lowered to an invocation of the newly
      added StringToNumberStub.
      
      R=jarin@chromium.org
      
      Review URL: https://codereview.chromium.org/1818923002
      
      Cr-Commit-Position: refs/heads/master@{#34922}
      b7aa4c3a
  16. 16 Mar, 2016 1 commit
    • ahaas's avatar
      [wasm] Int64Lowering of Int64Sub on ia32 and arm. · 33c08596
      ahaas authored
      Int64Sub is lowered to a new turbofan operator, Int32SubPair. The new
      operator takes 4 inputs an generates 2 outputs. The inputs are the low
      word of the left input, high word of the left input, the low word of the
      right input, and high word of the right input. The ouputs are the low
      and high word of the result of the subtraction.
      
      The implementation is very similar to the implementation of Int64Add.
      
      @v8-arm-ports: please take a careful look at the implementation of sbc
      in the simulator.
      
      R=titzer@chromium.org, v8-arm-ports@googlegroups.com
      
      Review URL: https://codereview.chromium.org/1778893005
      
      Cr-Commit-Position: refs/heads/master@{#34808}
      33c08596
  17. 14 Mar, 2016 1 commit
    • ahaas's avatar
      [wasm] Int64Lowering of Int64Add on ia32 and arm. · 1b230799
      ahaas authored
      Int64Add is lowered to a new turbofan operator, Int32AddPair. The new
      operator takes 4 inputs an generates 2 outputs. The inputs are the low
      word of the left input, high word of the left input, the low word of the
      right input, and high word of the right input. The ouputs are the low
      and high word of the result of the addition.
      
      R=titzer@chromium.org, v8-arm-ports@googlegroups.com
      
      Review URL: https://codereview.chromium.org/1778493004
      
      Cr-Commit-Position: refs/heads/master@{#34747}
      1b230799
  18. 10 Mar, 2016 1 commit
  19. 09 Mar, 2016 1 commit
  20. 07 Mar, 2016 1 commit
    • ahaas's avatar
      [wasm] Int64Lowering of I64Shl on ia32. · ddc626e1
      ahaas authored
      I64Shl is lowered to a new turbofan operator, WasmWord64Shl. The new
      operator takes 3 inputs, the low-word input, the high-word input, and
      the shift, and produces 2 output, the low-word output and the high-word
      output.
      
      At the moment I implemented the lowering only for ia32, but I think the
      CL is already big enough. I will add the other platforms in separate
      CLs.
      
      R=titzer@chromium.org
      
      Review URL: https://codereview.chromium.org/1756863002
      
      Cr-Commit-Position: refs/heads/master@{#34546}
      ddc626e1
  21. 29 Feb, 2016 1 commit
  22. 27 Feb, 2016 1 commit
  23. 26 Feb, 2016 1 commit
  24. 24 Feb, 2016 2 commits
    • bmeurer's avatar
      [turbofan] Introduce DeoptimizeIf And DeoptimizeUnless common operators. · c129aa4d
      bmeurer authored
      These macro operators represent a conditional eager deoptimization exit
      without explicit branching, which greatly reduces overhead of both
      scheduling and register allocation, and thereby greatly reduces overall
      compilation time, esp. when there are a lot of eager deoptimization
      exits.
      
      R=jarin@chromium.org
      
      Review URL: https://codereview.chromium.org/1721103003
      
      Cr-Commit-Position: refs/heads/master@{#34239}
      c129aa4d
    • bmeurer's avatar
      [compiler] Drop the CompareNilIC. · 666aec03
      bmeurer authored
      Since both null and undefined are also marked as undetectable now, we
      can just test that bit instead of having the CompareNilIC try to collect
      feedback to speed up the general case (without the undetectable bit
      being used).
      
      Drive-by-fix: Update the type system to match the new handling of
      undetectable in the runtime.
      
      R=danno@chromium.org
      
      Review URL: https://codereview.chromium.org/1722193002
      
      Cr-Commit-Position: refs/heads/master@{#34237}
      666aec03
  25. 16 Feb, 2016 1 commit