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

Side by Side Diff: runtime/vm/cpu_arm.cc

Issue 2507113004: Adjust ARM feature detection to note the Xiaomi MI5 also fails to support integer division in A32 c… (Closed)
Patch Set: . Created 4 years, 1 month 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 | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 "vm/globals.h" 5 #include "vm/globals.h"
6 #if defined(TARGET_ARCH_ARM) 6 #if defined(TARGET_ARCH_ARM)
7 7
8 #include "vm/cpu.h" 8 #include "vm/cpu.h"
9 #include "vm/cpu_arm.h" 9 #include "vm/cpu_arm.h"
10 10
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 // Has floating point unit. 200 // Has floating point unit.
201 vfp_supported_ = 201 vfp_supported_ =
202 (CpuInfo::FieldContains(kCpuInfoFeatures, "vfp") || is_arm64) && 202 (CpuInfo::FieldContains(kCpuInfoFeatures, "vfp") || is_arm64) &&
203 FLAG_use_vfp; 203 FLAG_use_vfp;
204 204
205 // Has integer division. 205 // Has integer division.
206 // Special cases: 206 // Special cases:
207 // - Qualcomm Krait CPUs (QCT APQ8064) in Nexus 4 and 7 incorrectly report 207 // - Qualcomm Krait CPUs (QCT APQ8064) in Nexus 4 and 7 incorrectly report
208 // that they lack integer division. 208 // that they lack integer division.
209 // - Marvell Armada 370/XP incorrectly reports that it has integer division. 209 // - Marvell Armada 370/XP incorrectly reports that it has integer division.
210 // - The Pixel lacks integer division even though ARMv8 requires it in A32. 210 // - Qualcomm Snapdragon 820/821 CPUs (MSM 8996 and MSM8996pro) in Xiaomi MI5
211 // and Pixel lack integer division even though ARMv8 requires it in A32.
211 bool is_krait = CpuInfo::FieldContains(kCpuInfoHardware, "QCT APQ8064"); 212 bool is_krait = CpuInfo::FieldContains(kCpuInfoHardware, "QCT APQ8064");
212 bool is_armada_370xp = 213 bool is_armada_370xp =
213 CpuInfo::FieldContains(kCpuInfoHardware, "Marvell Armada 370/XP"); 214 CpuInfo::FieldContains(kCpuInfoHardware, "Marvell Armada 370/XP");
214 bool is_pixel = CpuInfo::FieldContains(kCpuInfoHardware, "MSM8996pro"); 215 bool is_snapdragon = CpuInfo::FieldContains(kCpuInfoHardware, "MSM8996");
215 if (is_krait) { 216 if (is_krait) {
216 integer_division_supported_ = FLAG_use_integer_division; 217 integer_division_supported_ = FLAG_use_integer_division;
217 } else if (is_armada_370xp || is_pixel) { 218 } else if (is_armada_370xp || is_snapdragon) {
218 integer_division_supported_ = false; 219 integer_division_supported_ = false;
219 } else { 220 } else {
220 integer_division_supported_ = 221 integer_division_supported_ =
221 (CpuInfo::FieldContains(kCpuInfoFeatures, "idiva") || is_arm64) && 222 (CpuInfo::FieldContains(kCpuInfoFeatures, "idiva") || is_arm64) &&
222 FLAG_use_integer_division; 223 FLAG_use_integer_division;
223 } 224 }
224 neon_supported_ = 225 neon_supported_ =
225 (CpuInfo::FieldContains(kCpuInfoFeatures, "neon") || is_arm64) && 226 (CpuInfo::FieldContains(kCpuInfoFeatures, "neon") || is_arm64) &&
226 FLAG_use_vfp && FLAG_use_neon; 227 FLAG_use_vfp && FLAG_use_neon;
227 228
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 ASSERT(hardware_ != NULL); 283 ASSERT(hardware_ != NULL);
283 free(const_cast<char*>(hardware_)); 284 free(const_cast<char*>(hardware_));
284 hardware_ = NULL; 285 hardware_ = NULL;
285 CpuInfo::Cleanup(); 286 CpuInfo::Cleanup();
286 } 287 }
287 #endif // !defined(USING_SIMULATOR) 288 #endif // !defined(USING_SIMULATOR)
288 289
289 } // namespace dart 290 } // namespace dart
290 291
291 #endif // defined TARGET_ARCH_ARM 292 #endif // defined TARGET_ARCH_ARM
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698