[PATCH] D93006: [RISCV] Initial support for RVV intrinsic

PeiHsiangHung via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Dec 10 17:58:25 PST 2020


NickHung added a comment.

In D93006#2447513 <https://reviews.llvm.org/D93006#2447513>, @craig.topper wrote:

> Are you proposing to do custom isel in RISCVISelDAGToDAG.cpp using lookupPseudoByIntrinsicAndLMUL and not using the RISCVGenDAGISel.inc table? Do you have an implementation of that yet?

Thanks for your feedback.

Yes, our internal implementation didn't select RVV intrinsic by the generated matching table in RISCVGenDAGISel.inc, because we don't write any matching rules in RISCVInstrInfoVPseudos.td.

We've referenced the code from EPI, check out https://repo.hca.bsc.es/gitlab/rferrer/llvm-epi/-/blob/EPI/llvm/lib/Target/RISCV/RISCVInstrInfoEPI.td
The number of lines in RISCVInstrInfoEPI.td is 4323, and most of the classes are duplicated in order to cope with the different formats of RVV. 
It also contains many comments such as "//// FIXME: These patterns are wrong", so we guess the author must be struggling when writing the matching rules.

We propose to do custom selection in  RISCVISelDAGToDAG.cpp with a programmable function and we've implemented all RVV 1.0 instructions in this way.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D93006/new/

https://reviews.llvm.org/D93006



More information about the llvm-commits mailing list