Bug 1232205 - Wasm baseline: Add AllSingleMask for x86, ARM, ARM64, and none. r=bbouvier
authorLars T Hansen <lhansen@mozilla.com>
Thu, 02 Jun 2016 15:47:41 +0200
changeset 301752 5d7856a5357f3caed90111a198406634031886d7
parent 301751 893294e2a38721cca2347f567eb6776d4ab21bfb
child 301753 5b8a3144277a729820c941b31ca65ca29fec34aa
push id78441
push userlhansen@mozilla.com
push dateTue, 14 Jun 2016 13:35:29 +0000
treeherdermozilla-inbound@f7e83f55d492 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersbbouvier
bugs1232205
milestone50.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1232205 - Wasm baseline: Add AllSingleMask for x86, ARM, ARM64, and none. r=bbouvier
js/src/jit/arm/Architecture-arm.h
js/src/jit/arm64/Architecture-arm64.h
js/src/jit/none/Architecture-none.h
js/src/jit/x86-shared/Architecture-x86-shared.h
--- a/js/src/jit/arm/Architecture-arm.h
+++ b/js/src/jit/arm/Architecture-arm.h
@@ -286,18 +286,19 @@ class FloatRegisters
     static const uint32_t TotalDouble = 16;
     static const uint32_t TotalSingle = 32;
     static const uint32_t Allocatable = 45;
     // There are only 32 places that we can put values.
     static const uint32_t TotalPhys = 32;
     static uint32_t ActualTotalPhys();
 
     typedef uint64_t SetType;
-    static const SetType AllDoubleMask = ((1ull << 16) - 1) << 32;
-    static const SetType AllMask = ((1ull << 48) - 1);
+    static const SetType AllSingleMask = (1ull << TotalSingle) - 1;
+    static const SetType AllDoubleMask = ((1ull << TotalDouble) - 1) << TotalSingle;
+    static const SetType AllMask = AllDoubleMask | AllSingleMask;
 
     // d15 is the ScratchFloatReg.
     static const SetType NonVolatileDoubleMask =
          ((1ULL << d8) |
           (1ULL << d9) |
           (1ULL << d10) |
           (1ULL << d11) |
           (1ULL << d12) |
--- a/js/src/jit/arm64/Architecture-arm64.h
+++ b/js/src/jit/arm64/Architecture-arm64.h
@@ -265,16 +265,17 @@ class FloatRegisters
                 (1 << FloatRegisters::d22) | (1 << FloatRegisters::d23) |
                 (1 << FloatRegisters::d24) | (1 << FloatRegisters::d25) |
                 (1 << FloatRegisters::d26) | (1 << FloatRegisters::d27) |
                 (1 << FloatRegisters::d28) | (1 << FloatRegisters::d29) |
                 (1 << FloatRegisters::d30)) * SpreadCoefficient;
 
     static const SetType VolatileMask = AllMask & ~NonVolatileMask;
     static const SetType AllDoubleMask = AllMask;
+    static const SetType AllSingleMask = AllMask;
 
     static const SetType WrapperMask = VolatileMask;
 
     // d31 is the ScratchFloatReg.
     static const SetType NonAllocatableMask = (SetType(1) << FloatRegisters::d31) * SpreadCoefficient;
 
     // Registers that can be allocated without being saved, generally.
     static const SetType TempMask = VolatileMask & ~NonAllocatableMask;
--- a/js/src/jit/none/Architecture-none.h
+++ b/js/src/jit/none/Architecture-none.h
@@ -84,16 +84,17 @@ class FloatRegisters
     static Code FromName(const char*) { MOZ_CRASH(); }
 
     static const Code Invalid = invalid_reg;
     static const uint32_t Total = 0;
     static const uint32_t TotalPhys = 0;
     static const uint32_t Allocatable = 0;
     static const SetType AllMask = 0;
     static const SetType AllDoubleMask = 0;
+    static const SetType AllSingleMask = 0;
     static const SetType VolatileMask = 0;
     static const SetType NonVolatileMask = 0;
     static const SetType NonAllocatableMask = 0;
     static const SetType AllocatableMask = 0;
 };
 
 template <typename T>
 class TypedRegisterSet;
--- a/js/src/jit/x86-shared/Architecture-x86-shared.h
+++ b/js/src/jit/x86-shared/Architecture-x86-shared.h
@@ -256,16 +256,17 @@ class FloatRegisters {
     static const SetType SpreadSimd128 = SetType(1) << (uint32_t(Simd128) * TotalPhys);
     static const SetType SpreadScalar = SpreadSingle | SpreadDouble;
     static const SetType SpreadVector = SpreadSimd128;
     static const SetType Spread = SpreadScalar | SpreadVector;
 
     static const SetType AllPhysMask = ((1 << TotalPhys) - 1);
     static const SetType AllMask = AllPhysMask * Spread;
     static const SetType AllDoubleMask = AllPhysMask * SpreadDouble;
+    static const SetType AllSingleMask = AllPhysMask * SpreadSingle;
 
 #if defined(JS_CODEGEN_X86)
     static const SetType NonAllocatableMask =
         Spread * (1 << X86Encoding::xmm7);     // This is ScratchDoubleReg.
 
 #elif defined(JS_CODEGEN_X64)
     static const SetType NonAllocatableMask =
         Spread * (1 << X86Encoding::xmm15);    // This is ScratchDoubleReg.