nir/builder: Add helpers for easily inserting copy_var intrinsics
[mesa.git] / src / compiler / nir / nir_algebraic.py
index 1818877a21633c21be490b61420f3c54b222570a..d05564f779c8c6a3991dceea269c707c52c7ed6f 100644 (file)
@@ -69,6 +69,7 @@ static const ${val.c_type} ${val.name} = {
    ${'true' if val.is_constant else 'false'},
    ${val.type() or 'nir_type_invalid' },
 % elif isinstance(val, Expression):
+   ${'true' if val.inexact else 'false'},
    nir_op_${val.opcode},
    { ${', '.join(src.c_ptr for src in val.sources)} },
 % endif
@@ -145,12 +146,18 @@ class Variable(Value):
       elif self.required_type == 'float':
          return "nir_type_float"
 
+_opcode_re = re.compile(r"(?P<inexact>~)?(?P<opcode>\w+)")
+
 class Expression(Value):
    def __init__(self, expr, name_base, varset):
       Value.__init__(self, name_base, "expression")
       assert isinstance(expr, tuple)
 
-      self.opcode = expr[0]
+      m = _opcode_re.match(expr[0])
+      assert m and m.group('opcode') is not None
+
+      self.opcode = m.group('opcode')
+      self.inexact = m.group('inexact') is not None
       self.sources = [ Value.create(src, "{0}_{1}".format(name_base, i), varset)
                        for (i, src) in enumerate(expr[1:]) ]