[Mesa-dev] [PATCH 09/25] i965: Reorder brw_reg_type enum values
Scott D Phillips
scott.d.phillips at intel.com
Tue Aug 8 23:21:55 UTC 2017
Matt Turner <mattst88 at gmail.com> writes:
> These vaguely corresponded to the hardware encodings, but that is purely
> historical at this point. Reorder them so we stop making things "almost
> work" when mixing enums.
>
> The ordering has been closen so that no enum value is the same as a
> compatible hardware encoding.
> ---
> src/intel/compiler/brw_eu.c | 1 -
> src/intel/compiler/brw_eu_emit.c | 6 ------
> src/intel/compiler/brw_fs.cpp | 1 +
> src/intel/compiler/brw_reg.h | 32 ++++++++++++++------------------
> src/intel/compiler/brw_vec4.cpp | 3 ++-
> 5 files changed, 17 insertions(+), 26 deletions(-)
>
> diff --git a/src/intel/compiler/brw_eu.c b/src/intel/compiler/brw_eu.c
> index 0ef52e219c..700a1badd4 100644
> --- a/src/intel/compiler/brw_eu.c
> +++ b/src/intel/compiler/brw_eu.c
> @@ -62,7 +62,6 @@ brw_reg_type_letters(unsigned type)
> [BRW_REGISTER_TYPE_UQ] = "UQ",
> [BRW_REGISTER_TYPE_Q] = "Q",
> };
> - assert(type <= BRW_REGISTER_TYPE_Q);
> return names[type];
> }
>
> diff --git a/src/intel/compiler/brw_eu_emit.c b/src/intel/compiler/brw_eu_emit.c
> index 6673e0741a..b59fc33a54 100644
> --- a/src/intel/compiler/brw_eu_emit.c
> +++ b/src/intel/compiler/brw_eu_emit.c
> @@ -112,7 +112,6 @@ brw_reg_type_to_hw_type(const struct gen_device_info *devinfo,
> };
> assert(type < ARRAY_SIZE(imm_hw_types));
> assert(imm_hw_types[type] != -1);
> - assert(devinfo->gen >= 8 || type < BRW_REGISTER_TYPE_DF);
> return imm_hw_types[type];
> } else {
> /* Non-immediate registers */
> @@ -134,8 +133,6 @@ brw_reg_type_to_hw_type(const struct gen_device_info *devinfo,
> };
> assert(type < ARRAY_SIZE(hw_types));
> assert(hw_types[type] != -1);
> - assert(devinfo->gen >= 7 || type < BRW_REGISTER_TYPE_DF);
> - assert(devinfo->gen >= 8 || type < BRW_REGISTER_TYPE_Q);
It might be good to keep these asserts around, but phrased as something
like assert(gen_has_reg_type(gen, file, type)) or something.
> return hw_types[type];
> }
> }
> @@ -184,9 +181,6 @@ brw_hw_reg_type_to_size(const struct gen_device_info *devinfo,
> [GEN8_HW_REG_NON_IMM_TYPE_HF] = 2,
> };
> assert(type < ARRAY_SIZE(hw_sizes));
> - assert(devinfo->gen >= 7 ||
> - (type < GEN7_HW_REG_NON_IMM_TYPE_DF || type == BRW_HW_REG_TYPE_F));
> - assert(devinfo->gen >= 8 || type <= BRW_HW_REG_TYPE_F);
> return hw_sizes[type];
> }
> }
> diff --git a/src/intel/compiler/brw_fs.cpp b/src/intel/compiler/brw_fs.cpp
> index fdc30d450c..0ea4c4f1cc 100644
> --- a/src/intel/compiler/brw_fs.cpp
> +++ b/src/intel/compiler/brw_fs.cpp
> @@ -403,6 +403,7 @@ void
> fs_reg::init()
> {
> memset(this, 0, sizeof(*this));
> + type = BRW_REGISTER_TYPE_UD;
> stride = 1;
> }
>
> diff --git a/src/intel/compiler/brw_reg.h b/src/intel/compiler/brw_reg.h
> index 17a51fbd65..48e6fd7b7d 100644
> --- a/src/intel/compiler/brw_reg.h
> +++ b/src/intel/compiler/brw_reg.h
> @@ -203,29 +203,25 @@ brw_mask_for_swizzle(unsigned swz)
> }
>
> enum PACKED brw_reg_type {
And maybe add a comment here like this part of the commit message:
* The ordering has been chosen so that no enum value is the same as a
* compatible hardware encoding.
So it's clear that matching some hardware encoding is an anti-goal.
fwiw:
Reviewed-by: Scott D Phillips <scott.d.phillips at intel.com>
> - BRW_REGISTER_TYPE_UD = 0,
> - BRW_REGISTER_TYPE_D,
> - BRW_REGISTER_TYPE_UW,
> - BRW_REGISTER_TYPE_W,
> + /** Floating-point types: @{ */
> + BRW_REGISTER_TYPE_DF,
> BRW_REGISTER_TYPE_F,
> -
> - /** Non-immediates only: @{ */
> - BRW_REGISTER_TYPE_UB,
> - BRW_REGISTER_TYPE_B,
> - /** @} */
> -
> - /** Immediates only: @{ */
> - BRW_REGISTER_TYPE_UV, /* Gen6+ */
> - BRW_REGISTER_TYPE_V,
> + BRW_REGISTER_TYPE_HF,
> BRW_REGISTER_TYPE_VF,
> /** @} */
>
> - BRW_REGISTER_TYPE_DF, /* Gen7+ (no immediates until Gen8+) */
> -
> - /* Gen8+ */
> - BRW_REGISTER_TYPE_HF,
> - BRW_REGISTER_TYPE_UQ,
> + /** Integer types: @{ */
> BRW_REGISTER_TYPE_Q,
> + BRW_REGISTER_TYPE_UQ,
> + BRW_REGISTER_TYPE_D,
> + BRW_REGISTER_TYPE_UD,
> + BRW_REGISTER_TYPE_W,
> + BRW_REGISTER_TYPE_UW,
> + BRW_REGISTER_TYPE_B,
> + BRW_REGISTER_TYPE_UB,
> + BRW_REGISTER_TYPE_V,
> + BRW_REGISTER_TYPE_UV,
> + /** @} */
> };
>
> unsigned brw_reg_type_to_hw_type(const struct gen_device_info *devinfo,
> diff --git a/src/intel/compiler/brw_vec4.cpp b/src/intel/compiler/brw_vec4.cpp
> index 410922c62b..bf9a271900 100644
> --- a/src/intel/compiler/brw_vec4.cpp
> +++ b/src/intel/compiler/brw_vec4.cpp
> @@ -42,8 +42,8 @@ void
> src_reg::init()
> {
> memset(this, 0, sizeof(*this));
> -
> this->file = BAD_FILE;
> + this->type = BRW_REGISTER_TYPE_UD;
> }
>
> src_reg::src_reg(enum brw_reg_file file, int nr, const glsl_type *type)
> @@ -85,6 +85,7 @@ dst_reg::init()
> {
> memset(this, 0, sizeof(*this));
> this->file = BAD_FILE;
> + this->type = BRW_REGISTER_TYPE_UD;
> this->writemask = WRITEMASK_XYZW;
> }
>
> --
> 2.13.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list