forked from OSchip/llvm-project
Added support for mcpu krait
- krait processor currently modeled with the same features as A9. - Krait processor additionally has VFP4 (fused multiply add/sub) and hardware division features enabled. - krait has currently the same Schedule model as A9 - krait cpu flag is not recognized by the GNU assembler yet, it is replaced with march=armv7-a to avoid a lower march from being used. llvm-svn: 196619
This commit is contained in:
parent
dd6068d400
commit
93a07c2185
|
@ -243,6 +243,18 @@ def ProcR5 : SubtargetFeature<"r5", "ARMProcFamily", "CortexR5",
|
|||
FeatureAvoidPartialCPSR,
|
||||
FeatureT2XtPk]>;
|
||||
|
||||
// FIXME: krait has currently the same features as A9
|
||||
// plus VFP4 and hardware division features.
|
||||
def ProcKrait : SubtargetFeature<"krait", "ARMProcFamily", "Krait",
|
||||
"Qualcomm ARM processors",
|
||||
[FeatureVMLxForwarding,
|
||||
FeatureT2XtPk, FeatureFP16,
|
||||
FeatureAvoidPartialCPSR,
|
||||
FeatureTrustZone,
|
||||
FeatureVFP4,
|
||||
FeatureHWDiv,
|
||||
FeatureHWDivARM]>;
|
||||
|
||||
class ProcNoItin<string Name, list<SubtargetFeature> Features>
|
||||
: Processor<Name, NoItineraries, Features>;
|
||||
|
||||
|
@ -375,6 +387,13 @@ def : ProcNoItin<"cortex-a57", [ProcA57, HasV8Ops, FeatureAClass,
|
|||
FeatureDB, FeatureFPARMv8,
|
||||
FeatureNEON, FeatureDSPThumb2]>;
|
||||
|
||||
// FIXME: krait has currently the same Schedule model as A9
|
||||
def : ProcessorModel<"krait", CortexA9Model,
|
||||
[ProcKrait, HasV7Ops,
|
||||
FeatureNEON, FeatureDB,
|
||||
FeatureDSPThumb2, FeatureHasRAS,
|
||||
FeatureAClass]>;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Register File Description
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
|
|
@ -609,7 +609,8 @@ void ARMAsmPrinter::emitAttributes() {
|
|||
|
||||
std::string CPUString = Subtarget->getCPUString();
|
||||
|
||||
if (CPUString != "generic")
|
||||
// FIXME: remove krait check when GNU tools support krait cpu
|
||||
if (CPUString != "generic" && CPUString != "krait")
|
||||
ATS.emitTextAttribute(ARMBuildAttrs::CPU_name, CPUString);
|
||||
|
||||
ATS.emitAttribute(ARMBuildAttrs::CPU_arch,
|
||||
|
|
|
@ -32,7 +32,7 @@ class ARMSubtarget : public ARMGenSubtargetInfo {
|
|||
protected:
|
||||
enum ARMProcFamilyEnum {
|
||||
Others, CortexA5, CortexA7, CortexA8, CortexA9, CortexA12, CortexA15,
|
||||
CortexR5, Swift, CortexA53, CortexA57
|
||||
CortexR5, Swift, CortexA53, CortexA57, Krait
|
||||
};
|
||||
enum ARMProcClassEnum {
|
||||
None, AClass, RClass, MClass
|
||||
|
@ -261,8 +261,9 @@ public:
|
|||
bool isCortexA15() const { return ARMProcFamily == CortexA15; }
|
||||
bool isSwift() const { return ARMProcFamily == Swift; }
|
||||
bool isCortexM3() const { return CPUString == "cortex-m3"; }
|
||||
bool isLikeA9() const { return isCortexA9() || isCortexA15(); }
|
||||
bool isLikeA9() const { return isCortexA9() || isCortexA15() || isKrait(); }
|
||||
bool isCortexR5() const { return ARMProcFamily == CortexR5; }
|
||||
bool isKrait() const { return ARMProcFamily == Krait; }
|
||||
|
||||
bool hasARMOps() const { return !NoARM; }
|
||||
|
||||
|
|
Loading…
Reference in New Issue