From: Daniel Schürmann Date: Fri, 25 Jan 2019 12:56:49 +0000 (+0100) Subject: nir/algebraic: Remove unnecessary iand of [iu]bfe and bfm sources X-Git-Tag: upstream/19.3.0~5182 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4eeb49ea71e47899f5d9a51b8f3e1fd9762fa7ad;p=platform%2Fupstream%2Fmesa.git nir/algebraic: Remove unnecessary iand of [iu]bfe and bfm sources The [iu]bfe and bfm instructions are defined to only use the five least significant bits. This optimizes a common pattern from D3D -> SPIR-V translation. Reviewed-by: Connor Abbott --- diff --git a/src/compiler/nir/nir_opt_algebraic.py b/src/compiler/nir/nir_opt_algebraic.py index c7e69c0..6e660df 100644 --- a/src/compiler/nir/nir_opt_algebraic.py +++ b/src/compiler/nir/nir_opt_algebraic.py @@ -809,6 +809,14 @@ optimizations.extend([ ('ubfe', 'value', 'offset', 'bits')), 'options->lower_bitfield_extract'), + # Note that these opcodes are defined to only use the five least significant bits of 'offset' and 'bits' + (('ubfe', 'value', 'offset', ('iand', 31, 'bits')), ('ubfe', 'value', 'offset', 'bits')), + (('ubfe', 'value', ('iand', 31, 'offset'), 'bits'), ('ubfe', 'value', 'offset', 'bits')), + (('ibfe', 'value', 'offset', ('iand', 31, 'bits')), ('ibfe', 'value', 'offset', 'bits')), + (('ibfe', 'value', ('iand', 31, 'offset'), 'bits'), ('ibfe', 'value', 'offset', 'bits')), + (('bfm', 'bits', ('iand', 31, 'offset')), ('bfm', 'bits', 'offset')), + (('bfm', ('iand', 31, 'bits'), 'offset'), ('bfm', 'bits', 'offset')), + (('ibitfield_extract', 'value', 'offset', 'bits'), ('bcsel', ('ieq', 0, 'bits'), 0,