From 407f8c71d3f3687f2fd134c42e5d12921e1c083d Mon Sep 17 00:00:00 2001 From: Hyunjun Ko Date: Fri, 30 Aug 2019 08:29:10 +0000 Subject: freedreno/ir3: fixup when changing to mad.f16 Reviewed-by: Rob Clark --- src/freedreno/ir3/ir3_ra.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/freedreno') diff --git a/src/freedreno/ir3/ir3_ra.c b/src/freedreno/ir3/ir3_ra.c index 67d8a93884e..c3d8e88f54a 100644 --- a/src/freedreno/ir3/ir3_ra.c +++ b/src/freedreno/ir3/ir3_ra.c @@ -982,7 +982,11 @@ static void fixup_half_instr_dst(struct ir3_instruction *instr) case 3: switch (instr->opc) { case OPC_MAD_F32: - instr->opc = OPC_MAD_F16; + /* Available for that dest is half and srcs are full. + * eg. mad.f32 hr0, r0.x, r0.y, r0.z + */ + if (instr->regs[1]->flags & IR3_REG_HALF) + instr->opc = OPC_MAD_F16; break; case OPC_SEL_B32: instr->opc = OPC_SEL_B16; -- cgit v1.2.3