1454 __ delayed()->nop(); |
1452 __ delayed()->nop(); |
1455 //__ stop("lshl, wrong stack"); // <-- Fu 20130930 |
1453 //__ stop("lshl, wrong stack"); // <-- Fu 20130930 |
1456 __ bind(L); |
1454 __ bind(L); |
1457 } |
1455 } |
1458 #endif |
1456 #endif |
1459 __ andi(FSR, FSR, 0x3f); // the bit to be shifted |
|
1460 __ dsllv(FSR, T0, FSR); |
1457 __ dsllv(FSR, T0, FSR); |
1461 } |
1458 } |
1462 |
1459 |
1463 // used registers : T0 |
1460 // used registers : T0 |
1464 void TemplateTable::lshr() { |
1461 void TemplateTable::lshr() { |
1471 __ delayed()->nop(); |
1468 __ delayed()->nop(); |
1472 __ stop("lshr, wrong stack"); |
1469 __ stop("lshr, wrong stack"); |
1473 __ bind(L); |
1470 __ bind(L); |
1474 } |
1471 } |
1475 #endif |
1472 #endif |
1476 __ andi(FSR, FSR, 0x3f); // the bit to be shifted |
|
1477 __ dsrav(FSR, T0, FSR); |
1473 __ dsrav(FSR, T0, FSR); |
1478 } |
1474 } |
1479 |
1475 |
1480 // used registers : T0 |
1476 // used registers : T0 |
1481 void TemplateTable::lushr() { |
1477 void TemplateTable::lushr() { |
1488 __ delayed()->nop(); |
1484 __ delayed()->nop(); |
1489 __ stop("lushr, wrong stack"); |
1485 __ stop("lushr, wrong stack"); |
1490 __ bind(L); |
1486 __ bind(L); |
1491 } |
1487 } |
1492 #endif |
1488 #endif |
1493 __ andi(FSR, FSR, 0x3f); // the bit to be shifted |
|
1494 __ dsrlv(FSR, T0, FSR); |
1489 __ dsrlv(FSR, T0, FSR); |
1495 } |
1490 } |
1496 |
1491 |
1497 // result in FSF |
1492 // result in FSF |
1498 void TemplateTable::fop2(Operation op) { |
1493 void TemplateTable::fop2(Operation op) { |