i965: Make can_do_source_mods() a member of the instruction classes.
authorMatt Turner <mattst88@gmail.com>
Tue, 24 Jun 2014 04:57:31 +0000 (21:57 -0700)
committerMatt Turner <mattst88@gmail.com>
Wed, 25 Jun 2014 20:00:48 +0000 (13:00 -0700)
Pretty nonsensical to have it as a method of the visitor just for access
to brw.

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_copy_propagation.cpp
src/mesa/drivers/dri/i965/brw_vec4.cpp
src/mesa/drivers/dri/i965/brw_vec4.h
src/mesa/drivers/dri/i965/brw_vec4_copy_propagation.cpp

index 185a1f68c08a9018664a2032f0084c08e8b9d53a..929379a7f4df7f8e0f20b2b68c4edbd66e561ad6 100644 (file)
@@ -371,15 +371,15 @@ fs_inst::is_send_from_grf() const
 }
 
 bool
-fs_visitor::can_do_source_mods(fs_inst *inst)
+fs_inst::can_do_source_mods(struct brw_context *brw)
 {
-   if (brw->gen == 6 && inst->is_math())
+   if (brw->gen == 6 && is_math())
       return false;
 
-   if (inst->is_send_from_grf())
+   if (is_send_from_grf())
       return false;
 
-   if (!inst->can_do_source_mods())
+   if (!backend_instruction::can_do_source_mods())
       return false;
 
    return true;
index b86a31c37714a5f060af58e0924a26a977a29fa3..0da79ba1c4e4560b098f881d7785bd793df3d9b1 100644 (file)
@@ -208,6 +208,7 @@ public:
    bool is_send_from_grf() const;
    bool is_partial_write() const;
    int regs_read(fs_visitor *v, int arg) const;
+   bool can_do_source_mods(struct brw_context *brw);
 
    bool reads_flag() const;
    bool writes_flag() const;
@@ -285,8 +286,6 @@ public:
    uint32_t gather_channel(ir_texture *ir, int sampler);
    void swizzle_result(ir_texture *ir, fs_reg orig_val, int sampler);
 
-   bool can_do_source_mods(fs_inst *inst);
-
    fs_inst *emit(fs_inst *inst);
    void emit(exec_list list);
 
index cc6e86f55e48521479a018a20cd5f351cdf1f447..0a7b8b8952ab5ca74e6f12f2c6c9e80c29a16260 100644 (file)
@@ -314,7 +314,7 @@ fs_visitor::try_copy_propagate(fs_inst *inst, int arg, acp_entry *entry)
 
    if ((has_source_modifiers || entry->src.file == UNIFORM ||
         !entry->src.is_contiguous()) &&
-       !can_do_source_mods(inst))
+       !inst->can_do_source_mods(brw))
       return false;
 
    /* Bail if the result of composing both strides would exceed the
index ee5be56b7132643881f4ab71a40eb104d149fb7a..24903f952d1bdb1fba470716b4284b3c073a189a 100644 (file)
@@ -250,15 +250,15 @@ vec4_instruction::is_send_from_grf()
 }
 
 bool
-vec4_visitor::can_do_source_mods(vec4_instruction *inst)
+vec4_instruction::can_do_source_mods(struct brw_context *brw)
 {
-   if (brw->gen == 6 && inst->is_math())
+   if (brw->gen == 6 && is_math())
       return false;
 
-   if (inst->is_send_from_grf())
+   if (is_send_from_grf())
       return false;
 
-   if (!inst->can_do_source_mods())
+   if (!backend_instruction::can_do_source_mods())
       return false;
 
    return true;
index 20d717a77fbe72dab1fd61c8de6aa3808342ffbb..366ef02a510b645bf1714fefd0536a2c3e710fd3 100644 (file)
@@ -265,6 +265,7 @@ public:
    bool is_send_from_grf();
    bool can_reswizzle_dst(int dst_writemask, int swizzle, int swizzle_mask);
    void reswizzle_dst(int dst_writemask, int swizzle);
+   bool can_do_source_mods(struct brw_context *brw);
 
    bool reads_flag()
    {
@@ -430,8 +431,6 @@ public:
    void opt_set_dependency_control();
    void opt_schedule_instructions();
 
-   bool can_do_source_mods(vec4_instruction *inst);
-
    vec4_instruction *emit(vec4_instruction *inst);
 
    vec4_instruction *emit(enum opcode opcode);
index abafe47a7591007eaf8b5b3a8e6117805e34c3c7..11571ad3b0a4ec2c86f586a159107ad55395632d 100644 (file)
@@ -263,7 +263,7 @@ vec4_visitor::try_copy_propagation(vec4_instruction *inst, int arg,
     * instructions.
     */
    if ((has_source_modifiers || value.file == UNIFORM ||
-        value.swizzle != BRW_SWIZZLE_XYZW) && !can_do_source_mods(inst))
+        value.swizzle != BRW_SWIZZLE_XYZW) && !inst->can_do_source_mods(brw))
       return false;
 
    if (has_source_modifiers && value.type != inst->src[arg].type)