mesa/st/glsl_to_tgsi: Add some operators for glsl_to_tgsi related classes
[mesa.git] / src / mesa / state_tracker / st_glsl_to_tgsi_private.h
index b7f535b97d24ea56b117a3aa1458f9cc1ebddaba..832ea00e2746adf7dcd8acc0b43d6b90365c1cd4 100644 (file)
@@ -30,6 +30,7 @@
 #include <compiler/glsl_types.h>
 #include <compiler/glsl/ir.h>
 #include <tgsi/tgsi_info.h>
+#include <ostream>
 
 int swizzle_for_size(int size);
 
@@ -84,6 +85,10 @@ public:
    }
 };
 
+bool operator == (const st_src_reg& lhs, const st_src_reg& rhs);
+
+std::ostream& operator << (std::ostream& os, const st_src_reg& reg);
+
 class st_dst_reg {
 public:
    st_dst_reg(gl_register_file file, int writemask, enum glsl_base_type type, int index);
@@ -109,6 +114,11 @@ public:
    st_src_reg *reladdr2;
 };
 
+bool operator == (const st_dst_reg& lhs, const st_dst_reg& rhs);
+
+std::ostream& operator << (std::ostream& os, const st_dst_reg& reg);
+
+
 class glsl_to_tgsi_instruction : public exec_node {
 public:
    DECLARE_RALLOC_CXX_OPERATORS(glsl_to_tgsi_instruction)
@@ -136,8 +146,17 @@ public:
    unsigned buffer_access:3; /**< bitmask of TGSI_MEMORY_x bits */
 
    const struct tgsi_opcode_info *info;
+
+   void print(std::ostream& os) const;
 };
 
+inline std::ostream&
+operator << (std::ostream& os, const glsl_to_tgsi_instruction& instr)
+{
+   instr.print(os);
+   return os;
+}
+
 struct rename_reg_pair {
    bool valid;
    int new_reg;