[Mesa-dev] [PATCH] intel/compiler: Make use of IS_DWORD macro
Alejandro PiƱeiro
apinheiro at igalia.com
Wed May 24 05:59:45 UTC 2017
On 23/05/17 22:51, Anuj Phogat wrote:
> This patch makes non-functional changes.
>
> Signed-off-by: Anuj Phogat <anuj.phogat at gmail.com>
> ---
> src/intel/compiler/brw_eu_defines.h | 3 +++
> src/intel/compiler/brw_eu_emit.c | 24 +++++++-----------------
> src/intel/compiler/brw_fs.cpp | 3 +--
> src/intel/compiler/brw_fs_cmod_propagation.cpp | 3 +--
> src/intel/compiler/brw_fs_copy_propagation.cpp | 3 +--
> src/intel/compiler/brw_fs_generator.cpp | 6 ++----
> src/intel/compiler/brw_fs_nir.cpp | 2 +-
> src/intel/compiler/brw_vec4.cpp | 5 -----
> src/intel/compiler/brw_vec4_cmod_propagation.cpp | 3 +--
> src/intel/compiler/brw_vec4_generator.cpp | 2 +-
> 10 files changed, 18 insertions(+), 36 deletions(-)
>
> diff --git a/src/intel/compiler/brw_eu_defines.h b/src/intel/compiler/brw_eu_defines.h
> index ccc838d..9e969f2 100644
> --- a/src/intel/compiler/brw_eu_defines.h
> +++ b/src/intel/compiler/brw_eu_defines.h
> @@ -48,6 +48,9 @@
>
> #define GET_BITS(data, high, low) ((data & INTEL_MASK((high), (low))) >> (low))
> #define GET_FIELD(word, field) (((word) & field ## _MASK) >> field ## _SHIFT)
> +#define IS_DWORD(reg) \
> + (reg.type == BRW_REGISTER_TYPE_UD || \
> + reg.type == BRW_REGISTER_TYPE_D)
Technically F also has a DWORD size. Just saying because ...
>
> #define _3DPRIM_POINTLIST 0x01
> #define _3DPRIM_LINELIST 0x02
> diff --git a/src/intel/compiler/brw_eu_emit.c b/src/intel/compiler/brw_eu_emit.c
> index 231d6fd..7434610 100644
> --- a/src/intel/compiler/brw_eu_emit.c
> +++ b/src/intel/compiler/brw_eu_emit.c
> @@ -959,8 +959,7 @@ brw_alu3(struct brw_codegen *p, unsigned opcode, struct brw_reg dest,
> assert(dest.address_mode == BRW_ADDRESS_DIRECT);
> assert(dest.type == BRW_REGISTER_TYPE_F ||
> dest.type == BRW_REGISTER_TYPE_DF ||
> - dest.type == BRW_REGISTER_TYPE_D ||
> - dest.type == BRW_REGISTER_TYPE_UD);
> + IS_DWORD(dest));
... this kind of checks of TYPE_F || IS_DWORD sounds somewhat strange
(at least to me). At that happens several times.
As I assume that your intention is check for integer dwords types, how
about IS_INTEGER_DWORD?
> if (devinfo->gen == 6) {
> brw_inst_set_3src_dst_reg_file(devinfo, inst,
> dest.file == BRW_MESSAGE_REGISTER_FILE);
> @@ -1158,9 +1157,7 @@ brw_MOV(struct brw_codegen *p, struct brw_reg dest, struct brw_reg src0)
> if (devinfo->gen == 7 && !devinfo->is_haswell &&
> brw_inst_access_mode(devinfo, p->current) == BRW_ALIGN_1 &&
> dest.type == BRW_REGISTER_TYPE_DF &&
> - (src0.type == BRW_REGISTER_TYPE_F ||
> - src0.type == BRW_REGISTER_TYPE_D ||
> - src0.type == BRW_REGISTER_TYPE_UD) &&
> + (src0.type == BRW_REGISTER_TYPE_F || IS_DWORD(src0)) &&
> !has_scalar_region(src0)) {
> assert(src0.vstride == BRW_VERTICAL_STRIDE_4 &&
> src0.width == BRW_WIDTH_4 &&
> @@ -1182,15 +1179,13 @@ brw_ADD(struct brw_codegen *p, struct brw_reg dest,
> if (src0.type == BRW_REGISTER_TYPE_F ||
> (src0.file == BRW_IMMEDIATE_VALUE &&
> src0.type == BRW_REGISTER_TYPE_VF)) {
> - assert(src1.type != BRW_REGISTER_TYPE_UD);
> - assert(src1.type != BRW_REGISTER_TYPE_D);
> + assert(!IS_DWORD(src1));
> }
>
> if (src1.type == BRW_REGISTER_TYPE_F ||
> (src1.file == BRW_IMMEDIATE_VALUE &&
> src1.type == BRW_REGISTER_TYPE_VF)) {
> - assert(src0.type != BRW_REGISTER_TYPE_UD);
> - assert(src0.type != BRW_REGISTER_TYPE_D);
> + assert(!IS_DWORD(src0));
> }
>
> return brw_alu2(p, BRW_OPCODE_ADD, dest, src0, src1);
> @@ -1222,25 +1217,20 @@ brw_MUL(struct brw_codegen *p, struct brw_reg dest,
> struct brw_reg src0, struct brw_reg src1)
> {
> /* 6.32.38: mul */
> - if (src0.type == BRW_REGISTER_TYPE_D ||
> - src0.type == BRW_REGISTER_TYPE_UD ||
> - src1.type == BRW_REGISTER_TYPE_D ||
> - src1.type == BRW_REGISTER_TYPE_UD) {
> + if (IS_DWORD(src0) || IS_DWORD(src1)) {
> assert(dest.type != BRW_REGISTER_TYPE_F);
> }
>
> if (src0.type == BRW_REGISTER_TYPE_F ||
> (src0.file == BRW_IMMEDIATE_VALUE &&
> src0.type == BRW_REGISTER_TYPE_VF)) {
> - assert(src1.type != BRW_REGISTER_TYPE_UD);
> - assert(src1.type != BRW_REGISTER_TYPE_D);
> + assert(!IS_DWORD(src1));
> }
>
> if (src1.type == BRW_REGISTER_TYPE_F ||
> (src1.file == BRW_IMMEDIATE_VALUE &&
> src1.type == BRW_REGISTER_TYPE_VF)) {
> - assert(src0.type != BRW_REGISTER_TYPE_UD);
> - assert(src0.type != BRW_REGISTER_TYPE_D);
> + assert(!IS_DWORD(src0));
> }
>
> assert(src0.file != BRW_ARCHITECTURE_REGISTER_FILE ||
> diff --git a/src/intel/compiler/brw_fs.cpp b/src/intel/compiler/brw_fs.cpp
> index 329c15b..aad8d8d 100644
> --- a/src/intel/compiler/brw_fs.cpp
> +++ b/src/intel/compiler/brw_fs.cpp
> @@ -3475,8 +3475,7 @@ fs_visitor::lower_integer_multiplication()
> *
> * FINISHME: Don't use source modifiers on src1.
> */
> - assert(mul->src[1].type == BRW_REGISTER_TYPE_D ||
> - mul->src[1].type == BRW_REGISTER_TYPE_UD);
> + assert(IS_DWORD(mul->src[1]));
> mul->src[1].type = BRW_REGISTER_TYPE_UW;
> mul->src[1].stride *= 2;
>
> diff --git a/src/intel/compiler/brw_fs_cmod_propagation.cpp b/src/intel/compiler/brw_fs_cmod_propagation.cpp
> index 2d50c92..cf5baea 100644
> --- a/src/intel/compiler/brw_fs_cmod_propagation.cpp
> +++ b/src/intel/compiler/brw_fs_cmod_propagation.cpp
> @@ -98,8 +98,7 @@ opt_cmod_propagation_local(const gen_device_info *devinfo, bblock_t *block)
> /* CMP's result is the same regardless of dest type. */
> if (inst->conditional_mod == BRW_CONDITIONAL_NZ &&
> scan_inst->opcode == BRW_OPCODE_CMP &&
> - (inst->dst.type == BRW_REGISTER_TYPE_D ||
> - inst->dst.type == BRW_REGISTER_TYPE_UD)) {
> + IS_DWORD(inst->dst)) {
> inst->remove(block);
> progress = true;
> break;
> diff --git a/src/intel/compiler/brw_fs_copy_propagation.cpp b/src/intel/compiler/brw_fs_copy_propagation.cpp
> index cb11739..3ae03ab 100644
> --- a/src/intel/compiler/brw_fs_copy_propagation.cpp
> +++ b/src/intel/compiler/brw_fs_copy_propagation.cpp
> @@ -600,8 +600,7 @@ fs_visitor::try_constant_propagate(fs_inst *inst, acp_entry *entry)
> if (((inst->opcode == BRW_OPCODE_MUL &&
> inst->dst.is_accumulator()) ||
> inst->opcode == BRW_OPCODE_MACH) &&
> - (inst->src[1].type == BRW_REGISTER_TYPE_D ||
> - inst->src[1].type == BRW_REGISTER_TYPE_UD))
> + IS_DWORD(inst->src[1]))
> break;
> inst->src[0] = inst->src[1];
> inst->src[1] = val;
> diff --git a/src/intel/compiler/brw_fs_generator.cpp b/src/intel/compiler/brw_fs_generator.cpp
> index 2ade486..2b74f61 100644
> --- a/src/intel/compiler/brw_fs_generator.cpp
> +++ b/src/intel/compiler/brw_fs_generator.cpp
> @@ -1470,10 +1470,8 @@ fs_generator::generate_set_sample_id(fs_inst *inst,
> struct brw_reg src0,
> struct brw_reg src1)
> {
> - assert(dst.type == BRW_REGISTER_TYPE_D ||
> - dst.type == BRW_REGISTER_TYPE_UD);
> - assert(src0.type == BRW_REGISTER_TYPE_D ||
> - src0.type == BRW_REGISTER_TYPE_UD);
> + assert(IS_DWORD(dst));
> + assert(IS_DWORD(src0));
>
> struct brw_reg reg = stride(src1, 1, 4, 0);
> if (devinfo->gen >= 8 || inst->exec_size == 8) {
> diff --git a/src/intel/compiler/brw_fs_nir.cpp b/src/intel/compiler/brw_fs_nir.cpp
> index 876b103..e1e96d7 100644
> --- a/src/intel/compiler/brw_fs_nir.cpp
> +++ b/src/intel/compiler/brw_fs_nir.cpp
> @@ -1579,7 +1579,7 @@ emit_pixel_interpolater_send(const fs_builder &bld,
> static fs_reg
> intexp2(const fs_builder &bld, const fs_reg &x)
> {
> - assert(x.type == BRW_REGISTER_TYPE_UD || x.type == BRW_REGISTER_TYPE_D);
> + assert(IS_DWORD(x));
>
> fs_reg result = bld.vgrf(x.type, 1);
> fs_reg one = bld.vgrf(x.type, 1);
> diff --git a/src/intel/compiler/brw_vec4.cpp b/src/intel/compiler/brw_vec4.cpp
> index a641ebf..4e95e63 100644
> --- a/src/intel/compiler/brw_vec4.cpp
> +++ b/src/intel/compiler/brw_vec4.cpp
> @@ -970,10 +970,6 @@ vec4_visitor::move_push_constants_to_pull_constants()
> bool
> vec4_visitor::is_dep_ctrl_unsafe(const vec4_instruction *inst)
> {
> -#define IS_DWORD(reg) \
> - (reg.type == BRW_REGISTER_TYPE_UD || \
> - reg.type == BRW_REGISTER_TYPE_D)
> -
> #define IS_64BIT(reg) (reg.file != BAD_FILE && type_sz(reg.type) == 8)
>
> /* From the Cherryview and Broadwell PRMs:
> @@ -999,7 +995,6 @@ vec4_visitor::is_dep_ctrl_unsafe(const vec4_instruction *inst)
> }
>
> #undef IS_64BIT
> -#undef IS_DWORD
>
> if (devinfo->gen >= 8) {
> if (inst->opcode == BRW_OPCODE_F32TO16)
> diff --git a/src/intel/compiler/brw_vec4_cmod_propagation.cpp b/src/intel/compiler/brw_vec4_cmod_propagation.cpp
> index 4454cdb..9b50c3d 100644
> --- a/src/intel/compiler/brw_vec4_cmod_propagation.cpp
> +++ b/src/intel/compiler/brw_vec4_cmod_propagation.cpp
> @@ -85,8 +85,7 @@ opt_cmod_propagation_local(bblock_t *block)
> /* CMP's result is the same regardless of dest type. */
> if (inst->conditional_mod == BRW_CONDITIONAL_NZ &&
> scan_inst->opcode == BRW_OPCODE_CMP &&
> - (inst->dst.type == BRW_REGISTER_TYPE_D ||
> - inst->dst.type == BRW_REGISTER_TYPE_UD)) {
> + IS_DWORD(inst->dst)) {
> inst->remove(block);
> progress = true;
> break;
> diff --git a/src/intel/compiler/brw_vec4_generator.cpp b/src/intel/compiler/brw_vec4_generator.cpp
> index 334933d..cf76069 100644
> --- a/src/intel/compiler/brw_vec4_generator.cpp
> +++ b/src/intel/compiler/brw_vec4_generator.cpp
> @@ -807,7 +807,7 @@ generate_tcs_input_urb_offsets(struct brw_codegen *p,
> /* If `vertex` is not an immediate, we clobber a0.0 */
>
> assert(vertex.file == BRW_IMMEDIATE_VALUE || vertex.file == BRW_GENERAL_REGISTER_FILE);
> - assert(vertex.type == BRW_REGISTER_TYPE_UD || vertex.type == BRW_REGISTER_TYPE_D);
> + assert(IS_DWORD(vertex));
>
> assert(dst.file == BRW_GENERAL_REGISTER_FILE);
>
More information about the mesa-dev
mailing list