llvm-project/clang/utils/TableGen
Mikhail Maltsev 969034b860 [ARM,CDE] Implement CDE unpredicated Q-register intrinsics
Summary:
This patch implements the following intrinsics:

  uint8x16_t __arm_vcx1q_u8 (int coproc, uint32_t imm);
  T __arm_vcx1qa(int coproc, T acc, uint32_t imm);
  T __arm_vcx2q(int coproc, T n, uint32_t imm);
  uint8x16_t __arm_vcx2q_u8(int coproc, T n, uint32_t imm);
  T __arm_vcx2qa(int coproc, T acc, U n, uint32_t imm);
  T __arm_vcx3q(int coproc, T n, U m, uint32_t imm);
  uint8x16_t __arm_vcx3q_u8(int coproc, T n, U m, uint32_t imm);
  T __arm_vcx3qa(int coproc, T acc, U n, V m, uint32_t imm);

Most of them are polymorphic. Furthermore, some intrinsics are
polymorphic by 2 or 3 parameter types, such polymorphism is not
supported by the existing MVE/CDE tablegen backends, also we don't
really want to have a combinatorial explosion caused by 1000 different
combinations of 3 vector types. Because of this some intrinsics are
implemented as macros involving a cast of the polymorphic arguments to
uint8x16_t.

The IR intrinsics are even more restricted in terms of types: all MVE
vectors are cast to v16i8.

Reviewers: simon_tatham, MarkMurrayARM, dmgreen, ostannard

Reviewed By: MarkMurrayARM

Subscribers: kristof.beyls, hiraditya, danielkiss, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D76299
2020-03-20 14:01:56 +00:00
..
ASTTableGen.cpp Add the ability to use property-based serialization for "cased" types. 2019-12-16 13:33:59 -05:00
ASTTableGen.h Add the ability for properties to be conditional on other properties. 2019-12-16 13:34:00 -05:00
CMakeLists.txt [Clang][SVE] Parse builtin type string for scalable vectors 2020-03-15 14:34:52 +00:00
ClangASTNodesEmitter.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
ClangASTPropertiesEmitter.cpp Forward {read,write}SomeEnumType to {read,write}Enum instead of 2019-12-16 13:34:00 -05:00
ClangAttrEmitter.cpp [NFC][Attr TableGen] Emit Spelling Enum for Attr types if there >1 2020-03-17 12:20:23 -07:00
ClangCommentCommandInfoEmitter.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
ClangCommentHTMLNamedCharacterReferenceEmitter.cpp Fix one round of implicit conversions found by g++5. 2020-01-29 01:52:48 +01:00
ClangCommentHTMLTagsEmitter.cpp Fix one round of implicit conversions found by g++5. 2020-01-29 01:52:48 +01:00
ClangDataCollectorsEmitter.cpp Use scope qualifiers in Clang's tblgen backends to get useful 2019-10-01 23:12:57 +00:00
ClangDiagnosticsEmitter.cpp Avoid including FileSystem.h from MemoryBuffer.h 2020-02-29 12:30:23 -08:00
ClangOpcodesEmitter.cpp Use scope qualifiers in Clang's tblgen backends to get useful 2019-10-01 23:12:57 +00:00
ClangOpenCLBuiltinEmitter.cpp [OpenCL] Reduce size of builtin function tables 2020-02-06 15:08:32 +00:00
ClangOptionDocEmitter.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
ClangSACheckersEmitter.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
ClangTypeNodesEmitter.cpp Enable better node-hierarchy metaprogramming; NFC. 2019-12-14 00:16:47 -05:00
MveEmitter.cpp [ARM,CDE] Implement CDE unpredicated Q-register intrinsics 2020-03-20 14:01:56 +00:00
NeonEmitter.cpp [ARM] Enabling range checks on Neon intrinsics' lane arguments 2020-03-19 12:07:23 +00:00
SveEmitter.cpp [SVE] Generate overloaded functions for ACLE intrinsics. 2020-03-19 09:36:23 +00:00
TableGen.cpp Reland D75470 [SVE] Auto-generate builtins and header for svld1. 2020-03-18 11:16:28 +00:00
TableGenBackends.h Reland D75470 [SVE] Auto-generate builtins and header for svld1. 2020-03-18 11:16:28 +00:00