예제 #1
0
파일: brw_fs_cse.cpp 프로젝트: fritsch/mesa
static bool
operands_match(enum opcode op, fs_reg *xs, fs_reg *ys)
{
   if (!is_expression_commutative(op)) {
      return xs[0].equals(ys[0]) && xs[1].equals(ys[1]) && xs[2].equals(ys[2]);
   } else {
      return (xs[0].equals(ys[0]) && xs[1].equals(ys[1])) ||
             (xs[1].equals(ys[0]) && xs[0].equals(ys[1]));
   }
}
예제 #2
0
파일: brw_fs_cse.cpp 프로젝트: Sheph/mesa
static bool
operands_match(fs_inst *a, fs_inst *b)
{
   fs_reg *xs = a->src;
   fs_reg *ys = b->src;

   if (!is_expression_commutative(a->opcode)) {
      bool match = true;
      for (int i = 0; i < a->sources; i++) {
         if (!xs[i].equals(ys[i])) {
            match = false;
            break;
         }
      }
      return match;
   } else {
      return (xs[0].equals(ys[0]) && xs[1].equals(ys[1])) ||
             (xs[1].equals(ys[0]) && xs[0].equals(ys[1]));
   }
}