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 #include "src/compiler/code-generator-impl.h" | 6 #include "src/compiler/code-generator-impl.h" |
7 #include "src/compiler/gap-resolver.h" | 7 #include "src/compiler/gap-resolver.h" |
8 #include "src/compiler/node-matchers.h" | 8 #include "src/compiler/node-matchers.h" |
9 #include "src/compiler/osr.h" | 9 #include "src/compiler/osr.h" |
10 #include "src/mips/macro-assembler-mips.h" | 10 #include "src/mips/macro-assembler-mips.h" |
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
206 }; | 206 }; |
207 | 207 |
208 | 208 |
209 class OutOfLineCeil final : public OutOfLineRound { | 209 class OutOfLineCeil final : public OutOfLineRound { |
210 public: | 210 public: |
211 OutOfLineCeil(CodeGenerator* gen, DoubleRegister result) | 211 OutOfLineCeil(CodeGenerator* gen, DoubleRegister result) |
212 : OutOfLineRound(gen, result) {} | 212 : OutOfLineRound(gen, result) {} |
213 }; | 213 }; |
214 | 214 |
215 | 215 |
| 216 class OutOfLineTiesEven final : public OutOfLineRound { |
| 217 public: |
| 218 OutOfLineTiesEven(CodeGenerator* gen, DoubleRegister result) |
| 219 : OutOfLineRound(gen, result) {} |
| 220 }; |
| 221 |
| 222 |
216 class OutOfLineRecordWrite final : public OutOfLineCode { | 223 class OutOfLineRecordWrite final : public OutOfLineCode { |
217 public: | 224 public: |
218 OutOfLineRecordWrite(CodeGenerator* gen, Register object, Register index, | 225 OutOfLineRecordWrite(CodeGenerator* gen, Register object, Register index, |
219 Register value, Register scratch0, Register scratch1, | 226 Register value, Register scratch0, Register scratch1, |
220 RecordWriteMode mode) | 227 RecordWriteMode mode) |
221 : OutOfLineCode(gen), | 228 : OutOfLineCode(gen), |
222 object_(object), | 229 object_(object), |
223 index_(index), | 230 index_(index), |
224 value_(value), | 231 value_(value), |
225 scratch0_(scratch0), | 232 scratch0_(scratch0), |
(...skipping 628 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
854 break; | 861 break; |
855 } | 862 } |
856 case kMips64Float64RoundTruncate: { | 863 case kMips64Float64RoundTruncate: { |
857 ASSEMBLE_ROUND_DOUBLE_TO_DOUBLE(trunc_l_d, Truncate); | 864 ASSEMBLE_ROUND_DOUBLE_TO_DOUBLE(trunc_l_d, Truncate); |
858 break; | 865 break; |
859 } | 866 } |
860 case kMips64Float64RoundUp: { | 867 case kMips64Float64RoundUp: { |
861 ASSEMBLE_ROUND_DOUBLE_TO_DOUBLE(ceil_l_d, Ceil); | 868 ASSEMBLE_ROUND_DOUBLE_TO_DOUBLE(ceil_l_d, Ceil); |
862 break; | 869 break; |
863 } | 870 } |
| 871 case kMips64Float64RoundTiesEven: { |
| 872 ASSEMBLE_ROUND_DOUBLE_TO_DOUBLE(round_l_d, TiesEven); |
| 873 break; |
| 874 } |
864 case kMips64Float64Max: { | 875 case kMips64Float64Max: { |
865 // (b < a) ? a : b | 876 // (b < a) ? a : b |
866 if (kArchVariant == kMips64r6) { | 877 if (kArchVariant == kMips64r6) { |
867 __ cmp_d(OLT, i.OutputDoubleRegister(), i.InputDoubleRegister(1), | 878 __ cmp_d(OLT, i.OutputDoubleRegister(), i.InputDoubleRegister(1), |
868 i.InputDoubleRegister(0)); | 879 i.InputDoubleRegister(0)); |
869 __ sel_d(i.OutputDoubleRegister(), i.InputDoubleRegister(1), | 880 __ sel_d(i.OutputDoubleRegister(), i.InputDoubleRegister(1), |
870 i.InputDoubleRegister(0)); | 881 i.InputDoubleRegister(0)); |
871 } else { | 882 } else { |
872 __ c_d(OLT, i.InputDoubleRegister(0), i.InputDoubleRegister(1)); | 883 __ c_d(OLT, i.InputDoubleRegister(0), i.InputDoubleRegister(1)); |
873 // Left operand is result, passthrough if false. | 884 // Left operand is result, passthrough if false. |
(...skipping 803 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1677 padding_size -= v8::internal::Assembler::kInstrSize; | 1688 padding_size -= v8::internal::Assembler::kInstrSize; |
1678 } | 1689 } |
1679 } | 1690 } |
1680 } | 1691 } |
1681 | 1692 |
1682 #undef __ | 1693 #undef __ |
1683 | 1694 |
1684 } // namespace compiler | 1695 } // namespace compiler |
1685 } // namespace internal | 1696 } // namespace internal |
1686 } // namespace v8 | 1697 } // namespace v8 |
OLD | NEW |