i965: Add can_do_saturate() method to backend_instruction.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
This commit is contained in:
Matt Turner 2013-12-11 23:07:49 -08:00
parent 3303475558
commit 39d7ec2c9a
2 changed files with 45 additions and 0 deletions

View file

@ -603,6 +603,50 @@ backend_instruction::can_do_source_mods()
}
}
bool
backend_instruction::can_do_saturate()
{
switch (opcode) {
case BRW_OPCODE_ADD:
case BRW_OPCODE_ASR:
case BRW_OPCODE_AVG:
case BRW_OPCODE_DP2:
case BRW_OPCODE_DP3:
case BRW_OPCODE_DP4:
case BRW_OPCODE_DPH:
case BRW_OPCODE_F16TO32:
case BRW_OPCODE_F32TO16:
case BRW_OPCODE_LINE:
case BRW_OPCODE_LRP:
case BRW_OPCODE_MAC:
case BRW_OPCODE_MACH:
case BRW_OPCODE_MAD:
case BRW_OPCODE_MATH:
case BRW_OPCODE_MOV:
case BRW_OPCODE_MUL:
case BRW_OPCODE_PLN:
case BRW_OPCODE_RNDD:
case BRW_OPCODE_RNDE:
case BRW_OPCODE_RNDU:
case BRW_OPCODE_RNDZ:
case BRW_OPCODE_SEL:
case BRW_OPCODE_SHL:
case BRW_OPCODE_SHR:
case FS_OPCODE_LINTERP:
case SHADER_OPCODE_COS:
case SHADER_OPCODE_EXP2:
case SHADER_OPCODE_LOG2:
case SHADER_OPCODE_POW:
case SHADER_OPCODE_RCP:
case SHADER_OPCODE_RSQ:
case SHADER_OPCODE_SIN:
case SHADER_OPCODE_SQRT:
return true;
default:
return false;
}
}
bool
backend_instruction::has_side_effects() const
{

View file

@ -45,6 +45,7 @@ public:
bool is_math();
bool is_control_flow();
bool can_do_source_mods();
bool can_do_saturate();
/**
* True if the instruction has side effects other than writing to