glsl: Add ir_function_signature::is_intrinsic() method
This necessetated renaming the is_intrinsic field to _is_intrinsic. The
next commit will remove the field.
text data bss dec hex filename
6036507 283160 28608 6348275 60ddf3 lib64/i965_dri.so before
6036491 283160 28608 6348259
60dde3 lib64/i965_dri.so after
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Acked-by: Ilia Mirkin <imirkin@alum.mit.edu>
This commit is contained in:
@@ -3266,7 +3266,7 @@ builtin_builder::new_sig(const glsl_type *return_type,
|
|||||||
#define MAKE_INTRINSIC(return_type, id, avail, ...) \
|
#define MAKE_INTRINSIC(return_type, id, avail, ...) \
|
||||||
ir_function_signature *sig = \
|
ir_function_signature *sig = \
|
||||||
new_sig(return_type, avail, __VA_ARGS__); \
|
new_sig(return_type, avail, __VA_ARGS__); \
|
||||||
sig->is_intrinsic = true; \
|
sig->_is_intrinsic = true; \
|
||||||
sig->intrinsic_id = id;
|
sig->intrinsic_id = id;
|
||||||
|
|
||||||
ir_function_signature *
|
ir_function_signature *
|
||||||
@@ -5601,7 +5601,7 @@ builtin_builder::_image(image_prototype_ctr prototype,
|
|||||||
sig->is_defined = true;
|
sig->is_defined = true;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
sig->is_intrinsic = true;
|
sig->_is_intrinsic = true;
|
||||||
sig->intrinsic_id = id;
|
sig->intrinsic_id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -449,7 +449,7 @@ nir_function_visitor::visit_enter(ir_function *ir)
|
|||||||
void
|
void
|
||||||
nir_visitor::create_function(ir_function_signature *ir)
|
nir_visitor::create_function(ir_function_signature *ir)
|
||||||
{
|
{
|
||||||
if (ir->is_intrinsic)
|
if (ir->is_intrinsic())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
nir_function *func = nir_function_create(shader, ir->function_name());
|
nir_function *func = nir_function_create(shader, ir->function_name());
|
||||||
@@ -470,7 +470,7 @@ nir_visitor::visit(ir_function *ir)
|
|||||||
void
|
void
|
||||||
nir_visitor::visit(ir_function_signature *ir)
|
nir_visitor::visit(ir_function_signature *ir)
|
||||||
{
|
{
|
||||||
if (ir->is_intrinsic)
|
if (ir->is_intrinsic())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
struct hash_entry *entry =
|
struct hash_entry *entry =
|
||||||
@@ -607,7 +607,7 @@ nir_visitor::visit(ir_return *ir)
|
|||||||
void
|
void
|
||||||
nir_visitor::visit(ir_call *ir)
|
nir_visitor::visit(ir_call *ir)
|
||||||
{
|
{
|
||||||
if (ir->callee->is_intrinsic) {
|
if (ir->callee->is_intrinsic()) {
|
||||||
nir_intrinsic_op op;
|
nir_intrinsic_op op;
|
||||||
|
|
||||||
switch (ir->callee->intrinsic_id) {
|
switch (ir->callee->intrinsic_id) {
|
||||||
|
@@ -1617,7 +1617,7 @@ ir_variable::get_extension_warning() const
|
|||||||
ir_function_signature::ir_function_signature(const glsl_type *return_type,
|
ir_function_signature::ir_function_signature(const glsl_type *return_type,
|
||||||
builtin_available_predicate b)
|
builtin_available_predicate b)
|
||||||
: ir_instruction(ir_type_function_signature),
|
: ir_instruction(ir_type_function_signature),
|
||||||
return_type(return_type), is_defined(false), is_intrinsic(false),
|
return_type(return_type), is_defined(false), _is_intrinsic(false),
|
||||||
intrinsic_id(ir_intrinsic_invalid), builtin_avail(b), _function(NULL)
|
intrinsic_id(ir_intrinsic_invalid), builtin_avail(b), _function(NULL)
|
||||||
{
|
{
|
||||||
this->origin = NULL;
|
this->origin = NULL;
|
||||||
|
@@ -1187,11 +1187,17 @@ public:
|
|||||||
/** Whether or not this function signature is a built-in. */
|
/** Whether or not this function signature is a built-in. */
|
||||||
bool is_builtin() const;
|
bool is_builtin() const;
|
||||||
|
|
||||||
|
/** Whehter or not this function signautre is an intrinsic. */
|
||||||
|
inline bool is_intrinsic() const
|
||||||
|
{
|
||||||
|
return _is_intrinsic;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Whether or not this function is an intrinsic to be implemented
|
* Whether or not this function is an intrinsic to be implemented
|
||||||
* by the driver.
|
* by the driver.
|
||||||
*/
|
*/
|
||||||
bool is_intrinsic;
|
bool _is_intrinsic;
|
||||||
|
|
||||||
/** Indentifier for this intrinsic. */
|
/** Indentifier for this intrinsic. */
|
||||||
enum ir_intrinsic_id intrinsic_id;
|
enum ir_intrinsic_id intrinsic_id;
|
||||||
|
@@ -75,7 +75,7 @@ public:
|
|||||||
const char *const name = callee->function_name();
|
const char *const name = callee->function_name();
|
||||||
|
|
||||||
/* We don't actually need to find intrinsics; they're not real */
|
/* We don't actually need to find intrinsics; they're not real */
|
||||||
if (callee->is_intrinsic)
|
if (callee->is_intrinsic())
|
||||||
return visit_continue;
|
return visit_continue;
|
||||||
|
|
||||||
/* Determine if the requested function signature already exists in the
|
/* Determine if the requested function signature already exists in the
|
||||||
@@ -161,7 +161,7 @@ public:
|
|||||||
|
|
||||||
linked_sig->replace_parameters(&formal_parameters);
|
linked_sig->replace_parameters(&formal_parameters);
|
||||||
|
|
||||||
linked_sig->is_intrinsic = sig->is_intrinsic;
|
linked_sig->_is_intrinsic = sig->_is_intrinsic;
|
||||||
linked_sig->intrinsic_id = sig->intrinsic_id;
|
linked_sig->intrinsic_id = sig->intrinsic_id;
|
||||||
|
|
||||||
if (sig->is_defined) {
|
if (sig->is_defined) {
|
||||||
@@ -323,7 +323,7 @@ find_matching_signature(const char *name, const exec_list *actual_parameters,
|
|||||||
ir_function_signature *sig =
|
ir_function_signature *sig =
|
||||||
f->matching_signature(NULL, actual_parameters, false);
|
f->matching_signature(NULL, actual_parameters, false);
|
||||||
|
|
||||||
if (sig && (sig->is_defined || sig->is_intrinsic))
|
if (sig && (sig->is_defined || sig->is_intrinsic()))
|
||||||
return sig;
|
return sig;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -284,7 +284,7 @@ lower_shared_reference_visitor::shared_store(void *mem_ctx,
|
|||||||
ir_function_signature(glsl_type::void_type, compute_shader_enabled);
|
ir_function_signature(glsl_type::void_type, compute_shader_enabled);
|
||||||
assert(sig);
|
assert(sig);
|
||||||
sig->replace_parameters(&sig_params);
|
sig->replace_parameters(&sig_params);
|
||||||
sig->is_intrinsic = true;
|
sig->_is_intrinsic = true;
|
||||||
sig->intrinsic_id = ir_intrinsic_shared_store;
|
sig->intrinsic_id = ir_intrinsic_shared_store;
|
||||||
|
|
||||||
ir_function *f = new(mem_ctx) ir_function("__intrinsic_store_shared");
|
ir_function *f = new(mem_ctx) ir_function("__intrinsic_store_shared");
|
||||||
@@ -312,7 +312,7 @@ lower_shared_reference_visitor::shared_load(void *mem_ctx,
|
|||||||
new(mem_ctx) ir_function_signature(type, compute_shader_enabled);
|
new(mem_ctx) ir_function_signature(type, compute_shader_enabled);
|
||||||
assert(sig);
|
assert(sig);
|
||||||
sig->replace_parameters(&sig_params);
|
sig->replace_parameters(&sig_params);
|
||||||
sig->is_intrinsic = true;
|
sig->_is_intrinsic = true;
|
||||||
sig->intrinsic_id = ir_intrinsic_shared_load;
|
sig->intrinsic_id = ir_intrinsic_shared_load;
|
||||||
|
|
||||||
ir_function *f = new(mem_ctx) ir_function("__intrinsic_load_shared");
|
ir_function *f = new(mem_ctx) ir_function("__intrinsic_load_shared");
|
||||||
@@ -406,7 +406,7 @@ lower_shared_reference_visitor::lower_shared_atomic_intrinsic(ir_call *ir)
|
|||||||
compute_shader_enabled);
|
compute_shader_enabled);
|
||||||
assert(sig);
|
assert(sig);
|
||||||
sig->replace_parameters(&sig_params);
|
sig->replace_parameters(&sig_params);
|
||||||
sig->is_intrinsic = true;
|
sig->_is_intrinsic = true;
|
||||||
|
|
||||||
assert(ir->callee->intrinsic_id >= ir_intrinsic_generic_load);
|
assert(ir->callee->intrinsic_id >= ir_intrinsic_generic_load);
|
||||||
assert(ir->callee->intrinsic_id <= ir_intrinsic_generic_atomic_comp_swap);
|
assert(ir->callee->intrinsic_id <= ir_intrinsic_generic_atomic_comp_swap);
|
||||||
|
@@ -453,7 +453,7 @@ lower_ubo_reference_visitor::ssbo_store(void *mem_ctx,
|
|||||||
ir_function_signature(glsl_type::void_type, shader_storage_buffer_object);
|
ir_function_signature(glsl_type::void_type, shader_storage_buffer_object);
|
||||||
assert(sig);
|
assert(sig);
|
||||||
sig->replace_parameters(&sig_params);
|
sig->replace_parameters(&sig_params);
|
||||||
sig->is_intrinsic = true;
|
sig->_is_intrinsic = true;
|
||||||
sig->intrinsic_id = ir_intrinsic_ssbo_store;
|
sig->intrinsic_id = ir_intrinsic_ssbo_store;
|
||||||
|
|
||||||
ir_function *f = new(mem_ctx) ir_function("__intrinsic_store_ssbo");
|
ir_function *f = new(mem_ctx) ir_function("__intrinsic_store_ssbo");
|
||||||
@@ -491,7 +491,7 @@ lower_ubo_reference_visitor::ssbo_load(void *mem_ctx,
|
|||||||
new(mem_ctx) ir_function_signature(type, shader_storage_buffer_object);
|
new(mem_ctx) ir_function_signature(type, shader_storage_buffer_object);
|
||||||
assert(sig);
|
assert(sig);
|
||||||
sig->replace_parameters(&sig_params);
|
sig->replace_parameters(&sig_params);
|
||||||
sig->is_intrinsic = true;
|
sig->_is_intrinsic = true;
|
||||||
sig->intrinsic_id = ir_intrinsic_ssbo_load;
|
sig->intrinsic_id = ir_intrinsic_ssbo_load;
|
||||||
|
|
||||||
ir_function *f = new(mem_ctx) ir_function("__intrinsic_load_ssbo");
|
ir_function *f = new(mem_ctx) ir_function("__intrinsic_load_ssbo");
|
||||||
@@ -1018,7 +1018,7 @@ lower_ubo_reference_visitor::lower_ssbo_atomic_intrinsic(ir_call *ir)
|
|||||||
shader_storage_buffer_object);
|
shader_storage_buffer_object);
|
||||||
assert(sig);
|
assert(sig);
|
||||||
sig->replace_parameters(&sig_params);
|
sig->replace_parameters(&sig_params);
|
||||||
sig->is_intrinsic = true;
|
sig->_is_intrinsic = true;
|
||||||
|
|
||||||
assert(ir->callee->intrinsic_id >= ir_intrinsic_generic_load);
|
assert(ir->callee->intrinsic_id >= ir_intrinsic_generic_load);
|
||||||
assert(ir->callee->intrinsic_id <= ir_intrinsic_generic_atomic_comp_swap);
|
assert(ir->callee->intrinsic_id <= ir_intrinsic_generic_atomic_comp_swap);
|
||||||
|
Reference in New Issue
Block a user