nir/algebraic: Distribute source modifiers into instructions
[mesa.git] / src / intel / compiler / brw_vec4_cmod_propagation.cpp
index 760327d559d62fc2c8e7d4a39c9b666f8d60e430..be0f957aeba620c886a33901cc91bf783e3ac85d 100644 (file)
@@ -173,19 +173,19 @@ opt_cmod_propagation_local(bblock_t *block, vec4_visitor *v)
 
                   /* Given a sequence like:
                    *
-                   *    cmp.ge.f0(8)  g21<1>.xF      g20<4>.xF      g18<4>.xF
+                   *    cmp.ge.f0(8)  g21<1>.zF      g20<4>.xF      g18<4>.xF
                    *    ...
-                   *    cmp.nz.f0(8)  null<1>D       g21<4>.xD      0D
+                   *    cmp.nz.f0(8)  null<1>D       g21<4>.zD      0D
                    *
                    * Replace it with something like:
                    *
-                   *    cmp.ge.f0(8)  g22<1>F        g20<4>.xF      g18<4>.xF
-                   *    mov(8)        g21<1>.xF      g22<1>.xxxxF
+                   *    cmp.ge.f0(8)  g22<1>.zF      g20<4>.xF      g18<4>.xF
+                   *    mov(8)        g21<1>.xF      g22<1>.zzzzF
                    *
                    * The added MOV will most likely be removed later.  In the
                    * worst case, it should be cheaper to schedule.
                    */
-                  temp.swizzle = inst->src[0].swizzle;
+                  temp.swizzle = brw_swizzle_for_mask(inst->dst.writemask);
                   temp.type = scan_inst->src[0].type;
 
                   vec4_instruction *mov = v->MOV(scan_inst->dst, temp);
@@ -357,7 +357,7 @@ vec4_visitor::opt_cmod_propagation()
    }
 
    if (progress)
-      invalidate_live_intervals();
+      invalidate_analysis(DEPENDENCY_INSTRUCTIONS);
 
    return progress;
 }