mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-05 13:26:55 +00:00
Avoid some 's' 16-bit instruction which partially update CPSR
(and add false dependency) when it isn't dependent on last CPSR defining instruction. rdar://8928208 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129773 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -67,6 +67,14 @@ def FeatureNEONForFP : SubtargetFeature<"neonfp", "UseNEONForSinglePrecisionFP",
|
||||
def FeaturePref32BitThumb : SubtargetFeature<"32bit", "Pref32BitThumb", "true",
|
||||
"Prefer 32-bit Thumb instrs">;
|
||||
|
||||
/// Some instructions update CPSR partially, which can add false dependency for
|
||||
/// out-of-order implementation, e.g. Cortex-A9, unless each individual bit is
|
||||
/// mapped to a separate physical register. Avoid partial CPSR update for these
|
||||
/// processors.
|
||||
def FeatureAvoidPartialCPSR : SubtargetFeature<"avoid-partial-cpsr",
|
||||
"AvoidCPSRPartialUpdate", "true",
|
||||
"Avoid CPSR partial update for OOO execution">;
|
||||
|
||||
// Multiprocessing extension.
|
||||
def FeatureMP : SubtargetFeature<"mp", "HasMPExtension", "true",
|
||||
"Supports Multiprocessing extension">;
|
||||
@@ -111,7 +119,8 @@ def ProcA8 : SubtargetFeature<"a8", "ARMProcFamily", "CortexA8",
|
||||
def ProcA9 : SubtargetFeature<"a9", "ARMProcFamily", "CortexA9",
|
||||
"Cortex-A9 ARM processors",
|
||||
[FeatureHasSlowFPVMLx, FeatureVMLxForwarding,
|
||||
FeatureT2XtPk, FeatureFP16]>;
|
||||
FeatureT2XtPk, FeatureFP16,
|
||||
FeatureAvoidPartialCPSR]>;
|
||||
|
||||
class ProcNoItin<string Name, list<SubtargetFeature> Features>
|
||||
: Processor<Name, GenericItineraries, Features>;
|
||||
|
Reference in New Issue
Block a user