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

Side by Side Diff: runtime/vm/assembler_x64.cc

Issue 1049933002: Implement bigint shift intrinsics on x64. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 5 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « runtime/vm/assembler_x64.h ('k') | runtime/vm/assembler_x64_test.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) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "vm/globals.h" // NOLINT 5 #include "vm/globals.h" // NOLINT
6 #if defined(TARGET_ARCH_X64) 6 #if defined(TARGET_ARCH_X64)
7 7
8 #include "vm/assembler.h" 8 #include "vm/assembler.h"
9 #include "vm/cpu.h" 9 #include "vm/cpu.h"
10 #include "vm/heap.h" 10 #include "vm/heap.h"
(...skipping 2281 matching lines...) Expand 10 before | Expand all | Expand 10 after
2292 ASSERT(imm.is_int8()); 2292 ASSERT(imm.is_int8());
2293 Operand operand(src); 2293 Operand operand(src);
2294 EmitOperandREX(dst, operand, REX_W); 2294 EmitOperandREX(dst, operand, REX_W);
2295 EmitUint8(0x0F); 2295 EmitUint8(0x0F);
2296 EmitUint8(0xA4); 2296 EmitUint8(0xA4);
2297 EmitOperand(src & 7, Operand(dst)); 2297 EmitOperand(src & 7, Operand(dst));
2298 EmitUint8(imm.value() & 0xFF); 2298 EmitUint8(imm.value() & 0xFF);
2299 } 2299 }
2300 2300
2301 2301
2302 void Assembler::shldq(Register dst, Register src, Register shifter) {
2303 AssemblerBuffer::EnsureCapacity ensured(&buffer_);
2304 ASSERT(shifter == RCX);
2305 Operand operand(src);
2306 EmitOperandREX(dst, operand, REX_W);
2307 EmitUint8(0x0F);
2308 EmitUint8(0xA5);
2309 EmitOperand(src & 7, Operand(dst));
2310 }
2311
2312
2313 void Assembler::shrdq(Register dst, Register src, Register shifter) {
2314 AssemblerBuffer::EnsureCapacity ensured(&buffer_);
2315 ASSERT(shifter == RCX);
2316 Operand operand(src);
2317 EmitOperandREX(dst, operand, REX_W);
2318 EmitUint8(0x0F);
2319 EmitUint8(0xAD);
2320 EmitOperand(src & 7, Operand(dst));
2321 }
2322
2323
2302 void Assembler::incl(const Address& address) { 2324 void Assembler::incl(const Address& address) {
2303 AssemblerBuffer::EnsureCapacity ensured(&buffer_); 2325 AssemblerBuffer::EnsureCapacity ensured(&buffer_);
2304 Operand operand(address); 2326 Operand operand(address);
2305 EmitOperandREX(0, operand, REX_NONE); 2327 EmitOperandREX(0, operand, REX_NONE);
2306 EmitUint8(0xFF); 2328 EmitUint8(0xFF);
2307 EmitOperand(0, operand); 2329 EmitOperand(0, operand);
2308 } 2330 }
2309 2331
2310 2332
2311 void Assembler::decl(const Address& address) { 2333 void Assembler::decl(const Address& address) {
(...skipping 1583 matching lines...) Expand 10 before | Expand all | Expand 10 after
3895 3917
3896 3918
3897 const char* Assembler::FpuRegisterName(FpuRegister reg) { 3919 const char* Assembler::FpuRegisterName(FpuRegister reg) {
3898 ASSERT((0 <= reg) && (reg < kNumberOfXmmRegisters)); 3920 ASSERT((0 <= reg) && (reg < kNumberOfXmmRegisters));
3899 return xmm_reg_names[reg]; 3921 return xmm_reg_names[reg];
3900 } 3922 }
3901 3923
3902 } // namespace dart 3924 } // namespace dart
3903 3925
3904 #endif // defined TARGET_ARCH_X64 3926 #endif // defined TARGET_ARCH_X64
OLDNEW
« no previous file with comments | « runtime/vm/assembler_x64.h ('k') | runtime/vm/assembler_x64_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698