[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