diff options
author | Jason Ekstrand <[email protected]> | 2015-01-26 09:40:25 -0800 |
---|---|---|
committer | Jason Ekstrand <[email protected]> | 2015-01-26 11:25:02 -0800 |
commit | dd74369a0a501be7c772c926c62ab1185bf5996f (patch) | |
tree | 7b3b926739c65b0982f38bb9e813a33ba9a8d9a8 /src/glsl/nir/nir_opcodes.py | |
parent | 9bd28fe3a305605168417234a163b6702bbde9d6 (diff) |
nir/opcodes: Don't go through doubles when constant-folding iabs
Previously, we called the abs() function in math.h. However, this involves
unnecessarily going through double. This commit changes it to use integers
directly with a ternary.
Reviewed-by: Connor Abbott <[email protected]>
Reviewed-by: Eric Anholt <[email protected]>
Diffstat (limited to 'src/glsl/nir/nir_opcodes.py')
-rw-r--r-- | src/glsl/nir/nir_opcodes.py | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/glsl/nir/nir_opcodes.py b/src/glsl/nir/nir_opcodes.py index 0fa8bf543da..f54a0176c0d 100644 --- a/src/glsl/nir/nir_opcodes.py +++ b/src/glsl/nir/nir_opcodes.py @@ -147,7 +147,7 @@ unop("inot", tint, "~src0") # invert every bit of the integer unop("fnot", tfloat, "(src0 == 0.0f) ? 1.0f : 0.0f") unop("fsign", tfloat, "(src0 == 0.0f) ? 0.0f : ((src0 > 0.0f) ? 1.0f : -1.0f)") unop("isign", tint, "(src0 == 0) ? 0 : ((src0 > 0) ? 1 : -1)") -unop("iabs", tint, "abs(src0)") +unop("iabs", tint, "(src0 < 0) ? -src0 : src0") unop("fabs", tfloat, "fabsf(src0)") unop("fsat", tfloat, "(src0 > 1.0f) ? 1.0f : ((src0 <= 0.0f) ? 0.0f : src0)") unop("frcp", tfloat, "1.0f / src0") |