Mesa (master): i965: Add can_do_saturate() method to backend_instruction.

Matt Turner mattst88 at kemper.freedesktop.org
Wed Jan 29 01:46:33 UTC 2014


Module: Mesa
Branch: master
Commit: 39d7ec2c9a1b0213fa64c58fe3e1843119a62904
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=39d7ec2c9a1b0213fa64c58fe3e1843119a62904

Author: Matt Turner <mattst88 at gmail.com>
Date:   Wed Dec 11 23:07:49 2013 -0800

i965: Add can_do_saturate() method to backend_instruction.

Reviewed-by: Jordan Justen <jordan.l.justen at intel.com>

---

 src/mesa/drivers/dri/i965/brw_shader.cpp |   44 ++++++++++++++++++++++++++++++
 src/mesa/drivers/dri/i965/brw_shader.h   |    1 +
 2 files changed, 45 insertions(+)

diff --git a/src/mesa/drivers/dri/i965/brw_shader.cpp b/src/mesa/drivers/dri/i965/brw_shader.cpp
index 45bf730..6cc2595 100644
--- a/src/mesa/drivers/dri/i965/brw_shader.cpp
+++ b/src/mesa/drivers/dri/i965/brw_shader.cpp
@@ -604,6 +604,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
 {
    switch (opcode) {
diff --git a/src/mesa/drivers/dri/i965/brw_shader.h b/src/mesa/drivers/dri/i965/brw_shader.h
index 936a207..c76f33b 100644
--- a/src/mesa/drivers/dri/i965/brw_shader.h
+++ b/src/mesa/drivers/dri/i965/brw_shader.h
@@ -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




More information about the mesa-commit mailing list