[PATCH] D144091: [RISCV][NFC] Add VIOTA_VL node
Luke Lau via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Feb 15 04:04:59 PST 2023
luke created this revision.
luke added reviewers: asb, craig.topper, reames, kito-cheng.
Herald added subscribers: pmatos, VincentWu, vkmr, frasercrmck, evandro, luismarques, apazos, sameer.abuasal, s.egerton, Jim, benna, psnobl, jocewei, PkmX, the_o, brucehoult, MartinMosbeck, rogfer01, edward-jones, zzheng, jrtc27, shiva0217, niosHD, sabuasal, simoncook, johnrusso, rbar, hiraditya, arichardson.
Herald added a project: All.
luke requested review of this revision.
Herald added subscribers: llvm-commits, pcwang-thead, eopXD, MaskRay.
Herald added a project: LLVM.
This adds a node for the viota.m instruction so that it can be used
during instruction lowering.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D144091
Files:
llvm/lib/Target/RISCV/RISCVISelLowering.cpp
llvm/lib/Target/RISCV/RISCVISelLowering.h
llvm/lib/Target/RISCV/RISCVInstrInfoVVLPatterns.td
Index: llvm/lib/Target/RISCV/RISCVInstrInfoVVLPatterns.td
===================================================================
--- llvm/lib/Target/RISCV/RISCVInstrInfoVVLPatterns.td
+++ llvm/lib/Target/RISCV/RISCVInstrInfoVVLPatterns.td
@@ -243,6 +243,14 @@
SDTCisSameNumEltsAs<1, 2>,
SDTCisVT<3, XLenVT>]>>;
+def riscv_viota_vl : SDNode<"RISCVISD::VIOTA_VL",
+ SDTypeProfile<1, 4, [SDTCisVec<0>,
+ SDTCisSameAs<1, 0>,
+ SDTCisSameNumEltsAs<0, 2>,
+ SDTCVecEltisVT<2, i1>,
+ SDTCisSameAs<2, 3>,
+ SDTCisVT<4, XLenVT>]>>;
+
def SDT_RISCVVEXTEND_VL : SDTypeProfile<1, 3, [SDTCisVec<0>,
SDTCisSameNumEltsAs<0, 1>,
SDTCisSameNumEltsAs<1, 2>,
@@ -1883,7 +1891,7 @@
(!cast<Instruction>("PseudoVMXNOR_MM_" # mti.LMul.MX)
VR:$rs1, VR:$rs2, GPR:$vl, mti.Log2SEW)>;
- // Match the not idiom to the vmnot.m pseudo.
+ // Match the not idiom to the vmnand.m pseudo.
def : Pat<(mti.Mask (riscv_vmnot_vl VR:$rs, VLOpFrag)),
(!cast<Instruction>("PseudoVMNAND_MM_" # mti.LMul.MX)
VR:$rs, VR:$rs, GPR:$vl, mti.Log2SEW)>;
@@ -1909,6 +1917,17 @@
VR:$rs2, (mti.Mask V0), GPR:$vl, mti.Log2SEW)>;
}
+// 15.8 viota.m
+foreach vti = AllIntegerVectors in {
+ def : Pat<(vti.Vector (riscv_viota_vl vti.RegClass:$merge,
+ (vti.Mask VR:$rs2),
+ (vti.Mask V0),
+ VLOpFrag)),
+ (!cast<Instruction>("PseudoVIOTA_M_"#vti.LMul.MX#_#"MASK")
+ vti.RegClass:$merge, (vti.Mask VR:$rs2), (vti.Mask V0),
+ GPR:$vl, vti.Log2SEW, TAIL_AGNOSTIC)>;
+}
+
} // Predicates = [HasVInstructions]
// 16. Vector Permutation Instructions
Index: llvm/lib/Target/RISCV/RISCVISelLowering.h
===================================================================
--- llvm/lib/Target/RISCV/RISCVISelLowering.h
+++ llvm/lib/Target/RISCV/RISCVISelLowering.h
@@ -291,6 +291,10 @@
VMCLR_VL,
VMSET_VL,
+ // viota.m with additional mask and VL operands.
+ // Operands are (passthru, src, mask, vl)
+ VIOTA_VL,
+
// Matches the semantics of vrgather.vx and vrgather.vv with extra operands
// for passthru and VL. Operands are (src, index, mask, passthru, vl).
VRGATHER_VX_VL,
Index: llvm/lib/Target/RISCV/RISCVISelLowering.cpp
===================================================================
--- llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+++ llvm/lib/Target/RISCV/RISCVISelLowering.cpp
@@ -13305,6 +13305,7 @@
NODE_NAME_CASE(VMXOR_VL)
NODE_NAME_CASE(VMCLR_VL)
NODE_NAME_CASE(VMSET_VL)
+ NODE_NAME_CASE(VIOTA_VL)
NODE_NAME_CASE(VRGATHER_VX_VL)
NODE_NAME_CASE(VRGATHER_VV_VL)
NODE_NAME_CASE(VRGATHEREI16_VV_VL)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D144091.497628.patch
Type: text/x-patch
Size: 3197 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230215/2413a2ac/attachment.bin>
More information about the llvm-commits
mailing list