Skip to content

Commit

Permalink
[AArch64][SME] Disable NEON in streaming mode
Browse files Browse the repository at this point in the history
In streaming mode most of the NEON instruction set is illegal, disable
NEON when compiling with `+streaming-sve`, unless NEON is explictly
requested.

Subsequent patches will add support for the small subset of NEON
instructions that are legal in streaming mode.

Reviewed By: paulwalker-arm, david-arm

Differential Revision: https://reviews.llvm.org/D107902
  • Loading branch information
c-rhodes committed Aug 16, 2021
1 parent 93c55d5 commit 09507b5
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 1 deletion.
11 changes: 10 additions & 1 deletion llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp
Expand Up @@ -57,7 +57,16 @@ createAArch64MCSubtargetInfo(const Triple &TT, StringRef CPU, StringRef FS) {
CPU = "apple-a12";
}

return createAArch64MCSubtargetInfoImpl(TT, CPU, /*TuneCPU*/ CPU, FS);
// Most of the NEON instruction set isn't supported in streaming mode on SME
// targets, disable NEON unless explicitly requested.
bool RequestedNEON = FS.contains("neon");
bool RequestedStreamingSVE = FS.contains("streaming-sve");
MCSubtargetInfo *STI =
createAArch64MCSubtargetInfoImpl(TT, CPU, /*TuneCPU*/ CPU, FS);
if (RequestedStreamingSVE && !RequestedNEON &&
STI->hasFeature(AArch64::FeatureNEON))
STI->ToggleFeature(AArch64::FeatureNEON);
return STI;
}

void AArch64_MC::initLLVMToCVRegMapping(MCRegisterInfo *MRI) {
Expand Down
8 changes: 8 additions & 0 deletions llvm/test/MC/AArch64/SME/streaming-sve-feature.s
@@ -0,0 +1,8 @@
// RUN: llvm-mc -triple=aarch64 -mattr=+streaming-sve,+neon < %s 2>&1 | FileCheck %s
// RUN: not llvm-mc -triple=aarch64 -mattr=+streaming-sve < %s 2>&1 | FileCheck %s --check-prefix=CHECK-ERROR

// Verify NEON is disabled when targeting streaming mode, if it's not
// explicitly requested.
add v0.8b, v1.8b, v2.8b
// CHECK: add v0.8b, v1.8b, v2.8b
// CHECK-ERROR: error: instruction requires: neon

0 comments on commit 09507b5

Please sign in to comment.