[llvm] [AMDGPU] Model RepeatRate in SearchableTables (PR #207862)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 7 00:10:04 PDT 2026
================
@@ -431,3 +431,121 @@ def AMDGPUImageDMaskIntrinsicTable : GenericTable {
let PrimaryKeyName = "getAMDGPUImageDMaskIntrinsic";
let PrimaryKeyEarlyOut = 1;
}
+
+//===----------------------------------------------------------------------===//
+// RepeatRate Tables
+//===----------------------------------------------------------------------===//
+//
+// RepeatRate indicates how many cycles until a new instruction can acquire
+// a resource, allowing modeling of multi-cycle blocking.
+//
+//===----------------------------------------------------------------------===//
+
+class GFX1250RepeatRateEntry<Instruction inst, bits<8> rate> {
+ Instruction Inst = inst;
+ bits<8> RepeatRate = rate;
+}
+
+def GFX1250RepeatRateTable : GenericTable {
+ let FilterClass = "GFX1250RepeatRateEntry";
+ let CppTypeName = "AMDGPURepeatRateInfo";
+ let Fields = ["Inst", "RepeatRate"];
+ let PrimaryKey = ["Inst"];
+ let PrimaryKeyName = "getGFX1250RepeatRateInfo";
+}
+
+// RepeatRate = 32: F64 transcendentals and arithmetic
+foreach inst = !instances<Instruction>("V_(RCP|RSQ|SQRT)_F64_e(32|64)$") in
+ def : GFX1250RepeatRateEntry<inst, 32>;
+foreach inst = !instances<Instruction>("V_(ADD|MUL|FMA)_F64_e64$") in
+ def : GFX1250RepeatRateEntry<inst, 32>;
+foreach inst = !instances<Instruction>("V_DIV_(FIXUP|FMAS|SCALE)_F64_e64$") in
+ def : GFX1250RepeatRateEntry<inst, 32>;
+foreach inst = !instances<Instruction>("V_LDEXP_F64_e64$") in
+ def : GFX1250RepeatRateEntry<inst, 32>;
+foreach inst = !instances<Instruction>("V_(MIN|MAX)_NUM_F64_e64$") in
+ def : GFX1250RepeatRateEntry<inst, 32>;
+foreach inst = !instances<Instruction>("V_(MIN|MAX)IMUM_F64_e64$") in
+ def : GFX1250RepeatRateEntry<inst, 32>;
+foreach inst = !instances<Instruction>("V_(FRACT|TRUNC|CEIL|RNDNE|FLOOR)_F64_e(32|64)$") in
+ def : GFX1250RepeatRateEntry<inst, 32>;
+foreach inst = !instances<Instruction>("V_FREXP_(EXP_I32|MANT)_F64_e(32|64)$") in
----------------
arsenm wrote:
Avoid matching the suffixes specifically?
https://github.com/llvm/llvm-project/pull/207862
More information about the llvm-commits
mailing list