diff options
author | Matt Turner <mattst88@gmail.com> | 2016-02-11 12:27:02 -0800 |
---|---|---|
committer | Matt Turner <mattst88@gmail.com> | 2016-02-17 12:35:27 -0800 |
commit | 2f2c00c7279e7c43e520e21de1781f8cec263e92 (patch) | |
tree | d2a1d95b593bce622ba2a2f8c9c6d57196fa120e /src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp | |
parent | 378d98f87e8048664309a66cb93ecf582e40d837 (diff) | |
download | external_mesa3d-2f2c00c7279e7c43e520e21de1781f8cec263e92.tar.gz external_mesa3d-2f2c00c7279e7c43e520e21de1781f8cec263e92.tar.bz2 external_mesa3d-2f2c00c7279e7c43e520e21de1781f8cec263e92.zip |
i965: Lower min/max after optimization on Gen4/5.
Gen4/5's SEL instruction cannot use conditional modifiers, so min/max
are implemented as CMP + SEL. Handling that after optimization lets us
CSE more.
On Ironlake:
total instructions in shared programs: 6426035 -> 6422753 (-0.05%)
instructions in affected programs: 326604 -> 323322 (-1.00%)
helped: 1411
total cycles in shared programs: 129184700 -> 129101586 (-0.06%)
cycles in affected programs: 18950290 -> 18867176 (-0.44%)
helped: 2419
HURT: 328
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
Diffstat (limited to 'src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp | 14 |
1 files changed, 2 insertions, 12 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp index 6a8c76c4ea..cfd4d9b5d0 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp @@ -679,18 +679,8 @@ vec4_instruction * vec4_visitor::emit_minmax(enum brw_conditional_mod conditionalmod, dst_reg dst, src_reg src0, src_reg src1) { - vec4_instruction *inst; - - if (devinfo->gen >= 6) { - inst = emit(BRW_OPCODE_SEL, dst, src0, src1); - inst->conditional_mod = conditionalmod; - } else { - emit(CMP(dst, src0, src1, conditionalmod)); - - inst = emit(BRW_OPCODE_SEL, dst, src0, src1); - inst->predicate = BRW_PREDICATE_NORMAL; - } - + vec4_instruction *inst = emit(BRW_OPCODE_SEL, dst, src0, src1); + inst->conditional_mod = conditionalmod; return inst; } |