js/src/jit/BacktrackingAllocator.cpp:1039:13 [-Wclass-varargs] passing object of class type 'js::jit::CodePosition' through variadic function
js/src/jit/Safepoints.cpp:168:56 [-Wclass-varargs] passing object of class type 'js::jit::SafepointSlotEntry' through variadic function
js/src/jit/Safepoints.cpp:198:57 [-Wclass-varargs] passing object of class type 'js::jit::SafepointSlotEntry' through variadic function
The functions addSaturate() and subSaturate() are defined on the 8x16 and 16x8
integer SIMD types only.
Theee are no 32x4 variants defined in SIMD.js because current hardware doesn't
support it directly.
--HG--
extra : rebase_source : 876bd6ab47ccd007dd15d5b34948ebf33aca4f16
This is the right shift function that the SIMD.js spec requires. The old
shiftRightArithmeticByScalar() and shiftRightLogicalByScalar() functions will go
away.
These functions perform an arithmetic shift for signed types and a logical
shift for unsigned types.
Add support to Odin and Ion too, at least for the Int32x4 variant.
--HG--
extra : rebase_source : 7852f266a1ad505436c4c1607c17d542d81b2673
Fix a bug in ShiftRightArithmetic when the underlying Elem type is unsigned.
Need to cast to a signed type to so it sign-extends to int when shifting.
Implement both logical and arithmetic right shift implementations for both
signed and unsigned integers. This is needed to test our current implementation
where both signed and unsigned SIMD types have the two
shiftRightArithmeticByScalar() and shiftRightLogicalByScalar() functions.
Soon, shiftRightArithmeticByScalar() and shiftRightLogicalByScalar() will be
replaced by a single shiftRightByScalar() function whose behavior is dependent
on the signedness of the underlying type.
--HG--
extra : rebase_source : 00fa414d32592d8d923d2413a9d0f2082fb899d0
- Add new types UInt8x16, UInt16x8, UInt32x4 with all the boilerplate.
- Add corresponding conversion and bitcast functions to existing types.
- Add tests/ecma_7/SIMD tests for all new functions. Mostly boilerplate.
- Add full type coverage in ToSource.js. Fix existing SIMD types that were
broken.
- Use shared test vectors for all the 32x4 integer binary-op test cases.
- Fix a bug in the 32-bit multiplication reference implementation for Int32x4
and Uint32x4. A simple 'a*b' double multiplication loses precision to rounding
for some inputs.
--HG--
extra : rebase_source : 7268170538aae82766d661f3936657f368c6363f
The lists TypeDescriptorMethods and TypedObjectMethods are identical for all
SIMD types, so save a bit of memory and source code by sharing a single list.
--HG--
extra : rebase_source : 01f65e7eac8c8c99fb6c869206d75d2e5875002b
In the current SIMD.js spec, value conversions are only defined between types
with the same number of lanes:
Float32x4.fromInt32x4()
Float32x4.fromUInt32x4()
Int32x4.fromFloat32x4()
UInt32x4.fromFloat32x4()
Remove existing conversion operators between vectors with different numbers of
lanes:
Int32x4.fromFloat64x2()
Float32x4.fromFloat64x2()
Float64x2.fromInt32x4()
Float64x2.fromFloat32x4()
Add a static assertion to FuncConvert.
--HG--
extra : rebase_source : c7be47268c913134aa9b718000080e1d54a79f9f
clang-cl attempts to emulate MSVC's handling of __VA_ARGS__, but doesn't
quite get it right:
https://llvm.org/bugs/show_bug.cgi?id=25875
As a result of this, compiling files that #include MacroAssembler.h with
clang-cl result in fallbacks to MSVC. Since falling back to MSVC is
non-ideal (and also causes problems around things like linking function
template instantiations), let's disable MacroAssembler.h's macro magic
for the time being. Ideally, the problem will get fixed upstream
soon (even though it looks somewhat complicated); in the meantime,
fixing this issue lets forward progress be made when compiling Gecko
with clang-cl.
These operations were removed from the SIMD.js spec.
Also remove TypedObjectProperties from SIMD objects, since there are no such
properties defined in the spec.
Remove the bitwise operations from the Float32x4 type. The current version of
the spec defines these operations on integer and boolean types only.
Reorganize the operation lists in SIMD.h to be friendlier to the boolean
vectors. Also reflect the lact of bitwise operators on floating point types.
Also add an ENABLE_SIMD compilation flag that enables SIMD support in the
nightly build only. Previously, SIMD and BINARYDATA used the same flag.
Include a Bool64x2 type to go with the existing Float64x2 type. Neither are in
the current spec.
Skip some tests that time out with the fairly slow arm64 simulator. The listed
tests run on more than 100 seconds on my iMac.
Also reduce the number of JIT flag combinations tried in order to finish this
job in a reasonable time.
Don't depend on nextOffset() to get the address of the next inserted
instruction. Adding a single instruction could cause a constant pool to be
emitted first.
The b() method assembles a branch and returns its offset. Use this return value
when recording the location of a pending jump.
This fixes the MOZ_CRASH(Unrecognized jump instruction.) crashes.
This function can only handle small immediate adjustments to the stack pointer
because it is not allowed to use scratch registers.
Don't call it from MacroAssembler::Claim() which may allocate large stack
frames. Simply synchronize the system stack pointer to the pseudo stack pointer
instead.
Use the existing masm.initStackPtr() function to set up the x28 register
correctly on entry to jitted code.
This is already done correctly in JitRuntime::generateEnterJIT().
Since ARM64 doesn't have an Ion code generator yet, these tests will fail when
they check for ion-generated code.
This disables tests that look for frame.implementation == "ion" etc.
When running with --no-asmjs, and when we don't have a JIT capable of asm.js,
the returned warning is different. This test should handle those cases too.