summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/jit/FPRInfo.h
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/JavaScriptCore/jit/FPRInfo.h
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/JavaScriptCore/jit/FPRInfo.h')
-rw-r--r--Source/JavaScriptCore/jit/FPRInfo.h112
1 files changed, 33 insertions, 79 deletions
diff --git a/Source/JavaScriptCore/jit/FPRInfo.h b/Source/JavaScriptCore/jit/FPRInfo.h
index 5bb0e16cc..ec0ab125a 100644
--- a/Source/JavaScriptCore/jit/FPRInfo.h
+++ b/Source/JavaScriptCore/jit/FPRInfo.h
@@ -23,8 +23,7 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef FPRInfo_h
-#define FPRInfo_h
+#pragma once
#include "MacroAssembler.h"
#include <wtf/PrintStream.h>
@@ -42,6 +41,7 @@ class FPRInfo {
public:
typedef FPRReg RegisterType;
static const unsigned numberOfRegisters = 6;
+ static const unsigned numberOfArgumentRegisters = 8;
// Temporary registers.
static const FPRReg fpRegT0 = X86Registers::xmm0;
@@ -56,6 +56,10 @@ public:
static const FPRReg argumentFPR1 = X86Registers::xmm1; // fpRegT1
static const FPRReg argumentFPR2 = X86Registers::xmm2; // fpRegT2
static const FPRReg argumentFPR3 = X86Registers::xmm3; // fpRegT3
+ static const FPRReg argumentFPR4 = X86Registers::xmm4; // fpRegT4
+ static const FPRReg argumentFPR5 = X86Registers::xmm5; // fpRegT5
+ static const FPRReg argumentFPR6 = X86Registers::xmm6;
+ static const FPRReg argumentFPR7 = X86Registers::xmm7;
#endif
// On X86 the return will actually be on the x87 stack,
// so we'll copy to xmm0 for sanity!
@@ -182,6 +186,7 @@ class FPRInfo {
public:
typedef FPRReg RegisterType;
static const unsigned numberOfRegisters = 23;
+ static const unsigned numberOfArgumentRegisters = 8;
// Temporary registers.
// q8-q15 are callee saved, q31 is use by the MacroAssembler as fpTempRegister.
@@ -208,6 +213,14 @@ public:
static const FPRReg fpRegT20 = ARM64Registers::q28;
static const FPRReg fpRegT21 = ARM64Registers::q29;
static const FPRReg fpRegT22 = ARM64Registers::q30;
+ static const FPRReg fpRegCS0 = ARM64Registers::q8;
+ static const FPRReg fpRegCS1 = ARM64Registers::q9;
+ static const FPRReg fpRegCS2 = ARM64Registers::q10;
+ static const FPRReg fpRegCS3 = ARM64Registers::q11;
+ static const FPRReg fpRegCS4 = ARM64Registers::q12;
+ static const FPRReg fpRegCS5 = ARM64Registers::q13;
+ static const FPRReg fpRegCS6 = ARM64Registers::q14;
+ static const FPRReg fpRegCS7 = ARM64Registers::q15;
static const FPRReg argumentFPR0 = ARM64Registers::q0; // fpRegT0
static const FPRReg argumentFPR1 = ARM64Registers::q1; // fpRegT1
@@ -242,10 +255,15 @@ public:
16, 17, 18, 19, 20, 21, 22, InvalidIndex
};
unsigned result = indexForRegister[reg];
- ASSERT(result != InvalidIndex);
return result;
}
+ static FPRReg toArgumentRegister(unsigned index)
+ {
+ ASSERT(index < 8);
+ return static_cast<FPRReg>(index);
+ }
+
static const char* debugName(FPRReg reg)
{
ASSERT(reg != InvalidFPRReg);
@@ -269,15 +287,16 @@ public:
class FPRInfo {
public:
typedef FPRReg RegisterType;
- static const unsigned numberOfRegisters = 6;
+ static const unsigned numberOfRegisters = 7;
// Temporary registers.
static const FPRReg fpRegT0 = MIPSRegisters::f0;
- static const FPRReg fpRegT1 = MIPSRegisters::f4;
- static const FPRReg fpRegT2 = MIPSRegisters::f6;
- static const FPRReg fpRegT3 = MIPSRegisters::f8;
- static const FPRReg fpRegT4 = MIPSRegisters::f10;
- static const FPRReg fpRegT5 = MIPSRegisters::f18;
+ static const FPRReg fpRegT1 = MIPSRegisters::f2;
+ static const FPRReg fpRegT2 = MIPSRegisters::f4;
+ static const FPRReg fpRegT3 = MIPSRegisters::f6;
+ static const FPRReg fpRegT4 = MIPSRegisters::f8;
+ static const FPRReg fpRegT5 = MIPSRegisters::f10;
+ static const FPRReg fpRegT6 = MIPSRegisters::f18;
static const FPRReg returnValueFPR = MIPSRegisters::f0;
@@ -287,7 +306,7 @@ public:
static FPRReg toRegister(unsigned index)
{
static const FPRReg registerForIndex[numberOfRegisters] = {
- fpRegT0, fpRegT1, fpRegT2, fpRegT3, fpRegT4, fpRegT5 };
+ fpRegT0, fpRegT1, fpRegT2, fpRegT3, fpRegT4, fpRegT5, fpRegT6 };
ASSERT(index < numberOfRegisters);
return registerForIndex[index];
@@ -298,14 +317,13 @@ public:
ASSERT(reg != InvalidFPRReg);
ASSERT(reg < 20);
static const unsigned indexForRegister[20] = {
- 0, InvalidIndex, InvalidIndex, InvalidIndex,
- 1, InvalidIndex, 2, InvalidIndex,
- 3, InvalidIndex, 4, InvalidIndex,
+ 0, InvalidIndex, 1, InvalidIndex,
+ 2, InvalidIndex, 3, InvalidIndex,
+ 4, InvalidIndex, 5, InvalidIndex,
InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex,
- InvalidIndex, InvalidIndex, 5, InvalidIndex,
+ InvalidIndex, InvalidIndex, 6, InvalidIndex,
};
unsigned result = indexForRegister[reg];
- ASSERT(result != InvalidIndex);
return result;
}
@@ -331,68 +349,6 @@ public:
#endif // CPU(MIPS)
-#if CPU(SH4)
-
-class FPRInfo {
-public:
- typedef FPRReg RegisterType;
- static const unsigned numberOfRegisters = 6;
-
- // Temporary registers.
- static const FPRReg fpRegT0 = SH4Registers::dr0;
- static const FPRReg fpRegT1 = SH4Registers::dr2;
- static const FPRReg fpRegT2 = SH4Registers::dr4;
- static const FPRReg fpRegT3 = SH4Registers::dr6;
- static const FPRReg fpRegT4 = SH4Registers::dr8;
- static const FPRReg fpRegT5 = SH4Registers::dr10;
-
- static const FPRReg returnValueFPR = SH4Registers::dr0;
-
- static const FPRReg argumentFPR0 = SH4Registers::dr4;
- static const FPRReg argumentFPR1 = SH4Registers::dr6;
-
- static FPRReg toRegister(unsigned index)
- {
- static const FPRReg registerForIndex[numberOfRegisters] = {
- fpRegT0, fpRegT1, fpRegT2, fpRegT3, fpRegT4, fpRegT5 };
-
- ASSERT(index < numberOfRegisters);
- return registerForIndex[index];
- }
-
- static unsigned toIndex(FPRReg reg)
- {
- ASSERT(reg != InvalidFPRReg);
- ASSERT(reg < 16);
- static const unsigned indexForRegister[16] = {
- 0, InvalidIndex, 1, InvalidIndex,
- 2, InvalidIndex, 3, InvalidIndex,
- 4, InvalidIndex, 5, InvalidIndex,
- InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex
- };
- unsigned result = indexForRegister[reg];
- ASSERT(result != InvalidIndex);
- return result;
- }
-
- static const char* debugName(FPRReg reg)
- {
- ASSERT(reg != InvalidFPRReg);
- ASSERT(reg < 16);
- static const char* nameForRegister[16] = {
- "dr0", "fr1", "dr2", "fr3",
- "dr4", "fr5", "dr6", "fr7",
- "dr8", "fr9", "dr10", "fr11",
- "dr12", "fr13", "dr14", "fr15"
- };
- return nameForRegister[reg];
- }
-
- static const unsigned InvalidIndex = 0xffffffff;
-};
-
-#endif // CPU(SH4)
-
#endif // ENABLE(JIT)
} // namespace JSC
@@ -409,5 +365,3 @@ inline void printInternal(PrintStream& out, JSC::FPRReg reg)
}
} // namespace WTF
-
-#endif