[llvm] [RISCV][NFC] Use NFList in NFSet (PR #67517)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 26 22:01:37 PDT 2023
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-risc-v
<details>
<summary>Changes</summary>
These two subroutines are almost the same except the LMUL encoding.
We can use `NFList` in `NFSet` to remove duplicated code.
---
Full diff: https://github.com/llvm/llvm-project/pull/67517.diff
2 Files Affected:
- (modified) llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td (+2-4)
- (modified) llvm/lib/Target/RISCV/RISCVRegisterInfo.td (+5-4)
``````````diff
diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td b/llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td
index 0c76e36daf72033..e0d75ef77b76a53 100644
--- a/llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td
+++ b/llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td
@@ -219,10 +219,8 @@ defvar FPListW = [SCALAR_F16, SCALAR_F32];
defvar BFPListW = [SCALAR_BF16];
class NFSet<LMULInfo m> {
- list<int> L = !cond(!eq(m.value, V_M8.value): [],
- !eq(m.value, V_M4.value): [2],
- !eq(m.value, V_M2.value): [2, 3, 4],
- true: [2, 3, 4, 5, 6, 7, 8]);
+ defvar lmul = !shl(1, m.value);
+ list<int> L = NFList<lmul>.L;
}
class octuple_to_str<int octuple> {
diff --git a/llvm/lib/Target/RISCV/RISCVRegisterInfo.td b/llvm/lib/Target/RISCV/RISCVRegisterInfo.td
index 1a6145f92908134..ab0d354967b34c7 100644
--- a/llvm/lib/Target/RISCV/RISCVRegisterInfo.td
+++ b/llvm/lib/Target/RISCV/RISCVRegisterInfo.td
@@ -337,14 +337,15 @@ defvar LMULList = [1, 2, 4, 8];
// Utility classes for segment load/store.
//===----------------------------------------------------------------------===//
// The set of legal NF for LMUL = lmul.
-// LMUL == 1, NF = 2, 3, 4, 5, 6, 7, 8
+// LMUL <= 1, NF = 2, 3, 4, 5, 6, 7, 8
// LMUL == 2, NF = 2, 3, 4
// LMUL == 4, NF = 2
+// LMUL == 8, no legal NF
class NFList<int lmul> {
- list<int> L = !cond(!eq(lmul, 1): [2, 3, 4, 5, 6, 7, 8],
- !eq(lmul, 2): [2, 3, 4],
+ list<int> L = !cond(!eq(lmul, 8): [],
!eq(lmul, 4): [2],
- !eq(lmul, 8): []);
+ !eq(lmul, 2): [2, 3, 4],
+ true: [2, 3, 4, 5, 6, 7, 8]);
}
// Generate [start, end) SubRegIndex list.
``````````
</details>
https://github.com/llvm/llvm-project/pull/67517
More information about the llvm-commits
mailing list