summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@nokia.com>2012-05-07 11:21:11 +0200
committerSimon Hausmann <simon.hausmann@nokia.com>2012-05-07 11:21:11 +0200
commit2cf6c8816a73e0132bd8fa3b509d62d7c51b6e47 (patch)
tree988e8c5b116dd0466244ae2fe5af8ee9be926d76 /Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h
parentdd91e772430dc294e3bf478c119ef8d43c0a3358 (diff)
downloadqtwebkit-2cf6c8816a73e0132bd8fa3b509d62d7c51b6e47.tar.gz
Imported WebKit commit 7e538425aa020340619e927792f3d895061fb54b (http://svn.webkit.org/repository/webkit/trunk@116286)
Diffstat (limited to 'Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h')
-rw-r--r--Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h50
1 files changed, 28 insertions, 22 deletions
diff --git a/Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h b/Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h
index 910bc5a47..f9c3457b5 100644
--- a/Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h
+++ b/Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h
@@ -116,7 +116,7 @@ public:
void add32(TrustedImm32 imm, RegisterID src, RegisterID dest)
{
- if (!imm.m_isPointer && imm.m_value >= -32768 && imm.m_value <= 32767
+ if (imm.m_value >= -32768 && imm.m_value <= 32767
&& !m_fixedWidth) {
/*
addiu dest, src, imm
@@ -148,8 +148,7 @@ public:
sw dataTemp, offset(base)
*/
m_assembler.lw(dataTempRegister, address.base, address.offset);
- if (!imm.m_isPointer
- && imm.m_value >= -32768 && imm.m_value <= 32767
+ if (imm.m_value >= -32768 && imm.m_value <= 32767
&& !m_fixedWidth)
m_assembler.addiu(dataTempRegister, dataTempRegister,
imm.m_value);
@@ -228,7 +227,7 @@ public:
*/
move(TrustedImmPtr(address.m_ptr), addrTempRegister);
m_assembler.lw(dataTempRegister, addrTempRegister, 0);
- if (!imm.m_isPointer && imm.m_value >= -32768 && imm.m_value <= 32767
+ if (imm.m_value >= -32768 && imm.m_value <= 32767
&& !m_fixedWidth)
m_assembler.addiu(dataTempRegister, dataTempRegister, imm.m_value);
else {
@@ -245,9 +244,9 @@ public:
void and32(TrustedImm32 imm, RegisterID dest)
{
- if (!imm.m_isPointer && !imm.m_value && !m_fixedWidth)
+ if (!imm.m_value && !m_fixedWidth)
move(MIPSRegisters::zero, dest);
- else if (!imm.m_isPointer && imm.m_value > 0 && imm.m_value < 65535
+ else if (imm.m_value > 0 && imm.m_value < 65535
&& !m_fixedWidth)
m_assembler.andi(dest, dest, imm.m_value);
else {
@@ -277,9 +276,9 @@ public:
void mul32(TrustedImm32 imm, RegisterID src, RegisterID dest)
{
- if (!imm.m_isPointer && !imm.m_value && !m_fixedWidth)
+ if (!imm.m_value && !m_fixedWidth)
move(MIPSRegisters::zero, dest);
- else if (!imm.m_isPointer && imm.m_value == 1 && !m_fixedWidth)
+ else if (imm.m_value == 1 && !m_fixedWidth)
move(src, dest);
else {
/*
@@ -308,10 +307,10 @@ public:
void or32(TrustedImm32 imm, RegisterID dest)
{
- if (!imm.m_isPointer && !imm.m_value && !m_fixedWidth)
+ if (!imm.m_value && !m_fixedWidth)
return;
- if (!imm.m_isPointer && imm.m_value > 0 && imm.m_value < 65535
+ if (imm.m_value > 0 && imm.m_value < 65535
&& !m_fixedWidth) {
m_assembler.ori(dest, dest, imm.m_value);
return;
@@ -357,7 +356,7 @@ public:
void sub32(TrustedImm32 imm, RegisterID dest)
{
- if (!imm.m_isPointer && imm.m_value >= -32767 && imm.m_value <= 32768
+ if (imm.m_value >= -32767 && imm.m_value <= 32768
&& !m_fixedWidth) {
/*
addiu dest, src, imm
@@ -375,7 +374,7 @@ public:
void sub32(RegisterID src, TrustedImm32 imm, RegisterID dest)
{
- if (!imm.m_isPointer && imm.m_value >= -32767 && imm.m_value <= 32768
+ if (imm.m_value >= -32767 && imm.m_value <= 32768
&& !m_fixedWidth) {
/*
addiu dest, src, imm
@@ -402,8 +401,7 @@ public:
sw dataTemp, offset(base)
*/
m_assembler.lw(dataTempRegister, address.base, address.offset);
- if (!imm.m_isPointer
- && imm.m_value >= -32767 && imm.m_value <= 32768
+ if (imm.m_value >= -32767 && imm.m_value <= 32768
&& !m_fixedWidth)
m_assembler.addiu(dataTempRegister, dataTempRegister,
-imm.m_value);
@@ -426,8 +424,7 @@ public:
m_assembler.addu(addrTempRegister, addrTempRegister, address.base);
m_assembler.lw(dataTempRegister, addrTempRegister, address.offset);
- if (!imm.m_isPointer
- && imm.m_value >= -32767 && imm.m_value <= 32768
+ if (imm.m_value >= -32767 && imm.m_value <= 32768
&& !m_fixedWidth)
m_assembler.addiu(dataTempRegister, dataTempRegister,
-imm.m_value);
@@ -458,7 +455,7 @@ public:
move(TrustedImmPtr(address.m_ptr), addrTempRegister);
m_assembler.lw(dataTempRegister, addrTempRegister, 0);
- if (!imm.m_isPointer && imm.m_value >= -32767 && imm.m_value <= 32768
+ if (imm.m_value >= -32767 && imm.m_value <= 32768
&& !m_fixedWidth) {
m_assembler.addiu(dataTempRegister, dataTempRegister,
-imm.m_value);
@@ -807,7 +804,7 @@ public:
{
if (address.offset >= -32768 && address.offset <= 32767
&& !m_fixedWidth) {
- if (!imm.m_isPointer && !imm.m_value)
+ if (!imm.m_value)
m_assembler.sw(MIPSRegisters::zero, address.base,
address.offset);
else {
@@ -822,7 +819,7 @@ public:
*/
m_assembler.lui(addrTempRegister, (address.offset + 0x8000) >> 16);
m_assembler.addu(addrTempRegister, addrTempRegister, address.base);
- if (!imm.m_isPointer && !imm.m_value && !m_fixedWidth)
+ if (!imm.m_value && !m_fixedWidth)
m_assembler.sw(MIPSRegisters::zero, addrTempRegister,
address.offset);
else {
@@ -850,7 +847,7 @@ public:
li addrTemp, address
sw src, 0(addrTemp)
*/
- if (!imm.m_isPointer && !imm.m_value && !m_fixedWidth) {
+ if (!imm.m_value && !m_fixedWidth) {
move(TrustedImmPtr(address), addrTempRegister);
m_assembler.sw(MIPSRegisters::zero, addrTempRegister, 0);
} else {
@@ -928,9 +925,9 @@ public:
void move(TrustedImm32 imm, RegisterID dest)
{
- if (!imm.m_isPointer && !imm.m_value && !m_fixedWidth)
+ if (!imm.m_value && !m_fixedWidth)
move(MIPSRegisters::zero, dest);
- else if (imm.m_isPointer || m_fixedWidth) {
+ else if (m_fixedWidth) {
m_assembler.lui(dest, imm.m_value >> 16);
m_assembler.ori(dest, dest, imm.m_value);
} else
@@ -994,6 +991,15 @@ public:
return branch32(cond, dataTempRegister, immTempRegister);
}
+ void compare8(RelationalCondition cond, Address left, TrustedImm32 right, RegisterID dest)
+ {
+ // Make sure the immediate value is unsigned 8 bits.
+ ASSERT(!(right.m_value & 0xFFFFFF00));
+ load8(left, dataTempRegister);
+ move(right, immTempRegister);
+ compare32(cond, dataTempRegister, immTempRegister, dest);
+ }
+
Jump branch8(RelationalCondition cond, BaseIndex left, TrustedImm32 right)
{
ASSERT(!(right.m_value & 0xFFFFFF00));