[Mesa-dev] [PATCH 53/59] intel/compiler: implement is_zero, is_one, is_negative_one for 8-bit/16-bit
Iago Toral
itoral at igalia.com
Mon Dec 10 09:04:01 UTC 2018
On Fri, 2018-12-07 at 14:25 -0600, Jason Ekstrand wrote:
> On Tue, Dec 4, 2018 at 1:18 AM Iago Toral Quiroga <itoral at igalia.com>
> wrote:
> > There are no 8-bit immediates, so assert in that case.
> >
> > 16-bit immediates are replicated in each word of a 32-bit
> > immediate, so
> >
> > we only need to check the lower 16-bits.
> >
> > ---
> >
> > src/intel/compiler/brw_shader.cpp | 20 ++++++++++++++++++++
> >
> > 1 file changed, 20 insertions(+)
> >
> >
> >
> > diff --git a/src/intel/compiler/brw_shader.cpp
> > b/src/intel/compiler/brw_shader.cpp
> >
> > index b77bd798d17..9999adbb52f 100644
> >
> > --- a/src/intel/compiler/brw_shader.cpp
> >
> > +++ b/src/intel/compiler/brw_shader.cpp
> >
> > @@ -708,11 +708,18 @@ backend_reg::is_zero() const
> >
> > if (file != IMM)
> >
> > return false;
> >
> >
> >
> > + assert(type_sz(type) > 1);
> >
> > +
>
> We should probably also assert that things are properly replicated.
Good idea, I'll add that too.
>
> > switch (type) {
> >
> > + case BRW_REGISTER_TYPE_HF:
> >
> > + return (d & 0xffff) == 0;
>
> Do we want to check for -0 as well? I think that'd be 0x8000.
Mmm... yes, I think we should probably do that. Thanks!
> > case BRW_REGISTER_TYPE_F:
> >
> > return f == 0;
> >
> > case BRW_REGISTER_TYPE_DF:
> >
> > return df == 0;
> >
> > + case BRW_REGISTER_TYPE_W:
> >
> > + case BRW_REGISTER_TYPE_UW:
> >
> > + return (d & 0xffff) == 0;
> >
> > case BRW_REGISTER_TYPE_D:
> >
> > case BRW_REGISTER_TYPE_UD:
> >
> > return d == 0;
> >
> > @@ -730,11 +737,18 @@ backend_reg::is_one() const
> >
> > if (file != IMM)
> >
> > return false;
> >
> >
> >
> > + assert(type_sz(type) > 1);
>
> Again, assert proper replication?
> > +
> >
> > switch (type) {
> >
> > + case BRW_REGISTER_TYPE_HF:
> >
> > + return (d & 0xffff) == 0x3c00;
> >
> > case BRW_REGISTER_TYPE_F:
> >
> > return f == 1.0f;
> >
> > case BRW_REGISTER_TYPE_DF:
> >
> > return df == 1.0;
> >
> > + case BRW_REGISTER_TYPE_W:
> >
> > + case BRW_REGISTER_TYPE_UW:
> >
> > + return (d & 0xffff) == 1;
> >
> > case BRW_REGISTER_TYPE_D:
> >
> > case BRW_REGISTER_TYPE_UD:
> >
> > return d == 1;
> >
> > @@ -752,11 +766,17 @@ backend_reg::is_negative_one() const
> >
> > if (file != IMM)
> >
> > return false;
> >
> >
> >
> > + assert(type_sz(type) > 1);
> >
> > +
> >
> > switch (type) {
> >
> > + case BRW_REGISTER_TYPE_HF:
> >
> > + return (d & 0xffff) == 0xbc00;
> >
> > case BRW_REGISTER_TYPE_F:
> >
> > return f == -1.0;
> >
> > case BRW_REGISTER_TYPE_DF:
> >
> > return df == -1.0;
> >
> > + case BRW_REGISTER_TYPE_W:
> >
> > + return (d & 0xffff) == -1;
> >
> > case BRW_REGISTER_TYPE_D:
> >
> > return d == -1;
> >
> > case BRW_REGISTER_TYPE_Q:
> >
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20181210/446daf84/attachment.html>
More information about the mesa-dev
mailing list