-
Notifications
You must be signed in to change notification settings - Fork 63
Implement SIMD APIs with C++ runtime functions and Float32x4Array and Int32x4Array element load and store for IA32 port #1
Conversation
// --- S I M D --- | ||
Handle<String> name = factory()->InternalizeUtf8String("SIMD"); | ||
Handle<JSFunction> cons = factory()->NewFunction(name, | ||
factory()->the_hole_value()); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
incorrect indent?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
I have implemented Float322x4Array and Int32x4Array element load and store for ARM port and X64 port and merged the previous two commits into one commit. Please take another look. |
@@ -3232,6 +3264,68 @@ void LCodeGen::DoLoadKeyedExternalArray(LLoadKeyed* instr) { | |||
} else { // loading doubles, not floats. | |||
__ vldr(result, scratch0(), base_offset); | |||
} | |||
} else if (IsFloat32x4ElementsKind(elements_kind)) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The logic of codes for Flaot32x4 and Int32x4 are almost same. Would it better to use a template implementation?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
All comments are addressed. It is ready to be merged. |
Thanks for the update. I verified the patch in my local build and testing. |
Implement SIMD APIs with C++ runtime functions and Float32x4Array and Int32x4Array element load and store for IA32 port
types, implement the SIMD operations on the Float32x4 and Int32x4 with C++ runtime functions and implement Float32x4Array and Int32x4Array element loading and storing.
Revision: 64fbb30 BUG=v8:6059 LOG=N NOTRY=true NOPRESUBMIT=true NOTREECHECKS=true Change-Id: Id6028ef39a890392f581f63df32debeddf7969d1 Reviewed-on: https://chromium-review.googlesource.com/456342 Reviewed-by: Jaroslav Sevcik <[email protected]> Cr-Commit-Position: refs/branch-heads/5.8@{crosswalk-project#39} Cr-Branched-From: eda659c-refs/heads/5.8.283@{crosswalk-project#1} Cr-Branched-From: 4310cd0-refs/heads/master@{#43429}
Cr-Commit-Position: refs/branch-heads/5.8@{crosswalk-project#40} Cr-Branched-From: eda659c-refs/heads/5.8.283@{crosswalk-project#1} Cr-Branched-From: 4310cd0-refs/heads/master@{#43429}
BUG=v8:6121 NOTRY=true NOPRESUBMIT=true [email protected] Review-Url: https://codereview.chromium.org/2776963003 Cr-Commit-Position: refs/branch-heads/5.8@{crosswalk-project#41} Cr-Branched-From: eda659c-refs/heads/5.8.283@{crosswalk-project#1} Cr-Branched-From: 4310cd0-refs/heads/master@{#43429}
Cr-Commit-Position: refs/branch-heads/5.8@{crosswalk-project#42} Cr-Branched-From: eda659c-refs/heads/5.8.283@{crosswalk-project#1} Cr-Branched-From: 4310cd0-refs/heads/master@{#43429}
… marked as escaped Revision: 0cfd2fe BUG=chromium:699251 LOG=N NOTRY=true NOPRESUBMIT=true NOTREECHECKS=true [email protected] Review-Url: https://codereview.chromium.org/2772273002 Cr-Commit-Position: refs/branch-heads/5.8@{crosswalk-project#43} Cr-Branched-From: eda659c-refs/heads/5.8.283@{crosswalk-project#1} Cr-Branched-From: 4310cd0-refs/heads/master@{#43429}
Cr-Commit-Position: refs/branch-heads/5.8@{crosswalk-project#44} Cr-Branched-From: eda659c-refs/heads/5.8.283@{crosswalk-project#1} Cr-Branched-From: 4310cd0-refs/heads/master@{#43429}
Revision: 7273f70 BUG=v8:6146 LOG=N NOTRY=true NOPRESUBMIT=true NOTREECHECKS=true Change-Id: I5dc0fc5a593e2b66ed928e8451ed10c46c1ce6bf Reviewed-on: https://chromium-review.googlesource.com/464867 Reviewed-by: Clemens Hammacher <[email protected]> Cr-Commit-Position: refs/branch-heads/5.8@{crosswalk-project#45} Cr-Branched-From: eda659c-refs/heads/5.8.283@{crosswalk-project#1} Cr-Branched-From: 4310cd0-refs/heads/master@{#43429}
Cr-Commit-Position: refs/branch-heads/5.8@{crosswalk-project#46} Cr-Branched-From: eda659c-refs/heads/5.8.283@{crosswalk-project#1} Cr-Branched-From: 4310cd0-refs/heads/master@{#43429}
…rce compilation Revision: 2629f81 BUG=chromium:693338 LOG=N NOTRY=true NOPRESUBMIT=true NOTREECHECKS=true Change-Id: I93dac5a5d7dc794816e61eb8229f587ce6482bcc Reviewed-on: https://chromium-review.googlesource.com/465106 Reviewed-by: Aleksey Kozyatinskiy <[email protected]> Cr-Commit-Position: refs/branch-heads/5.8@{crosswalk-project#47} Cr-Branched-From: eda659c-refs/heads/5.8.283@{crosswalk-project#1} Cr-Branched-From: 4310cd0-refs/heads/master@{#43429}
Cr-Commit-Position: refs/branch-heads/5.8@{crosswalk-project#48} Cr-Branched-From: eda659c-refs/heads/5.8.283@{crosswalk-project#1} Cr-Branched-From: 4310cd0-refs/heads/master@{#43429}
Revision: c019e53 BUG=chromium:706642 LOG=N NOTRY=true NOPRESUBMIT=true NOTREECHECKS=true Change-Id: I61e9d2decb269b33aefcc6e77d6c09bab3a2a994 Reviewed-on: https://chromium-review.googlesource.com/465828 Reviewed-by: Yang Guo <[email protected]> Cr-Commit-Position: refs/branch-heads/5.8@{crosswalk-project#49} Cr-Branched-From: eda659c-refs/heads/5.8.283@{crosswalk-project#1} Cr-Branched-From: 4310cd0-refs/heads/master@{#43429}
Cr-Commit-Position: refs/branch-heads/5.8@{crosswalk-project#50} Cr-Branched-From: eda659c-refs/heads/5.8.283@{crosswalk-project#1} Cr-Branched-From: 4310cd0-refs/heads/master@{#43429}
Revision: fd5b3e7 [email protected] BUG=v8:6062 LOG=N NOTRY=true NOPRESUBMIT=true NOTREECHECKS=true Change-Id: Ib6bcc8512f0031c301236238e5e6d6a47706f291 Reviewed-on: https://chromium-review.googlesource.com/471408 Reviewed-by: Yang Guo <[email protected]> Cr-Commit-Position: refs/branch-heads/5.8@{crosswalk-project#51} Cr-Branched-From: eda659c-refs/heads/5.8.283@{crosswalk-project#1} Cr-Branched-From: 4310cd0-refs/heads/master@{#43429}
Cr-Commit-Position: refs/branch-heads/5.8@{crosswalk-project#52} Cr-Branched-From: eda659c-refs/heads/5.8.283@{crosswalk-project#1} Cr-Branched-From: 4310cd0-refs/heads/master@{#43429}
Revision: a4c6126 BUG=chromium:706234 LOG=N NOTRY=true NOPRESUBMIT=true NOTREECHECKS=true Change-Id: I7bcdc5788373be211c5c563dd974627eedd06719 Reviewed-on: https://chromium-review.googlesource.com/472629 Reviewed-by: Leszek Swirski <[email protected]> Cr-Commit-Position: refs/branch-heads/5.8@{crosswalk-project#53} Cr-Branched-From: eda659c-refs/heads/5.8.283@{crosswalk-project#1} Cr-Branched-From: 4310cd0-refs/heads/master@{#43429}
Cr-Commit-Position: refs/branch-heads/5.8@{crosswalk-project#54} Cr-Branched-From: eda659c-refs/heads/5.8.283@{crosswalk-project#1} Cr-Branched-From: 4310cd0-refs/heads/master@{#43429}
This fixes behavior for HeapNumber {index} arguments passed to AdvanceStringIndex. Previously, we'd blindly treat {index} as a Smi. Passing a HeapNumber instead would result in a Smi addition on the tagged HeapNumber pointer. Backmerge of commit ed5496f. BUG=chromium:709015 NOPRESUBMIT=true NOTRY=true Review-Url: https://codereview.chromium.org/2808033002 Cr-Commit-Position: refs/branch-heads/5.8@{crosswalk-project#55} Cr-Branched-From: eda659c-refs/heads/5.8.283@{crosswalk-project#1} Cr-Branched-From: 4310cd0-refs/heads/master@{#43429}
Backmerge of commit ae45935 and 1ccf6c0. BUG=v8:5437,chromium:708247 NOPRESUBMIT=true NOTRY=true Review-Url: https://codereview.chromium.org/2808023002 Cr-Commit-Position: refs/branch-heads/5.8@{crosswalk-project#56} Cr-Branched-From: eda659c-refs/heads/5.8.283@{crosswalk-project#1} Cr-Branched-From: 4310cd0-refs/heads/master@{#43429}
Cr-Commit-Position: refs/branch-heads/5.8@{crosswalk-project#57} Cr-Branched-From: eda659c-refs/heads/5.8.283@{crosswalk-project#1} Cr-Branched-From: 4310cd0-refs/heads/master@{#43429}
Merged: [parser] Fix crash when lazy arrow func params contain destructuring assignments. Revision: bc39a51 Merged: [parser] don't rewrite destructuring assignments in params for lazy top level arrow functions Revision: 5f782db BUG=chromium:704811,chromium:706234,chromium:706761,v8:6182 LOG=N NOTRY=true NOPRESUBMIT=true NOTREECHECKS=true Change-Id: If5c04c3b9f6ac9c6879052b6a34446f895624200 Reviewed-on: https://chromium-review.googlesource.com/474746 Reviewed-by: Michael Achenbach <[email protected]> Cr-Commit-Position: refs/branch-heads/5.8@{crosswalk-project#58} Cr-Branched-From: eda659c-refs/heads/5.8.283@{crosswalk-project#1} Cr-Branched-From: 4310cd0-refs/heads/master@{#43429}
Cr-Commit-Position: refs/branch-heads/5.8@{crosswalk-project#59} Cr-Branched-From: eda659c-refs/heads/5.8.283@{crosswalk-project#1} Cr-Branched-From: 4310cd0-refs/heads/master@{#43429}
Revision: c5c570f NOTRY=true NOPRESUBMIT=true NOTREECHECKS=true [email protected] BUG=v8:6032 Review-Url: https://codereview.chromium.org/2733333003 Cr-Commit-Position: refs/branch-heads/5.8@{crosswalk-project#60} Cr-Branched-From: eda659c-refs/heads/5.8.283@{crosswalk-project#1} Cr-Branched-From: 4310cd0-refs/heads/master@{#43429}
Cr-Commit-Position: refs/branch-heads/5.8@{crosswalk-project#61} Cr-Branched-From: eda659c-refs/heads/5.8.283@{crosswalk-project#1} Cr-Branched-From: 4310cd0-refs/heads/master@{#43429}
…e.push. Revision: 1fceaf9 BUG=v8:5267,v8:6241 LOG=N NOTRY=true NOPRESUBMIT=true NOTREECHECKS=true Change-Id: I7cd3fa5cfb61bcd49e57eba704639943fbd8d220 Reviewed-on: https://chromium-review.googlesource.com/476731 Reviewed-by: Michael Hablich <[email protected]> Reviewed-by: Jaroslav Sevcik <[email protected]> Cr-Commit-Position: refs/branch-heads/5.8@{crosswalk-project#62} Cr-Branched-From: eda659c-refs/heads/5.8.283@{crosswalk-project#1} Cr-Branched-From: 4310cd0-refs/heads/master@{#43429}
Cr-Commit-Position: refs/branch-heads/5.8@{crosswalk-project#63} Cr-Branched-From: eda659c-refs/heads/5.8.283@{crosswalk-project#1} Cr-Branched-From: 4310cd0-refs/heads/master@{#43429}
Merged: [turbofan] Properly represent the float64 hole. Revision: 8c0c5e8 Merged: [turbofan] Remove unused word32 truncation case for CheckFloat64Hole. Revision: 2eeb085 BUG=chromium:684208,chromium:684208,chromium:709753,chromium:709753,v8:5267,v8:5267 LOG=N NOTRY=true NOPRESUBMIT=true NOTREECHECKS=true [email protected] Review-Url: https://codereview.chromium.org/2819653002 . Cr-Commit-Position: refs/branch-heads/5.8@{crosswalk-project#64} Cr-Branched-From: eda659c-refs/heads/5.8.283@{crosswalk-project#1} Cr-Branched-From: 4310cd0-refs/heads/master@{#43429}
…ect#1 id:1 of https://codereview.chromium.org/2819653002/ ) Reason for revert: Breaks the build Original issue's description: > Merged: Squashed multiple commits. > > Merged: [turbofan] Properly represent the float64 hole. > Revision: 8c0c5e8 > > Merged: [turbofan] Remove unused word32 truncation case for CheckFloat64Hole. > Revision: 2eeb085 > > BUG=chromium:684208,chromium:684208,chromium:709753,chromium:709753,v8:5267,v8:5267 > LOG=N > NOTRY=true > NOPRESUBMIT=true > NOTREECHECKS=true > [email protected] > > Review-Url: https://codereview.chromium.org/2819653002 . > Cr-Commit-Position: refs/branch-heads/5.8@{crosswalk-project#64} > Cr-Branched-From: eda659c-refs/heads/5.8.283@{crosswalk-project#1} > Cr-Branched-From: 4310cd0-refs/heads/master@{#43429} > Committed: https://chromium.googlesource.com/v8/v8/+/46013d6901425e3820a5f6378c5d1770f536dfb5 [email protected] # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=chromium:684208,chromium:684208,chromium:709753,chromium:709753,v8:5267,v8:5267 Review-Url: https://codereview.chromium.org/2820603002 Cr-Commit-Position: refs/branch-heads/5.8@{crosswalk-project#65} Cr-Branched-From: eda659c-refs/heads/5.8.283@{crosswalk-project#1} Cr-Branched-From: 4310cd0-refs/heads/master@{#43429}
Cr-Commit-Position: refs/branch-heads/5.8@{crosswalk-project#66} Cr-Branched-From: eda659c-refs/heads/5.8.283@{crosswalk-project#1} Cr-Branched-From: 4310cd0-refs/heads/master@{#43429}
Loading the map, performing a side-effect, and then using the stored pointer for the fast-path check is another antipattern that can lead to unintended shapes on the fast path. Backmerge of commit db61537. BUG=chromium:709029 [email protected] NOPRESUBMIT=true NOTRY=true Review-Url: https://codereview.chromium.org/2818683005 Cr-Commit-Position: refs/branch-heads/5.8@{crosswalk-project#67} Cr-Branched-From: eda659c-refs/heads/5.8.283@{crosswalk-project#1} Cr-Branched-From: 4310cd0-refs/heads/master@{#43429}
Cr-Commit-Position: refs/branch-heads/5.8@{crosswalk-project#68} Cr-Branched-From: eda659c-refs/heads/5.8.283@{crosswalk-project#1} Cr-Branched-From: 4310cd0-refs/heads/master@{#43429}
I'd like to get your early code review feedback when implementing the Float322x4Array and Int32x4Array element load and store for ARM port and X64 port.
In our SIMD prototype implementation, in X64 port, for Float322x4Array and Int32x4Array element load and store, we always use SSE2, i.e., use movups to move elements, but it depends on the SIMD register allocation and introducing movups into assembler. To make this commit independent, I will implement something similar as submitted in the second patch set for IA32.