Mesa (master): aco: introduce a generic label for labelling instructions

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Nov 12 12:42:17 UTC 2020


Module: Mesa
Branch: master
Commit: bda35ae6b92caf24a26c96e05a49f1bac42955cf
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=bda35ae6b92caf24a26c96e05a49f1bac42955cf

Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date:   Wed Nov 11 15:13:08 2020 +0100

aco: introduce a generic label for labelling instructions

When one instruction doesn't fit into the existing labels, use
the generic one.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof at gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02 at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7425>

---

 src/amd/compiler/aco_optimizer.cpp | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/src/amd/compiler/aco_optimizer.cpp b/src/amd/compiler/aco_optimizer.cpp
index 89fcdee261e..10592a4d1ef 100644
--- a/src/amd/compiler/aco_optimizer.cpp
+++ b/src/amd/compiler/aco_optimizer.cpp
@@ -114,10 +114,11 @@ enum Label {
    label_scc_needed = 1 << 26,
    label_b2i = 1 << 27,
    label_constant_16bit = 1 << 29,
+   label_usedef = 1 << 30, /* generic label */
 };
 
 static constexpr uint64_t instr_usedef_labels = label_vec | label_mul | label_mad | label_add_sub |
-                                                label_bitwise | label_uniform_bitwise | label_minmax | label_vopc;
+                                                label_bitwise | label_uniform_bitwise | label_minmax | label_vopc | label_usedef;
 static constexpr uint64_t instr_mod_labels = label_omod2 | label_omod4 | label_omod5 | label_clamp;
 
 static constexpr uint64_t instr_labels = instr_usedef_labels | instr_mod_labels;
@@ -506,6 +507,16 @@ struct ssa_info {
       return label & label_b2i;
    }
 
+   void set_usedef(Instruction *label_instr)
+   {
+      add_label(label_usedef);
+      instr = label_instr;
+   }
+
+   bool is_usedef()
+   {
+      return label & label_usedef;
+   }
 };
 
 struct opt_ctx {



More information about the mesa-commit mailing list