Changeset 85429 in webkit for trunk/Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h
- Timestamp:
- May 1, 2011, 1:26:42 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h
r84399 r85429 915 915 Jump branch32(RelationalCondition cond, RegisterID left, RegisterID right) 916 916 { 917 if (cond == Equal || cond == Zero)917 if (cond == Equal) 918 918 return branchEqual(left, right); 919 if (cond == NotEqual || cond == NonZero)919 if (cond == NotEqual) 920 920 return branchNotEqual(left, right); 921 921 if (cond == Above) { … … 950 950 m_assembler.slt(cmpTempRegister, right, left); 951 951 return branchEqual(cmpTempRegister, MIPSRegisters::zero); 952 }953 if (cond == Overflow) {954 /*955 xor cmpTemp, left, right956 bgez No_overflow, cmpTemp # same sign bit -> no overflow957 nop958 subu cmpTemp, left, right959 xor cmpTemp, cmpTemp, left960 bgez No_overflow, cmpTemp # same sign bit -> no overflow961 nop962 b Overflow963 nop964 nop965 nop966 nop967 nop968 No_overflow:969 */970 m_assembler.xorInsn(cmpTempRegister, left, right);971 m_assembler.bgez(cmpTempRegister, 11);972 m_assembler.nop();973 m_assembler.subu(cmpTempRegister, left, right);974 m_assembler.xorInsn(cmpTempRegister, cmpTempRegister, left);975 m_assembler.bgez(cmpTempRegister, 7);976 m_assembler.nop();977 return jump();978 }979 if (cond == Signed) {980 m_assembler.subu(cmpTempRegister, left, right);981 // Check if the result is negative.982 m_assembler.slt(cmpTempRegister, cmpTempRegister,983 MIPSRegisters::zero);984 return branchNotEqual(cmpTempRegister, MIPSRegisters::zero);985 952 } 986 953 ASSERT(0); … … 1361 1328 void compare32(RelationalCondition cond, RegisterID left, RegisterID right, RegisterID dest) 1362 1329 { 1363 if (cond == Equal || cond == Zero) {1330 if (cond == Equal) { 1364 1331 m_assembler.xorInsn(dest, left, right); 1365 1332 m_assembler.sltiu(dest, dest, 1); 1366 } else if (cond == NotEqual || cond == NonZero) {1333 } else if (cond == NotEqual) { 1367 1334 m_assembler.xorInsn(dest, left, right); 1368 1335 m_assembler.sltu(dest, MIPSRegisters::zero, dest); … … 1387 1354 m_assembler.slt(dest, right, left); 1388 1355 m_assembler.xori(dest, dest, 1); 1389 } else if (cond == Overflow) {1390 /*1391 xor cmpTemp, left, right1392 bgez Done, cmpTemp # same sign bit -> no overflow1393 move dest, 01394 subu cmpTemp, left, right1395 xor cmpTemp, cmpTemp, left # diff sign bit -> overflow1396 slt dest, cmpTemp, 01397 Done:1398 */1399 m_assembler.xorInsn(cmpTempRegister, left, right);1400 m_assembler.bgez(cmpTempRegister, 4);1401 m_assembler.move(dest, MIPSRegisters::zero);1402 m_assembler.subu(cmpTempRegister, left, right);1403 m_assembler.xorInsn(cmpTempRegister, cmpTempRegister, left);1404 m_assembler.slt(dest, cmpTempRegister, MIPSRegisters::zero);1405 } else if (cond == Signed) {1406 m_assembler.subu(dest, left, right);1407 // Check if the result is negative.1408 m_assembler.slt(dest, dest, MIPSRegisters::zero);1409 1356 } 1410 1357 }
Note:
See TracChangeset
for help on using the changeset viewer.