summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRhys Perry <pendingchaos02@gmail.com>2024-02-20 16:31:54 +0000
committerMarge Bot <emma+marge@anholt.net>2024-05-14 20:50:27 +0000
commit97698e564acc9ee560fade47bd566fe9cdeae3dc (patch)
treecb3aae65ca3366362a900248365c651fecf987ff
parente9a25151fa90c0b100cda695b1d142c3ee8d4dbb (diff)
aco: add SFPU/ValuPseudoScalarTrans instr class
The latency is from LLVM's SISchedule.td Signed-off-by: Rhys Perry <pendingchaos02@gmail.com> Reviewed-by: Georg Lehmann <dadschoorse@gmail.com> Acked-by: Daniel Schürmann <daniel@schuermann.dev> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29162>
-rw-r--r--src/amd/compiler/aco_opcodes.py2
-rw-r--r--src/amd/compiler/aco_statistics.cpp3
2 files changed, 5 insertions, 0 deletions
diff --git a/src/amd/compiler/aco_opcodes.py b/src/amd/compiler/aco_opcodes.py
index a424400045a..bed1f1533ed 100644
--- a/src/amd/compiler/aco_opcodes.py
+++ b/src/amd/compiler/aco_opcodes.py
@@ -23,8 +23,10 @@ class InstrClass(Enum):
ValuDoubleAdd = "valu_double_add"
ValuDoubleConvert = "valu_double_convert"
ValuDoubleTranscendental = "valu_double_transcendental"
+ ValuPseudoScalarTrans = "valu_pseudo_scalar_trans"
WMMA = "wmma"
Salu = "salu"
+ SFPU = "sfpu"
SMem = "smem"
Barrier = "barrier"
Branch = "branch"
diff --git a/src/amd/compiler/aco_statistics.cpp b/src/amd/compiler/aco_statistics.cpp
index 65777f8fb6b..9260ed94b18 100644
--- a/src/amd/compiler/aco_statistics.cpp
+++ b/src/amd/compiler/aco_statistics.cpp
@@ -183,6 +183,9 @@ get_perf_info(const Program& program, const Instruction& instr)
case instr_class::valu_double_transcendental:
return {24, WAIT_USE(valu, 16), WAIT_USE(valu_complex, 16)};
case instr_class::salu: return {2, WAIT_USE(scalar, 1)};
+ case instr_class::sfpu: return {4, WAIT_USE(scalar, 1)};
+ case instr_class::valu_pseudo_scalar_trans:
+ return {7, WAIT_USE(valu, 1), WAIT_USE(valu_complex, 1)};
case instr_class::smem: return {0, WAIT_USE(scalar, 1)};
case instr_class::branch:
case instr_class::sendmsg: return {0, WAIT_USE(branch_sendmsg, 1)};