LGTM
Ruiling > -----Original Message----- > From: Beignet [mailto:[email protected]] On Behalf Of > rander > Sent: Tuesday, March 7, 2017 10:25 AM > To: [email protected] > Cc: Wang, Rander <[email protected]> > Subject: [Beignet] [PATCH 7/7] Backend: for BDW and after, According to BSpec > no need to split CMP when src is DW DF > > Signed-off-by: rander <[email protected]> > --- > backend/src/backend/gen8_encoder.cpp | 5 +++++ > backend/src/backend/gen_encoder.cpp | 4 ++++ > backend/src/backend/gen_encoder.hpp | 1 + > 3 files changed, 10 insertions(+) > > diff --git a/backend/src/backend/gen8_encoder.cpp > b/backend/src/backend/gen8_encoder.cpp > index a33fbac..cbee83f 100644 > --- a/backend/src/backend/gen8_encoder.cpp > +++ b/backend/src/backend/gen8_encoder.cpp > @@ -883,4 +883,9 @@ namespace gbe > msg_length, > response_length); > } > + > + /* for BDW and after, no need to split CMP when src is DW*/ > + bool Gen8Encoder::needToSplitCmpBySrcType(GenEncoder *p, GenRegister > src0, GenRegister src1) { > + return false; > + } > } /* End of the name space. */ > diff --git a/backend/src/backend/gen_encoder.cpp > b/backend/src/backend/gen_encoder.cpp > index 03ce0e2..217a2d8 100644 > --- a/backend/src/backend/gen_encoder.cpp > +++ b/backend/src/backend/gen_encoder.cpp > @@ -192,6 +192,10 @@ namespace gbe > if (isSrcDstDiffSpan(dst, src0) == true) return true; > if (isSrcDstDiffSpan(dst, src1) == true) return true; > > + return p->needToSplitCmpBySrcType(p, src0, src1); > + } > + > + bool GenEncoder::needToSplitCmpBySrcType(GenEncoder *p, GenRegister > src0, GenRegister src1) { > if (src0.type == GEN_TYPE_D || src0.type == GEN_TYPE_UD || src0.type == > GEN_TYPE_F) > return true; > if (src1.type == GEN_TYPE_D || src1.type == GEN_TYPE_UD || src1.type == > GEN_TYPE_F) > diff --git a/backend/src/backend/gen_encoder.hpp > b/backend/src/backend/gen_encoder.hpp > index 3e45c81..040b94a 100644 > --- a/backend/src/backend/gen_encoder.hpp > +++ b/backend/src/backend/gen_encoder.hpp > @@ -162,6 +162,7 @@ namespace gbe > void BRD(GenRegister src); > /*! Compare instructions */ > void CMP(uint32_t conditional, GenRegister src0, GenRegister src1, > GenRegister dst = GenRegister::null()); > + virtual bool needToSplitCmpBySrcType(GenEncoder *p, GenRegister src0, > GenRegister src1); > /*! Select with embedded compare (like sel.le ...) */ > void SEL_CMP(uint32_t conditional, GenRegister dst, GenRegister src0, > GenRegister src1); > /*! EOT is used to finish GPGPU threads */ > -- > 2.7.4 > > _______________________________________________ > Beignet mailing list > [email protected] > https://lists.freedesktop.org/mailman/listinfo/beignet _______________________________________________ Beignet mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/beignet
