[Beignet] [PATCH 1/2] Backend: Add RegisterFamily for ir
Yang, Rong R
rong.r.yang at intel.com
Wed Dec 7 06:47:24 UTC 2016
Pushed.
> -----Original Message-----
> From: Beignet [mailto:beignet-bounces at lists.freedesktop.org] On Behalf Of
> Guo, Yejun
> Sent: Tuesday, December 6, 2016 15:35
> To: Pan, Xiuli <xiuli.pan at intel.com>; beignet at lists.freedesktop.org
> Cc: Pan, Xiuli <xiuli.pan at intel.com>
> Subject: Re: [Beignet] [PATCH 1/2] Backend: Add RegisterFamily for ir
>
> this [PATCH 1/2] looks good, it helps the logical 1:1 mapping between virtual
> register and physical register.
>
> -----Original Message-----
> From: Beignet [mailto:beignet-bounces at lists.freedesktop.org] On Behalf Of
> Xiuli Pan
> Sent: Thursday, November 24, 2016 5:53 PM
> To: beignet at lists.freedesktop.org
> Cc: Pan, Xiuli
> Subject: [Beignet] [PATCH 1/2] Backend: Add RegisterFamily for ir
>
> From: Pan Xiuli <xiuli.pan at intel.com>
>
> We may need some bigger family like OWORD or HWORD and 32 word will be
> a reg. This can be used for tmp and header registers.
>
> Signed-off-by: Pan Xiuli <xiuli.pan at intel.com>
> ---
> backend/src/backend/gen_reg_allocation.cpp | 8 ++++++--
> backend/src/ir/register.cpp | 3 +++
> backend/src/ir/register.hpp | 8 ++++++--
> backend/src/ir/type.hpp | 4 ++--
> 4 files changed, 17 insertions(+), 6 deletions(-)
>
> diff --git a/backend/src/backend/gen_reg_allocation.cpp
> b/backend/src/backend/gen_reg_allocation.cpp
> index 495d830..522d8fd 100644
> --- a/backend/src/backend/gen_reg_allocation.cpp
> +++ b/backend/src/backend/gen_reg_allocation.cpp
> @@ -92,8 +92,12 @@ namespace gbe
> const bool isScalar = ctx.sel->isScalarReg(reg);
> const RegisterData regData = ctx.sel->getRegisterData(reg);
> const RegisterFamily family = regData.family;
> - const uint32_t typeSize = isScalar ? familyScalarSize[family] :
> familyVectorSize[family];
> - regSize = isScalar ? typeSize : ctx.getSimdWidth() * typeSize;
> + if (family == ir::FAMILY_REG)
> + regSize = 32;
> + else {
> + const uint32_t typeSize = isScalar ? familyScalarSize[family] :
> familyVectorSize[family];
> + regSize = isScalar ? typeSize : ctx.getSimdWidth() * typeSize;
> + }
> if (regFamily != NULL)
> *regFamily = family;
> }
> diff --git a/backend/src/ir/register.cpp b/backend/src/ir/register.cpp index
> 8200c31..1e78722 100644
> --- a/backend/src/ir/register.cpp
> +++ b/backend/src/ir/register.cpp
> @@ -35,6 +35,9 @@ namespace ir {
> case FAMILY_WORD: return out << "word";
> case FAMILY_DWORD: return out << "dword";
> case FAMILY_QWORD: return out << "qword";
> + case FAMILY_OWORD: return out << "oword";
> + case FAMILY_HWORD: return out << "hword";
> + case FAMILY_REG: return out << "reg";
> };
> return out;
> }
> diff --git a/backend/src/ir/register.hpp b/backend/src/ir/register.hpp index
> 11ab756..09af24e 100644
> --- a/backend/src/ir/register.hpp
> +++ b/backend/src/ir/register.hpp
> @@ -45,11 +45,14 @@ namespace ir {
> FAMILY_BYTE = 1,
> FAMILY_WORD = 2,
> FAMILY_DWORD = 3,
> - FAMILY_QWORD = 4
> + FAMILY_QWORD = 4,
> + FAMILY_OWORD = 5,
> + FAMILY_HWORD = 6,
> + FAMILY_REG = 7
> };
>
> INLINE char getFamilyName(RegisterFamily family) {
> - static char registerFamilyName[] = {'b', 'B', 'W', 'D', 'Q'};
> + static char registerFamilyName[] = {'b', 'B', 'W', 'D', 'Q', 'O',
> + 'H', 'R'};
> return registerFamilyName[family];
> }
>
> @@ -59,6 +62,7 @@ namespace ir {
> case FAMILY_WORD: return 2;
> case FAMILY_DWORD: return 4;
> case FAMILY_QWORD: return 8;
> + case FAMILY_REG: return 32;
> default: NOT_SUPPORTED;
> };
> return 0;
> diff --git a/backend/src/ir/type.hpp b/backend/src/ir/type.hpp index
> d528859..3ac758f 100644
> --- a/backend/src/ir/type.hpp
> +++ b/backend/src/ir/type.hpp
> @@ -86,8 +86,8 @@ namespace ir {
> case FAMILY_WORD: return TYPE_U16;
> case FAMILY_DWORD: return TYPE_U32;
> case FAMILY_QWORD: return TYPE_U64;
> - };
> - return TYPE_U32;
> + default: return TYPE_U32;
> + }
> }
>
> } /* namespace ir */
> --
> 2.7.4
>
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/beignet
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/beignet
More information about the Beignet
mailing list