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

Side by Side Diff: src/compiler/x64/code-generator-x64.cc

Issue 583963002: [turbofan] IA: Uint32ToFloat64 supports mem operand. (Closed) Base URL: https://github.com/v8/v8.git@bleeding_edge
Patch Set: Add tests 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
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 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 #include "src/compiler/code-generator.h" 5 #include "src/compiler/code-generator.h"
6 6
7 #include "src/compiler/code-generator-impl.h" 7 #include "src/compiler/code-generator-impl.h"
8 #include "src/compiler/gap-resolver.h" 8 #include "src/compiler/gap-resolver.h"
9 #include "src/compiler/node-matchers.h" 9 #include "src/compiler/node-matchers.h"
10 #include "src/compiler/node-properties-inl.h" 10 #include "src/compiler/node-properties-inl.h"
(...skipping 468 matching lines...) Expand 10 before | Expand all | Expand 10 after
479 case kSSEInt32ToFloat64: { 479 case kSSEInt32ToFloat64: {
480 RegisterOrOperand input = i.InputRegisterOrOperand(0); 480 RegisterOrOperand input = i.InputRegisterOrOperand(0);
481 if (input.type == kRegister) { 481 if (input.type == kRegister) {
482 __ cvtlsi2sd(i.OutputDoubleRegister(), input.reg); 482 __ cvtlsi2sd(i.OutputDoubleRegister(), input.reg);
483 } else { 483 } else {
484 __ cvtlsi2sd(i.OutputDoubleRegister(), input.operand); 484 __ cvtlsi2sd(i.OutputDoubleRegister(), input.operand);
485 } 485 }
486 break; 486 break;
487 } 487 }
488 case kSSEUint32ToFloat64: { 488 case kSSEUint32ToFloat64: {
489 // TODO(turbofan): X64 SSE cvtqsi2sd should support operands. 489 RegisterOrOperand input = i.InputRegisterOrOperand(0);
490 __ cvtqsi2sd(i.OutputDoubleRegister(), i.InputRegister(0)); 490 if (input.type == kRegister) {
491 __ cvtqsi2sd(i.OutputDoubleRegister(), input.reg);
492 } else {
493 __ cvtqsi2sd(i.OutputDoubleRegister(), input.operand);
494 }
491 break; 495 break;
492 } 496 }
493 case kX64Movsxbl: 497 case kX64Movsxbl:
494 __ movsxbl(i.OutputRegister(), i.MemoryOperand()); 498 __ movsxbl(i.OutputRegister(), i.MemoryOperand());
495 break; 499 break;
496 case kX64Movzxbl: 500 case kX64Movzxbl:
497 __ movzxbl(i.OutputRegister(), i.MemoryOperand()); 501 __ movzxbl(i.OutputRegister(), i.MemoryOperand());
498 break; 502 break;
499 case kX64Movb: { 503 case kX64Movb: {
500 int index = 0; 504 int index = 0;
(...skipping 498 matching lines...) Expand 10 before | Expand all | Expand 10 after
999 } 1003 }
1000 1004
1001 1005
1002 void CodeGenerator::AddNopForSmiCodeInlining() { __ nop(); } 1006 void CodeGenerator::AddNopForSmiCodeInlining() { __ nop(); }
1003 1007
1004 #undef __ 1008 #undef __
1005 1009
1006 } // namespace internal 1010 } // namespace internal
1007 } // namespace compiler 1011 } // namespace compiler
1008 } // namespace v8 1012 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/ia32/instruction-selector-ia32-unittest.cc ('k') | src/compiler/x64/instruction-selector-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698