diff options
author | Sander de Smalen <sander.desmalen@arm.com> | 2024-01-02 09:43:30 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-02 09:43:30 +0000 |
commit | 5055eeea5205d938320590236eeb782c92e40911 (patch) | |
tree | ccadcbcfd6a7238a7364dde212911dd89f848d04 /clang/utils | |
parent | d714be978cf48bc85cb7eacf57c3548c0606a5e4 (diff) | |
download | llvm-5055eeea5205d938320590236eeb782c92e40911.zip llvm-5055eeea5205d938320590236eeb782c92e40911.tar.gz llvm-5055eeea5205d938320590236eeb782c92e40911.tar.bz2 |
[Clang][AArch64] Add missing SME functions to header file. (#75791)
This includes:
* __arm_in_streaming_mode()
* __arm_has_sme()
* __arm_za_disable()
* __svundef_za()
Diffstat (limited to 'clang/utils')
-rw-r--r-- | clang/utils/TableGen/SveEmitter.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/clang/utils/TableGen/SveEmitter.cpp b/clang/utils/TableGen/SveEmitter.cpp index 311c6b0..6c302da 100644 --- a/clang/utils/TableGen/SveEmitter.cpp +++ b/clang/utils/TableGen/SveEmitter.cpp @@ -1603,6 +1603,25 @@ void SVEEmitter::createSMEHeader(raw_ostream &OS) { OS << "extern \"C\" {\n"; OS << "#endif\n\n"; + OS << "void __arm_za_disable(void) __arm_streaming_compatible;\n\n"; + + OS << "__ai bool __arm_has_sme(void) __arm_streaming_compatible {\n"; + OS << " uint64_t x0, x1;\n"; + OS << " __builtin_arm_get_sme_state(&x0, &x1);\n"; + OS << " return x0 & (1ULL << 63);\n"; + OS << "}\n\n"; + + OS << "__ai bool __arm_in_streaming_mode(void) __arm_streaming_compatible " + "{\n"; + OS << " uint64_t x0, x1;\n"; + OS << " __builtin_arm_get_sme_state(&x0, &x1);\n"; + OS << " return x0 & 1;\n"; + OS << "}\n\n"; + + OS << "__ai __attribute__((target(\"sme\"))) void svundef_za(void) " + "__arm_streaming_compatible __arm_shared_za " + "{ }\n\n"; + createCoreHeaderIntrinsics(OS, *this, ACLEKind::SME); OS << "#ifdef __cplusplus\n"; |