r600/sfn: Make the pin_to_channel generic
authorGert Wollny <gert.wollny@collabora.com>
Sun, 5 Jul 2020 14:49:56 +0000 (16:49 +0200)
committerMarge Bot <eric+marge@anholt.net>
Mon, 20 Jul 2020 09:32:51 +0000 (09:32 +0000)
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5963>

src/gallium/drivers/r600/sfn/sfn_value.h
src/gallium/drivers/r600/sfn/sfn_value_gpr.cpp
src/gallium/drivers/r600/sfn/sfn_value_gpr.h

index 3a53281a7d89ee182ad97b103aab610e3e3abe89..222b0462b9a9cdd9a5d0d3fd2860db09d63fd5ca 100644 (file)
@@ -86,6 +86,7 @@ public:
    uint32_t chan() const {return m_chan;}
 
    void set_chan(uint32_t chan);
+   virtual void set_pin_to_channel() { assert(0 && "Only GPRs can be pinned to a channel ");}
    void print(std::ostream& os, const PrintFlags& flags) const;
 
    void print(std::ostream& os) const;
index bc4a0a59e655b835a907baf352536cc0b2719e9e..dba5c0468e4019e4984781b2beae2f8c39e164a0 100644 (file)
@@ -152,6 +152,14 @@ void GPRVector::pin_to_channel(int i)
    v.set_pin_to_channel();
 }
 
+void GPRVector::pin_all_to_channel()
+{
+   for (auto& v: m_elms) {
+      auto& c = static_cast<GPRValue&>(*v);
+      c.set_pin_to_channel();
+   }
+}
+
 void GPRVector::do_print(std::ostream& os) const
 {
    os << "R" << sel() << ".";
index 589e8821744f4e6369466cd0101c14139d70ee78..d845e026e6987bd0960a9034bcef444a17ddfb79 100644 (file)
@@ -54,7 +54,7 @@ public:
 
    void set_as_input(){ m_input = true; }
    bool is_input() const {return  m_input; }
-   void set_pin_to_channel() { m_pin_to_channel = true;}
+   void set_pin_to_channel() override { m_pin_to_channel = true;}
    bool pin_to_channel()  const { return m_pin_to_channel;}
 
 private:
@@ -94,6 +94,7 @@ public:
    PValue& operator [] (int i) {return m_elms[i];}
 
    void pin_to_channel(int i);
+   void pin_all_to_channel();
 
    PValue x() const {return m_elms[0];}
    PValue y() const {return m_elms[1];}