nir: Add a deref instruction type

This commit adds a new instruction type to NIR for handling derefs.
Nothing uses it yet but this adds the data structure as well as all of
the code to validate, print, clone, and [de]serialize them.

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Acked-by: Rob Clark <robdclark@gmail.com>
Acked-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Acked-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
Jason Ekstrand
2018-03-14 21:45:38 -07:00
parent 5fbbbda37a
commit 19a4662a54
9 changed files with 580 additions and 13 deletions

View File

@@ -52,6 +52,7 @@ static void
init_instr(nir_instr *instr, nir_instr_worklist *worklist)
{
nir_alu_instr *alu_instr;
nir_deref_instr *deref_instr;
nir_intrinsic_instr *intrin_instr;
nir_tex_instr *tex_instr;
@@ -73,6 +74,12 @@ init_instr(nir_instr *instr, nir_instr_worklist *worklist)
mark_and_push(worklist, instr);
break;
case nir_instr_type_deref:
deref_instr = nir_instr_as_deref(instr);
if (!deref_instr->dest.is_ssa)
mark_and_push(worklist, instr);
break;
case nir_instr_type_intrinsic:
intrin_instr = nir_instr_as_intrinsic(instr);
if (nir_intrinsic_infos[intrin_instr->intrinsic].flags &