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

Craig Topper via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 12 18:47:39 PST 2021


craig.topper added a comment.

In D93006#2447593 <https://reviews.llvm.org/D93006#2447593>, @NickHung wrote:

> 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.

I believe we have all 0.9 pseudo instructions in now for the base spec. Zvlsseg and Zvamo are being prepared. After looking at the size of the RISCVGenDAGISel.inc table, I'm very interested to see your RISCVISelDAGToDAG.cpp implementation. Do you have code you are able to share?


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