mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-01 03:48:06 +02:00
Add ir_call call to represent function calls.
This commit is contained in:
parent
d27ec2461b
commit
ed45ec6a51
6 changed files with 52 additions and 2 deletions
|
|
@ -725,7 +725,7 @@ ast_function_expression::hir(exec_list *instructions,
|
|||
*/
|
||||
(void) instructions;
|
||||
(void) state;
|
||||
return NULL;
|
||||
return ir_call::get_error_instruction();
|
||||
}
|
||||
|
||||
ir_instruction *
|
||||
|
|
|
|||
10
ir.cpp
10
ir.cpp
|
|
@ -108,3 +108,13 @@ ir_function::ir_function(void)
|
|||
{
|
||||
/* empty */
|
||||
}
|
||||
|
||||
|
||||
ir_call *
|
||||
ir_call::get_error_instruction()
|
||||
{
|
||||
ir_call *call = new ir_call;
|
||||
|
||||
call->type = glsl_error_type;
|
||||
return call;
|
||||
}
|
||||
|
|
|
|||
30
ir.h
30
ir.h
|
|
@ -39,7 +39,8 @@ enum ir_opcodes {
|
|||
ir_op_label,
|
||||
ir_op_constant,
|
||||
ir_op_func_sig,
|
||||
ir_op_func
|
||||
ir_op_func,
|
||||
ir_op_call,
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -277,6 +278,33 @@ public:
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
* IR instruction representing a function call
|
||||
*/
|
||||
class ir_call : public ir_instruction {
|
||||
public:
|
||||
ir_call()
|
||||
: ir_instruction(ir_op_call), callee(NULL)
|
||||
{
|
||||
/* empty */
|
||||
}
|
||||
|
||||
virtual void accept(ir_visitor *v)
|
||||
{
|
||||
v->visit(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a generic ir_call object when an error occurs
|
||||
*/
|
||||
static ir_call *get_error_instruction();
|
||||
|
||||
private:
|
||||
ir_function_signature *callee;
|
||||
exec_list actual_parameters;
|
||||
};
|
||||
|
||||
|
||||
struct ir_swizzle_mask {
|
||||
unsigned x:2;
|
||||
unsigned y:2;
|
||||
|
|
|
|||
|
|
@ -132,3 +132,13 @@ void ir_print_visitor::visit(ir_constant *ir)
|
|||
printf(" (FINISHME: value goes here)\n");
|
||||
printf(")\n");
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
ir_print_visitor::visit(ir_call *ir)
|
||||
{
|
||||
(void) ir;
|
||||
|
||||
printf("(call FINISHME: function name here\n");
|
||||
printf(" (FINISHME: function paramaters here))\n");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -60,6 +60,7 @@ public:
|
|||
virtual void visit(ir_dereference *);
|
||||
virtual void visit(ir_assignment *);
|
||||
virtual void visit(ir_constant *);
|
||||
virtual void visit(ir_call *);
|
||||
/*@}*/
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -52,6 +52,7 @@ public:
|
|||
virtual void visit(class ir_dereference *) = 0;
|
||||
virtual void visit(class ir_assignment *) = 0;
|
||||
virtual void visit(class ir_constant *) = 0;
|
||||
virtual void visit(class ir_call *) = 0;
|
||||
/*@}*/
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue