On Thu, 2016-06-16 at 00:47 +0200, Glenn Kennard wrote: > On Wed, 15 Jun 2016 20:13:13 +0200, Jan Vesely <jan.ves...@rutgers.ed > u> wrote: > > > > > Signed-off-by: Jan Vesely <jan.ves...@rutgers.edu> > > --- > > Untested (I don't have the required hw) > > > > src/gallium/drivers/r600/r600_pipe.c | 5 ++++- > > src/gallium/drivers/r600/r600_shader.c | 2 +- > > 2 files changed, 5 insertions(+), 2 deletions(-) > > > > diff --git a/src/gallium/drivers/r600/r600_pipe.c > > b/src/gallium/drivers/r600/r600_pipe.c > > index a49b00f..49c3e1d 100644 > > --- a/src/gallium/drivers/r600/r600_pipe.c > > +++ b/src/gallium/drivers/r600/r600_pipe.c > > @@ -548,7 +548,6 @@ static int r600_get_shader_param(struct > > pipe_screen* pscreen, unsigned shader, e > > return 0; > > case PIPE_SHADER_CAP_TGSI_DROUND_SUPPORTED: > > case PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED: > > - case PIPE_SHADER_CAP_TGSI_FMA_SUPPORTED: > > case PIPE_SHADER_CAP_MAX_SHADER_BUFFERS: > > case PIPE_SHADER_CAP_MAX_SHADER_IMAGES: > > return 0; > > @@ -558,6 +557,10 @@ static int r600_get_shader_param(struct > > pipe_screen* pscreen, unsigned shader, e > > * https://bugs.freedesktop.org/show_bug.cgi?id > > =86720 > > */ > > return 255; > > + case PIPE_SHADER_CAP_TGSI_FMA_SUPPORTED: > > + // Enable on CYPRESS(EG) and CAYMAN(NI) > > + return rscreen->b.family == CHIP_CYPRESS || > > + rscreen->b.family == CHIP_CAYMAN; > > } > > return 0; > > } > > diff --git a/src/gallium/drivers/r600/r600_shader.c > > b/src/gallium/drivers/r600/r600_shader.c > > index 101f666..35019e3 100644 > > --- a/src/gallium/drivers/r600/r600_shader.c > > +++ b/src/gallium/drivers/r600/r600_shader.c > > @@ -8917,7 +8917,7 @@ static const struct > > r600_shader_tgsi_instruction r600_shader_tgsi_instruction[] > > [TGSI_OPCODE_MAD] = { ALU_OP3_MULADD, tgsi_op3}, > > [TGSI_OPCODE_SUB] = { ALU_OP2_ADD, tgsi_op2}, > > [TGSI_OPCODE_LRP] = { ALU_OP0_NOP, tgsi_lrp}, > > - [TGSI_OPCODE_FMA] = { ALU_OP0_NOP, > > tgsi_unsupported}, > > + [TGSI_OPCODE_FMA] = { ALU_OP3_FMA, tgsi_op3}, > > [TGSI_OPCODE_SQRT] = { ALU_OP1_SQRT_IEEE, > > tgsi_trans_srcx_replicate}, > > [TGSI_OPCODE_DP2A] = { ALU_OP0_NOP, > > tgsi_unsupported}, > > [22] = { ALU_OP0_NOP, > > tgsi_unsupported}, > You probably meant to add the opcode to the > eg_shader_tgsi_instruction and cm_shader_tgsi_instruction opcode > tables rather than the R600/R700 one? > > > I'll also note in passing that FMA on CYPRESS/HEMLOCK has an issue > rate of 4/cycle vs MULADD 5/cycle since FMA cannot be issued in the > 't' slot, > may or may not affect performance depending on if the GLSL front end > decides to use fma for mul+add operations. On Cayman/Aruba they are > the same rate.
since FMA is only available on DP parts I'd expect the FMA rate to be that of DP operations (double ops take two slots, but the issue rate is usually lower than 1/2). I don't really know how the EG/CM pipeline handles hazards. Jan > > > /Glenn
signature.asc
Description: This is a digitally signed message part
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev