mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
ARM: Add Performance Monitor Extensions feature
Performance monitors, including a basic cycle counter, are an official extension in the ARMv7 specification. This adds support for enabling and disabling them, orthogonally from CPU selection. rdar://problem/13939186 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182602 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d078070f6a
commit
b94a353242
@ -59,6 +59,8 @@ def FeatureSlowFPBrcc : SubtargetFeature<"slow-fp-brcc", "SlowFPBrcc", "true",
|
||||
"FP compare + branch is slow">;
|
||||
def FeatureVFPOnlySP : SubtargetFeature<"fp-only-sp", "FPOnlySP", "true",
|
||||
"Floating point unit supports single precision only">;
|
||||
def FeaturePerfMon : SubtargetFeature<"perfmon", "HasPerfMon", "true",
|
||||
"Enable support for Performance Monitor extensions">;
|
||||
def FeatureTrustZone : SubtargetFeature<"trustzone", "HasTrustZone", "true",
|
||||
"Enable support for TrustZone security extensions">;
|
||||
|
||||
@ -134,7 +136,7 @@ def HasV6T2Ops : SubtargetFeature<"v6t2", "HasV6T2Ops", "true",
|
||||
[HasV6Ops, FeatureThumb2]>;
|
||||
def HasV7Ops : SubtargetFeature<"v7", "HasV7Ops", "true",
|
||||
"Support ARM v7 instructions",
|
||||
[HasV6T2Ops]>;
|
||||
[HasV6T2Ops, FeaturePerfMon]>;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// ARM Processors supported.
|
||||
|
@ -106,6 +106,7 @@ void ARMSubtarget::initializeEnvironment() {
|
||||
HasRAS = false;
|
||||
HasMPExtension = false;
|
||||
FPOnlySP = false;
|
||||
HasPerfMon = false;
|
||||
HasTrustZone = false;
|
||||
AllowsUnalignedMem = false;
|
||||
Thumb2DSP = false;
|
||||
|
@ -148,6 +148,11 @@ protected:
|
||||
/// precision.
|
||||
bool FPOnlySP;
|
||||
|
||||
/// If true, the processor supports the Performance Monitor Extensions. These
|
||||
/// include a generic cycle-counter as well as more fine-grained (often
|
||||
/// implementation-specific) events.
|
||||
bool HasPerfMon;
|
||||
|
||||
/// HasTrustZone - if true, processor supports TrustZone security extensions
|
||||
bool HasTrustZone;
|
||||
|
||||
@ -254,6 +259,7 @@ public:
|
||||
bool hasVMLxForwarding() const { return HasVMLxForwarding; }
|
||||
bool isFPBrccSlow() const { return SlowFPBrcc; }
|
||||
bool isFPOnlySP() const { return FPOnlySP; }
|
||||
bool hasPerfMon() const { return HasPerfMon; }
|
||||
bool hasTrustZone() const { return HasTrustZone; }
|
||||
bool prefers32BitThumb() const { return Pref32BitThumb; }
|
||||
bool avoidCPSRPartialUpdate() const { return AvoidCPSRPartialUpdate; }
|
||||
|
Loading…
Reference in New Issue
Block a user