[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