mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-26 19:20:08 +01:00
i965: Normalize types for FBL, FBH, etc
Allows the instructions to be compacted. The documentation claims that some of these only accept UD types, even though the type doesn't change the operation performed. Just normalize the types to ensure we get instruction compaction. The only functional changes are for FBL and CBIT (always use UD types) and FBH (always use the same types). Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
da3cf0e206
commit
3cfd6ad01c
2 changed files with 11 additions and 15 deletions
|
|
@ -1798,27 +1798,25 @@ fs_generator::generate_code(const cfg_t *cfg, int dispatch_width)
|
|||
break;
|
||||
case BRW_OPCODE_BFREV:
|
||||
assert(devinfo->gen >= 7);
|
||||
/* BFREV only supports UD type for src and dst. */
|
||||
brw_BFREV(p, retype(dst, BRW_REGISTER_TYPE_UD),
|
||||
retype(src[0], BRW_REGISTER_TYPE_UD));
|
||||
retype(src[0], BRW_REGISTER_TYPE_UD));
|
||||
break;
|
||||
case BRW_OPCODE_FBH:
|
||||
assert(devinfo->gen >= 7);
|
||||
/* FBH only supports UD type for dst. */
|
||||
brw_FBH(p, retype(dst, BRW_REGISTER_TYPE_UD), src[0]);
|
||||
brw_FBH(p, retype(dst, src[0].type), src[0]);
|
||||
break;
|
||||
case BRW_OPCODE_FBL:
|
||||
assert(devinfo->gen >= 7);
|
||||
/* FBL only supports UD type for dst. */
|
||||
brw_FBL(p, retype(dst, BRW_REGISTER_TYPE_UD), src[0]);
|
||||
brw_FBL(p, retype(dst, BRW_REGISTER_TYPE_UD),
|
||||
retype(src[0], BRW_REGISTER_TYPE_UD));
|
||||
break;
|
||||
case BRW_OPCODE_LZD:
|
||||
brw_LZD(p, dst, src[0]);
|
||||
break;
|
||||
case BRW_OPCODE_CBIT:
|
||||
assert(devinfo->gen >= 7);
|
||||
/* CBIT only supports UD type for dst. */
|
||||
brw_CBIT(p, retype(dst, BRW_REGISTER_TYPE_UD), src[0]);
|
||||
brw_CBIT(p, retype(dst, BRW_REGISTER_TYPE_UD),
|
||||
retype(src[0], BRW_REGISTER_TYPE_UD));
|
||||
break;
|
||||
case BRW_OPCODE_ADDC:
|
||||
assert(devinfo->gen >= 7);
|
||||
|
|
|
|||
|
|
@ -1646,27 +1646,25 @@ generate_code(struct brw_codegen *p,
|
|||
|
||||
case BRW_OPCODE_BFREV:
|
||||
assert(devinfo->gen >= 7);
|
||||
/* BFREV only supports UD type for src and dst. */
|
||||
brw_BFREV(p, retype(dst, BRW_REGISTER_TYPE_UD),
|
||||
retype(src[0], BRW_REGISTER_TYPE_UD));
|
||||
break;
|
||||
case BRW_OPCODE_FBH:
|
||||
assert(devinfo->gen >= 7);
|
||||
/* FBH only supports UD type for dst. */
|
||||
brw_FBH(p, retype(dst, BRW_REGISTER_TYPE_UD), src[0]);
|
||||
brw_FBH(p, retype(dst, src[0].type), src[0]);
|
||||
break;
|
||||
case BRW_OPCODE_FBL:
|
||||
assert(devinfo->gen >= 7);
|
||||
/* FBL only supports UD type for dst. */
|
||||
brw_FBL(p, retype(dst, BRW_REGISTER_TYPE_UD), src[0]);
|
||||
brw_FBL(p, retype(dst, BRW_REGISTER_TYPE_UD),
|
||||
retype(src[0], BRW_REGISTER_TYPE_UD));
|
||||
break;
|
||||
case BRW_OPCODE_LZD:
|
||||
brw_LZD(p, dst, src[0]);
|
||||
break;
|
||||
case BRW_OPCODE_CBIT:
|
||||
assert(devinfo->gen >= 7);
|
||||
/* CBIT only supports UD type for dst. */
|
||||
brw_CBIT(p, retype(dst, BRW_REGISTER_TYPE_UD), src[0]);
|
||||
brw_CBIT(p, retype(dst, BRW_REGISTER_TYPE_UD),
|
||||
retype(src[0], BRW_REGISTER_TYPE_UD));
|
||||
break;
|
||||
case BRW_OPCODE_ADDC:
|
||||
assert(devinfo->gen >= 7);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue