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

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

Issue 2065503002: [builtins] Introduce proper Float64Atan and Float64Atan2 operators. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: [WIP] Fix GCC/Win32. Created 4 years, 6 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
« no previous file with comments | « src/compiler/verifier.cc ('k') | src/compiler/x64/instruction-selector-x64.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 576 matching lines...) Expand 10 before | Expand all | Expand 10 after
587 do { \ 587 do { \
588 if (instr->InputAt(4)->IsRegister()) { \ 588 if (instr->InputAt(4)->IsRegister()) { \
589 Register value = i.InputRegister(4); \ 589 Register value = i.InputRegister(4); \
590 ASSEMBLE_CHECKED_STORE_INTEGER_IMPL(asm_instr, Register); \ 590 ASSEMBLE_CHECKED_STORE_INTEGER_IMPL(asm_instr, Register); \
591 } else { \ 591 } else { \
592 Immediate value = i.InputImmediate(4); \ 592 Immediate value = i.InputImmediate(4); \
593 ASSEMBLE_CHECKED_STORE_INTEGER_IMPL(asm_instr, Immediate); \ 593 ASSEMBLE_CHECKED_STORE_INTEGER_IMPL(asm_instr, Immediate); \
594 } \ 594 } \
595 } while (false) 595 } while (false)
596 596
597 #define ASSEMBLE_IEEE754_BINOP(name) \
598 do { \
599 __ PrepareCallCFunction(2); \
600 __ CallCFunction(ExternalReference::ieee754_##name##_function(isolate()), \
601 2); \
602 } while (false)
603
597 #define ASSEMBLE_IEEE754_UNOP(name) \ 604 #define ASSEMBLE_IEEE754_UNOP(name) \
598 do { \ 605 do { \
599 __ PrepareCallCFunction(1); \ 606 __ PrepareCallCFunction(1); \
600 __ CallCFunction(ExternalReference::ieee754_##name##_function(isolate()), \ 607 __ CallCFunction(ExternalReference::ieee754_##name##_function(isolate()), \
601 1); \ 608 1); \
602 } while (false) 609 } while (false)
603 610
604 void CodeGenerator::AssembleDeconstructFrame() { 611 void CodeGenerator::AssembleDeconstructFrame() {
605 __ movq(rsp, rbp); 612 __ movq(rsp, rbp);
606 __ popq(rbp); 613 __ popq(rbp);
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
840 frame_access_state()->GetFrameOffset(i.InputInt32(0)); 847 frame_access_state()->GetFrameOffset(i.InputInt32(0));
841 Register base; 848 Register base;
842 if (offset.from_stack_pointer()) { 849 if (offset.from_stack_pointer()) {
843 base = rsp; 850 base = rsp;
844 } else { 851 } else {
845 base = rbp; 852 base = rbp;
846 } 853 }
847 __ leaq(i.OutputRegister(), Operand(base, offset.offset())); 854 __ leaq(i.OutputRegister(), Operand(base, offset.offset()));
848 break; 855 break;
849 } 856 }
857 case kIeee754Float64Atan:
858 ASSEMBLE_IEEE754_UNOP(atan);
859 break;
860 case kIeee754Float64Atan2:
861 ASSEMBLE_IEEE754_BINOP(atan2);
862 break;
850 case kIeee754Float64Log: 863 case kIeee754Float64Log:
851 ASSEMBLE_IEEE754_UNOP(log); 864 ASSEMBLE_IEEE754_UNOP(log);
852 break; 865 break;
853 case kIeee754Float64Log1p: 866 case kIeee754Float64Log1p:
854 ASSEMBLE_IEEE754_UNOP(log1p); 867 ASSEMBLE_IEEE754_UNOP(log1p);
855 break; 868 break;
856 case kX64Add32: 869 case kX64Add32:
857 ASSEMBLE_BINOP(addl); 870 ASSEMBLE_BINOP(addl);
858 break; 871 break;
859 case kX64Add: 872 case kX64Add:
(...skipping 1467 matching lines...) Expand 10 before | Expand all | Expand 10 after
2327 int padding_size = last_lazy_deopt_pc_ + space_needed - current_pc; 2340 int padding_size = last_lazy_deopt_pc_ + space_needed - current_pc;
2328 __ Nop(padding_size); 2341 __ Nop(padding_size);
2329 } 2342 }
2330 } 2343 }
2331 2344
2332 #undef __ 2345 #undef __
2333 2346
2334 } // namespace compiler 2347 } // namespace compiler
2335 } // namespace internal 2348 } // namespace internal
2336 } // namespace v8 2349 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/verifier.cc ('k') | src/compiler/x64/instruction-selector-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698