mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-14 06:37:33 +00:00
Add an ARM "feature". Cortex-a8 fp comparison is very slow (> 20 cycles).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108256 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
43bc79a642
commit
7a41599962
lib/Target/ARM
@ -48,6 +48,8 @@ def FeatureHWDiv : SubtargetFeature<"hwdiv", "HasHardwareDivide", "true",
|
||||
"Enable divide instructions">;
|
||||
def FeatureT2ExtractPack: SubtargetFeature<"t2xtpk", "HasT2ExtractPack", "true",
|
||||
"Enable Thumb2 extract and pack instructions">;
|
||||
def FeatureSlowFPBrcc : SubtargetFeature<"slow-fp-brcc", "SlowFPBrcc", "true",
|
||||
"FP compare + branch is slow">;
|
||||
|
||||
// Some processors have multiply-accumulate instructions that don't
|
||||
// play nicely with other VFP instructions, and it's generally better
|
||||
@ -129,7 +131,7 @@ def : Processor<"arm1156t2f-s", ARMV6Itineraries,
|
||||
// V7 Processors.
|
||||
def : Processor<"cortex-a8", CortexA8Itineraries,
|
||||
[ArchV7A, FeatureThumb2, FeatureNEON, FeatureHasSlowVMLx,
|
||||
FeatureNEONForFP, FeatureT2ExtractPack]>;
|
||||
FeatureSlowFPBrcc, FeatureNEONForFP, FeatureT2ExtractPack]>;
|
||||
def : Processor<"cortex-a9", CortexA9Itineraries,
|
||||
[ArchV7A, FeatureThumb2, FeatureNEON, FeatureT2ExtractPack]>;
|
||||
def : ProcNoItin<"cortex-m3", [ArchV7M, FeatureThumb2, FeatureHWDiv]>;
|
||||
|
@ -54,6 +54,9 @@ protected:
|
||||
/// the VML[AS] instructions are slow (if so, don't use them).
|
||||
bool SlowVMLx;
|
||||
|
||||
/// SlowFPBrcc - True if floating point compare + branch is slow.
|
||||
bool SlowFPBrcc;
|
||||
|
||||
/// IsThumb - True if we are in thumb mode, false if in ARM mode.
|
||||
bool IsThumb;
|
||||
|
||||
@ -133,6 +136,7 @@ protected:
|
||||
bool hasDivide() const { return HasHardwareDivide; }
|
||||
bool hasT2ExtractPack() const { return HasT2ExtractPack; }
|
||||
bool useVMLx() const {return hasVFP2() && !SlowVMLx; }
|
||||
bool isFPBrccSlow() const { return SlowFPBrcc; }
|
||||
|
||||
bool hasFP16() const { return HasFP16; }
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user