[Mesa-dev] [PATCH v2 29/78] i965/nir/vec4: Lower "vecN" instructions and mark them unreachable
Eduardo Lima Mitev
elima at igalia.com
Thu Jul 23 03:17:09 PDT 2015
From: Antia Puentes <apuentes at igalia.com>
This enables NIR pass "lower_vec_to_movs" on shaders that work on vec4.
---
src/mesa/drivers/dri/i965/brw_nir.c | 5 +++++
src/mesa/drivers/dri/i965/brw_vec4_nir.cpp | 5 +++++
2 files changed, 10 insertions(+)
diff --git a/src/mesa/drivers/dri/i965/brw_nir.c b/src/mesa/drivers/dri/i965/brw_nir.c
index d79bab3..a1acb1a 100644
--- a/src/mesa/drivers/dri/i965/brw_nir.c
+++ b/src/mesa/drivers/dri/i965/brw_nir.c
@@ -172,6 +172,11 @@ brw_create_nir(struct brw_context *brw,
nir_convert_from_ssa(nir, is_scalar);
nir_validate_shader(nir);
+ if (!is_scalar) {
+ nir_lower_vec_to_movs(nir);
+ nir_validate_shader(nir);
+ }
+
/* This is the last pass we run before we start emitting stuff. It
* determines when we need to insert boolean resolves on Gen <= 5. We
* run it last because it stashes data in instr->pass_flags and we don't
diff --git a/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp b/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp
index 9d1f32b..e1c851b 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp
@@ -680,6 +680,11 @@ vec4_visitor::nir_emit_alu(nir_alu_instr *instr)
inst->saturate = instr->dest.saturate;
break;
+ case nir_op_vec2:
+ case nir_op_vec3:
+ case nir_op_vec4:
+ unreachable("not reached: should be handled by lower_vec_to_movs()");
+
default:
unreachable("Unimplemented ALU operation");
}
--
2.1.4
More information about the mesa-dev
mailing list