summaryrefslogtreecommitdiffstats
path: root/src/libdepixelize/priv/branchless.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libdepixelize/priv/branchless.h')
-rw-r--r--src/libdepixelize/priv/branchless.h26
1 files changed, 4 insertions, 22 deletions
diff --git a/src/libdepixelize/priv/branchless.h b/src/libdepixelize/priv/branchless.h
index f8f041cce..487a9688d 100644
--- a/src/libdepixelize/priv/branchless.h
+++ b/src/libdepixelize/priv/branchless.h
@@ -32,31 +32,13 @@ namespace Tracer {
*/
namespace branchless {
-template<class T>
-T first_if(T first, T second, bool cond)
-{
- return first * cond + second * (1 - cond);
-}
-
-template<class T>
-T min(T first, T second)
-{
- return first - (first > second) * (first - second);
-}
-
-template<class T>
-T max(T first, T second)
-{
- return first + (first < second) * (second - first);
-}
-
-/**
- * When abs(first - second) == 1
+/*
+ * All modern processors optimize the branch to a conditional move
*/
template<class T>
-T max_consecutive(T first, T second)
+T first_if(T first, T second, bool cond)
{
- return first + (first < second);
+ return cond ? first : second;
}
} // namespace branchless