OLD | NEW |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |