[llvm] 20280ea - [RISCV] Fix predicates on zvbb patterns
Luke Lau via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 17 01:18:03 PDT 2023
Author: Luke Lau
Date: 2023-07-17T09:17:56+01:00
New Revision: 20280ea44a36bdd5768349c263783240a0a36caa
URL: https://github.com/llvm/llvm-project/commit/20280ea44a36bdd5768349c263783240a0a36caa
DIFF: https://github.com/llvm/llvm-project/commit/20280ea44a36bdd5768349c263783240a0a36caa.diff
LOG: [RISCV] Fix predicates on zvbb patterns
The zvbb extension predicate was getting overwritten by the vtype predicates.
There's no change in the tests though because the ISD nodes were getting
expanded before instruction selection.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D155313
Added:
Modified:
llvm/lib/Target/RISCV/RISCVInstrInfoZvk.td
Removed:
################################################################################
diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoZvk.td b/llvm/lib/Target/RISCV/RISCVInstrInfoZvk.td
index eb1391206e8862..297b150833f129 100644
--- a/llvm/lib/Target/RISCV/RISCVInstrInfoZvk.td
+++ b/llvm/lib/Target/RISCV/RISCVInstrInfoZvk.td
@@ -204,7 +204,8 @@ defm PseudoVCPOP : VPseudoUnaryV_V;
multiclass VPatUnarySDNode_V<SDPatternOperator op, string instruction_name> {
foreach vti = AllIntegerVectors in {
- let Predicates = GetVTypePredicates<vti>.Predicates in {
+ let Predicates = !listconcat([HasStdExtZvbb],
+ GetVTypePredicates<vti>.Predicates) in {
def : Pat<(vti.Vector (op (vti.Vector vti.RegClass:$rs1))),
(!cast<Instruction>(instruction_name#"_V_"#vti.LMul.MX)
(vti.Vector (IMPLICIT_DEF)),
@@ -214,10 +215,8 @@ multiclass VPatUnarySDNode_V<SDPatternOperator op, string instruction_name> {
}
}
-let Predicates = [HasStdExtZvbb] in {
- defm : VPatUnarySDNode_V<bitreverse, "PseudoVBREV">;
- defm : VPatUnarySDNode_V<bswap, "PseudoVREV8">;
- defm : VPatUnarySDNode_V<ctlz, "PseudoVCLZ">;
- defm : VPatUnarySDNode_V<cttz, "PseudoVCTZ">;
- defm : VPatUnarySDNode_V<ctpop, "PseudoVCPOP">;
-}
+defm : VPatUnarySDNode_V<bitreverse, "PseudoVBREV">;
+defm : VPatUnarySDNode_V<bswap, "PseudoVREV8">;
+defm : VPatUnarySDNode_V<ctlz, "PseudoVCLZ">;
+defm : VPatUnarySDNode_V<cttz, "PseudoVCTZ">;
+defm : VPatUnarySDNode_V<ctpop, "PseudoVCPOP">;
More information about the llvm-commits
mailing list