[Mesa-dev] [PATCH 4/9] gallium-tgsi: add TGSI_OPCODE_{FMA-POPCNT-MSB-LSB} description
Marek Olšák
maraeo at gmail.com
Sat Jan 4 16:00:00 PST 2014
How is FMA different from MAD?
Please document the new opcodes in src/gallium/docs/source/tgsi.rst.
Marek
On Sun, Jan 5, 2014 at 12:42 AM, Maxence Le Doré
<maxence.ledore at gmail.com> wrote:
> From: Maxence Le Doré <Maxence Le Doré>
>
> ---
> src/gallium/auxiliary/tgsi/tgsi_info.c | 16 ++++++++++++++++
> src/gallium/auxiliary/tgsi/tgsi_opcode_tmp.h | 6 ++++++
> src/gallium/include/pipe/p_shader_tokens.h | 9 ++++++++-
> 3 files changed, 30 insertions(+), 1 deletion(-)
>
> diff --git a/src/gallium/auxiliary/tgsi/tgsi_info.c b/src/gallium/auxiliary/tgsi/tgsi_info.c
> index 0beef44..ed55940 100644
> --- a/src/gallium/auxiliary/tgsi/tgsi_info.c
> +++ b/src/gallium/auxiliary/tgsi/tgsi_info.c
> @@ -221,6 +221,12 @@ static const struct tgsi_opcode_info opcode_info[TGSI_OPCODE_LAST] =
> { 1, 3, 1, 0, 0, 0, OTHR, "TXL2", TGSI_OPCODE_TXL2 },
> { 1, 2, 0, 0, 0, 0, COMP, "IMUL_HI", TGSI_OPCODE_IMUL_HI },
> { 1, 2, 0, 0, 0, 0, COMP, "UMUL_HI", TGSI_OPCODE_UMUL_HI },
> + { 1, 3, 0, 0, 0, 0, COMP, "FMA", TGSI_OPCODE_FMA },
> + { 1, 1, 0, 0, 0, 0, COMP, "POPCNT", TGSI_OPCODE_POPCNT },
> + { 1, 1, 0, 0, 0, 0, COMP, "IMSB", TGSI_OPCODE_IMSB },
> + { 1, 1, 0, 0, 0, 0, COMP, "ILSB", TGSI_OPCODE_ILSB },
> + { 1, 1, 0, 0, 0, 0, COMP, "UMSB", TGSI_OPCODE_UMSB },
> + { 1, 1, 0, 0, 0, 0, COMP, "ULSB", TGSI_OPCODE_ULSB },
> };
>
> const struct tgsi_opcode_info *
> @@ -321,6 +327,11 @@ tgsi_opcode_infer_type( uint opcode )
> case TGSI_OPCODE_IABS:
> case TGSI_OPCODE_ISSG:
> case TGSI_OPCODE_IMUL_HI:
> + case TGSI_OPCODE_POPCNT:
> + case TGSI_OPCODE_ILSB:
> + case TGSI_OPCODE_IMSB:
> + case TGSI_OPCODE_ULSB:
> + case TGSI_OPCODE_UMSB:
> return TGSI_TYPE_SIGNED;
> default:
> return TGSI_TYPE_FLOAT;
> @@ -344,9 +355,14 @@ tgsi_opcode_infer_src_type( uint opcode )
> case TGSI_OPCODE_SAMPLE_I:
> case TGSI_OPCODE_SAMPLE_I_MS:
> case TGSI_OPCODE_UMUL_HI:
> + case TGSI_OPCODE_POPCNT:
> + case TGSI_OPCODE_ULSB:
> + case TGSI_OPCODE_UMSB:
> return TGSI_TYPE_UNSIGNED;
> case TGSI_OPCODE_IMUL_HI:
> case TGSI_OPCODE_I2F:
> + case TGSI_OPCODE_ILSB:
> + case TGSI_OPCODE_IMSB:
> return TGSI_TYPE_SIGNED;
> case TGSI_OPCODE_ARL:
> case TGSI_OPCODE_ARR:
> diff --git a/src/gallium/auxiliary/tgsi/tgsi_opcode_tmp.h b/src/gallium/auxiliary/tgsi/tgsi_opcode_tmp.h
> index 1ef78dd..cba0975 100644
> --- a/src/gallium/auxiliary/tgsi/tgsi_opcode_tmp.h
> +++ b/src/gallium/auxiliary/tgsi/tgsi_opcode_tmp.h
> @@ -206,6 +206,12 @@ OP13(UCMP)
>
> OP12(IMUL_HI)
> OP12(UMUL_HI)
> +OP13(FMA)
> +OP11(POPCNT)
> +OP11(IMSB)
> +OP11(ILSB)
> +OP11(UMSB)
> +OP11(ULSB)
>
> #undef OP00
> #undef OP01
> diff --git a/src/gallium/include/pipe/p_shader_tokens.h b/src/gallium/include/pipe/p_shader_tokens.h
> index 8010902..5ed0c34 100644
> --- a/src/gallium/include/pipe/p_shader_tokens.h
> +++ b/src/gallium/include/pipe/p_shader_tokens.h
> @@ -453,7 +453,14 @@ struct tgsi_property_data {
> #define TGSI_OPCODE_IMUL_HI 180
> #define TGSI_OPCODE_UMUL_HI 181
>
> -#define TGSI_OPCODE_LAST 182
> +#define TGSI_OPCODE_FMA 182
> +#define TGSI_OPCODE_POPCNT 183
> +#define TGSI_OPCODE_IMSB 184
> +#define TGSI_OPCODE_ILSB 185
> +#define TGSI_OPCODE_UMSB 186
> +#define TGSI_OPCODE_ULSB 187
> +
> +#define TGSI_OPCODE_LAST 188
>
> #define TGSI_SAT_NONE 0 /* do not saturate */
> #define TGSI_SAT_ZERO_ONE 1 /* clamp to [0,1] */
> --
> 1.8.5.2
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list