aboutsummaryrefslogtreecommitdiffstats
path: root/src/freedreno/ir3
diff options
context:
space:
mode:
authorJonathan Marek <[email protected]>2020-04-23 12:31:15 -0400
committerMarge Bot <[email protected]>2020-04-24 13:11:58 +0000
commit73f7f73ef30fdc8178265f8d79ff078cdd50e5cb (patch)
treed90368a286e2cce1c4cff73f89c37423e31d547c /src/freedreno/ir3
parentdd49a404106852804544eaf695e46b2f5ccd0a0f (diff)
freedreno/ir3: fix incorrect conversion folding
Fixes dEQP-VK.glsl.builtin.function.pack_unpack.unpackhalf2x16_compute Signed-off-by: Jonathan Marek <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4708>
Diffstat (limited to 'src/freedreno/ir3')
-rw-r--r--src/freedreno/ir3/ir3_cf.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/freedreno/ir3/ir3_cf.c b/src/freedreno/ir3/ir3_cf.c
index 9875ba4906f..db9b5de008b 100644
--- a/src/freedreno/ir3/ir3_cf.c
+++ b/src/freedreno/ir3/ir3_cf.c
@@ -103,6 +103,13 @@ try_conversion_folding(struct ir3_instruction *conv)
case OPC_SIGN_F:
case OPC_ABSNEG_F:
return;
+ case OPC_MOV:
+ /* if src is a "cov" and type doesn't match, then it can't be folded
+ * for example cov.u32u16+cov.f16f32 can't be folded to cov.u32f32
+ */
+ if (src->cat1.dst_type != src->cat1.src_type &&
+ conv->cat1.src_type != src->cat1.dst_type)
+ return;
default:
break;
}