Lines Matching refs:STI
131 static ARMBuildAttrs::CPUArch getArchForCPU(const MCSubtargetInfo &STI) {
132 if (STI.getCPU() == "xscale")
135 if (STI.hasFeature(ARM::HasV9_0aOps))
137 else if (STI.hasFeature(ARM::HasV8Ops)) {
138 if (STI.hasFeature(ARM::FeatureRClass))
141 } else if (STI.hasFeature(ARM::HasV8_1MMainlineOps))
143 else if (STI.hasFeature(ARM::HasV8MMainlineOps))
145 else if (STI.hasFeature(ARM::HasV7Ops)) {
146 if (STI.hasFeature(ARM::FeatureMClass) && STI.hasFeature(ARM::FeatureDSP))
149 } else if (STI.hasFeature(ARM::HasV6T2Ops))
151 else if (STI.hasFeature(ARM::HasV8MBaselineOps))
153 else if (STI.hasFeature(ARM::HasV6MOps))
155 else if (STI.hasFeature(ARM::HasV6Ops))
157 else if (STI.hasFeature(ARM::HasV5TEOps))
159 else if (STI.hasFeature(ARM::HasV5TOps))
161 else if (STI.hasFeature(ARM::HasV4TOps))
167 static bool isV8M(const MCSubtargetInfo &STI) {
169 return (STI.hasFeature(ARM::HasV8MBaselineOps) &&
170 !STI.hasFeature(ARM::HasV6T2Ops)) ||
171 STI.hasFeature(ARM::HasV8MMainlineOps);
176 void ARMTargetStreamer::emitTargetAttributes(const MCSubtargetInfo &STI) {
179 const StringRef CPUString = STI.getCPU();
182 if (STI.hasFeature(ARM::ProcKrait)) {
186 if (STI.hasFeature(ARM::FeatureHWDivThumb) ||
187 STI.hasFeature(ARM::FeatureHWDivARM))
194 emitAttribute(ARMBuildAttrs::CPU_arch, getArchForCPU(STI));
196 if (STI.hasFeature(ARM::FeatureAClass)) {
199 } else if (STI.hasFeature(ARM::FeatureRClass)) {
202 } else if (STI.hasFeature(ARM::FeatureMClass)) {
207 emitAttribute(ARMBuildAttrs::ARM_ISA_use, STI.hasFeature(ARM::FeatureNoARM)
211 if (isV8M(STI)) {
214 } else if (STI.hasFeature(ARM::FeatureThumb2)) {
217 } else if (STI.hasFeature(ARM::HasV4TOps)) {
221 if (STI.hasFeature(ARM::FeatureNEON)) {
224 if (STI.hasFeature(ARM::FeatureFPARMv8)) {
225 if (STI.hasFeature(ARM::FeatureCrypto))
229 } else if (STI.hasFeature(ARM::FeatureVFP4))
232 emitFPU(STI.hasFeature(ARM::FeatureFP16) ? ARM::FK_NEON_FP16
235 if (STI.hasFeature(ARM::HasV8Ops))
237 STI.hasFeature(ARM::HasV8_1aOps)
241 if (STI.hasFeature(ARM::FeatureFPARMv8_D16_SP)) {
244 if (STI.hasFeature(ARM::FeatureD32))
247 emitFPU(STI.hasFeature(ARM::FeatureFP64) ? ARM::FK_FPV5_D16
249 if (STI.hasFeature(ARM::HasMVEFloatOps))
252 } else if (STI.hasFeature(ARM::FeatureVFP4_D16_SP))
253 emitFPU(STI.hasFeature(ARM::FeatureD32)
255 : (STI.hasFeature(ARM::FeatureFP64) ? ARM::FK_VFPV4_D16
257 else if (STI.hasFeature(ARM::FeatureVFP3_D16_SP))
259 STI.hasFeature(ARM::FeatureD32)
261 ? (STI.hasFeature(ARM::FeatureFP16) ? ARM::FK_VFPV3_FP16
264 : (STI.hasFeature(ARM::FeatureFP64)
265 ? (STI.hasFeature(ARM::FeatureFP16)
268 : (STI.hasFeature(ARM::FeatureFP16) ? ARM::FK_VFPV3XD_FP16
270 else if (STI.hasFeature(ARM::FeatureVFP2_SP))
275 if (STI.hasFeature(ARM::FeatureVFP2_SP) && !STI.hasFeature(ARM::FeatureFP64))
279 if (STI.hasFeature(ARM::FeatureFP16))
282 if (STI.hasFeature(ARM::FeatureMP))
285 if (STI.hasFeature(ARM::HasMVEFloatOps))
287 else if (STI.hasFeature(ARM::HasMVEIntegerOps))
296 if (STI.hasFeature(ARM::FeatureHWDivARM) && !STI.hasFeature(ARM::HasV8Ops))
299 if (STI.hasFeature(ARM::FeatureDSP) && isV8M(STI))
302 if (STI.hasFeature(ARM::FeatureStrictAlign))
309 if (STI.hasFeature(ARM::FeatureTrustZone) &&
310 STI.hasFeature(ARM::FeatureVirtualization))
313 else if (STI.hasFeature(ARM::FeatureTrustZone))
315 else if (STI.hasFeature(ARM::FeatureVirtualization))
319 if (STI.hasFeature(ARM::FeaturePACBTI)) {
326 llvm::createARMObjectTargetStreamer(MCStreamer &S, const MCSubtargetInfo &STI) {
327 const Triple &TT = STI.getTargetTriple();