Skip to content

Commit d6772d6

Browse files
committed
[NFC][ARM] Split SIMD identifier away from MVE
Previously, the use of MVE or MVE.FP would be defined by using the `ARM::AEK_SIMD` identifier. SIMD relates to the Cortex-A and Cortex-R extension that enables NEON instructions, which is called MVE for Cortex-M. To enable the linking of `+simd` and `+nosimd` to `+neon` and `-neon` when using clang, MVE and MVE.FP can now be defined using a unique enum identifier, rather than using the existing identifier for SIMD. This was originally planned to be merged as part of llvm#130296 but the changes made `+nosimd` an invalid argument, which, while not having any functionality, was allowed in previous versions of LLVM. To avoid regressions being introduced, this has been combined with the fix for `+nosimd` on AArch32.
1 parent d1bd1c7 commit d6772d6

File tree

5 files changed

+11
-10
lines changed

5 files changed

+11
-10
lines changed

llvm/include/llvm/TargetParser/ARMTargetParser.def

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -224,8 +224,8 @@ ARM_ARCH_EXT_NAME("dotprod", ARM::AEK_DOTPROD, "+dotprod", "-dotprod")
224224
ARM_ARCH_EXT_NAME("dsp", ARM::AEK_DSP, "+dsp", "-dsp")
225225
ARM_ARCH_EXT_NAME("fp", ARM::AEK_FP, {}, {})
226226
ARM_ARCH_EXT_NAME("fp.dp", ARM::AEK_FP_DP, {}, {})
227-
ARM_ARCH_EXT_NAME("mve", (ARM::AEK_DSP | ARM::AEK_SIMD), "+mve", "-mve")
228-
ARM_ARCH_EXT_NAME("mve.fp", (ARM::AEK_DSP | ARM::AEK_SIMD | ARM::AEK_FP),
227+
ARM_ARCH_EXT_NAME("mve", (ARM::AEK_DSP | ARM::AEK_MVE), "+mve", "-mve")
228+
ARM_ARCH_EXT_NAME("mve.fp", (ARM::AEK_DSP | ARM::AEK_MVE | ARM::AEK_FP),
229229
"+mve.fp", "-mve.fp")
230230
ARM_ARCH_EXT_NAME("idiv", (ARM::AEK_HWDIVARM | ARM::AEK_HWDIVTHUMB), {}, {})
231231
ARM_ARCH_EXT_NAME("mp", ARM::AEK_MP, {}, {})
@@ -345,12 +345,12 @@ ARM_CPU_NAME("cortex-m33", ARMV8MMainline, FK_FPV5_SP_D16, false, ARM::AEK_DSP)
345345
ARM_CPU_NAME("star-mc1", ARMV8MMainline, FK_FPV5_SP_D16, false, ARM::AEK_DSP)
346346
ARM_CPU_NAME("cortex-m35p", ARMV8MMainline, FK_FPV5_SP_D16, false, ARM::AEK_DSP)
347347
ARM_CPU_NAME("cortex-m55", ARMV8_1MMainline, FK_FP_ARMV8_FULLFP16_D16, false,
348-
(ARM::AEK_DSP | ARM::AEK_SIMD | ARM::AEK_FP | ARM::AEK_FP16))
348+
(ARM::AEK_DSP | ARM::AEK_MVE | ARM::AEK_FP | ARM::AEK_FP16))
349349
ARM_CPU_NAME("cortex-m85", ARMV8_1MMainline, FK_FP_ARMV8_FULLFP16_D16, false,
350-
(ARM::AEK_DSP | ARM::AEK_SIMD | ARM::AEK_FP | ARM::AEK_FP16 |
350+
(ARM::AEK_DSP | ARM::AEK_MVE | ARM::AEK_FP | ARM::AEK_FP16 |
351351
ARM::AEK_RAS | ARM::AEK_PACBTI))
352352
ARM_CPU_NAME("cortex-m52", ARMV8_1MMainline, FK_FP_ARMV8_FULLFP16_D16, false,
353-
(ARM::AEK_DSP | ARM::AEK_SIMD | ARM::AEK_FP | ARM::AEK_FP16 |
353+
(ARM::AEK_DSP | ARM::AEK_MVE | ARM::AEK_FP | ARM::AEK_FP16 |
354354
ARM::AEK_RAS | ARM::AEK_PACBTI))
355355
ARM_CPU_NAME("cortex-a32", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, ARM::AEK_CRC)
356356
ARM_CPU_NAME("cortex-a35", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, ARM::AEK_CRC)

llvm/include/llvm/TargetParser/ARMTargetParser.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ enum ArchExtKind : uint64_t {
6161
AEK_CDECP6 = 1 << 28,
6262
AEK_CDECP7 = 1 << 29,
6363
AEK_PACBTI = 1 << 30,
64+
AEK_MVE = 1ULL << 31,
6465
// Unsupported extensions.
6566
AEK_OS = 1ULL << 59,
6667
AEK_IWMMXT = 1ULL << 60,

llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12971,7 +12971,7 @@ bool ARMAsmParser::enableArchExtFeature(StringRef Name, SMLoc &ExtLoc) {
1297112971
{ARM::AEK_CRYPTO,
1297212972
{Feature_HasV8Bit},
1297312973
{ARM::FeatureCrypto, ARM::FeatureNEON, ARM::FeatureFPARMv8}},
12974-
{(ARM::AEK_DSP | ARM::AEK_SIMD | ARM::AEK_FP),
12974+
{(ARM::AEK_DSP | ARM::AEK_MVE | ARM::AEK_FP),
1297512975
{Feature_HasV8_1MMainlineBit},
1297612976
{ARM::HasMVEFloatOps}},
1297712977
{ARM::AEK_FP,

llvm/lib/Target/ARM/MCTargetDesc/ARMTargetStreamer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ void ARMTargetStreamer::emitTargetAttributes(const MCSubtargetInfo &STI) {
248248
emitFPU(STI.hasFeature(ARM::FeatureFP64) ? ARM::FK_FPV5_D16
249249
: ARM::FK_FPV5_SP_D16);
250250
if (STI.hasFeature(ARM::HasMVEFloatOps))
251-
emitArchExtension(ARM::AEK_SIMD | ARM::AEK_DSP | ARM::AEK_FP);
251+
emitArchExtension(ARM::AEK_MVE | ARM::AEK_DSP | ARM::AEK_FP);
252252
}
253253
} else if (STI.hasFeature(ARM::FeatureVFP4_D16_SP))
254254
emitFPU(STI.hasFeature(ARM::FeatureD32)

llvm/unittests/TargetParser/TargetParserTest.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -507,17 +507,17 @@ INSTANTIATE_TEST_SUITE_P(
507507
"8-M.Mainline"),
508508
ARMCPUTestParams<uint64_t>(
509509
"cortex-m55", "armv8.1-m.main", "fp-armv8-fullfp16-d16",
510-
ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP | ARM::AEK_SIMD | ARM::AEK_FP |
510+
ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP | ARM::AEK_MVE | ARM::AEK_FP |
511511
ARM::AEK_RAS | ARM::AEK_LOB | ARM::AEK_FP16,
512512
"8.1-M.Mainline"),
513513
ARMCPUTestParams<uint64_t>(
514514
"cortex-m85", "armv8.1-m.main", "fp-armv8-fullfp16-d16",
515-
ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP | ARM::AEK_SIMD | ARM::AEK_FP |
515+
ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP | ARM::AEK_MVE | ARM::AEK_FP |
516516
ARM::AEK_RAS | ARM::AEK_LOB | ARM::AEK_FP16 | ARM::AEK_PACBTI,
517517
"8.1-M.Mainline"),
518518
ARMCPUTestParams<uint64_t>(
519519
"cortex-m52", "armv8.1-m.main", "fp-armv8-fullfp16-d16",
520-
ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP | ARM::AEK_SIMD | ARM::AEK_FP |
520+
ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP | ARM::AEK_MVE | ARM::AEK_FP |
521521
ARM::AEK_RAS | ARM::AEK_LOB | ARM::AEK_FP16 | ARM::AEK_PACBTI,
522522
"8.1-M.Mainline"),
523523
ARMCPUTestParams<uint64_t>("iwmmxt", "iwmmxt", "none", ARM::AEK_NONE,

0 commit comments

Comments
 (0)