[llvm] [AArch64] SME definitions for C1-Nano scheduling model (PR #207174)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 16 05:39:31 PDT 2026
================
@@ -1382,176 +1629,218 @@ def : InstRW<[C1NanoWrite_68c_1VMC_66rc],
// Bitwise select
-def : InstRW<[C1NanoWrite_3c_1VALU],
+def : InstRW<[C1NanoStreamingSchedWrite<C1NanoWrite_4c_1CMEVXALU,
+ C1NanoWrite_3c_1VALU>],
(instregex "^(BSL|BSL1N|BSL2N|NBSL)_ZZZZ")>;
// Count/reverse bits
-def : InstRW<[C1NanoWrite_3c_1VALU],
+def : InstRW<[C1NanoStreamingSchedWrite<C1NanoWrite_4c_1CMEVXALU,
+ C1NanoWrite_3c_1VALU>],
(instregex "^(CLS|CLZ|RBIT)_ZPmZ_[BHSD]")>;
-def : InstRW<[C1NanoWrite_3c_1VALU],
+def : InstRW<[C1NanoStreamingSchedWrite<C1NanoWrite_4c_1CMEVXALU,
+ C1NanoWrite_3c_1VALU>],
(instregex "^CNT_ZPmZ_[BH]")>;
-def : InstRW<[C1NanoWrite_6c_2VALU_4rc],
+def : InstRW<[C1NanoStreamingSchedWrite<C1NanoWrite_4c_1CMEVXALU,
+ C1NanoWrite_6c_2VALU_4rc>],
(instregex "^CNT_ZPmZ_S")>;
-def : InstRW<[C1NanoWrite_9c_2VALU_7rc],
+def : InstRW<[C1NanoStreamingSchedWrite<C1NanoWrite_4c_1CMEVXALU,
+ C1NanoWrite_9c_2VALU_7rc>],
(instregex "^CNT_ZPmZ_D")>;
// Broadcast logical bitmask immediate to vector.
-def : InstRW<[C1NanoWrite_4c_1VALU],
+def : InstRW<[C1NanoStreamingSchedWrite<C1NanoWrite_4c_1CMEVXALU,
+ C1NanoWrite_4c_1VALU>],
(instrs DUPM_ZI)>;
// Compare and set flags
-def : InstRW<[C1NanoWrite_5c_2VALU_1rc],
+def : InstRW<[C1NanoStreamingSchedWrite<C1NanoWrite_4c_1CMEVX0ALU,
+ C1NanoWrite_5c_2VALU_1rc>],
(instregex "^CMP(EQ|GE|GT|HI|HS|LE|LO|LS|LT|NE)_PPzZ[IZ]_[BHSD]",
"^CMP(EQ|GE|GT|HI|HS|LE|LO|LS|LT|NE)_WIDE_PPzZZ_[BHS]")>;
// Complex add
-def : InstRW<[C1NanoWrite_3c_1VALU],
+def : InstRW<[C1NanoStreamingSchedWrite<C1NanoWrite_4c_1CMEVXALU,
+ C1NanoWrite_3c_1VALU>],
(instregex "^CADD_ZZI_[BHSD]")>;
-def : InstRW<[C1NanoWrite_4c_1VALU],
+def : InstRW<[C1NanoStreamingSchedWrite<C1NanoWrite_4c_1CMEVXALU,
+ C1NanoWrite_4c_1VALU>],
(instregex "^SQCADD_ZZI_[BHSD]")>;
// Complex dot product 8-bit element
-def : InstRW<[C1NanoWrite_4c_1VMAC],
+def : InstRW<[C1NanoStreamingSchedWrite<C1NanoWrite_4c_1CMEVXALU,
+ C1NanoWrite_4c_1VMAC>],
(instrs CDOT_ZZZ_S, CDOT_ZZZI_S)>;
// Complex dot product 16-bit element
-def : InstRW<[C1NanoWrite_4c_1VMAC],
+def : InstRW<[C1NanoStreamingSchedWrite<C1NanoWrite_4c_1CMEVXALU,
+ C1NanoWrite_4c_1VMAC>],
(instrs CDOT_ZZZ_D, CDOT_ZZZI_D)>;
// Complex multiply-add B, H, S element size
-def : InstRW<[C1NanoWrite_4c_1VMAC],
+def : InstRW<[C1NanoStreamingSchedWrite<C1NanoWrite_4c_1CMEVXALU,
+ C1NanoWrite_4c_1VMAC>],
(instregex "^CMLA_ZZZ_[BHS]", "^CMLA_ZZZI_[HS]")>;
// Complex multiply-add D element size
-def : InstRW<[C1NanoWrite_4c_1VMAC],
+def : InstRW<[C1NanoStreamingSchedWrite<C1NanoWrite_4c_1CMEVXALU,
+ C1NanoWrite_4c_1VMAC>],
(instrs CMLA_ZZZ_D)>;
// Conditional extract operations, scalar form
-def : InstRW<[C1NanoWrite_4c_2VALU_4rc],
+def : InstRW<[C1NanoStreamingSchedWrite<C1NanoWrite_12c_1CMEPERMF_1CMEVX0ALU_2rc,
+ C1NanoWrite_4c_2VALU_4rc>],
(instregex "^CLAST[AB]_RPZ_[BHSD]")>;
// Conditional extract operations, SIMD&FP scalar and vector forms
-def : InstRW<[C1NanoWrite_4c_1VALU],
+def : InstRW<[C1NanoStreamingSchedWrite<C1NanoWrite_4c_1CMEPERMF_1rc,
+ C1NanoWrite_4c_1VALU>],
(instregex "^CLAST[AB]_[VZ]PZ_[BHSD]",
----------------
walkerkd wrote:
Fixed
https://github.com/llvm/llvm-project/pull/207174
More information about the llvm-commits
mailing list