mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-05 13:26:55 +00:00
Teach if-converter to be more careful with predicating instructions that would
take multiple cycles to decode. For the current if-converter clients (actually only ARM), the instructions that are predicated on false are not nops. They would still take machine cycles to decode. Micro-coded instructions such as LDM / STM can potentially take multiple cycles to decode. If-converter should take treat them as non-micro-coded simple instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113570 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -91,6 +91,15 @@ def ArchV7M : SubtargetFeature<"v7m", "ARMArchVersion", "V7M",
|
||||
|
||||
include "ARMSchedule.td"
|
||||
|
||||
// ARM processor families.
|
||||
def ProcOthers : SubtargetFeature<"others", "ARMProcFamily", "Others",
|
||||
"One of the other ARM processor families">;
|
||||
def ProcA8 : SubtargetFeature<"a8", "ARMProcFamily", "CortexA8",
|
||||
"Cortex-A8 ARM processors",
|
||||
[FeatureSlowFPBrcc, FeatureNEONForFP]>;
|
||||
def ProcA9 : SubtargetFeature<"a9", "ARMProcFamily", "CortexA9",
|
||||
"Cortex-A9 ARM processors">;
|
||||
|
||||
class ProcNoItin<string Name, list<SubtargetFeature> Features>
|
||||
: Processor<Name, GenericItineraries, Features>;
|
||||
|
||||
@@ -150,10 +159,10 @@ def : Processor<"arm1156t2f-s", ARMV6Itineraries, [ArchV6T2, FeatureVFP2]>;
|
||||
|
||||
// V7 Processors.
|
||||
def : Processor<"cortex-a8", CortexA8Itineraries,
|
||||
[ArchV7A, FeatureHasSlowVMLx,
|
||||
FeatureSlowFPBrcc, FeatureNEONForFP, FeatureT2XtPk]>;
|
||||
[ArchV7A, ProcA8,
|
||||
FeatureHasSlowVMLx, FeatureT2XtPk]>;
|
||||
def : Processor<"cortex-a9", CortexA9Itineraries,
|
||||
[ArchV7A, FeatureT2XtPk]>;
|
||||
[ArchV7A, ProcA9, FeatureT2XtPk]>;
|
||||
|
||||
// V7M Processors.
|
||||
def : ProcNoItin<"cortex-m3", [ArchV7M]>;
|
||||
|
Reference in New Issue
Block a user