Skip to content

Commit ea8e670

Browse files
committed
Adds HasV8Ops, FeatureDotProd to InlineAllowed
Fixes issue where functions are not inlined when caller has these features, but callee does not.
1 parent 125af56 commit ea8e670

File tree

1 file changed

+68
-32
lines changed

1 file changed

+68
-32
lines changed

llvm/lib/Target/ARM/ARMTargetTransformInfo.h

Lines changed: 68 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,13 @@ class Type;
4040
class Value;
4141

4242
namespace 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

Comments
 (0)