i965/fs: Add a helper function for detecting math opcodes.
authorEric Anholt <eric@anholt.net>
Wed, 19 Jan 2011 06:48:11 +0000 (22:48 -0800)
committerEric Anholt <eric@anholt.net>
Thu, 20 Jan 2011 00:29:14 +0000 (16:29 -0800)
src/mesa/drivers/dri/i965/brw_fs.cpp
src/mesa/drivers/dri/i965/brw_fs.h

index 5f2e9db..9a71e53 100644 (file)
@@ -3138,14 +3138,7 @@ fs_visitor::compute_to_mrf()
               /* gen6 math instructions must have the destination be
                * GRF, so no compute-to-MRF for them.
                */
-              if (scan_inst->opcode == FS_OPCODE_RCP ||
-                  scan_inst->opcode == FS_OPCODE_RSQ ||
-                  scan_inst->opcode == FS_OPCODE_SQRT ||
-                  scan_inst->opcode == FS_OPCODE_EXP2 ||
-                  scan_inst->opcode == FS_OPCODE_LOG2 ||
-                  scan_inst->opcode == FS_OPCODE_SIN ||
-                  scan_inst->opcode == FS_OPCODE_COS ||
-                  scan_inst->opcode == FS_OPCODE_POW) {
+              if (scan_inst->is_math()) {
                  break;
               }
            }
index 7c991f3..f049795 100644 (file)
@@ -313,6 +313,18 @@ public:
              opcode == FS_OPCODE_TXL);
    }
 
+   bool is_math()
+   {
+      return (opcode == FS_OPCODE_RCP ||
+             opcode == FS_OPCODE_RSQ ||
+             opcode == FS_OPCODE_SQRT ||
+             opcode == FS_OPCODE_EXP2 ||
+             opcode == FS_OPCODE_LOG2 ||
+             opcode == FS_OPCODE_SIN ||
+             opcode == FS_OPCODE_COS ||
+             opcode == FS_OPCODE_POW);
+   }
+
    int opcode; /* BRW_OPCODE_* or FS_OPCODE_* */
    fs_reg dst;
    fs_reg src[3];