| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include <math.h> // for isnan. | 5 #include <math.h> // for isnan. |
| 6 #include <setjmp.h> | 6 #include <setjmp.h> |
| 7 #include <stdlib.h> | 7 #include <stdlib.h> |
| 8 | 8 |
| 9 #include "vm/globals.h" | 9 #include "vm/globals.h" |
| 10 #if defined(TARGET_ARCH_ARM64) | 10 #if defined(TARGET_ARCH_ARM64) |
| (...skipping 2124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2135 result32 = rn_val32; | 2135 result32 = rn_val32; |
| 2136 } | 2136 } |
| 2137 } else if ((instr->Bits(29, 2) == 0) && (instr->Bits(10, 2) == 1)) { | 2137 } else if ((instr->Bits(29, 2) == 0) && (instr->Bits(10, 2) == 1)) { |
| 2138 // Format(instr, "csinc'sf'cond 'rd, 'rn, 'rm"); | 2138 // Format(instr, "csinc'sf'cond 'rd, 'rn, 'rm"); |
| 2139 result64 = rm_val64 + 1; | 2139 result64 = rm_val64 + 1; |
| 2140 result32 = rm_val32 + 1; | 2140 result32 = rm_val32 + 1; |
| 2141 if (ConditionallyExecute(instr)) { | 2141 if (ConditionallyExecute(instr)) { |
| 2142 result64 = rn_val64; | 2142 result64 = rn_val64; |
| 2143 result32 = rn_val32; | 2143 result32 = rn_val32; |
| 2144 } | 2144 } |
| 2145 } else if ((instr->Bits(29, 2) == 2) && (instr->Bits(10, 2) == 0)) { |
| 2146 // Format(instr, "csinv'sf'cond 'rd, 'rn, 'rm"); |
| 2147 result64 = ~rm_val64; |
| 2148 result32 = ~rm_val32; |
| 2149 if (ConditionallyExecute(instr)) { |
| 2150 result64 = rn_val64; |
| 2151 result32 = rn_val32; |
| 2152 } |
| 2145 } else { | 2153 } else { |
| 2146 UnimplementedInstruction(instr); | 2154 UnimplementedInstruction(instr); |
| 2147 return; | 2155 return; |
| 2148 } | 2156 } |
| 2149 | 2157 |
| 2150 if (instr->SFField() == 1) { | 2158 if (instr->SFField() == 1) { |
| 2151 set_register(rd, result64, instr->RdMode()); | 2159 set_register(rd, result64, instr->RdMode()); |
| 2152 } else { | 2160 } else { |
| 2153 set_wregister(rd, result32, instr->RdMode()); | 2161 set_wregister(rd, result32, instr->RdMode()); |
| 2154 } | 2162 } |
| (...skipping 881 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3036 set_register(kExceptionObjectReg, bit_cast<int64_t>(raw_exception)); | 3044 set_register(kExceptionObjectReg, bit_cast<int64_t>(raw_exception)); |
| 3037 set_register(kStackTraceObjectReg, bit_cast<int64_t>(raw_stacktrace)); | 3045 set_register(kStackTraceObjectReg, bit_cast<int64_t>(raw_stacktrace)); |
| 3038 buf->Longjmp(); | 3046 buf->Longjmp(); |
| 3039 } | 3047 } |
| 3040 | 3048 |
| 3041 } // namespace dart | 3049 } // namespace dart |
| 3042 | 3050 |
| 3043 #endif // !defined(HOST_ARCH_ARM64) | 3051 #endif // !defined(HOST_ARCH_ARM64) |
| 3044 | 3052 |
| 3045 #endif // defined TARGET_ARCH_ARM64 | 3053 #endif // defined TARGET_ARCH_ARM64 |
| OLD | NEW |