"min",
"max",
"pow",
+ "ubo_load",
"vector",
};
ir_binop_pow,
+ /**
+ * Load a value the size of a given GLSL type from a uniform block.
+ *
+ * operand0 is the ir_constant uniform block index in the linked shader.
+ * operand1 is a byte offset within the uniform block.
+ */
+ ir_binop_ubo_load,
+
/**
* A sentinel marking the last of the binary operations.
*/
- ir_last_binop = ir_binop_pow,
+ ir_last_binop = ir_binop_ubo_load,
ir_quadop_vector,
assert(ir->operands[0]->type == ir->operands[1]->type);
break;
+ case ir_binop_ubo_load:
+ assert(ir->operands[0]->as_constant());
+ assert(ir->operands[0]->type == glsl_type::uint_type);
+
+ assert(ir->operands[1]->type == glsl_type::uint_type);
+ break;
+
case ir_quadop_vector:
/* The vector operator collects some number of scalars and generates a
* vector from them.
case ir_unop_noise:
assert(!"noise should have been broken down to function call");
break;
+
+ case ir_binop_ubo_load:
+ assert(!"not yet supported");
+ break;
+
case ir_quadop_vector:
assert(!"should have been lowered");
break;
else
inst = emit(BRW_OPCODE_SHR, this->result, op[0], op[1]);
break;
+
+ case ir_binop_ubo_load:
+ assert(!"not yet supported");
+ break;
}
}
inst = emit(BRW_OPCODE_SHR, result_dst, op[0], op[1]);
break;
+ case ir_binop_ubo_load:
+ assert(!"not yet supported");
+ break;
+
case ir_quadop_vector:
assert(!"not reached: should be handled by lower_quadop_vector");
break;
emit(ir, OPCODE_MOV, result_dst, op[0]);
break;
+ case ir_binop_ubo_load:
+ assert(!"not supported");
+ break;
+
case ir_quadop_vector:
/* This operation should have already been handled.
*/
assert(!"GLSL 1.30 features unsupported");
break;
+ case ir_binop_ubo_load:
+ assert(!"not yet supported");
+ break;
+
case ir_quadop_vector:
/* This operation should have already been handled.
*/