}
bool
-mir_nontrivial_mod(midgard_vector_alu_src src, bool is_int, unsigned mask)
+mir_nontrivial_raw_mod(midgard_vector_alu_src src, bool is_int)
{
- /* abs or neg */
- if (!is_int && src.mod) return true;
+ if (is_int)
+ return src.mod == midgard_int_shift;
+ else
+ return src.mod;
+}
- /* Other int mods don't matter in isolation */
- if (is_int && src.mod == midgard_int_shift) return true;
+bool
+mir_nontrivial_mod(midgard_vector_alu_src src, bool is_int, unsigned mask)
+{
+ if (mir_nontrivial_raw_mod(src, is_int)) return true;
/* size-conversion */
if (src.half) return true;
return false;
}
-
bool
mir_nontrivial_source2_mod(midgard_instruction *ins)
{
bool is_int = midgard_is_integer_op(ins->alu.op);
unsigned mod = ins->alu.outmod;
+ /* Pseudo-outmod */
+ if (ins->invert)
+ return true;
+
/* Type conversion is a sort of outmod */
if (ins->alu.dest_override != midgard_dest_override_none)
return true;