Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(981)

Side by Side Diff: src/arm/assembler-arm.cc

Issue 648283002: [arm] Add support for SMMLA, SMMLS and SMMUL. (Closed) Base URL: git@github.com:v8/v8.git@master
Patch Set: Fix Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/arm/assembler-arm.h ('k') | src/arm/disasm-arm.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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...) Expand 10 before | Expand all | Expand 10 after
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...) Expand 10 before | Expand all | Expand 10 after
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
OLDNEW
« no previous file with comments | « src/arm/assembler-arm.h ('k') | src/arm/disasm-arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698