nir: Separate 32 and 64-bit fmod lowering

Split 32-bit and 64-bit fmod lowering as the drivers might need to
lower them separately inside NIR depending on the HW support.

Signed-off-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
This commit is contained in:
Samuel Iglesias Gonsálvez 2016-04-28 12:19:13 +02:00
parent b902377a56
commit 2ab2d2e588
3 changed files with 6 additions and 4 deletions

View File

@ -1630,7 +1630,8 @@ typedef struct nir_shader_compiler_options {
bool lower_fpow;
bool lower_fsat;
bool lower_fsqrt;
bool lower_fmod;
bool lower_fmod32;
bool lower_fmod64;
bool lower_bitfield_extract;
bool lower_bitfield_insert;
bool lower_uadd_carry;

View File

@ -296,8 +296,9 @@ optimizations = [
(('iadd', '#a', ('iadd', b, '#c')), ('iadd', ('iadd', a, c), b)),
# Misc. lowering
(('fmod', a, b), ('fsub', a, ('fmul', b, ('ffloor', ('fdiv', a, b)))), 'options->lower_fmod'),
(('frem', a, b), ('fsub', a, ('fmul', b, ('ftrunc', ('fdiv', a, b)))), 'options->lower_fmod'),
(('fmod@32', a, b), ('fsub', a, ('fmul', b, ('ffloor', ('fdiv', a, b)))), 'options->lower_fmod32'),
(('fmod@64', a, b), ('fsub', a, ('fmul', b, ('ffloor', ('fdiv', a, b)))), 'options->lower_fmod64'),
(('frem', a, b), ('fsub', a, ('fmul', b, ('ftrunc', ('fdiv', a, b)))), 'options->lower_fmod32'),
(('uadd_carry@32', a, b), ('b2i', ('ult', ('iadd', a, b), a)), 'options->lower_uadd_carry'),
(('usub_borrow@32', a, b), ('b2i', ('ult', a, b)), 'options->lower_usub_borrow'),

View File

@ -76,7 +76,7 @@ shader_perf_log_mesa(void *data, const char *fmt, ...)
.lower_sub = true, \
.lower_fdiv = true, \
.lower_scmp = true, \
.lower_fmod = true, \
.lower_fmod32 = true, \
.lower_bitfield_extract = true, \
.lower_bitfield_insert = true, \
.lower_uadd_carry = true, \