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

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

Issue 500343002: [turbofan] Add backend support for load/store float32 values. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: REBASE Created 6 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 | Annotate | Revision Log
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 371 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 break; 382 break;
383 case kIA32Movsd: 383 case kIA32Movsd:
384 if (instr->HasOutput()) { 384 if (instr->HasOutput()) {
385 __ movsd(i.OutputDoubleRegister(), i.MemoryOperand()); 385 __ movsd(i.OutputDoubleRegister(), i.MemoryOperand());
386 } else { 386 } else {
387 int index = 0; 387 int index = 0;
388 Operand operand = i.MemoryOperand(&index); 388 Operand operand = i.MemoryOperand(&index);
389 __ movsd(operand, i.InputDoubleRegister(index)); 389 __ movsd(operand, i.InputDoubleRegister(index));
390 } 390 }
391 break; 391 break;
392 case kIA32Movss:
393 if (instr->HasOutput()) {
394 __ movss(i.OutputDoubleRegister(), i.MemoryOperand());
395 __ cvtss2sd(i.OutputDoubleRegister(), i.OutputDoubleRegister());
396 } else {
397 int index = 0;
398 Operand operand = i.MemoryOperand(&index);
399 __ cvtsd2ss(xmm0, i.InputDoubleRegister(index));
400 __ movss(operand, xmm0);
401 }
402 break;
392 case kIA32StoreWriteBarrier: { 403 case kIA32StoreWriteBarrier: {
393 Register object = i.InputRegister(0); 404 Register object = i.InputRegister(0);
394 Register index = i.InputRegister(1); 405 Register index = i.InputRegister(1);
395 Register value = i.InputRegister(2); 406 Register value = i.InputRegister(2);
396 __ mov(Operand(object, index, times_1, 0), value); 407 __ mov(Operand(object, index, times_1, 0), value);
397 __ lea(index, Operand(object, index, times_1, 0)); 408 __ lea(index, Operand(object, index, times_1, 0));
398 SaveFPRegsMode mode = code_->frame()->DidAllocateDoubleRegisters() 409 SaveFPRegsMode mode = code_->frame()->DidAllocateDoubleRegisters()
399 ? kSaveFPRegs 410 ? kSaveFPRegs
400 : kDontSaveFPRegs; 411 : kDontSaveFPRegs;
401 __ RecordWrite(object, index, value, mode); 412 __ RecordWrite(object, index, value, mode);
(...skipping 536 matching lines...) Expand 10 before | Expand all | Expand 10 after
938 } 949 }
939 950
940 951
941 void CodeGenerator::AddNopForSmiCodeInlining() { __ nop(); } 952 void CodeGenerator::AddNopForSmiCodeInlining() { __ nop(); }
942 953
943 #undef __ 954 #undef __
944 955
945 } 956 }
946 } 957 }
947 } // namespace v8::internal::compiler 958 } // namespace v8::internal::compiler
OLDNEW
« no previous file with comments | « src/compiler/arm64/instruction-selector-arm64.cc ('k') | src/compiler/ia32/instruction-codes-ia32.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698