intel/fs: Handle source modifiers in lower_integer_multiplication().
authorFrancisco Jerez <currojerez@riseup.net>
Sat, 29 Dec 2018 09:44:00 +0000 (01:44 -0800)
committerFrancisco Jerez <currojerez@riseup.net>
Wed, 9 Jan 2019 20:03:08 +0000 (12:03 -0800)
commitc5f9c0009d5161e059e54a76fbdb910a6c151f9f
tree5e2e76ecf69efa9d610341692500efa855bb0a5d
parent0206ffc28db1c12a62c96384760c38f21ec1b420
intel/fs: Handle source modifiers in lower_integer_multiplication().

lower_integer_multiplication() implements 32x32-bit multiplication on
some platforms by bit-casting one of the 32-bit sources into two
16-bit unsigned integer portions.  This can give incorrect results if
the original instruction specified a source modifier.  Fix it by
emitting an additional MOV instruction implementing the source
modifiers where necessary.

Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
src/intel/compiler/brw_fs.cpp
src/intel/compiler/brw_fs.h