[PATCH] D103228: [PoC][RISCV] Using pragma to register vector intrinsic

Kito Cheng via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed May 26 23:46:46 PDT 2021


kito-cheng created this revision.
Herald added subscribers: vkmr, frasercrmck, dexonsmith, evandro, luismarques, apazos, sameer.abuasal, s.egerton, Jim, benna, psnobl, jocewei, PkmX, the_o, brucehoult, MartinMosbeck, rogfer01, edward-jones, zzheng, jrtc27, shiva0217, niosHD, sabuasal, simoncook, johnrusso, rbar, asb, mgorny.
kito-cheng requested review of this revision.
Herald added subscribers: cfe-commits, MaskRay.
Herald added a project: clang.

This patch is *NOT* ready to commite yet, it's PoC of the pragma approache to
reduce the size of `riscv_vector.h` and speed up the including effort.

Syntax for the new pragma:

  #pragma riscv intrinsic <extension name>

And we only support for vector now:

  #pragma riscv intrinsic vector

Size of `riscv_vector.h`:

  |      size |     LoC |

------------------------------

Before | 4,434,725 |  69,749 |
After  |     5,463 |     159 |

testcase:

  vint32m1_t test_vadd_vv_vfloat32m1_t(vint32m1_t op1, vint32m1_t op2, size_t vl) {
    return vadd(op1, op2, vl);
  }

Release build:

  Before: 0m0.417s
  After:  0m0.090s

Debug build:

  Before: 0m8.016s
  After:  0m2.295s

- Measure by time command.

LLVM regression on our 48 core server:

Release build:
 Before : Testing Time: 203.81s
 After  : Testing Time: 181.13s
Debug build:
 Before : Testing Time: 675.18s
 After  : Testing Time: 647.20s


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D103228

Files:
  clang/include/clang/Basic/Builtins.h
  clang/include/clang/Basic/TokenKinds.def
  clang/include/clang/Basic/riscv_vector.td
  clang/include/clang/Parse/Parser.h
  clang/include/clang/Sema/Sema.h
  clang/lib/Basic/Builtins.cpp
  clang/lib/Basic/Targets/RISCV.cpp
  clang/lib/Parse/ParsePragma.cpp
  clang/lib/Sema/CMakeLists.txt
  clang/lib/Sema/SemaChecking.cpp
  clang/lib/Sema/SemaRISCV.cpp
  clang/test/CodeGen/RISCV/riscv-attr-builtin-alias.c
  clang/test/CodeGen/RISCV/rvv_errors.c
  clang/utils/TableGen/RISCVVEmitter.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D103228.348174.patch
Type: text/x-patch
Size: 28047 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20210527/1736b0d7/attachment-0001.bin>


More information about the cfe-commits mailing list