mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 19:40:10 +01:00
i965/fs: Use greater-equal cmod to implement maximum.
The docs specifically call out SEL with .l and .ge as the
implementations of MIN and MAX respectively. Among other things,
SEL with these conditional mods are commutative.
See commit 3b7f683f.
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
This commit is contained in:
parent
d2e3638ef9
commit
a4ba41638d
2 changed files with 6 additions and 4 deletions
|
|
@ -372,6 +372,8 @@ namespace brw {
|
|||
emit_minmax(const dst_reg &dst, const src_reg &src0,
|
||||
const src_reg &src1, brw_conditional_mod mod) const
|
||||
{
|
||||
assert(mod == BRW_CONDITIONAL_GE || mod == BRW_CONDITIONAL_L);
|
||||
|
||||
if (shader->devinfo->gen >= 6) {
|
||||
set_condmod(mod, SEL(dst, fix_unsigned_negate(src0),
|
||||
fix_unsigned_negate(src1)));
|
||||
|
|
|
|||
|
|
@ -686,7 +686,7 @@ namespace {
|
|||
if (is_signed)
|
||||
bld.emit_minmax(offset(dst, bld, c), offset(dst, bld, c),
|
||||
fs_reg(-(int)scale(widths[c] - s) - 1),
|
||||
BRW_CONDITIONAL_G);
|
||||
BRW_CONDITIONAL_GE);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -717,7 +717,7 @@ namespace {
|
|||
if (is_signed)
|
||||
bld.emit_minmax(offset(dst, bld, c),
|
||||
offset(dst, bld, c), fs_reg(-1.0f),
|
||||
BRW_CONDITIONAL_G);
|
||||
BRW_CONDITIONAL_GE);
|
||||
}
|
||||
}
|
||||
return dst;
|
||||
|
|
@ -741,7 +741,7 @@ namespace {
|
|||
/* Clamp the normalized floating-point argument. */
|
||||
if (is_signed) {
|
||||
bld.emit_minmax(offset(fdst, bld, c), offset(src, bld, c),
|
||||
fs_reg(-1.0f), BRW_CONDITIONAL_G);
|
||||
fs_reg(-1.0f), BRW_CONDITIONAL_GE);
|
||||
|
||||
bld.emit_minmax(offset(fdst, bld, c), offset(fdst, bld, c),
|
||||
fs_reg(1.0f), BRW_CONDITIONAL_L);
|
||||
|
|
@ -812,7 +812,7 @@ namespace {
|
|||
/* Clamp to the minimum value. */
|
||||
if (widths[c] < 16)
|
||||
bld.emit_minmax(offset(fdst, bld, c), offset(fdst, bld, c),
|
||||
fs_reg(0.0f), BRW_CONDITIONAL_G);
|
||||
fs_reg(0.0f), BRW_CONDITIONAL_GE);
|
||||
|
||||
/* Convert to 16-bit floating-point. */
|
||||
bld.F32TO16(offset(dst, bld, c), offset(fdst, bld, c));
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue