intel/eu/gen7: Fix brw_MOV() with DF destination and strided source.
I triggered this bug while prototyping code for a future platform on IVB. Could be a problem today though if a strided move is copy-propagated into a type-converting move with DF destination. Cc: mesa-stable@lists.freedesktop.org Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
This commit is contained in:
parent
bc781a0323
commit
464e79144f
|
@ -942,8 +942,8 @@ brw_MOV(struct brw_codegen *p, struct brw_reg dest, struct brw_reg src0)
|
||||||
const struct gen_device_info *devinfo = p->devinfo;
|
const struct gen_device_info *devinfo = p->devinfo;
|
||||||
|
|
||||||
/* When converting F->DF on IVB/BYT, every odd source channel is ignored.
|
/* When converting F->DF on IVB/BYT, every odd source channel is ignored.
|
||||||
* To avoid the problems that causes, we use a <1,2,0> source region to read
|
* To avoid the problems that causes, we use an <X,2,0> source region to
|
||||||
* each element twice.
|
* read each element twice.
|
||||||
*/
|
*/
|
||||||
if (devinfo->gen == 7 && !devinfo->is_haswell &&
|
if (devinfo->gen == 7 && !devinfo->is_haswell &&
|
||||||
brw_get_default_access_mode(p) == BRW_ALIGN_1 &&
|
brw_get_default_access_mode(p) == BRW_ALIGN_1 &&
|
||||||
|
@ -952,11 +952,8 @@ brw_MOV(struct brw_codegen *p, struct brw_reg dest, struct brw_reg src0)
|
||||||
src0.type == BRW_REGISTER_TYPE_D ||
|
src0.type == BRW_REGISTER_TYPE_D ||
|
||||||
src0.type == BRW_REGISTER_TYPE_UD) &&
|
src0.type == BRW_REGISTER_TYPE_UD) &&
|
||||||
!has_scalar_region(src0)) {
|
!has_scalar_region(src0)) {
|
||||||
assert(src0.vstride == BRW_VERTICAL_STRIDE_4 &&
|
assert(src0.vstride == src0.width + src0.hstride);
|
||||||
src0.width == BRW_WIDTH_4 &&
|
src0.vstride = src0.hstride;
|
||||||
src0.hstride == BRW_HORIZONTAL_STRIDE_1);
|
|
||||||
|
|
||||||
src0.vstride = BRW_VERTICAL_STRIDE_1;
|
|
||||||
src0.width = BRW_WIDTH_2;
|
src0.width = BRW_WIDTH_2;
|
||||||
src0.hstride = BRW_HORIZONTAL_STRIDE_0;
|
src0.hstride = BRW_HORIZONTAL_STRIDE_0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue