From: Maxence Le Doré <Maxence Le Doré> --- src/gallium/auxiliary/tgsi/tgsi_exec.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)
diff --git a/src/gallium/auxiliary/tgsi/tgsi_exec.c b/src/gallium/auxiliary/tgsi/tgsi_exec.c index b614907..25d3373 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_exec.c +++ b/src/gallium/auxiliary/tgsi/tgsi_exec.c @@ -223,6 +223,18 @@ micro_flr(union tgsi_exec_channel *dst, } static void +micro_fma(union tgsi_exec_channel *dst, + const union tgsi_exec_channel *src0, + const union tgsi_exec_channel *src1, + const union tgsi_exec_channel *src2) +{ + dst->f[0] = fmaf(src0->f[0],src1->f[0],src2->f[0]); + dst->f[1] = fmaf(src0->f[1],src1->f[1],src2->f[1]); + dst->f[2] = fmaf(src0->f[2],src1->f[2],src2->f[2]); + dst->f[3] = fmaf(src0->f[3],src1->f[3],src2->f[3]); +} + +static void micro_frc(union tgsi_exec_channel *dst, const union tgsi_exec_channel *src) { @@ -3635,6 +3647,10 @@ exec_instruction( exec_vector_binary(mach, inst, micro_add, TGSI_EXEC_DATA_FLOAT, TGSI_EXEC_DATA_FLOAT); break; + case TGSI_OPCODE_FMA: + exec_vector_trinary(mach, inst, micro_fma, TGSI_EXEC_DATA_FLOAT, TGSI_EXEC_DATA_FLOAT); + break; + case TGSI_OPCODE_DP3: exec_dp3(mach, inst); break; -- 1.8.5.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev