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/ast/scopes.h" | 7 #include "src/ast/scopes.h" |
8 #include "src/compiler/code-generator-impl.h" | 8 #include "src/compiler/code-generator-impl.h" |
9 #include "src/compiler/gap-resolver.h" | 9 #include "src/compiler/gap-resolver.h" |
10 #include "src/compiler/node-matchers.h" | 10 #include "src/compiler/node-matchers.h" |
(...skipping 794 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
805 } | 805 } |
806 __ sbb(i.InputRegister(1), Operand(i.InputRegister(3))); | 806 __ sbb(i.InputRegister(1), Operand(i.InputRegister(3))); |
807 if (i.OutputRegister(1).code() != i.InputRegister(1).code()) { | 807 if (i.OutputRegister(1).code() != i.InputRegister(1).code()) { |
808 __ Move(i.OutputRegister(1), i.InputRegister(1)); | 808 __ Move(i.OutputRegister(1), i.InputRegister(1)); |
809 } | 809 } |
810 if (use_temp) { | 810 if (use_temp) { |
811 __ Move(i.OutputRegister(0), i.TempRegister(0)); | 811 __ Move(i.OutputRegister(0), i.TempRegister(0)); |
812 } | 812 } |
813 break; | 813 break; |
814 } | 814 } |
| 815 case kX87MulPair: { |
| 816 __ imul(i.OutputRegister(1), i.InputOperand(0)); |
| 817 __ mov(i.TempRegister(0), i.InputOperand(1)); |
| 818 __ imul(i.TempRegister(0), i.InputOperand(2)); |
| 819 __ add(i.OutputRegister(1), i.TempRegister(0)); |
| 820 __ mov(i.OutputRegister(0), i.InputOperand(0)); |
| 821 // Multiplies the low words and stores them in eax and edx. |
| 822 __ mul(i.InputRegister(2)); |
| 823 __ add(i.OutputRegister(1), i.TempRegister(0)); |
| 824 |
| 825 break; |
| 826 } |
815 case kX87ShlPair: | 827 case kX87ShlPair: |
816 if (HasImmediateInput(instr, 2)) { | 828 if (HasImmediateInput(instr, 2)) { |
817 __ ShlPair(i.InputRegister(1), i.InputRegister(0), i.InputInt6(2)); | 829 __ ShlPair(i.InputRegister(1), i.InputRegister(0), i.InputInt6(2)); |
818 } else { | 830 } else { |
819 // Shift has been loaded into CL by the register allocator. | 831 // Shift has been loaded into CL by the register allocator. |
820 __ ShlPair_cl(i.InputRegister(1), i.InputRegister(0)); | 832 __ ShlPair_cl(i.InputRegister(1), i.InputRegister(0)); |
821 } | 833 } |
822 break; | 834 break; |
823 case kX87ShrPair: | 835 case kX87ShrPair: |
824 if (HasImmediateInput(instr, 2)) { | 836 if (HasImmediateInput(instr, 2)) { |
(...skipping 1579 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2404 int padding_size = last_lazy_deopt_pc_ + space_needed - current_pc; | 2416 int padding_size = last_lazy_deopt_pc_ + space_needed - current_pc; |
2405 __ Nop(padding_size); | 2417 __ Nop(padding_size); |
2406 } | 2418 } |
2407 } | 2419 } |
2408 | 2420 |
2409 #undef __ | 2421 #undef __ |
2410 | 2422 |
2411 } // namespace compiler | 2423 } // namespace compiler |
2412 } // namespace internal | 2424 } // namespace internal |
2413 } // namespace v8 | 2425 } // namespace v8 |
OLD | NEW |