mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 09:08:10 +02:00
i965/eu: Allow 3-src float ops with doubles
v2: - set 3src_src_type for BRW_REGISTER_TYPE_DF (Connor) Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Francisco Jerez <currojerez@riseup.net>
This commit is contained in:
parent
367e762a71
commit
9add73f641
1 changed files with 18 additions and 6 deletions
|
|
@ -881,8 +881,9 @@ brw_alu3(struct brw_codegen *p, unsigned opcode, struct brw_reg dest,
|
|||
dest.file == BRW_MESSAGE_REGISTER_FILE);
|
||||
assert(dest.nr < 128);
|
||||
assert(dest.address_mode == BRW_ADDRESS_DIRECT);
|
||||
assert(dest.type == BRW_REGISTER_TYPE_F ||
|
||||
dest.type == BRW_REGISTER_TYPE_D ||
|
||||
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);
|
||||
if (devinfo->gen == 6) {
|
||||
brw_inst_set_3src_dst_reg_file(devinfo, inst,
|
||||
|
|
@ -937,6 +938,10 @@ brw_alu3(struct brw_codegen *p, unsigned opcode, struct brw_reg dest,
|
|||
brw_inst_set_3src_src_type(devinfo, inst, BRW_3SRC_TYPE_F);
|
||||
brw_inst_set_3src_dst_type(devinfo, inst, BRW_3SRC_TYPE_F);
|
||||
break;
|
||||
case BRW_REGISTER_TYPE_DF:
|
||||
brw_inst_set_3src_src_type(devinfo, inst, BRW_3SRC_TYPE_DF);
|
||||
brw_inst_set_3src_dst_type(devinfo, inst, BRW_3SRC_TYPE_DF);
|
||||
break;
|
||||
case BRW_REGISTER_TYPE_D:
|
||||
brw_inst_set_3src_src_type(devinfo, inst, BRW_3SRC_TYPE_D);
|
||||
brw_inst_set_3src_dst_type(devinfo, inst, BRW_3SRC_TYPE_D);
|
||||
|
|
@ -991,10 +996,17 @@ brw_inst *brw_##OP(struct brw_codegen *p, \
|
|||
struct brw_reg src1, \
|
||||
struct brw_reg src2) \
|
||||
{ \
|
||||
assert(dest.type == BRW_REGISTER_TYPE_F); \
|
||||
assert(src0.type == BRW_REGISTER_TYPE_F); \
|
||||
assert(src1.type == BRW_REGISTER_TYPE_F); \
|
||||
assert(src2.type == BRW_REGISTER_TYPE_F); \
|
||||
assert(dest.type == BRW_REGISTER_TYPE_F || \
|
||||
dest.type == BRW_REGISTER_TYPE_DF); \
|
||||
if (dest.type == BRW_REGISTER_TYPE_F) { \
|
||||
assert(src0.type == BRW_REGISTER_TYPE_F); \
|
||||
assert(src1.type == BRW_REGISTER_TYPE_F); \
|
||||
assert(src2.type == BRW_REGISTER_TYPE_F); \
|
||||
} else if (dest.type == BRW_REGISTER_TYPE_DF) { \
|
||||
assert(src0.type == BRW_REGISTER_TYPE_DF); \
|
||||
assert(src1.type == BRW_REGISTER_TYPE_DF); \
|
||||
assert(src2.type == BRW_REGISTER_TYPE_DF); \
|
||||
} \
|
||||
return brw_alu3(p, BRW_OPCODE_##OP, dest, src0, src1, src2); \
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue