Changeset 56759 in webkit for trunk/JavaScriptCore/assembler/MacroAssemblerMIPS.h
- Timestamp:
- Mar 29, 2010, 7:59:20 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/assembler/MacroAssemblerMIPS.h
r55633 r56759 443 443 // register is passed. 444 444 445 /* Need to use zero-extened load byte for load8. */ 446 void load8(ImplicitAddress address, RegisterID dest) 447 { 448 if (address.offset >= -32768 && address.offset <= 32767 449 && !m_fixedWidth) 450 m_assembler.lbu(dest, address.base, address.offset); 451 else { 452 /* 453 lui addrTemp, (offset + 0x8000) >> 16 454 addu addrTemp, addrTemp, base 455 lbu dest, (offset & 0xffff)(addrTemp) 456 */ 457 m_assembler.lui(addrTempRegister, (address.offset + 0x8000) >> 16); 458 m_assembler.addu(addrTempRegister, addrTempRegister, address.base); 459 m_assembler.lbu(dest, addrTempRegister, address.offset); 460 } 461 } 462 445 463 void load32(ImplicitAddress address, RegisterID dest) 446 464 { … … 857 875 // an optional second operand of a mask under which to perform the test. 858 876 877 Jump branch8(Condition cond, Address left, Imm32 right) 878 { 879 // Make sure the immediate value is unsigned 8 bits. 880 ASSERT(!(right.m_value & 0xFFFFFF00)); 881 load8(left, dataTempRegister); 882 move(right, immTempRegister); 883 return branch32(cond, dataTempRegister, immTempRegister); 884 } 885 859 886 Jump branch32(Condition cond, RegisterID left, RegisterID right) 860 887 { … … 1036 1063 { 1037 1064 load32(address, dataTempRegister); 1065 return branchTest32(cond, dataTempRegister, mask); 1066 } 1067 1068 Jump branchTest8(Condition cond, Address address, Imm32 mask = Imm32(-1)) 1069 { 1070 load8(address, dataTempRegister); 1038 1071 return branchTest32(cond, dataTempRegister, mask); 1039 1072 } … … 1333 1366 } 1334 1367 1368 void setTest8(Condition cond, Address address, Imm32 mask, RegisterID dest) 1369 { 1370 ASSERT((cond == Zero) || (cond == NonZero)); 1371 load8(address, dataTempRegister); 1372 if (mask.m_value == -1 && !m_fixedWidth) { 1373 if (cond == Zero) 1374 m_assembler.sltiu(dest, dataTempRegister, 1); 1375 else 1376 m_assembler.sltu(dest, MIPSRegisters::zero, dataTempRegister); 1377 } else { 1378 move(mask, immTempRegister); 1379 m_assembler.andInsn(cmpTempRegister, dataTempRegister, 1380 immTempRegister); 1381 if (cond == Zero) 1382 m_assembler.sltiu(dest, cmpTempRegister, 1); 1383 else 1384 m_assembler.sltu(dest, MIPSRegisters::zero, cmpTempRegister); 1385 } 1386 } 1387 1335 1388 void setTest32(Condition cond, Address address, Imm32 mask, RegisterID dest) 1336 1389 { … … 1345 1398 move(mask, immTempRegister); 1346 1399 m_assembler.andInsn(cmpTempRegister, dataTempRegister, 1347 1400 immTempRegister); 1348 1401 if (cond == Zero) 1349 1402 m_assembler.sltiu(dest, cmpTempRegister, 1);
Note:
See TracChangeset
for help on using the changeset viewer.