[Clang][RISCV] Add custom TableGen backend for riscv-vector intrinsics.
authorZakk Chen <zakk.chen@sifive.com>
Fri, 5 Mar 2021 15:40:28 +0000 (07:40 -0800)
committerZakk Chen <zakk.chen@sifive.com>
Thu, 11 Mar 2021 02:43:43 +0000 (18:43 -0800)
commitd6a0560bf258f95f8960f35657a454f26dda5ba3
treec03cc1883057c8cfd46817cb2ad8ea3b0e4cec83
parent64d2c326b7f01942f0179fb797070e5cefbba303
[Clang][RISCV] Add custom TableGen backend for riscv-vector intrinsics.

Demonstrate how to generate vadd/vfadd intrinsic functions

1. add -gen-riscv-vector-builtins for clang builtins.
2. add -gen-riscv-vector-builtin-codegen for clang codegen.
3. add -gen-riscv-vector-header for riscv_vector.h. It also generates
ifdef directives with extension checking, base on D94403.
4. add -gen-riscv-vector-generic-header for riscv_vector_generic.h.
Generate overloading version Header for generic api.
https://github.com/riscv/rvv-intrinsic-doc/blob/master/rvv-intrinsic-rfc.md#c11-generic-interface
5. update tblgen doc for riscv related options.

riscv_vector.td also defines some unused type transformers for vadd,
because I think it could demonstrate how tranfer type work and we need
them for the whole intrinsic functions implementation in the future.

Authored-by: Roger Ferrer Ibanez <rofirrim@gmail.com>
Co-Authored-by: Zakk Chen <zakk.chen@sifive.com>
Reviewed By: jrtc27, craig.topper, HsiangKai, Jim, Paul-C-Anagnostopoulos

Differential Revision: https://reviews.llvm.org/D95016
16 files changed:
clang/include/clang/Basic/BuiltinsRISCV.def
clang/include/clang/Basic/CMakeLists.txt
clang/include/clang/Basic/riscv_vector.td [new file with mode: 0644]
clang/lib/CodeGen/CGBuiltin.cpp
clang/lib/Headers/CMakeLists.txt
clang/test/CodeGen/RISCV/rvv-intrinsics-generic/vadd.c [new file with mode: 0644]
clang/test/CodeGen/RISCV/rvv-intrinsics-generic/vfadd.c [new file with mode: 0644]
clang/test/CodeGen/RISCV/rvv-intrinsics/vadd.c [new file with mode: 0644]
clang/test/CodeGen/RISCV/rvv-intrinsics/vfadd.c [new file with mode: 0644]
clang/test/CodeGen/RISCV/vadd.c [deleted file]
clang/test/Headers/riscv-vector-header.c [new file with mode: 0644]
clang/utils/TableGen/CMakeLists.txt
clang/utils/TableGen/RISCVVEmitter.cpp [new file with mode: 0644]
clang/utils/TableGen/TableGen.cpp
clang/utils/TableGen/TableGenBackends.h
llvm/docs/CommandGuide/tblgen.rst