[llvm] [AArch64] Add scheduling information for flag manipulation instructions in Neoverse-V2 (PR #139765)

Ash Dobrescu via llvm-commits llvm-commits at lists.llvm.org
Fri May 16 02:57:41 PDT 2025


================
@@ -99,6 +99,8 @@ def V2Write_0c : SchedWriteRes<[]> { let Latency = 0; }
 def V2Write_1c_1B    : SchedWriteRes<[V2UnitB]>   { let Latency = 1; }
 def V2Write_1c_1F    : SchedWriteRes<[V2UnitF]>   { let Latency = 1; }
 def V2Write_1c_1F_1Flg : SchedWriteRes<[V2UnitF, V2UnitFlg]>   { let Latency = 1; }
+def V2Write_1c_1F_1Flg_1T : SchedWriteRes<[V2UnitF, V2UnitFlg]>   { let Latency = 1;
+                                                         let ReleaseAtCycles = [4, 3]; }
----------------
Rin18 wrote:

Hi, when I said split more evenly, I meant lower resource pressure.
>From the definition of `def V2UnitFlg : ProcResource<3>;  // Flags` , we can see there are 3 resources available for use. Using `let ReleaseAtCycles = [4, 3];` means all 3 resources of `V2UnitFlg` are used for a flag manipulation instruction. Instead, we should lower that pressure, 1 resource per instruction should be enough.

https://github.com/llvm/llvm-project/pull/139765


More information about the llvm-commits mailing list