From: Maxence Le Doré <Maxence Le Doré> --- src/gallium/auxiliary/tgsi/tgsi_exec.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+)
diff --git a/src/gallium/auxiliary/tgsi/tgsi_exec.c b/src/gallium/auxiliary/tgsi/tgsi_exec.c index 25d3373..ddff409 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_exec.c +++ b/src/gallium/auxiliary/tgsi/tgsi_exec.c @@ -316,6 +316,16 @@ micro_mov(union tgsi_exec_channel *dst, } static void +micro_popcnt(union tgsi_exec_channel *dst, + const union tgsi_exec_channel *src) +{ + dst->i[0] = util_bitcount(src->u[0]); /* util_bitcount from umath.h */ + dst->i[1] = util_bitcount(src->u[1]); + dst->i[2] = util_bitcount(src->u[2]); + dst->i[3] = util_bitcount(src->u[3]); +} + +static void micro_rcp(union tgsi_exec_channel *dst, const union tgsi_exec_channel *src) { @@ -3671,6 +3681,10 @@ exec_instruction( exec_vector_binary(mach, inst, micro_max, TGSI_EXEC_DATA_FLOAT, TGSI_EXEC_DATA_FLOAT); break; + case TGSI_OPCODE_POPCNT: + exec_vector_unary(mach, inst, micro_popcnt, TGSI_EXEC_DATA_INT, TGSI_EXEC_DATA_UINT); + break; + case TGSI_OPCODE_SLT: exec_vector_binary(mach, inst, micro_slt, TGSI_EXEC_DATA_FLOAT, TGSI_EXEC_DATA_FLOAT); break; -- 1.8.5.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev