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.led...@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@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev