freedreno/ir3: move out helper
authorRob Clark <robclark@freedesktop.org>
Sun, 12 Apr 2015 13:46:34 +0000 (09:46 -0400)
committerRob Clark <robclark@freedesktop.org>
Fri, 17 Apr 2015 14:40:28 +0000 (10:40 -0400)
We'll also want it in NIR f/e for implementing UBO support.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
src/gallium/drivers/freedreno/ir3/ir3.h
src/gallium/drivers/freedreno/ir3/ir3_cp.c

index 85daf106535cf7017bf2f3bdbaaf6a070d857d6e..1a3deb41e0140a4e28eaeba7d793f3ca0d87fd05 100644 (file)
@@ -458,6 +458,29 @@ static inline bool is_nop(struct ir3_instruction *instr)
        return is_flow(instr) && (instr->opc == OPC_NOP);
 }
 
+/* Is it a non-transformative (ie. not type changing) mov?  This can
+ * also include absneg.s/absneg.f, which for the most part can be
+ * treated as a mov (single src argument).
+ */
+static inline bool is_same_type_mov(struct ir3_instruction *instr)
+{
+       struct ir3_register *dst = instr->regs[0];
+
+       /* mov's that write to a0.x or p0.x are special: */
+       if (dst->num == regid(REG_P0, 0))
+               return false;
+       if (dst->num == regid(REG_A0, 0))
+               return false;
+
+       if ((instr->category == 1) &&
+                       (instr->cat1.src_type == instr->cat1.dst_type))
+               return true;
+       if ((instr->category == 2) && ((instr->opc == OPC_ABSNEG_F) ||
+                       (instr->opc == OPC_ABSNEG_S)))
+               return true;
+       return false;
+}
+
 static inline bool is_alu(struct ir3_instruction *instr)
 {
        return (1 <= instr->category) && (instr->category <= 3);
index 313a423b7cb7ca88715820097335bd8eebe0de32..fa7d363be7bfc81bd20b55406c36784f99bca04c 100644 (file)
  * Copy Propagate:
  */
 
-
-/* Is it a non-transformative (ie. not type changing) mov?  This can
- * also include absneg.s/absneg.f, which for the most part can be
- * treated as a mov (single src argument).
- */
-static bool is_same_type_mov(struct ir3_instruction *instr)
-{
-       struct ir3_register *dst = instr->regs[0];
-
-       /* mov's that write to a0.x or p0.x are special: */
-       if (dst->num == regid(REG_P0, 0))
-               return false;
-       if (dst->num == regid(REG_A0, 0))
-               return false;
-
-       if ((instr->category == 1) &&
-                       (instr->cat1.src_type == instr->cat1.dst_type))
-               return true;
-       if ((instr->category == 2) && ((instr->opc == OPC_ABSNEG_F) ||
-                       (instr->opc == OPC_ABSNEG_S)))
-               return true;
-       return false;
-}
-
 /* is it a type preserving mov, with ok flags? */
 static bool is_eligible_mov(struct ir3_instruction *instr, bool allow_flags)
 {