i965/fs: Pass fs_regs by constant reference where possible.
authorMatt Turner <mattst88@gmail.com>
Thu, 20 Feb 2014 04:31:14 +0000 (20:31 -0800)
committerMatt Turner <mattst88@gmail.com>
Sat, 22 Feb 2014 06:51:33 +0000 (22:51 -0800)
These functions (modulo emit_lrp, necessitating the small fix-up) pass
these arguments by value unmodified to other functions. No point in
making an additional copy.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_fs.cpp
src/mesa/drivers/dri/i965/brw_fs.h
src/mesa/drivers/dri/i965/brw_fs_visitor.cpp

index dfb59aa582b6be8ea7f18bd5ce0e900b60eaeaf3..65ee2f021e4a3b3ee05ad268d5ccf37b88a61800 100644 (file)
@@ -244,8 +244,9 @@ fs_visitor::CMP(fs_reg dst, fs_reg src0, fs_reg src1, uint32_t condition)
 }
 
 exec_list
-fs_visitor::VARYING_PULL_CONSTANT_LOAD(fs_reg dst, fs_reg surf_index,
-                                       fs_reg varying_offset,
+fs_visitor::VARYING_PULL_CONSTANT_LOAD(const fs_reg &dst,
+                                       const fs_reg &surf_index,
+                                       const fs_reg &varying_offset,
                                        uint32_t const_offset)
 {
    exec_list instructions;
@@ -3185,7 +3186,7 @@ fs_visitor::dump_instruction(backend_instruction *be_inst)
 fs_inst *
 fs_visitor::get_instruction_generating_reg(fs_inst *start,
                                           fs_inst *end,
-                                          fs_reg reg)
+                                          const fs_reg &reg)
 {
    if (end == start ||
        end->is_partial_write() ||
index f2750f91d9cdf23d3e5e81cdfb153394c2ca6d4e..1d95ed722016c15fc3f5c45584425cbb8da8e241 100644 (file)
@@ -332,10 +332,11 @@ public:
    int type_size(const struct glsl_type *type);
    fs_inst *get_instruction_generating_reg(fs_inst *start,
                                           fs_inst *end,
-                                          fs_reg reg);
+                                          const fs_reg &reg);
 
-   exec_list VARYING_PULL_CONSTANT_LOAD(fs_reg dst, fs_reg surf_index,
-                                        fs_reg varying_offset,
+   exec_list VARYING_PULL_CONSTANT_LOAD(const fs_reg &dst,
+                                        const fs_reg &surf_index,
+                                        const fs_reg &varying_offset,
                                         uint32_t const_offset);
 
    bool run();
@@ -415,9 +416,10 @@ public:
    fs_reg fix_math_operand(fs_reg src);
    fs_inst *emit_math(enum opcode op, fs_reg dst, fs_reg src0);
    fs_inst *emit_math(enum opcode op, fs_reg dst, fs_reg src0, fs_reg src1);
-   void emit_lrp(fs_reg dst, fs_reg x, fs_reg y, fs_reg a);
-   void emit_minmax(uint32_t conditionalmod, fs_reg dst,
-                    fs_reg src0, fs_reg src1);
+   void emit_lrp(const fs_reg &dst, const fs_reg &x, const fs_reg &y,
+                 const fs_reg &a);
+   void emit_minmax(uint32_t conditionalmod, const fs_reg &dst,
+                    const fs_reg &src0, const fs_reg &src1);
    bool try_emit_saturate(ir_expression *ir);
    bool try_emit_mad(ir_expression *ir, int mul_arg);
    void try_replace_with_sel();
index aea3360a33fbbfd0c7e0612d1033bb359f932d54..9a0090dcc384d93972068a6d43d00628a9901e02 100644 (file)
@@ -212,7 +212,8 @@ fs_visitor::visit(ir_dereference_array *ir)
 }
 
 void
-fs_visitor::emit_lrp(fs_reg dst, fs_reg x, fs_reg y, fs_reg a)
+fs_visitor::emit_lrp(const fs_reg &dst, const fs_reg &x, const fs_reg &y,
+                     const fs_reg &a)
 {
    if (brw->gen < 6 ||
        !x.is_valid_3src() ||
@@ -225,8 +226,9 @@ fs_visitor::emit_lrp(fs_reg dst, fs_reg x, fs_reg y, fs_reg a)
 
       emit(MUL(y_times_a, y, a));
 
-      a.negate = !a.negate;
-      emit(ADD(one_minus_a, a, fs_reg(1.0f)));
+      fs_reg negative_a = a;
+      negative_a.negate = !a.negate;
+      emit(ADD(one_minus_a, negative_a, fs_reg(1.0f)));
       emit(MUL(x_times_one_minus_a, x, one_minus_a));
 
       emit(ADD(dst, x_times_one_minus_a, y_times_a));
@@ -239,8 +241,8 @@ fs_visitor::emit_lrp(fs_reg dst, fs_reg x, fs_reg y, fs_reg a)
 }
 
 void
-fs_visitor::emit_minmax(uint32_t conditionalmod, fs_reg dst,
-                        fs_reg src0, fs_reg src1)
+fs_visitor::emit_minmax(uint32_t conditionalmod, const fs_reg &dst,
+                        const fs_reg &src0, const fs_reg &src1)
 {
    fs_inst *inst;