intel/mi: Add gen_mi_nz() and gen_mi_z() helpers.
authorKenneth Graunke <kenneth@whitecape.org>
Mon, 1 Apr 2019 23:01:50 +0000 (16:01 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Thu, 25 Jul 2019 18:42:55 +0000 (18:42 +0000)
These provide comparisons against zero.

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
src/intel/common/gen_mi_builder.h

index 90ac795f48d36cbca7c91ad5a9f64f2b97e96290..61d44eda5ae73c106073801ec7e7ede64df0c5ed 100644 (file)
@@ -644,6 +644,26 @@ gen_mi_iand(struct gen_mi_builder *b,
                             MI_ALU_STORE, MI_ALU_ACCU);
 }
 
+/**
+ * Returns (src != 0) ? 1 : 0.
+ */
+static inline struct gen_mi_value
+gen_mi_nz(struct gen_mi_builder *b, struct gen_mi_value src)
+{
+   return gen_mi_math_binop(b, MI_ALU_ADD, src, gen_mi_imm(0),
+                            MI_ALU_STOREINV, MI_ALU_ZF);
+}
+
+/**
+ * Returns (src == 0) ? 1 : 0.
+ */
+static inline struct gen_mi_value
+gen_mi_z(struct gen_mi_builder *b, struct gen_mi_value src)
+{
+   return gen_mi_math_binop(b, MI_ALU_ADD, src, gen_mi_imm(0),
+                            MI_ALU_STORE, MI_ALU_ZF);
+}
+
 static inline struct gen_mi_value
 gen_mi_ior(struct gen_mi_builder *b,
            struct gen_mi_value src0, struct gen_mi_value src1)