intel/compiler: split handling of 64 bit floats and ints
In opt_algebraic(), handle TYPE_DF in a different check than TYPE_Q. We have a separate flag for each type, use separate checks so platforms where one is true and the other is not can work properly. Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15835>
This commit is contained in:
parent
8f02e6cb19
commit
2256314b08
|
@ -2550,9 +2550,24 @@ fs_visitor::opt_algebraic()
|
|||
switch (inst->opcode) {
|
||||
case BRW_OPCODE_MOV:
|
||||
if (!devinfo->has_64bit_float &&
|
||||
!devinfo->has_64bit_int &&
|
||||
(inst->dst.type == BRW_REGISTER_TYPE_DF ||
|
||||
inst->dst.type == BRW_REGISTER_TYPE_UQ ||
|
||||
inst->dst.type == BRW_REGISTER_TYPE_DF) {
|
||||
assert(inst->dst.type == inst->src[0].type);
|
||||
assert(!inst->saturate);
|
||||
assert(!inst->src[0].abs);
|
||||
assert(!inst->src[0].negate);
|
||||
const brw::fs_builder ibld(this, block, inst);
|
||||
|
||||
ibld.MOV(subscript(inst->dst, BRW_REGISTER_TYPE_F, 1),
|
||||
subscript(inst->src[0], BRW_REGISTER_TYPE_F, 1));
|
||||
ibld.MOV(subscript(inst->dst, BRW_REGISTER_TYPE_F, 0),
|
||||
subscript(inst->src[0], BRW_REGISTER_TYPE_F, 0));
|
||||
|
||||
inst->remove(block);
|
||||
progress = true;
|
||||
}
|
||||
|
||||
if (!devinfo->has_64bit_int &&
|
||||
(inst->dst.type == BRW_REGISTER_TYPE_UQ ||
|
||||
inst->dst.type == BRW_REGISTER_TYPE_Q)) {
|
||||
assert(inst->dst.type == inst->src[0].type);
|
||||
assert(!inst->saturate);
|
||||
|
|
Loading…
Reference in New Issue