glsl: Add is_rvalue, is_dereference, and is_jump methods

These functions deteremine when an IR node is one of the non-leaf
classes.

v2: Adjust indentation to line up.  Suggested by Matt.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
This commit is contained in:
Ian Romanick 2015-03-24 08:55:15 -07:00
parent 25d6cdd2ff
commit a284c63006

View file

@ -109,6 +109,31 @@ public:
virtual ir_instruction *clone(void *mem_ctx,
struct hash_table *ht) const = 0;
bool is_rvalue() const
{
return ir_type == ir_type_dereference_array ||
ir_type == ir_type_dereference_record ||
ir_type == ir_type_dereference_variable ||
ir_type == ir_type_constant ||
ir_type == ir_type_expression ||
ir_type == ir_type_swizzle ||
ir_type == ir_type_texture;
}
bool is_dereference() const
{
return ir_type == ir_type_dereference_array ||
ir_type == ir_type_dereference_record ||
ir_type == ir_type_dereference_variable;
}
bool is_jump() const
{
return ir_type == ir_type_loop_jump ||
ir_type == ir_type_return ||
ir_type == ir_type_discard;
}
/**
* \name IR instruction downcast functions
*