i965: Move fs_inst::has_side_effects()'s eot check to the parent class.
authorKenneth Graunke <kenneth@whitecape.org>
Wed, 18 Oct 2017 18:22:43 +0000 (11:22 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Thu, 19 Oct 2017 17:19:20 +0000 (10:19 -0700)
This eliminates a layer of wrapping, and makes a backend_instruction
sufficient.  The downside is that it exposes 'eot' to the vec4 backend,
which it doesn't need, but can basically happily ignore.

Reviewed-by: Matt Turner <mattst88@gmail.com>
Tested-by: Pallavi G <pallavi.g@intel.com>
src/intel/compiler/brw_fs.cpp
src/intel/compiler/brw_ir_fs.h
src/intel/compiler/brw_shader.cpp
src/intel/compiler/brw_shader.h
src/intel/compiler/brw_vec4_visitor.cpp

index 66cb33131b6f724fdafc40eea68a0fc3934d6ece..30e8841242dd1d893a89cc7037114f0056bd23d2 100644 (file)
@@ -393,12 +393,6 @@ fs_inst::can_change_types() const
             !src[1].abs && !src[1].negate));
 }
 
-bool
-fs_inst::has_side_effects() const
-{
-   return this->eot || backend_instruction::has_side_effects();
-}
-
 void
 fs_reg::init()
 {
index 58beae0d1f0198c68439fe617fd400fbe96e6e43..0e7c55bcc03c943fa5f698c8fd1d80f6751d669c 100644 (file)
@@ -347,7 +347,6 @@ public:
    unsigned size_read(int arg) const;
    bool can_do_source_mods(const struct gen_device_info *devinfo);
    bool can_change_types() const;
-   bool has_side_effects() const;
    bool has_source_and_destination_hazard() const;
 
    /**
@@ -367,7 +366,6 @@ public:
 
    uint8_t sources; /**< Number of fs_reg sources. */
 
-   bool eot:1;
    bool pi_noperspective:1;   /**< Pixel interpolator noperspective flag */
 };
 
index 53d0742d2e880d5cc9d94fc2e317568a3a8da8b6..4eb602b000abfb5f08c488aba8c324d8ac7ab9ab 100644 (file)
@@ -1000,7 +1000,7 @@ backend_instruction::has_side_effects() const
    case TCS_OPCODE_RELEASE_INPUT:
       return true;
    default:
-      return false;
+      return eot;
    }
 }
 
index 30e7bf75c589f177eae999b59a61e0a04cdb3ade..d632f6dcd4ea6351e67ba1ffc139236a3022d539 100644 (file)
@@ -167,6 +167,7 @@ struct backend_instruction {
    bool no_dd_check:1;
    bool saturate:1;
    bool shadow_compare:1;
+   bool eot:1;
 
    /* Chooses which flag subregister (f0.0 or f0.1) is used for conditional
     * mod and predication.
index ae516196b15163b5d516b1ffe250b246d02e6080..a62c79ee7f330442ed71834423161ac2b2dc97a0 100644 (file)
@@ -46,6 +46,7 @@ vec4_instruction::vec4_instruction(enum opcode opcode, const dst_reg &dst,
    this->predicate_inverse = false;
    this->target = 0;
    this->shadow_compare = false;
+   this->eot = false;
    this->ir = NULL;
    this->urb_write_flags = BRW_URB_WRITE_NO_FLAGS;
    this->header_size = 0;