Module: Mesa Branch: master Commit: af88acf4c4e2e14161872752fb9fb4683f9c8845 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=af88acf4c4e2e14161872752fb9fb4683f9c8845
Author: Eric Anholt <e...@anholt.net> Date: Wed May 2 13:02:21 2018 -0700 nir: Add lowering from ibitfield_extract/ubitfield_extract to shifts. V3D doesn't have opcodes for ibfe/ubfe, so we need to lower similarly to glsl/lower_instructions.cpp. Reviewed-by: Matt Turner <matts...@gmail.com> Reviewed-by: Ian Romanick <ian.d.roman...@intel.com> --- src/compiler/nir/nir.h | 3 +++ src/compiler/nir/nir_opt_algebraic.py | 16 ++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h index 6c0276fcc7..519c019887 100644 --- a/src/compiler/nir/nir.h +++ b/src/compiler/nir/nir.h @@ -1903,7 +1903,10 @@ typedef struct nir_shader_compiler_options { bool lower_fsqrt; bool lower_fmod32; bool lower_fmod64; + /** Lowers ibitfield_extract/ubitfield_extract to ibfe/ubfe. */ bool lower_bitfield_extract; + /** Lowers ibitfield_extract/ubitfield_extract to bfm, compares, shifts. */ + bool lower_bitfield_extract_to_shifts; /** Lowers bitfield_insert to bfi/bfm */ bool lower_bitfield_insert; /** Lowers bitfield_insert to bfm, compares, and shifts. */ diff --git a/src/compiler/nir/nir_opt_algebraic.py b/src/compiler/nir/nir_opt_algebraic.py index 878d13ded5..eaa8b14164 100644 --- a/src/compiler/nir/nir_opt_algebraic.py +++ b/src/compiler/nir/nir_opt_algebraic.py @@ -539,6 +539,22 @@ optimizations = [ ('ubfe', 'value', 'offset', 'bits')), 'options->lower_bitfield_extract'), + (('ibitfield_extract', 'value', 'offset', 'bits'), + ('bcsel', ('ieq', 0, 'bits'), + 0, + ('ishr', + ('ishl', 'value', ('isub', ('isub', 32, 'bits'), 'offset')), + ('isub', 32, 'bits'))), + 'options->lower_bitfield_extract_to_shifts'), + + (('ubitfield_extract', 'value', 'offset', 'bits'), + ('iand', + ('ushr', 'value', 'offset'), + ('bcsel', ('ieq', 'bits', 32), + 0xffffffff, + ('bfm', 'bits', 0))), + 'options->lower_bitfield_extract_to_shifts'), + (('extract_i8', a, 'b@32'), ('ishr', ('ishl', a, ('imul', ('isub', 3, b), 8)), 24), 'options->lower_extract_byte'), _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit