OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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/arm64/macro-assembler-arm64.h" | 7 #include "src/arm64/macro-assembler-arm64.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 355 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
366 // TODO(dcarney): implement directly. See note in lithium-codegen-arm64.cc | 366 // TODO(dcarney): implement directly. See note in lithium-codegen-arm64.cc |
367 FrameScope scope(masm(), StackFrame::MANUAL); | 367 FrameScope scope(masm(), StackFrame::MANUAL); |
368 DCHECK(d0.is(i.InputDoubleRegister(0))); | 368 DCHECK(d0.is(i.InputDoubleRegister(0))); |
369 DCHECK(d1.is(i.InputDoubleRegister(1))); | 369 DCHECK(d1.is(i.InputDoubleRegister(1))); |
370 DCHECK(d0.is(i.OutputDoubleRegister())); | 370 DCHECK(d0.is(i.OutputDoubleRegister())); |
371 // TODO(dcarney): make sure this saves all relevant registers. | 371 // TODO(dcarney): make sure this saves all relevant registers. |
372 __ CallCFunction(ExternalReference::mod_two_doubles_operation(isolate()), | 372 __ CallCFunction(ExternalReference::mod_two_doubles_operation(isolate()), |
373 0, 2); | 373 0, 2); |
374 break; | 374 break; |
375 } | 375 } |
| 376 case kArm64Float64Sqrt: |
| 377 __ Fsqrt(i.OutputDoubleRegister(), i.InputDoubleRegister(0)); |
| 378 break; |
376 case kArm64Float64ToInt32: | 379 case kArm64Float64ToInt32: |
377 __ Fcvtzs(i.OutputRegister32(), i.InputDoubleRegister(0)); | 380 __ Fcvtzs(i.OutputRegister32(), i.InputDoubleRegister(0)); |
378 break; | 381 break; |
379 case kArm64Float64ToUint32: | 382 case kArm64Float64ToUint32: |
380 __ Fcvtzu(i.OutputRegister32(), i.InputDoubleRegister(0)); | 383 __ Fcvtzu(i.OutputRegister32(), i.InputDoubleRegister(0)); |
381 break; | 384 break; |
382 case kArm64Int32ToFloat64: | 385 case kArm64Int32ToFloat64: |
383 __ Scvtf(i.OutputDoubleRegister(), i.InputRegister32(0)); | 386 __ Scvtf(i.OutputDoubleRegister(), i.InputRegister32(0)); |
384 break; | 387 break; |
385 case kArm64Uint32ToFloat64: | 388 case kArm64Uint32ToFloat64: |
(...skipping 481 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
867 } | 870 } |
868 } | 871 } |
869 MarkLazyDeoptSite(); | 872 MarkLazyDeoptSite(); |
870 } | 873 } |
871 | 874 |
872 #undef __ | 875 #undef __ |
873 | 876 |
874 } // namespace compiler | 877 } // namespace compiler |
875 } // namespace internal | 878 } // namespace internal |
876 } // namespace v8 | 879 } // namespace v8 |
OLD | NEW |