Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
Generally, I'd go with the suggestions that clang-tidy has come up with.
llvm/lib/Target/RISCV/RISCVTargetTransformInfo.h | ||
---|---|---|
64 | Personal preference, but since this supports both load and store, for clarity we could make this a separate isLegalMaskedLoadStore and have isLegalMaskedLoad call that too? Additionally, is "legality" here just that it shouldn't scalarize? Will the legalizer split too-wide vectors? | |
llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-load-fp.ll | ||
2 | It would be good to check that illegal vectors are correctly split in twain and we don't crash/scalarize. |
llvm/lib/Target/RISCV/RISCVTargetTransformInfo.h | ||
---|---|---|
64 | I believe the loop vectorizer calls this with a scalar type. There's a separate cost function too. The ScalarizeMaskedMemIntrinsic pass will call it with a fixed vector type to know if it needs to scalarize and insert conditional branches. The type legalizer in SelectionDAG can handle splitting, but not scalarizing. |
It didn't require custom handling just pattern matching. I can go back and make them the same.
Personal preference, but since this supports both load and store, for clarity we could make this a separate isLegalMaskedLoadStore and have isLegalMaskedLoad call that too?
Additionally, is "legality" here just that it shouldn't scalarize? Will the legalizer split too-wide vectors?