- 13 Jul, 2017 1 commit
-
-
Clemens Hammacher authored
There is just one version now, called IsPowerOfTwo. It accepts any integral type. There is one slight semantical change: Called with kMinInt, it previously returned true, because the argument was implicitly casted to an unsigned. It's now (correctly) returning false, so I had to add special handlings of kMinInt in machine-operator-reducer before calling IsPowerOfTwo on that value. R=mlippautz@chromium.org,mstarzinger@chromium.org,jgruber@chromium.org,ishell@chromium.org,yangguo@chromium.org Change-Id: Idc112a89034cdc8c03365b778b33b1c29fefb38d Reviewed-on: https://chromium-review.googlesource.com/568140Reviewed-by:
Igor Sheludko <ishell@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#46627}
-
- 02 Mar, 2017 1 commit
-
-
tebbi authored
BinopMatcher does not notify the reducers using it when it flips inputs to commutative operators. This leads to value numbering not being re-executed in this case. Together with the fact that value numbering might still reduce such a modified node in the case of a hash collision merging the buckets of two equivalent nodes, this leads to unpredictable behaviour. This is the easiest fix for the problem: Always running value numbering last. This is also a performance improvement because value numbering never changes but only replaces nodes. R=mstarzinger@chromium.org Review-Url: https://codereview.chromium.org/2728983002 Cr-Commit-Position: refs/heads/master@{#43552}
-
- 24 Feb, 2017 1 commit
-
-
shiyu.zhang authored
Enable using BaseWithIndexAndDisplacement addressing mode for an address used by multiple load/stores. It can reduce one instruction to calculate the address and one register to store the address. BUG= Review-Url: https://codereview.chromium.org/2620293004 Cr-Commit-Position: refs/heads/master@{#43402}
-
- 03 Nov, 2016 1 commit
-
-
bmeurer authored
Also properly deal with constant indices for String element access in the JSNativeContextSpecialization. BUG=chromium:661949 R=jarin@chromium.org Review-Url: https://codereview.chromium.org/2474013002 Cr-Commit-Position: refs/heads/master@{#40723}
-
- 17 Oct, 2016 1 commit
-
-
jochen authored
R=machenbach@chromium.org,titzer@chromium.org,bmeurer@chromium.org,jgruber@chromium.org BUG= CQ_INCLUDE_TRYBOTS=master.tryserver.v8:v8_win_dbg,v8_mac_dbg;master.tryserver.chromium.android:android_arm64_dbg_recipe Review-Url: https://codereview.chromium.org/2416243002 Cr-Commit-Position: refs/heads/master@{#40350}
-
- 16 Sep, 2016 1 commit
-
-
martyn.capewell authored
For denominators that are powers of two, replace Float64 division with multiplication by the reciprocal. Additionally, replace division by -1 with negation, and multiplication by two with addition. BUG= Review-Url: https://codereview.chromium.org/2347573002 Cr-Commit-Position: refs/heads/master@{#39478}
-
- 15 Aug, 2016 1 commit
-
-
jyan authored
Add an extra paramter to disable scale on BaseWithIndexAndDisplacementMatcher. R=bmeurer@chromium.org, epertoso@chromium.org, jarin@chromium.org, mstarzinger@chromium.org, mtrofin@chromium.org, titzer@chromium.org BUG= Review-Url: https://codereview.chromium.org/2239813002 Cr-Commit-Position: refs/heads/master@{#38635}
-
- 25 Jul, 2016 1 commit
-
-
mvstanton authored
After multiplying two integers we emit code like: if (result == 0) { if (OR_OPERATION(rhs, lhs) < 0) { DEOPT; } } This CL allows us to eliminate the OR and comparison if either rhs or lhs is a negative number, reducing the code to: if (result == 0) DEOPT; BUG= Review-Url: https://codereview.chromium.org/2167643002 Cr-Commit-Position: refs/heads/master@{#38016}
-
- 13 Jul, 2016 1 commit
-
-
danno authored
Previously, the following schedule fragment: 1: Parameter[0](0) 2: Parameter[1](0) 7: Int32Constant[1] 8: Int32Sub(2, 7) 9: Load[kRepTagged|kTypeAny](1, 8) would generate the following code (on ia32): mov eax,[ebp+0x8] mov ecx,[ebp+0xc] sub eax,0x1 mov eax,[eax+ecx*1] Now it generates: mov eax,[ebp+0x8] mov ecx,[ebp+0xc] mov eax,[eax+ecx*1-1] Similar pattern matching also now works on x64. BUG=v8:5192 LOG=N Review-Url: https://codereview.chromium.org/2137323003 Cr-Commit-Position: refs/heads/master@{#37701}
-
- 30 Jun, 2016 1 commit
-
-
bmeurer authored
This adds a new CheckIf operator and changes all direct uses of DeoptimizeIf and DeoptimizeUnless on the JavaScript level to use CheckIf (or one of the more concrete check operators) instead. This way we do not depend on particular frame states, but the effect/control linearizer will assign an appropriate frame state instead. R=jarin@chromium.org BUG=v8:5141 Review-Url: https://codereview.chromium.org/2115513002 Cr-Commit-Position: refs/heads/master@{#37423}
-
- 28 Jun, 2016 1 commit
-
-
bmeurer authored
Introduce a new machine operator Float64Pow that for now is backed by the existing MathPowStub to start the unification of Math.pow, and at the same time address the main performance issue that TurboFan still has with the imaging-darkroom benchmark in Kraken. Also migrate the Math.pow builtin itself to a TurboFan builtin and remove a few hundred lines of hand-written platform code for special handling of the fullcodegen Math.pow version. BUG=v8:3599,v8:5086,v8:5157 Review-Url: https://codereview.chromium.org/2103733003 Cr-Commit-Position: refs/heads/master@{#37323}
-
- 18 Apr, 2016 1 commit
-
-
bmeurer authored
Add support to optimize certain comparisons of typeof with known strings to utilize the existing ObjectIs<Type> predicates. Also add a new ObjectIsCallable, which is used to optimize the common typeof x === "function" pattern. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1898653003 Cr-Commit-Position: refs/heads/master@{#35562}
-
- 11 Jan, 2016 1 commit
-
-
titzer authored
R=bmeurer@chromium.org BUG= Review URL: https://codereview.chromium.org/1578723002 Cr-Commit-Position: refs/heads/master@{#33202}
-
- 01 Sep, 2015 2 commits
-
-
mstarzinger authored
Now that it is no longer needed, this also removes the invalid inclusion of "object-inl.h" within the "unique.h" header file. Note that this change still leaves 2 violations of that rule in the code, checked with the "tools/check-inline-includes.sh" tool. R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1321223002 Cr-Commit-Position: refs/heads/master@{#30503}
-
pcc authored
The code was previously reading unsigned integers by performing an invalid cast of Operator1<intNN_t> objects to Operator1<uintNN_t> and reading the integer directly. To fix the invalid cast, we cast to the correct type and static_cast the integer to uintNN_t, which is a no-op on every reasonable target. Cleanup for cfi_vptr=1; see https://www.chromium.org/developers/testing/control-flow-integrity BUG=chromium:457523 R=bmeurer@chromium.org LOG=N Review URL: https://codereview.chromium.org/1310633004 Cr-Commit-Position: refs/heads/master@{#30499}
-
- 31 Aug, 2015 1 commit
-
-
mstarzinger authored
The usage of Unique<T> throughout the TurboFan IR does not have any advantage. There is no single point in time when they are initialized and most use-sites looked through to the underlying Handle<T> anyways. Also there already was a mixture of Handle<T> versus Unique<T> in the graph and this unifies the situation to use Handle<T> everywhere. R=bmeurer@chromium.org,titzer@chromium.org Review URL: https://codereview.chromium.org/1314473007 Cr-Commit-Position: refs/heads/master@{#30458}
-
- 19 Jun, 2015 1 commit
-
-
bmeurer authored
BUG=v8:3809 LOG=n R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/1196623002 Cr-Commit-Position: refs/heads/master@{#29147}
-
- 20 Apr, 2015 1 commit
-
-
Ross McIlroy authored
R=jochen@chromium.org Review URL: https://codereview.chromium.org/1088993003 Cr-Commit-Position: refs/heads/master@{#27937}
-
- 08 Apr, 2015 2 commits
-
-
Benedikt Meurer authored
These operators compute the absolute floating point value of some arbitrary input, and are implemented without any branches (i.e. using vabs on arm, and andps/andpd on x86). R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/1066393002 Cr-Commit-Position: refs/heads/master@{#27662}
-
titzer authored
R=bmeurer@chromium.org BUG= Review URL: https://codereview.chromium.org/1061303002 Cr-Commit-Position: refs/heads/master@{#27658}
-
- 07 Apr, 2015 1 commit
-
-
titzer authored
R=bmeurer@chromium.org BUG= Review URL: https://codereview.chromium.org/1054963002 Cr-Commit-Position: refs/heads/master@{#27613}
-
- 30 Mar, 2015 1 commit
-
-
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}
-
- 09 Mar, 2015 1 commit
-
-
Benedikt Meurer authored
Avoid loading the stack pointer and the stack limit into allocatable registers first, but generate a cmp rsp,[limit] instead. R=dcarney@chromium.org Review URL: https://codereview.chromium.org/989203002 Cr-Commit-Position: refs/heads/master@{#27065}
-
- 24 Feb, 2015 1 commit
-
-
bmeurer authored
Perform strength reduction on machine operators with inline comparisons: CMP & 1 => CMP 1 & CMP => CMP CMP << 31 >> 31 => CMP Also strength reduce the following constructs: x + (0 - y) => x - y (0 - y) + x => x - y R=dcarney@chromium.org Review URL: https://codereview.chromium.org/951903003 Cr-Commit-Position: refs/heads/master@{#26817}
-
- 18 Dec, 2014 1 commit
-
-
Benedikt Meurer authored
- (y * (K << L) + x) & (-1 << L) => (x & (-1 << L)) + y * (K << L) - (x + y * (K << L)) & (-1 << L) => (x & (-1 << L)) + y * (K << L) TEST=unittests R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/811293002 Cr-Commit-Position: refs/heads/master@{#25875}
-
- 12 Dec, 2014 1 commit
-
-
danno authored
Review URL: https://codereview.chromium.org/795353008 Cr-Commit-Position: refs/heads/master@{#25807}
-
- 11 Dec, 2014 1 commit
-
-
danno authored
Review URL: https://codereview.chromium.org/747283005 Cr-Commit-Position: refs/heads/master@{#25771}
-
- 05 Dec, 2014 1 commit
-
-
danno authored
Achieve more than parity with modes currently handled on ia32 in preparation for porting the entire mechanism to ia32, including supporting mul of constants 3, 5 and 9 with "leal" instructions. TEST=unittests Review URL: https://codereview.chromium.org/774193003 Cr-Commit-Position: refs/heads/master@{#25677}
-
- 28 Nov, 2014 1 commit
-
-
mstarzinger authored
R=titzer@chromium.org Review URL: https://codereview.chromium.org/756073004 Cr-Commit-Position: refs/heads/master@{#25572}
-
- 26 Nov, 2014 3 commits
-
-
Benedikt Meurer authored
TEST=mjsunit,unittests R=svenpanne@chromium.org Committed: https://chromium.googlesource.com/v8/v8/+/2aed882fe74dbf9210159babe30fedccd900e7cf Review URL: https://codereview.chromium.org/762493006 Cr-Commit-Position: refs/heads/master@{#25515}
-
machenbach authored
Revert of [arm] Fix recognition of VNEG. (patchset #3 id:40001 of https://codereview.chromium.org/762493006/) Reason for revert: Breaks arm compilation. Original issue's description: > [arm] Fix recognition of VNEG. > > TEST=mjsunit,unittests > R=svenpanne@chromium.org > > Committed: https://chromium.googlesource.com/v8/v8/+/2aed882fe74dbf9210159babe30fedccd900e7cf TBR=svenpanne@chromium.org,bmeurer@chromium.org NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/751653004 Cr-Commit-Position: refs/heads/master@{#25514}
-
Benedikt Meurer authored
TEST=mjsunit,unittests R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/762493006 Cr-Commit-Position: refs/heads/master@{#25513}
-
- 24 Nov, 2014 2 commits
-
-
jarin authored
Resets the scaled exponent to 0 when the scaling match fails. BUG= Review URL: https://codereview.chromium.org/756643002 Cr-Commit-Position: refs/heads/master@{#25491}
-
Benedikt Meurer authored
TEST=unittests R=jarin@chromium.org Review URL: https://codereview.chromium.org/749233002 Cr-Commit-Position: refs/heads/master@{#25479}
-
- 17 Nov, 2014 2 commits
-
-
Daniel Clifford authored
R=bmeurer@chromium.org TBR=bmeurer@chromium.org Review URL: https://codereview.chromium.org/733783003 Cr-Commit-Position: refs/heads/master@{#25374}
-
Daniel Clifford authored
Preparation for supporting more addressing modes in instruction selection. R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/729853005 Cr-Commit-Position: refs/heads/master@{#25373}
-
- 07 Nov, 2014 1 commit
-
-
danno@chromium.org authored
Add MemoryOperandMatcher that recognizes node clusters in the form [%r1 + %r2*SCALE + OFFSET] and explicit support in the x64 Int32Add selector to use it to translate complex adds to 'leal' instructions. R=titzer@chromium.org Review URL: https://codereview.chromium.org/704713003 Cr-Commit-Position: refs/heads/master@{#25223} git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25223 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 31 Oct, 2014 1 commit
-
-
bmeurer@chromium.org authored
Also remove the LEA matching from x64, since it was never really effective. We'll optimize that once we're correct. TEST=cctest,unittests R=dcarney@chromium.org Review URL: https://codereview.chromium.org/652363006 Cr-Commit-Position: refs/heads/master@{#25024} git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25024 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 29 Oct, 2014 1 commit
-
-
bmeurer@chromium.org authored
TEST=mjsunit,unittests R=dcarney@chromium.org Review URL: https://codereview.chromium.org/691513002 Cr-Commit-Position: refs/heads/master@{#24980} git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24980 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 28 Oct, 2014 1 commit
-
-
bmeurer@chromium.org authored
Also add backend flags that tell whether integer division/modulus is generally safe, i.e. does not trap on overflow or divide by zero. TEST=unittests R=dcarney@chromium.org Review URL: https://codereview.chromium.org/681133004 Cr-Commit-Position: refs/heads/master@{#24942} git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24942 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-