i965: Allow immediates to be folded into logical and shift instructions.
These instructions will be used with immediate arguments in the upcoming ldexp lowering pass and frexp implementation. v2: Add vec4 support as well. Reviewed-by: Paul Berry <stereotype441@gmail.com>
This commit is contained in:
parent
d83221c2d3
commit
89f5f675ad
|
@ -341,9 +341,20 @@ fs_visitor::try_constant_propagate(fs_inst *inst, acp_entry *entry)
|
|||
progress = true;
|
||||
break;
|
||||
|
||||
case BRW_OPCODE_SHL:
|
||||
case BRW_OPCODE_SHR:
|
||||
if (i == 1) {
|
||||
inst->src[i] = entry->src;
|
||||
progress = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case BRW_OPCODE_MACH:
|
||||
case BRW_OPCODE_MUL:
|
||||
case BRW_OPCODE_ADD:
|
||||
case BRW_OPCODE_OR:
|
||||
case BRW_OPCODE_AND:
|
||||
case BRW_OPCODE_XOR:
|
||||
if (i == 1) {
|
||||
inst->src[i] = entry->src;
|
||||
progress = true;
|
||||
|
|
|
@ -95,9 +95,20 @@ try_constant_propagation(vec4_instruction *inst, int arg, src_reg *values[4])
|
|||
inst->src[arg] = value;
|
||||
return true;
|
||||
|
||||
case BRW_OPCODE_SHL:
|
||||
case BRW_OPCODE_SHR:
|
||||
if (arg == 1) {
|
||||
inst->src[arg] = value;
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
|
||||
case BRW_OPCODE_MACH:
|
||||
case BRW_OPCODE_MUL:
|
||||
case BRW_OPCODE_ADD:
|
||||
case BRW_OPCODE_OR:
|
||||
case BRW_OPCODE_AND:
|
||||
case BRW_OPCODE_XOR:
|
||||
if (arg == 1) {
|
||||
inst->src[arg] = value;
|
||||
return true;
|
||||
|
|
Loading…
Reference in New Issue