[PATCH] D144925: [RISCV][NFC] Expand pseudos with sew for instructions that depend on lmul
Michael Maitland via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Feb 27 17:02:23 PST 2023
michaelmaitland added inline comments.
================
Comment at: llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td:1919
+
+ defvar suffix = "_" # m.MX # "_E" # e;
+ def _VM # suffix : VPseudoUnaryAnyMask<m.vrclass, m.vrclass>,
----------------
If we're going to use suffix, should we use it in `WriteVCompressV_MX_E` and `ReadVCompressV_MX_E` too?
================
Comment at: llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td:2041-2061
foreach m = MxList in {
defvar mx = m.MX;
- defvar WriteVGatherV_MX = !cast<SchedWrite>("WriteVGatherV_" # mx);
- defvar ReadVGatherV_MX = !cast<SchedRead>("ReadVGatherV_" # mx);
foreach sew = EEWList in {
defvar octuple_lmul = m.octuple;
// emul = lmul * eew / sew
defvar octuple_emul = !srl(!mul(octuple_lmul, eew), log2<sew>.val);
----------------
`WriteVGatherV_MX_E` and `ReadVGatherV_MX_E` dont depend on `sew` from `EEWList`. Can we pull out the loop over `sews` from `SchedSEWSet<mx>.val` to simplify?
================
Comment at: llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td:2337
+ defvar ReadVFSqrtV_MX = !cast<SchedRead>("ReadVFSqrtV_" # mx # "_E" # e);
+ defvar suffix = mx # "_E" # e;
+
----------------
Use `suffix` in `WriteVFSqrtV_MX` and `ReadVFSqrtV_MX`. Also need to add `_E` to `WriteVFSqrtV_MX` and `ReadVFSqrtV_MX`
================
Comment at: llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td:2350
+// TODO: Should I make this SEW aware?
multiclass VPseudoVRCP_V {
----------------
Where did you land on making this SEW aware?
================
Comment at: llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td:2468
defvar mx = m.MX;
- defvar WriteVGatherV_MX = !cast<SchedWrite>("WriteVGatherV_" # mx);
+ defvar sews = SchedSEWSet<mx>.val;
defvar WriteVGatherX_MX = !cast<SchedWrite>("WriteVGatherX_" # mx);
----------------
nit: define `sews` closer to where you use it?
================
Comment at: llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td:2472
defvar ReadVGatherX_MX = !cast<SchedRead>("ReadVGatherX_" # mx);
+ defvar ReadVGatherI_MX = !cast<SchedRead>("ReadVGatherI_" # mx);
----------------
Why did we change `ReadVGatherV` to `ReadVGatherI`?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D144925/new/
https://reviews.llvm.org/D144925
More information about the llvm-commits
mailing list