mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 04:38:03 +02:00
i965: Make opt_vector_float() only handle non-type-conversion MOVs.
We don't handle this properly - we'd have to perform the type conversion before trying to convert the value to a VF. While we could do that, it doesn't seem particularly useful - most vector loads should be consistently typed (all float or all integer). As a special case, we do allow type-converting MOVs of integer 0, as it's represented the same regardless of the type. I believe this case does actually come up. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Iago Toral Quiroga <itoral@igalia.com> Reviewed-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
parent
2a25a5142b
commit
1aa28f3509
1 changed files with 5 additions and 2 deletions
|
|
@ -366,12 +366,15 @@ vec4_visitor::opt_vector_float()
|
|||
int vf = -1;
|
||||
|
||||
/* Look for unconditional MOVs from an immediate with a partial
|
||||
* writemask. See if the immediate can be represented as a VF.
|
||||
* writemask. Skip type-conversion MOVs other than integer 0,
|
||||
* where the type doesn't matter. See if the immediate can be
|
||||
* represented as a VF.
|
||||
*/
|
||||
if (inst->opcode == BRW_OPCODE_MOV &&
|
||||
inst->src[0].file == IMM &&
|
||||
inst->predicate == BRW_PREDICATE_NONE &&
|
||||
inst->dst.writemask != WRITEMASK_XYZW) {
|
||||
inst->dst.writemask != WRITEMASK_XYZW &&
|
||||
(inst->src[0].type == inst->dst.type || inst->src[0].d == 0)) {
|
||||
vf = brw_float_to_vf(inst->src[0].f);
|
||||
} else {
|
||||
last_reg = -1;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue