@@ -40,13 +40,13 @@ class Type;
4040class Value ;
4141
4242namespace TailPredication {
43- enum Mode {
44- Disabled = 0 ,
45- EnabledNoReductions,
46- Enabled,
47- ForceEnabledNoReductions,
48- ForceEnabled
49- };
43+ enum Mode {
44+ Disabled = 0 ,
45+ EnabledNoReductions,
46+ Enabled,
47+ ForceEnabledNoReductions,
48+ ForceEnabled
49+ };
5050}
5151
5252// For controlling conversion of memcpy into Tail Predicated loop.
@@ -70,31 +70,67 @@ class ARMTTIImpl final : public BasicTTIImplBase<ARMTTIImpl> {
7070 // -thumb-mode in a caller with +thumb-mode, may cause the assembler to
7171 // fail if the callee uses ARM only instructions, e.g. in inline asm.
7272 const FeatureBitset InlineFeaturesAllowed = {
73- ARM::FeatureVFP2, ARM::FeatureVFP3, ARM::FeatureNEON, ARM::FeatureThumb2,
74- ARM::FeatureFP16, ARM::FeatureVFP4, ARM::FeatureFPARMv8,
75- ARM::FeatureFullFP16, ARM::FeatureFP16FML, ARM::FeatureHWDivThumb,
76- ARM::FeatureHWDivARM, ARM::FeatureDB, ARM::FeatureV7Clrex,
77- ARM::FeatureAcquireRelease, ARM::FeatureSlowFPBrcc,
78- ARM::FeaturePerfMon, ARM::FeatureTrustZone, ARM::Feature8MSecExt,
79- ARM::FeatureCrypto, ARM::FeatureCRC, ARM::FeatureRAS,
80- ARM::FeatureFPAO, ARM::FeatureFuseAES, ARM::FeatureZCZeroing,
81- ARM::FeatureProfUnpredicate, ARM::FeatureSlowVGETLNi32,
82- ARM::FeatureSlowVDUP32, ARM::FeaturePreferVMOVSR,
83- ARM::FeaturePrefISHSTBarrier, ARM::FeatureMuxedUnits,
84- ARM::FeatureSlowOddRegister, ARM::FeatureSlowLoadDSubreg,
85- ARM::FeatureDontWidenVMOVS, ARM::FeatureExpandMLx,
86- ARM::FeatureHasVMLxHazards, ARM::FeatureNEONForFPMovs,
87- ARM::FeatureNEONForFP, ARM::FeatureCheckVLDnAlign,
88- ARM::FeatureHasSlowFPVMLx, ARM::FeatureHasSlowFPVFMx,
89- ARM::FeatureVMLxForwarding, ARM::FeaturePref32BitThumb,
90- ARM::FeatureAvoidPartialCPSR, ARM::FeatureCheapPredicableCPSR,
91- ARM::FeatureAvoidMOVsShOp, ARM::FeatureHasRetAddrStack,
92- ARM::FeatureHasNoBranchPredictor, ARM::FeatureDSP, ARM::FeatureMP,
93- ARM::FeatureVirtualization, ARM::FeatureMClass, ARM::FeatureRClass,
94- ARM::FeatureAClass, ARM::FeatureStrictAlign, ARM::FeatureLongCalls,
95- ARM::FeatureExecuteOnly, ARM::FeatureReserveR9, ARM::FeatureNoMovt,
96- ARM::FeatureNoNegativeImmediates
97- };
73+ ARM::FeatureDotProd,
74+ ARM::HasV8Ops,
75+ ARM::FeatureVFP2,
76+ ARM::FeatureVFP3,
77+ ARM::FeatureNEON,
78+ ARM::FeatureThumb2,
79+ ARM::FeatureFP16,
80+ ARM::FeatureVFP4,
81+ ARM::FeatureFPARMv8,
82+ ARM::FeatureFullFP16,
83+ ARM::FeatureFP16FML,
84+ ARM::FeatureHWDivThumb,
85+ ARM::FeatureHWDivARM,
86+ ARM::FeatureDB,
87+ ARM::FeatureV7Clrex,
88+ ARM::FeatureAcquireRelease,
89+ ARM::FeatureSlowFPBrcc,
90+ ARM::FeaturePerfMon,
91+ ARM::FeatureTrustZone,
92+ ARM::Feature8MSecExt,
93+ ARM::FeatureCrypto,
94+ ARM::FeatureCRC,
95+ ARM::FeatureRAS,
96+ ARM::FeatureFPAO,
97+ ARM::FeatureFuseAES,
98+ ARM::FeatureZCZeroing,
99+ ARM::FeatureProfUnpredicate,
100+ ARM::FeatureSlowVGETLNi32,
101+ ARM::FeatureSlowVDUP32,
102+ ARM::FeaturePreferVMOVSR,
103+ ARM::FeaturePrefISHSTBarrier,
104+ ARM::FeatureMuxedUnits,
105+ ARM::FeatureSlowOddRegister,
106+ ARM::FeatureSlowLoadDSubreg,
107+ ARM::FeatureDontWidenVMOVS,
108+ ARM::FeatureExpandMLx,
109+ ARM::FeatureHasVMLxHazards,
110+ ARM::FeatureNEONForFPMovs,
111+ ARM::FeatureNEONForFP,
112+ ARM::FeatureCheckVLDnAlign,
113+ ARM::FeatureHasSlowFPVMLx,
114+ ARM::FeatureHasSlowFPVFMx,
115+ ARM::FeatureVMLxForwarding,
116+ ARM::FeaturePref32BitThumb,
117+ ARM::FeatureAvoidPartialCPSR,
118+ ARM::FeatureCheapPredicableCPSR,
119+ ARM::FeatureAvoidMOVsShOp,
120+ ARM::FeatureHasRetAddrStack,
121+ ARM::FeatureHasNoBranchPredictor,
122+ ARM::FeatureDSP,
123+ ARM::FeatureMP,
124+ ARM::FeatureVirtualization,
125+ ARM::FeatureMClass,
126+ ARM::FeatureRClass,
127+ ARM::FeatureAClass,
128+ ARM::FeatureStrictAlign,
129+ ARM::FeatureLongCalls,
130+ ARM::FeatureExecuteOnly,
131+ ARM::FeatureReserveR9,
132+ ARM::FeatureNoMovt,
133+ ARM::FeatureNoNegativeImmediates};
98134
99135 const ARMSubtarget *getST () const { return ST; }
100136 const ARMTargetLowering *getTLI () const { return TLI; }
0 commit comments