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

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

Issue 1807273002: [wasm] Int64Lowering of Int64Mul on ia32 and arm. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@wasm-phi
Patch Set: Rebase Created 4 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
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/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 709 matching lines...) Expand 10 before | Expand all | Expand 10 after
720 } 720 }
721 __ sbb(i.InputRegister(1), Operand(i.InputRegister(3))); 721 __ sbb(i.InputRegister(1), Operand(i.InputRegister(3)));
722 if (i.OutputRegister(1).code() != i.InputRegister(1).code()) { 722 if (i.OutputRegister(1).code() != i.InputRegister(1).code()) {
723 __ Move(i.OutputRegister(1), i.InputRegister(1)); 723 __ Move(i.OutputRegister(1), i.InputRegister(1));
724 } 724 }
725 if (use_temp) { 725 if (use_temp) {
726 __ Move(i.OutputRegister(0), i.TempRegister(0)); 726 __ Move(i.OutputRegister(0), i.TempRegister(0));
727 } 727 }
728 break; 728 break;
729 } 729 }
730 case kIA32MulPair: {
731 __ imul(i.OutputRegister(1), i.InputOperand(0));
732 __ mov(i.TempRegister(0), i.InputOperand(1));
733 __ imul(i.TempRegister(0), i.InputOperand(2));
734 __ add(i.OutputRegister(1), i.TempRegister(0));
735 __ mov(i.OutputRegister(0), i.InputOperand(0));
736 // Multiplies the low words and stores them in eax and edx.
737 __ mul(i.InputRegister(2));
738 __ add(i.OutputRegister(1), i.TempRegister(0));
739
740 break;
741 }
730 case kIA32ShlPair: 742 case kIA32ShlPair:
731 if (HasImmediateInput(instr, 2)) { 743 if (HasImmediateInput(instr, 2)) {
732 __ ShlPair(i.InputRegister(1), i.InputRegister(0), i.InputInt6(2)); 744 __ ShlPair(i.InputRegister(1), i.InputRegister(0), i.InputInt6(2));
733 } else { 745 } else {
734 // Shift has been loaded into CL by the register allocator. 746 // Shift has been loaded into CL by the register allocator.
735 __ ShlPair_cl(i.InputRegister(1), i.InputRegister(0)); 747 __ ShlPair_cl(i.InputRegister(1), i.InputRegister(0));
736 } 748 }
737 break; 749 break;
738 case kIA32ShrPair: 750 case kIA32ShrPair:
739 if (HasImmediateInput(instr, 2)) { 751 if (HasImmediateInput(instr, 2)) {
(...skipping 1134 matching lines...) Expand 10 before | Expand all | Expand 10 after
1874 int padding_size = last_lazy_deopt_pc_ + space_needed - current_pc; 1886 int padding_size = last_lazy_deopt_pc_ + space_needed - current_pc;
1875 __ Nop(padding_size); 1887 __ Nop(padding_size);
1876 } 1888 }
1877 } 1889 }
1878 1890
1879 #undef __ 1891 #undef __
1880 1892
1881 } // namespace compiler 1893 } // namespace compiler
1882 } // namespace internal 1894 } // namespace internal
1883 } // namespace v8 1895 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/arm/instruction-selector-arm.cc ('k') | src/compiler/ia32/instruction-codes-ia32.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698