From: Roland Scheidegger Date: Mon, 23 Jan 2017 17:10:44 +0000 (+0100) Subject: tgsi: implement ddiv opcode X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=3b575a955c1d84744a65160e2c45f0ce407effd8;p=mesa.git tgsi: implement ddiv opcode softpipe (along with llvmpipe) claims to support arb_gpu_shader_fp64, so we really need to support that opcode. Cc: 17.0 Reviewed-by: Nicolai Hähnle Reviewed-by: Jose Fonseca --- diff --git a/src/gallium/auxiliary/tgsi/tgsi_exec.c b/src/gallium/auxiliary/tgsi/tgsi_exec.c index 915cd10e683..2135ad103de 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_exec.c +++ b/src/gallium/auxiliary/tgsi/tgsi_exec.c @@ -209,6 +209,16 @@ micro_dadd(union tgsi_double_channel *dst, dst->d[3] = src[0].d[3] + src[1].d[3]; } +static void +micro_ddiv(union tgsi_double_channel *dst, + const union tgsi_double_channel *src) +{ + dst->d[0] = src[0].d[0] / src[1].d[0]; + dst->d[1] = src[0].d[1] / src[1].d[1]; + dst->d[2] = src[0].d[2] / src[1].d[2]; + dst->d[3] = src[0].d[3] / src[1].d[3]; +} + static void micro_ddx(union tgsi_exec_channel *dst, const union tgsi_exec_channel *src) @@ -5995,6 +6005,10 @@ exec_instruction( exec_double_binary(mach, inst, micro_dadd, TGSI_EXEC_DATA_DOUBLE); break; + case TGSI_OPCODE_DDIV: + exec_double_binary(mach, inst, micro_ddiv, TGSI_EXEC_DATA_DOUBLE); + break; + case TGSI_OPCODE_DMUL: exec_double_binary(mach, inst, micro_dmul, TGSI_EXEC_DATA_DOUBLE); break;