- 08 Apr, 2020 1 commit
-
-
Tobias Tebbi authored
The macro magic used to assemble the operator cache in machine-operator.cc was quite involved and difficult to follow. This change replaces many macros with templates and simplifies the logic. Similar changes could also be applied to other operator builders. Change-Id: Ie4268c59b7c663f1aac360c87e9cce3100c90a29 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2132246 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by: Clemens Backes <clemensb@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#67055}
-
- 19 Mar, 2020 1 commit
-
-
Ng Zhi An authored
Implement i8x16.bitmask, i16x8.bitmask, i32x4.bitmask on interpreter and arm64. These operations are behind wasm_simd_post_mvp flag, as we are only prototyping to evaluate performance. The codegen is based on guidance at https://github.com/WebAssembly/simd/pull/201. Bug: v8:10308 Change-Id: I835aa8a23e677a00ee7897c1c31a028850e238a9 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2099451Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#66793}
-
- 26 Feb, 2020 1 commit
-
-
Ng Zhi An authored
Implements i8x16.abs, i16x8.abs, and i32x4.abs. Bug: v8:10233 Change-Id: Iefe3c70bdc229c6da6a0ef07273ca654ca1e937e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2063200Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#66440}
-
- 28 Jan, 2020 1 commit
-
-
Ng Zhi An authored
These conversion instructions were removed from the proposal in https://github.com/WebAssembly/simd/pull/178. Change-Id: I212ca2f923362bf08e178f6d28cc2338cf6f5927 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2016006Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#66015}
-
- 13 Jan, 2020 1 commit
-
-
Ng Zhi An authored
Note the tricky part in instruction-selector-x64, where we flip the inputs given to the code generator. This is because the semantics we want is: v128.andnot a b = a & !b, but the x64 instruction performs andnps a b = !a & b. Therefore we flip the inputs, and combined with g.DefineSameAsFirst, the output register will be the same as b, and we can use andnps without any modifications in both SSE and AVX cases. Bug: v8:10082 Change-Id: Iff98dc1dd944fbc642875f6306c6633d5d646615 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1980894Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#65738}
-
- 08 Jan, 2020 1 commit
-
-
Santiago Aboy Solanes authored
The only one remaining was the one in CSA. Once that was removed, we can simplify the pipeline. In order to remove it, we have to update the machine graph verifer so that Word32Equal can accept Tagged values as well. Bug: v8:7703 Change-Id: Ia3c4d872babc2005be1b402b4614a6039c59dbf3 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1987254 Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#65634}
-
- 19 Dec, 2019 1 commit
-
-
Ng Zhi An authored
This change includes templatization of the test helper to allow the same function to be reused for both signed and unsigned data types. We implement a new function RoundingAverageUnsigned in overflowing-math, rather than in base/utils, since the addition could overflow. SIMD scalar lowering and implementation for other backends will follow in future patches. Bug: v8:10039 Change-Id: I70735f7b6536f197869ef1afbccaf5649e7e8448 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1958007Reviewed-by: Clemens Backes <clemensb@chromium.org> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#65531}
-
- 03 Dec, 2019 1 commit
-
-
George Wort authored
Replace unsigned extract lane followed by sign extend as added here https://chromium-review.googlesource.com/c/v8/v8/+/1846711 with a signed extract lane for I8x16 and I16x8. Change-Id: I5a701417b772d12f5ef038efbb081716bb27e25a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1873700 Commit-Queue: Martyn Capewell <martyn.capewell@arm.com> Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#65307}
-
- 29 Nov, 2019 1 commit
-
-
jiepan authored
The lane indices of S8x16Shuffle will be printed as null-terminated character array in Operator1's PrintParameter implementation.This patch add S8x16ShuffleParameter class, override operater<<, print indices as integer array. before fix: Shuffle[\b\t\n^K\f\r^N^O] after fix: Shuffle[8,9,10,11,12,13,14,15,0,0,0,0,0,0,0,0] Change-Id: I421e639f5229d3a5e348868be33f2d8bbfcfd2d6 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1922735 Commit-Queue: Jie Pan <jie.pan@intel.com> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Reviewed-by: Bill Budge <bbudge@chromium.org> Auto-Submit: Jie Pan <jie.pan@intel.com> Cr-Commit-Position: refs/heads/master@{#65253}
-
- 26 Nov, 2019 1 commit
-
-
Santiago Aboy Solanes authored
In both ChangeIntPtrToSmi and ChangeInt32ToSmi we can use bitcasts instead of change nodes for Smi Tagging, when we are using 31 bit smis in 64 bit architectures with pointer compression enabled. In ChangeIntPtrToSmi we can ignore the truncation as well. Updated DecompressionOptimizer to match the new pattern. Change-Id: I4487ba40ba9fda7b1ab31da95ff7bd144407d02d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1924355 Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#65168}
-
- 18 Nov, 2019 1 commit
-
-
Ng Zhi An authored
This implements the rest of the load extend instructions: - i32x4.load16x4_s - i32x4.load16x4_u - i64x2.load32x2_s - i64x2.load32x2_u Bug: v8:9886 Change-Id: I4649f77bae5224042a1628d9f0498c050b1e599d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1903812Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Bill Budge <bbudge@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#65017}
-
- 11 Nov, 2019 1 commit
-
-
Santiago Aboy Solanes authored
Including but not limiting to removing: * BitcastCompressedXXX * CheckedCompressedXXX * ChangeXXXToCompressedYYY * ChangeCompressedXXX As a note, ChangeTaggedToCompressed can't be removed just yet as it is still in use. Bug: v8:7703 Change-Id: I98cf88a32adfa976d419e69702d1cac4d3e811a5 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1903435 Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#64880}
-
- 08 Nov, 2019 1 commit
-
-
Ng Zhi An authored
Implements v32x4.load_splat and v64x2.load_splat. Bug: v8:9886 Change-Id: I18f3b012f9980d258985edf2ff26577fe495eff5 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1903747Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#64866}
-
- 06 Nov, 2019 1 commit
-
-
Ng Zhi An authored
Introduce new operator LoadTransform that holds a LoadTransformInfo param, which describes the kind of load (normal, unaligned, protected), and a transformation (splat or extend, signed or unsigned). We have a new method that a full decoder needs to implement, LoadTransform, which resuses the existing LoadType we have, but also takes a LoadTransform, to distinguish between splats and extends at the decoder level. This implements 4 out of the 10 suggested load splat/extend operations (to keep the cl smaller), and is also missing interpreter support (will be added in the future). Change-Id: I1e65c693bfbe30e2a511c81b5a32e06aacbddc19 Bug: v8:9886 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1863863Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Andreas Haas <ahaas@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#64819}
-
- 30 Oct, 2019 1 commit
-
-
Jakob Gruber authored
This is a reland of 4a16305b The original CL adjust only one part of the stack check, namely the comparison of the stack pointer against the stack limit in generated code. There is a second part: Runtime::kStackGuard repeats this check to distinguish between a stack overflow and an interrupt request. This second part in runtime must apply the offset just like in generated code. It is implemented in this reland by the StackCheckOffset operator and a new StackGuardWithGap runtime function. Original change's description: > [compiler] Optionally apply an offset to stack checks > > The motivation behind this change is that the frame size of an optimized > function and its unoptimized version may differ, and deoptimization > may thus trigger a stack overflow. The solution implemented in this CL > is to optionally apply an offset to the stack check s.t. the check > becomes 'sp - offset > limit'. The offset is applied to stack checks at > function-entry, and is set to the difference between the optimized and > unoptimized frame size. > > A caveat: OSR may not be fully handled by this fix since we've already > passed the function-entry stack check. A possible solution would be to > *not* skip creation of function-entry stack checks for inlinees. > > This CL: 1. annotates stack check nodes with the stack check kind, where > kind is one of {function-entry,iteration-body,unknown}. 2. potentially > allocates a temporary register to store the result of the 'sp - offset' > in instruction selection (and switches input registers to 'unique' > mode). 3. Applies the offset in code generation. > > Drive-by: Add src/compiler/globals.h for compiler-specific globals. > > Bug: v8:9534,chromium:1000887 > Change-Id: I257191c4a4978ccb60cfa5805ef421f30f0e9826 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1762521 > Commit-Queue: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Georg Neis <neis@chromium.org> > Cr-Commit-Position: refs/heads/master@{#63701} Bug: v8:9534, chromium:1000887 Change-Id: I71771c281afd7d57c09aa48ea1b182d01e6dee2a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1822037Reviewed-by: Georg Neis <neis@chromium.org> Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#64634}
-
- 17 Oct, 2019 1 commit
-
-
Ng Zhi An authored
This is a reland of 306bb635 Original change's description: > [wasm-simd] Implement F64x2ConvertI64x2 for x64 > > Bug: v8:8460 > Change-Id: Icefb90c67af77ac93bd75b4e452ba426232de83a > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1710332 > Commit-Queue: Zhi An Ng <zhin@chromium.org> > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > Reviewed-by: Bill Budge <bbudge@chromium.org> > Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> > Cr-Commit-Position: refs/heads/master@{#63627} Bug: v8:8460 Change-Id: I08d2c88e81ce51d3d1cfdf3d7d6ba34792e34e9e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1793902Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#64365}
-
- 16 Oct, 2019 1 commit
-
-
Ng Zhi An authored
This introduces 2 new machine operators that are variants of I64x2Splat and I64x2ReplaceLane that takes two int32 operands instead of one i64 operand. Bug: v8:9728 Change-Id: I6675f991e6c56821c84d183dacfda96961c1a708 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1841242Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#64337}
-
- 09 Oct, 2019 1 commit
-
-
Ng Zhi An authored
Bug: v8:8460 Change-Id: I79ae753f15aaa91a2154bd7078a1cdb9f3e049f1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1822497Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#64201}
-
- 18 Sep, 2019 2 commits
-
-
Ng Zhi An authored
Quasi Fused Multiply-Add and Quasi Fused Multiply-Subtract performs, on floats, a + b * c and a - b * c respectively. When there is only a single rounding, it is a fused operation. Quasi in this case means that the result can either be fused or not fused (two roundings), depending on hardware support. It is tricky to write the test because we need to calculate the expected value, and there is no easy way to express fused or unfused operation in C++, i.e. we cannot confirm that float expected = a + b * c will perform a fused or unfused operation (unless we use intrinsics). Thus in the test we have a list of simple checks, plus interesting values that we know will produce different results depending on whether it was fused or not. The difference between 32x4 and 64x2 qfma/qfms is the type, and also the values of b and c that will cause an overflow, and thus the intermediate rounding will affect the final result. The same array can be copy pasted for both types, but with a bit of templating we can avoid that duplication. Change-Id: I0973a3d28468d25f310b593c72f21bff54d809a7 Bug: v8:9415 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1779325 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#63878}
-
Milad Farazmand authored
WASM only supports Little-endian byte ordering and we need a mechanism to reverse the ordering efficiently on Big-endian machines. Up until now this was done using TF graphs within wasm-compiler. The new approach allows for having more machine level optimizations by introducing the new "kSimd128ReverseBytes" opcode which gets executed only on Big-endian machines. Change-Id: I63c6c3c42ca9ff9d9b2af2d45070a70cf1b3cefc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1803494Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Milad Farazmand <miladfar@ca.ibm.com> Cr-Commit-Position: refs/heads/master@{#63875}
-
- 12 Sep, 2019 2 commits
-
-
Jakob Gruber authored
This reverts commit 4a16305b. Reason for revert: Need to revalidate assumptions behind the CHECK. Original change's description: > [compiler] Optionally apply an offset to stack checks > > The motivation behind this change is that the frame size of an optimized > function and its unoptimized version may differ, and deoptimization > may thus trigger a stack overflow. The solution implemented in this CL > is to optionally apply an offset to the stack check s.t. the check > becomes 'sp - offset > limit'. The offset is applied to stack checks at > function-entry, and is set to the difference between the optimized and > unoptimized frame size. > > A caveat: OSR may not be fully handled by this fix since we've already > passed the function-entry stack check. A possible solution would be to > *not* skip creation of function-entry stack checks for inlinees. > > This CL: 1. annotates stack check nodes with the stack check kind, where > kind is one of {function-entry,iteration-body,unknown}. 2. potentially > allocates a temporary register to store the result of the 'sp - offset' > in instruction selection (and switches input registers to 'unique' > mode). 3. Applies the offset in code generation. > > Drive-by: Add src/compiler/globals.h for compiler-specific globals. > > Bug: v8:9534,chromium:1000887 > Change-Id: I257191c4a4978ccb60cfa5805ef421f30f0e9826 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1762521 > Commit-Queue: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Georg Neis <neis@chromium.org> > Cr-Commit-Position: refs/heads/master@{#63701} TBR=neis@chromium.org,sigurds@chromium.org,jgruber@chromium.org Change-Id: Iebf46d5256b6dee13451741781ef85a5fe9b1628 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:9534, chromium:1000887 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1800565Reviewed-by: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#63706}
-
Jakob Gruber authored
The motivation behind this change is that the frame size of an optimized function and its unoptimized version may differ, and deoptimization may thus trigger a stack overflow. The solution implemented in this CL is to optionally apply an offset to the stack check s.t. the check becomes 'sp - offset > limit'. The offset is applied to stack checks at function-entry, and is set to the difference between the optimized and unoptimized frame size. A caveat: OSR may not be fully handled by this fix since we've already passed the function-entry stack check. A possible solution would be to *not* skip creation of function-entry stack checks for inlinees. This CL: 1. annotates stack check nodes with the stack check kind, where kind is one of {function-entry,iteration-body,unknown}. 2. potentially allocates a temporary register to store the result of the 'sp - offset' in instruction selection (and switches input registers to 'unique' mode). 3. Applies the offset in code generation. Drive-by: Add src/compiler/globals.h for compiler-specific globals. Bug: v8:9534,chromium:1000887 Change-Id: I257191c4a4978ccb60cfa5805ef421f30f0e9826 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1762521 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#63701}
-
- 11 Sep, 2019 2 commits
-
-
Ng Zhi An authored
Implementations for other architectures will follow in subsequent changes. Bug: v8:8460 Change-Id: I279388ab76b1d88d65cbe179088be5573c17fc58 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1796317 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Bill Budge <bbudge@chromium.org> Cr-Commit-Position: refs/heads/master@{#63693}
-
Igor Sheludko authored
... to precisely express which guarantees does this operator provide. Drive-by-fix: use it for other tag-checking predicates in CSA. Bug: v8:9396 Change-Id: Ifee22922ac02ec8866038be1a97625a32638d521 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1795504 Commit-Queue: Igor Sheludko <ishell@chromium.org> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#63681}
-
- 09 Sep, 2019 2 commits
-
-
Zhi An Ng authored
This reverts commit 306bb635. Reason for revert: Fails on Win64 msvc https://ci.chromium.org/p/v8/builders/ci/V8%20Win64%20-%20msvc/10601 Original change's description: > [wasm-simd] Implement F64x2ConvertI64x2 for x64 > > Bug: v8:8460 > Change-Id: Icefb90c67af77ac93bd75b4e452ba426232de83a > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1710332 > Commit-Queue: Zhi An Ng <zhin@chromium.org> > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > Reviewed-by: Bill Budge <bbudge@chromium.org> > Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> > Cr-Commit-Position: refs/heads/master@{#63627} TBR=bbudge@chromium.org,mstarzinger@chromium.org,gdeepti@chromium.org,zhin@chromium.org Change-Id: I3ad568ec01f93e89ccc758170681035413b8414e No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:8460 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1792232Reviewed-by: Zhi An Ng <zhin@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#63628}
-
Ng Zhi An authored
Bug: v8:8460 Change-Id: Icefb90c67af77ac93bd75b4e452ba426232de83a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1710332 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Bill Budge <bbudge@chromium.org> Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> Cr-Commit-Position: refs/heads/master@{#63627}
-
- 13 Aug, 2019 2 commits
-
-
Ng Zhi An authored
This is a reland of https://chromium-review.googlesource.com/c/v8/v8/+/1749712 with a fix in test-run-wasm-simd.cc to use base::Divide to work around C++ undefined behavior when the denominator is 0. Bug: v8:8460 Change-Id: Ia0a4ff621cccc6d9b7528717bf3fa7c79e42ba1a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1745819 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#63198}
-
Santiago Aboy Solanes authored
We were going for 64 bits to go back to 32 bits. For example, TruncateInt64ToInt32(BitcastTaggedSignedToWord(ChangeCompressedToTagged(x))) when that doesn't modify the value at all. In order to keep the machine graph verifier happy two bitcast operations were introduced. As a drive-by nit cleanup, we were having two empty lines between some functions implementations in machine-operator-reducer.cc. Bug: v8:7703 Change-Id: Ifaa0d656010fe4f6f6f4581a2bb6633f060245b7 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1749383 Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#63191}
-
- 12 Aug, 2019 4 commits
-
-
Zhi An Ng authored
This reverts commit 7cefcded. Reason for revert: ubsan failures, see https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20UBSan/7465 Original change's description: > Implement F64x2Div for x64 > > Bug: v8:8460 > Change-Id: I78cb2badab3f28621f91d6ff5f455967fdcbee44 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1731782 > Reviewed-by: Bill Budge <bbudge@chromium.org> > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > Commit-Queue: Zhi An Ng <zhin@chromium.org> > Cr-Commit-Position: refs/heads/master@{#63171} TBR=bbudge@chromium.org,mstarzinger@chromium.org,gdeepti@chromium.org,zhin@chromium.org Change-Id: I17db933763ba966a2d3f8be58e586b6a61f7995e No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:8460 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1749712Reviewed-by: Zhi An Ng <zhin@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#63172}
-
Ng Zhi An authored
Bug: v8:8460 Change-Id: I78cb2badab3f28621f91d6ff5f455967fdcbee44 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1731782Reviewed-by: Bill Budge <bbudge@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#63171}
-
Jakob Gruber authored
Now that all uses of LoadStackPointer have been removed, this CL cleans up related code: - Removed LoadStackPointer. - Removed ArchStackPointer. - Removed IA32StackCheck. - Removed X64StackCheck. - Removed StackCheckMatcher. All stack checks now follow a simple path without matchers or special register constraints: they load the limit and pass it to StackPointerGreaterThan, which is finally handled by code generation. Bug: v8:9534 Change-Id: Ib1d7be1502a471541d6441f3261aac0c949525fb Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1748737 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#63166}
-
Jakob Gruber authored
This CL unifies how stack checks are handled in the Turbofan pipeline across architectures, in preparation for properly handling stack overflows caused by deoptimization in follow-up work. It will also open up possibilities to simplify related logic. How this used to work: JSStackCheck was lowered to a UintLessThan with the stack pointer (sp) and stack limit as inputs. On x64 and ia32, this node pattern was later recognized during instruction selection and rewritten to dedicated operators. On other platforms, including arm and arm64, special logic exists to avoid useless register-to-register moves when accessing the sp. This CL introduces a new StackPointerGreaterThan operator, which takes the stack limit as its sole input. This is what JSStackCheck now lowers to. This is threaded through to code generation, where we emit the appropriate code (in the future, we will apply an additional offset to the sp here). In follow-up CLs, we can remove or replace remaining uses of LoadStackPointer in CSA, Wasm, and the interpreter; and then remove the LoadStackPointer operator, related node matchers, related register constraints, and the pseudo-smi stack limit roots. Bug: v8:9534 Change-Id: I0e3f1beeed65b163c4ee5787600bed8c3cc671e1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1738863Reviewed-by: Georg Neis <neis@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#63156}
-
- 02 Aug, 2019 1 commit
-
-
Ng Zhi An authored
Also add a IsExtreme(double) overload. This wasn't causing issues because there was no codepath which exercised it (only approx operations did). Change-Id: If7583fb567137c428d16c0d2cdfc37e086f7f3fd Bug: v8:8460 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1726675Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Bill Budge <bbudge@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#63053}
-
- 30 Jul, 2019 1 commit
-
-
Deepti Gandluri authored
- Add new instruction variants for psllq, psrlq (x64), vshl (ARM) - Add instruction selection, code generation for register shifts - Remove implicit immediate for shift operators - Fix interpreter, tests Bug:v8:8934, v8:8460 Change-Id: I3481d7ba34a34f7792ff1a61d4a726a1a9abab8d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1722198 Commit-Queue: Deepti Gandluri <gdeepti@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Bill Budge <bbudge@chromium.org> Reviewed-by: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#62995}
-
- 25 Jul, 2019 2 commits
-
-
Ng Zhi An authored
Bug: v8:8460 Change-Id: I913406a4079c766432a56d059a6cb9861fd469bd Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1703993Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Bill Budge <bbudge@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#62924}
-
Ng Zhi An authored
Bug: v8:8460 Change-Id: Ia9b2360c414abedfd9690e97b555c4e9b19fa1b4 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1708451Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Bill Budge <bbudge@chromium.org> Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#62922}
-
- 19 Jul, 2019 3 commits
-
-
Michael Starzinger authored
This adds decoding and compilation of the "atomic.fence" operator, which is intended to preserve the synchronization guarantees of higher-level languages. Unlike other atomic operators, it does not target a particular linear memory. It may occur in modules which declare no memory, or a non-shared memory, without causing a validation error. See proposal: https://github.com/WebAssembly/threads/pull/141 See discussion: https://github.com/WebAssembly/threads/issues/140 R=clemensh@chromium.org TEST=cctest/test-run-wasm-atomics/RunWasmXXX_AtomicFence BUG=v8:9452 Change-Id: Ibf7e46227f7edfe5c81c097cfc15924c59614067 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1701856 Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> Cr-Commit-Position: refs/heads/master@{#62821}
-
Ng Zhi An authored
Bug: v8:8460 Change-Id: I3e649e1398be429b8aff5b57316e320f9ca5ae8f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1703763 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Bill Budge <bbudge@chromium.org> Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> Cr-Commit-Position: refs/heads/master@{#62817}
-
Ng Zhi An authored
Bug: v8:8460 Change-Id: Ica8329efa9be5944037e205f371d2bc34b882e0d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1703762Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Bill Budge <bbudge@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#62816}
-
- 16 Jul, 2019 1 commit
-
-
Ng Zhi An authored
Bug: v8:8460 Change-Id: I98ae0b9cf90201ddf61488104f4c49df4e73b8dc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1690201 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Bill Budge <bbudge@chromium.org> Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> Cr-Commit-Position: refs/heads/master@{#62728}
-