nvc0/ir: disable support for LIMMs on MAD/FMA
authorKarol Herbst <karolherbst@gmail.com>
Tue, 21 Mar 2017 17:37:46 +0000 (18:37 +0100)
committerIlia Mirkin <imirkin@alum.mit.edu>
Sat, 1 Apr 2017 03:57:08 +0000 (23:57 -0400)
commitfac921db63c74c543aad090929187960fadeefa5
tree21d06a06d494bff4cd00b27b63294733def2c6e0
parent31970ab9a6526177c585cb92693178b7d5408916
nvc0/ir: disable support for LIMMs on MAD/FMA

I hit an assert in the emiter while toying around with optimizations, because
ConstantFolding immediated a big int into a mad.

There is special handling for FMA/MAD in insnCanLoad, which is broken. With
this patch the special path should be not hit anymore. Anyway, the constraints
for the LIMMS can't be guarenteed in SSA form and I have patches pending to
use it via a post-SSA optimization pass.

As a result, immediates get immediated for int mad/fmas as well.

changes in shader-db:
total instructions in shared programs : 3943335 -> 3941587 (-0.04%)
total gprs used in shared programs    : 481563 -> 481511 (-0.01%)
total local used in shared programs   : 27469 -> 27469 (0.00%)
total bytes used in shared programs   : 36139384 -> 36123344 (-0.04%)

Signed-off-by: Karol Herbst <karolherbst@gmail.com>
[imirkin: remove extra bit from insnCanLoad as well]
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
src/gallium/drivers/nouveau/codegen/nv50_ir_target_nvc0.cpp