mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-04 17:10:47 +00:00
Backport Qt constexpr fix. Closes #1319
* This originally comes from a fix for QTBUG-67259, in codereview 224386 - https://codereview.qt-project.org/#/c/224386/ * Cherry-picked back to our Qt from 5.9.7/5.11.2
This commit is contained in:
+6
-4
@@ -590,6 +590,7 @@ Q_DECL_CONSTEXPR Q_ALWAYS_INLINE uint qt_builtin_popcountll(quint64 v) Q_DECL_NO
|
||||
}
|
||||
#elif defined(Q_CC_MSVC) && !defined(Q_OS_WINCE) && !defined(Q_PROCESSOR_ARM)
|
||||
#define QT_POPCOUNT_CONSTEXPR
|
||||
#define QT_POPCOUNT_RELAXED_CONSTEXPR
|
||||
#define QT_HAS_BUILTIN_CTZ
|
||||
Q_ALWAYS_INLINE unsigned long qt_builtin_ctz(quint32 val)
|
||||
{
|
||||
@@ -676,6 +677,7 @@ Q_ALWAYS_INLINE uint qt_builtin_popcountll(quint64 v) Q_DECL_NOTHROW
|
||||
|
||||
#ifndef QT_POPCOUNT_CONSTEXPR
|
||||
#define QT_POPCOUNT_CONSTEXPR Q_DECL_CONSTEXPR
|
||||
#define QT_POPCOUNT_RELAXED_CONSTEXPR Q_DECL_RELAXED_CONSTEXPR
|
||||
#endif
|
||||
|
||||
} //namespace QAlgorithmsPrivate
|
||||
@@ -819,7 +821,7 @@ Q_DECL_RELAXED_CONSTEXPR inline uint qCountLeadingZeroBits(quint32 v) Q_DECL_NOT
|
||||
#endif
|
||||
}
|
||||
|
||||
Q_DECL_RELAXED_CONSTEXPR inline uint qCountLeadingZeroBits(quint8 v) Q_DECL_NOTHROW
|
||||
QT_POPCOUNT_RELAXED_CONSTEXPR inline uint qCountLeadingZeroBits(quint8 v) Q_DECL_NOTHROW
|
||||
{
|
||||
#if defined(QT_HAS_BUILTIN_CLZ)
|
||||
return v ? QAlgorithmsPrivate::qt_builtin_clz(v)-24U : 8U;
|
||||
@@ -831,7 +833,7 @@ Q_DECL_RELAXED_CONSTEXPR inline uint qCountLeadingZeroBits(quint8 v) Q_DECL_NOTH
|
||||
#endif
|
||||
}
|
||||
|
||||
Q_DECL_RELAXED_CONSTEXPR inline uint qCountLeadingZeroBits(quint16 v) Q_DECL_NOTHROW
|
||||
QT_POPCOUNT_RELAXED_CONSTEXPR inline uint qCountLeadingZeroBits(quint16 v) Q_DECL_NOTHROW
|
||||
{
|
||||
#if defined(QT_HAS_BUILTIN_CLZS)
|
||||
return v ? QAlgorithmsPrivate::qt_builtin_clzs(v) : 16U;
|
||||
@@ -844,7 +846,7 @@ Q_DECL_RELAXED_CONSTEXPR inline uint qCountLeadingZeroBits(quint16 v) Q_DECL_NOT
|
||||
#endif
|
||||
}
|
||||
|
||||
Q_DECL_RELAXED_CONSTEXPR inline uint qCountLeadingZeroBits(quint64 v) Q_DECL_NOTHROW
|
||||
QT_POPCOUNT_RELAXED_CONSTEXPR inline uint qCountLeadingZeroBits(quint64 v) Q_DECL_NOTHROW
|
||||
{
|
||||
#if defined(QT_HAS_BUILTIN_CLZLL)
|
||||
return v ? QAlgorithmsPrivate::qt_builtin_clzll(v) : 64U;
|
||||
@@ -859,7 +861,7 @@ Q_DECL_RELAXED_CONSTEXPR inline uint qCountLeadingZeroBits(quint64 v) Q_DECL_NOT
|
||||
#endif
|
||||
}
|
||||
|
||||
Q_DECL_RELAXED_CONSTEXPR inline uint qCountLeadingZeroBits(unsigned long v) Q_DECL_NOTHROW
|
||||
QT_POPCOUNT_RELAXED_CONSTEXPR inline uint qCountLeadingZeroBits(unsigned long v) Q_DECL_NOTHROW
|
||||
{
|
||||
return qCountLeadingZeroBits(QIntegerForSizeof<long>::Unsigned(v));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user