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

Side by Side Diff: src/x64/assembler-x64.h

Issue 275253004: Require CMOV support for the ia32 port. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: restore uses of cmov Created 6 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « src/v8globals.h ('k') | src/x64/assembler-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 (c) 1994-2006 Sun Microsystems Inc. 1 // Copyright (c) 1994-2006 Sun Microsystems Inc.
2 // All Rights Reserved. 2 // All Rights Reserved.
3 // 3 //
4 // Redistribution and use in source and binary forms, with or without 4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are 5 // modification, are permitted provided that the following conditions are
6 // met: 6 // met:
7 // 7 //
8 // - Redistributions of source code must retain the above copyright notice, 8 // - Redistributions of source code must retain the above copyright notice,
9 // this list of conditions and the following disclaimer. 9 // this list of conditions and the following disclaimer.
10 // 10 //
(...skipping 440 matching lines...) Expand 10 before | Expand all | Expand 10 after
451 // Detect features of the target CPU. Set safe defaults if the serializer 451 // Detect features of the target CPU. Set safe defaults if the serializer
452 // is enabled (snapshots must be portable). 452 // is enabled (snapshots must be portable).
453 static void Probe(bool serializer_enabled); 453 static void Probe(bool serializer_enabled);
454 454
455 // Check whether a feature is supported by the target CPU. 455 // Check whether a feature is supported by the target CPU.
456 static bool IsSupported(CpuFeature f) { 456 static bool IsSupported(CpuFeature f) {
457 if (Check(f, cross_compile_)) return true; 457 if (Check(f, cross_compile_)) return true;
458 ASSERT(initialized_); 458 ASSERT(initialized_);
459 if (f == SSE3 && !FLAG_enable_sse3) return false; 459 if (f == SSE3 && !FLAG_enable_sse3) return false;
460 if (f == SSE4_1 && !FLAG_enable_sse4_1) return false; 460 if (f == SSE4_1 && !FLAG_enable_sse4_1) return false;
461 if (f == CMOV && !FLAG_enable_cmov) return false;
462 if (f == SAHF && !FLAG_enable_sahf) return false; 461 if (f == SAHF && !FLAG_enable_sahf) return false;
463 return Check(f, supported_); 462 return Check(f, supported_);
464 } 463 }
465 464
466 static bool IsSafeForSnapshot(Isolate* isolate, CpuFeature f) { 465 static bool IsSafeForSnapshot(Isolate* isolate, CpuFeature f) {
467 return Check(f, cross_compile_) || 466 return Check(f, cross_compile_) ||
468 (IsSupported(f) && 467 (IsSupported(f) &&
469 !(Serializer::enabled(isolate) && 468 !(Serializer::enabled(isolate) &&
470 Check(f, found_by_runtime_probing_only_))); 469 Check(f, found_by_runtime_probing_only_)));
471 } 470 }
(...skipping 12 matching lines...) Expand all
484 483
485 private: 484 private:
486 static bool Check(CpuFeature f, uint64_t set) { 485 static bool Check(CpuFeature f, uint64_t set) {
487 return (set & flag2set(f)) != 0; 486 return (set & flag2set(f)) != 0;
488 } 487 }
489 488
490 static uint64_t flag2set(CpuFeature f) { 489 static uint64_t flag2set(CpuFeature f) {
491 return static_cast<uint64_t>(1) << f; 490 return static_cast<uint64_t>(1) << f;
492 } 491 }
493 492
494 // Safe defaults include CMOV for X64. It is always available, if
495 // anyone checks, but they shouldn't need to check.
496 // The required user mode extensions in X64 are (from AMD64 ABI Table A.1):
497 // fpu, tsc, cx8, cmov, mmx, sse, sse2, fxsr, syscall
498 static const uint64_t kDefaultCpuFeatures = (1 << CMOV);
499
500 #ifdef DEBUG 493 #ifdef DEBUG
501 static bool initialized_; 494 static bool initialized_;
502 #endif 495 #endif
503 static uint64_t supported_; 496 static uint64_t supported_;
504 static uint64_t found_by_runtime_probing_only_; 497 static uint64_t found_by_runtime_probing_only_;
505 498
506 static uint64_t cross_compile_; 499 static uint64_t cross_compile_;
507 500
508 friend class ExternalReference; 501 friend class ExternalReference;
509 friend class PlatformFeatureScope; 502 friend class PlatformFeatureScope;
(...skipping 1140 matching lines...) Expand 10 before | Expand all | Expand 10 after
1650 private: 1643 private:
1651 Assembler* assembler_; 1644 Assembler* assembler_;
1652 #ifdef DEBUG 1645 #ifdef DEBUG
1653 int space_before_; 1646 int space_before_;
1654 #endif 1647 #endif
1655 }; 1648 };
1656 1649
1657 } } // namespace v8::internal 1650 } } // namespace v8::internal
1658 1651
1659 #endif // V8_X64_ASSEMBLER_X64_H_ 1652 #endif // V8_X64_ASSEMBLER_X64_H_
OLDNEW
« no previous file with comments | « src/v8globals.h ('k') | src/x64/assembler-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698