lima/ppir: simplify select op lowering and scheduling
[mesa.git] / src / gallium / drivers / lima / ir / pp / codegen.c
index 7259eb6ec02e290b098bd6ed9c1597095a88f8c1..615438cfccef74369b8a614b9e90974de9a66fc1 100644 (file)
@@ -57,7 +57,8 @@ static void ppir_codegen_encode_varying(ppir_node *node, void *code)
       assert(node->op == ppir_op_load_varying ||
              node->op == ppir_op_load_coords ||
              node->op == ppir_op_load_fragcoord ||
-             node->op == ppir_op_load_pointcoord);
+             node->op == ppir_op_load_pointcoord ||
+             node->op == ppir_op_load_frontface);
 
       f->imm.dest = index >> 2;
       f->imm.mask = dest->write_mask << (index & 0x3);
@@ -79,6 +80,10 @@ static void ppir_codegen_encode_varying(ppir_node *node, void *code)
          case ppir_op_load_pointcoord:
             f->imm.source_type = 3;
             break;
+         case ppir_op_load_frontface:
+            f->imm.source_type = 3;
+            f->imm.perspective = 1;
+            break;
          default:
             break;
       }
@@ -238,6 +243,9 @@ static void ppir_codegen_encode_scl_mul(ppir_node *node, void *code)
    case ppir_op_mov:
       f->op = ppir_codegen_float_mul_op_mov;
       break;
+   case ppir_op_sel_cond:
+      f->op = ppir_codegen_float_mul_op_mov;
+      break;
    case ppir_op_max:
       f->op = ppir_codegen_float_mul_op_max;
       break;