[Mesa-dev] [PATCH 020/140] amdgpu/addrlib: add ADDR_ANALYSIS_ASSUME
Marek Olšák
maraeo at gmail.com
Mon Mar 20 22:42:30 UTC 2017
From: Nicolai Hähnle <nicolai.haehnle at amd.com>
It helps fix analysis warnings in MSC.
---
src/amd/addrlib/core/addrcommon.h | 26 ++++++++++++++++++--------
src/amd/addrlib/r800/egbaddrlib.cpp | 2 +-
src/amd/addrlib/r800/siaddrlib.cpp | 2 +-
3 files changed, 20 insertions(+), 10 deletions(-)
diff --git a/src/amd/addrlib/core/addrcommon.h b/src/amd/addrlib/core/addrcommon.h
index 60b3d81..019ebd0 100644
--- a/src/amd/addrlib/core/addrcommon.h
+++ b/src/amd/addrlib/core/addrcommon.h
@@ -152,30 +152,40 @@ union ADDR_CONFIG_FLAGS
#define ADDR_DBG_BREAK() { __debugbreak(); }
#endif
#else
#define ADDR_DBG_BREAK()
#endif
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
// Debug assertions used in AddrLib
///////////////////////////////////////////////////////////////////////////////////////////////////
+#if defined(_WIN32) && (_MSC_VER >= 1400)
+ #define ADDR_ANALYSIS_ASSUME(expr) __analysis_assume(expr)
+#else
+ #define ADDR_ANALYSIS_ASSUME(expr) do { } while (0)
+#endif
+
#if DEBUG
-#define ADDR_ASSERT(__e) if ( !((__e) ? TRUE : FALSE)) { ADDR_DBG_BREAK(); }
-#define ADDR_ASSERT_ALWAYS() ADDR_DBG_BREAK()
-#define ADDR_UNHANDLED_CASE() ADDR_ASSERT(!"Unhandled case")
-#define ADDR_NOT_IMPLEMENTED() ADDR_ASSERT(!"Not implemented");
+ #define ADDR_ASSERT(__e) \
+ do { \
+ ADDR_ANALYSIS_ASSUME(__e); \
+ if ( !((__e) ? TRUE : FALSE)) { ADDR_DBG_BREAK(); } \
+ } while (0)
+ #define ADDR_ASSERT_ALWAYS() ADDR_DBG_BREAK()
+ #define ADDR_UNHANDLED_CASE() ADDR_ASSERT(!"Unhandled case")
+ #define ADDR_NOT_IMPLEMENTED() ADDR_ASSERT(!"Not implemented");
#else //DEBUG
-#define ADDR_ASSERT(__e)
-#define ADDR_ASSERT_ALWAYS()
-#define ADDR_UNHANDLED_CASE()
-#define ADDR_NOT_IMPLEMENTED()
+ #define ADDR_ASSERT(__e) ADDR_ANALYSIS_ASSUME(__e)
+ #define ADDR_ASSERT_ALWAYS()
+ #define ADDR_UNHANDLED_CASE()
+ #define ADDR_NOT_IMPLEMENTED()
#endif //DEBUG
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
// Debug print macro from legacy address library
///////////////////////////////////////////////////////////////////////////////////////////////////
#if DEBUG
#define ADDR_PRNT(a) AddrObject::DebugPrint a
diff --git a/src/amd/addrlib/r800/egbaddrlib.cpp b/src/amd/addrlib/r800/egbaddrlib.cpp
index 03ae41f..64c0c62 100644
--- a/src/amd/addrlib/r800/egbaddrlib.cpp
+++ b/src/amd/addrlib/r800/egbaddrlib.cpp
@@ -4570,21 +4570,21 @@ UINT_64 EgBasedAddrLib::HwlGetSizeAdjustmentMicroTiled(
// Logical slice: pitch * height * bpp * numSamples (no 1D MSAA so actually numSamples == 1)
logicalSliceSize = BITS_TO_BYTES(static_cast<UINT_64>(pitch) * height * bpp * numSamples);
// Physical slice: multiplied by thickness
physicalSliceSize = logicalSliceSize * thickness;
//
// R800 will always pad physical slice size to baseAlign which is pipe_interleave_bytes
//
- ADDR_ASSERT((physicalSliceSize % baseAlign) == 0)
+ ADDR_ASSERT((physicalSliceSize % baseAlign) == 0);
return logicalSliceSize;
}
/**
***************************************************************************************************
* EgBasedAddrLib::HwlStereoCheckRightOffsetPadding
*
* @brief
* check if the height needs extra padding for stereo right eye offset, to avoid swizzling
diff --git a/src/amd/addrlib/r800/siaddrlib.cpp b/src/amd/addrlib/r800/siaddrlib.cpp
index 296391a..5d725e6 100644
--- a/src/amd/addrlib/r800/siaddrlib.cpp
+++ b/src/amd/addrlib/r800/siaddrlib.cpp
@@ -2144,21 +2144,21 @@ UINT_32 SiAddrLib::HwlPreAdjustBank(
if (((pTileInfo->pipeConfig == ADDR_PIPECFG_P4_32x32) ||
(pTileInfo->pipeConfig == ADDR_PIPECFG_P8_32x64_32x32)) && (pTileInfo->bankWidth == 1))
{
UINT_32 bankBit0 = _BIT(bank, 0);
UINT_32 x4 = _BIT(tileX, 1);
UINT_32 x5 = _BIT(tileX, 2);
bankBit0 = bankBit0 ^ x4 ^ x5;
bank |= bankBit0;
- ADDR_ASSERT(pTileInfo->macroAspectRatio > 1)
+ ADDR_ASSERT(pTileInfo->macroAspectRatio > 1);
}
return bank;
}
/**
***************************************************************************************************
* SiAddrLib::HwlComputeSurfaceInfo
*
* @brief
--
2.7.4
More information about the mesa-dev
mailing list