OLD | NEW |
1 // Copyright (c) 1994-2006 Sun Microsystems Inc. | 1 // Copyright (c) 1994-2006 Sun Microsystems Inc. |
2 // All Rights Reserved. | 2 // All Rights Reserved. |
3 // | 3 // |
4 // Redistribution and use in source and binary forms, with or without | 4 // Redistribution and use in source and binary forms, with or without |
5 // modification, are permitted provided that the following conditions | 5 // modification, are permitted provided that the following conditions |
6 // are met: | 6 // are met: |
7 // | 7 // |
8 // - Redistributions of source code must retain the above copyright notice, | 8 // - Redistributions of source code must retain the above copyright notice, |
9 // this list of conditions and the following disclaimer. | 9 // this list of conditions and the following disclaimer. |
10 // | 10 // |
(...skipping 1553 matching lines...) Loading... |
1564 | 1564 |
1565 void Assembler::udiv(Register dst, Register src1, Register src2, | 1565 void Assembler::udiv(Register dst, Register src1, Register src2, |
1566 Condition cond) { | 1566 Condition cond) { |
1567 DCHECK(!dst.is(pc) && !src1.is(pc) && !src2.is(pc)); | 1567 DCHECK(!dst.is(pc) && !src1.is(pc) && !src2.is(pc)); |
1568 DCHECK(IsEnabled(SUDIV)); | 1568 DCHECK(IsEnabled(SUDIV)); |
1569 emit(cond | B26 | B25 | B24 | B21 | B20 | dst.code() * B16 | 0xf * B12 | | 1569 emit(cond | B26 | B25 | B24 | B21 | B20 | dst.code() * B16 | 0xf * B12 | |
1570 src2.code() * B8 | B4 | src1.code()); | 1570 src2.code() * B8 | B4 | src1.code()); |
1571 } | 1571 } |
1572 | 1572 |
1573 | 1573 |
1574 void Assembler::mul(Register dst, Register src1, Register src2, | 1574 void Assembler::mul(Register dst, Register src1, Register src2, SBit s, |
1575 SBit s, Condition cond) { | 1575 Condition cond) { |
1576 DCHECK(!dst.is(pc) && !src1.is(pc) && !src2.is(pc)); | 1576 DCHECK(!dst.is(pc) && !src1.is(pc) && !src2.is(pc)); |
1577 // dst goes in bits 16-19 for this instruction! | 1577 // dst goes in bits 16-19 for this instruction! |
1578 emit(cond | s | dst.code()*B16 | src2.code()*B8 | B7 | B4 | src1.code()); | 1578 emit(cond | s | dst.code() * B16 | src2.code() * B8 | B7 | B4 | src1.code()); |
1579 } | 1579 } |
1580 | 1580 |
1581 | 1581 |
| 1582 void Assembler::smmla(Register dst, Register src1, Register src2, Register srcA, |
| 1583 Condition cond) { |
| 1584 DCHECK(!dst.is(pc) && !src1.is(pc) && !src2.is(pc) && !srcA.is(pc)); |
| 1585 emit(cond | B26 | B25 | B24 | B22 | B20 | dst.code() * B16 | |
| 1586 srcA.code() * B12 | src2.code() * B8 | B4 | src1.code()); |
| 1587 } |
| 1588 |
| 1589 |
| 1590 void Assembler::smmls(Register dst, Register src1, Register src2, Register srcA, |
| 1591 Condition cond) { |
| 1592 DCHECK(!dst.is(pc) && !src1.is(pc) && !src2.is(pc) && !srcA.is(pc)); |
| 1593 emit(cond | B26 | B25 | B24 | B22 | B20 | dst.code() * B16 | |
| 1594 srcA.code() * B12 | src2.code() * B8 | B7 | B6 | B4 | src1.code()); |
| 1595 } |
| 1596 |
| 1597 |
| 1598 void Assembler::smmul(Register dst, Register src1, Register src2, |
| 1599 Condition cond) { |
| 1600 DCHECK(!dst.is(pc) && !src1.is(pc) && !src2.is(pc)); |
| 1601 emit(cond | B26 | B25 | B24 | B22 | B20 | dst.code() * B16 | 0xf * B12 | |
| 1602 src2.code() * B8 | B4 | src1.code()); |
| 1603 } |
| 1604 |
| 1605 |
1582 void Assembler::smlal(Register dstL, | 1606 void Assembler::smlal(Register dstL, |
1583 Register dstH, | 1607 Register dstH, |
1584 Register src1, | 1608 Register src1, |
1585 Register src2, | 1609 Register src2, |
1586 SBit s, | 1610 SBit s, |
1587 Condition cond) { | 1611 Condition cond) { |
1588 DCHECK(!dstL.is(pc) && !dstH.is(pc) && !src1.is(pc) && !src2.is(pc)); | 1612 DCHECK(!dstL.is(pc) && !dstH.is(pc) && !src1.is(pc) && !src2.is(pc)); |
1589 DCHECK(!dstL.is(dstH)); | 1613 DCHECK(!dstL.is(dstH)); |
1590 emit(cond | B23 | B22 | A | s | dstH.code()*B16 | dstL.code()*B12 | | 1614 emit(cond | B23 | B22 | A | s | dstH.code()*B16 | dstL.code()*B12 | |
1591 src2.code()*B8 | B7 | B4 | src1.code()); | 1615 src2.code()*B8 | B7 | B4 | src1.code()); |
(...skipping 2243 matching lines...) Loading... |
3835 assm->instr_at_put( | 3859 assm->instr_at_put( |
3836 rinfo.pc(), Assembler::SetLdrRegisterImmediateOffset(instr, offset)); | 3860 rinfo.pc(), Assembler::SetLdrRegisterImmediateOffset(instr, offset)); |
3837 } | 3861 } |
3838 } | 3862 } |
3839 } | 3863 } |
3840 | 3864 |
3841 | 3865 |
3842 } } // namespace v8::internal | 3866 } } // namespace v8::internal |
3843 | 3867 |
3844 #endif // V8_TARGET_ARCH_ARM | 3868 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |