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

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

Issue 2313803003: [turbofan] ARM: Implement vswp and use in gap resolver (Closed)
Patch Set: Fix git's broken rebase Created 4 years, 3 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.cc ('k') | src/arm/macro-assembler-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 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // A Disassembler object is used to disassemble a block of code instruction by 5 // A Disassembler object is used to disassemble a block of code instruction by
6 // instruction. The default implementation of the NameConverter object can be 6 // instruction. The default implementation of the NameConverter object can be
7 // overriden to modify register names or to do symbol lookup on addresses. 7 // overriden to modify register names or to do symbol lookup on addresses.
8 // 8 //
9 // The example below will disassemble a block of code and print it to stdout. 9 // The example below will disassemble a block of code and print it to stdout.
10 // 10 //
(...skipping 1807 matching lines...) Expand 10 before | Expand all | Expand 10 after
1818 case 7: 1818 case 7:
1819 if ((instr->Bits(18, 16) == 0) && (instr->Bits(11, 6) == 0x28) && 1819 if ((instr->Bits(18, 16) == 0) && (instr->Bits(11, 6) == 0x28) &&
1820 (instr->Bit(4) == 1)) { 1820 (instr->Bit(4) == 1)) {
1821 // vmovl unsigned 1821 // vmovl unsigned
1822 if ((instr->VdValue() & 1) != 0) Unknown(instr); 1822 if ((instr->VdValue() & 1) != 0) Unknown(instr);
1823 int Vd = (instr->Bit(22) << 3) | (instr->VdValue() >> 1); 1823 int Vd = (instr->Bit(22) << 3) | (instr->VdValue() >> 1);
1824 int Vm = (instr->Bit(5) << 4) | instr->VmValue(); 1824 int Vm = (instr->Bit(5) << 4) | instr->VmValue();
1825 int imm3 = instr->Bits(21, 19); 1825 int imm3 = instr->Bits(21, 19);
1826 out_buffer_pos_ += SNPrintF(out_buffer_ + out_buffer_pos_, 1826 out_buffer_pos_ += SNPrintF(out_buffer_ + out_buffer_pos_,
1827 "vmovl.u%d q%d, d%d", imm3*8, Vd, Vm); 1827 "vmovl.u%d q%d, d%d", imm3*8, Vd, Vm);
1828 } else if ((instr->Bits(21, 16) == 0x32) && (instr->Bits(11, 7) == 0) &&
1829 (instr->Bit(4) == 0)) {
1830 int Vd = instr->VFPDRegValue(kDoublePrecision);
1831 int Vm = instr->VFPMRegValue(kDoublePrecision);
1832 char rtype = (instr->Bit(6) == 0) ? 'd' : 'q';
1833 out_buffer_pos_ += SNPrintF(out_buffer_ + out_buffer_pos_,
1834 "vswp %c%d, %c%d", rtype, Vd, rtype, Vm);
1828 } else { 1835 } else {
1829 Unknown(instr); 1836 Unknown(instr);
1830 } 1837 }
1831 break; 1838 break;
1832 case 8: 1839 case 8:
1833 if (instr->Bits(21, 20) == 0) { 1840 if (instr->Bits(21, 20) == 0) {
1834 // vst1 1841 // vst1
1835 int Vd = (instr->Bit(22) << 4) | instr->VdValue(); 1842 int Vd = (instr->Bit(22) << 4) | instr->VdValue();
1836 int Rn = instr->VnValue(); 1843 int Rn = instr->VnValue();
1837 int type = instr->Bits(11, 8); 1844 int type = instr->Bits(11, 8);
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after
2163 pc += d.InstructionDecode(buffer, pc); 2170 pc += d.InstructionDecode(buffer, pc);
2164 v8::internal::PrintF(f, "%p %08x %s\n", static_cast<void*>(prev_pc), 2171 v8::internal::PrintF(f, "%p %08x %s\n", static_cast<void*>(prev_pc),
2165 *reinterpret_cast<int32_t*>(prev_pc), buffer.start()); 2172 *reinterpret_cast<int32_t*>(prev_pc), buffer.start());
2166 } 2173 }
2167 } 2174 }
2168 2175
2169 2176
2170 } // namespace disasm 2177 } // namespace disasm
2171 2178
2172 #endif // V8_TARGET_ARCH_ARM 2179 #endif // V8_TARGET_ARCH_ARM
OLDNEW
« no previous file with comments | « src/arm/assembler-arm.cc ('k') | src/arm/macro-assembler-arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698