i965/vec4: Remove swizzle_for_size() in favour of brw_swizzle_for_size().
It could be objected that swizzle_for_size() is "faster" than brw_swizzle_for_size(). It's not measurably better in any reasonable CPU-bound benchmark on VLV according to the Finnish benchmarking system (including the SynMark2 DrvShComp shader compilation benchmark). Reviewed-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
parent
5bcca9f8dc
commit
23bda945f5
|
@ -32,9 +32,6 @@ namespace brw {
|
|||
|
||||
class dst_reg;
|
||||
|
||||
unsigned
|
||||
swizzle_for_size(int size);
|
||||
|
||||
class src_reg : public backend_reg
|
||||
{
|
||||
public:
|
||||
|
|
|
@ -40,26 +40,6 @@ using namespace brw;
|
|||
|
||||
namespace brw {
|
||||
|
||||
/**
|
||||
* Common helper for constructing swizzles. When only a subset of
|
||||
* channels of a vec4 are used, we don't want to reference the other
|
||||
* channels, as that will tell optimization passes that those other
|
||||
* channels are used.
|
||||
*/
|
||||
unsigned
|
||||
swizzle_for_size(int size)
|
||||
{
|
||||
static const unsigned size_swizzles[4] = {
|
||||
BRW_SWIZZLE4(SWIZZLE_X, SWIZZLE_X, SWIZZLE_X, SWIZZLE_X),
|
||||
BRW_SWIZZLE4(SWIZZLE_X, SWIZZLE_Y, SWIZZLE_Y, SWIZZLE_Y),
|
||||
BRW_SWIZZLE4(SWIZZLE_X, SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_Z),
|
||||
BRW_SWIZZLE4(SWIZZLE_X, SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_W),
|
||||
};
|
||||
|
||||
assert((size >= 1) && (size <= 4));
|
||||
return size_swizzles[size - 1];
|
||||
}
|
||||
|
||||
void
|
||||
src_reg::init()
|
||||
{
|
||||
|
@ -75,7 +55,7 @@ src_reg::src_reg(register_file file, int reg, const glsl_type *type)
|
|||
this->file = file;
|
||||
this->reg = reg;
|
||||
if (type && (type->is_scalar() || type->is_vector() || type->is_matrix()))
|
||||
this->swizzle = swizzle_for_size(type->vector_elements);
|
||||
this->swizzle = brw_swizzle_for_size(type->vector_elements);
|
||||
else
|
||||
this->swizzle = BRW_SWIZZLE_XYZW;
|
||||
}
|
||||
|
|
|
@ -631,7 +631,7 @@ src_reg::src_reg(class vec4_visitor *v, const struct glsl_type *type)
|
|||
if (type->is_array() || type->is_record()) {
|
||||
this->swizzle = BRW_SWIZZLE_NOOP;
|
||||
} else {
|
||||
this->swizzle = swizzle_for_size(type->vector_elements);
|
||||
this->swizzle = brw_swizzle_for_size(type->vector_elements);
|
||||
}
|
||||
|
||||
this->type = brw_type_for_base_type(type);
|
||||
|
@ -1807,7 +1807,7 @@ vec4_visitor::visit(ir_expression *ir)
|
|||
pull->mlen = 1;
|
||||
}
|
||||
|
||||
packed_consts.swizzle = swizzle_for_size(ir->type->vector_elements);
|
||||
packed_consts.swizzle = brw_swizzle_for_size(ir->type->vector_elements);
|
||||
packed_consts.swizzle += BRW_SWIZZLE4(const_offset % 16 / 4,
|
||||
const_offset % 16 / 4,
|
||||
const_offset % 16 / 4,
|
||||
|
@ -1955,7 +1955,7 @@ vec4_visitor::visit(ir_dereference_variable *ir)
|
|||
return;
|
||||
|
||||
if (type->is_scalar() || type->is_vector() || type->is_matrix())
|
||||
this->result.swizzle = swizzle_for_size(type->vector_elements);
|
||||
this->result.swizzle = brw_swizzle_for_size(type->vector_elements);
|
||||
}
|
||||
|
||||
|
||||
|
@ -2014,7 +2014,7 @@ vec4_visitor::visit(ir_dereference_array *ir)
|
|||
|
||||
/* If the type is smaller than a vec4, replicate the last channel out. */
|
||||
if (ir->type->is_scalar() || ir->type->is_vector() || ir->type->is_matrix())
|
||||
src.swizzle = swizzle_for_size(ir->type->vector_elements);
|
||||
src.swizzle = brw_swizzle_for_size(ir->type->vector_elements);
|
||||
else
|
||||
src.swizzle = BRW_SWIZZLE_NOOP;
|
||||
src.type = brw_type_for_base_type(ir->type);
|
||||
|
@ -2039,7 +2039,7 @@ vec4_visitor::visit(ir_dereference_record *ir)
|
|||
|
||||
/* If the type is smaller than a vec4, replicate the last channel out. */
|
||||
if (ir->type->is_scalar() || ir->type->is_vector() || ir->type->is_matrix())
|
||||
this->result.swizzle = swizzle_for_size(ir->type->vector_elements);
|
||||
this->result.swizzle = brw_swizzle_for_size(ir->type->vector_elements);
|
||||
else
|
||||
this->result.swizzle = BRW_SWIZZLE_NOOP;
|
||||
this->result.type = brw_type_for_base_type(ir->type);
|
||||
|
@ -2110,7 +2110,7 @@ vec4_visitor::emit_block_move(dst_reg *dst, src_reg *src,
|
|||
|
||||
dst->writemask = (1 << type->vector_elements) - 1;
|
||||
|
||||
src->swizzle = swizzle_for_size(type->vector_elements);
|
||||
src->swizzle = brw_swizzle_for_size(type->vector_elements);
|
||||
|
||||
vec4_instruction *inst = emit(MOV(*dst, *src));
|
||||
inst->predicate = predicate;
|
||||
|
@ -2198,7 +2198,7 @@ vec4_visitor::visit(ir_assignment *ir)
|
|||
*/
|
||||
assert(src.swizzle ==
|
||||
(ir->rhs->type->is_matrix()
|
||||
? swizzle_for_size(ir->rhs->type->vector_elements)
|
||||
? brw_swizzle_for_size(ir->rhs->type->vector_elements)
|
||||
: BRW_SWIZZLE_NOOP));
|
||||
|
||||
emit_block_move(&dst, &src, ir->rhs->type, predicate);
|
||||
|
|
Loading…
Reference in New Issue