diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2024-05-03 18:27:47 +0200 |
---|---|---|
committer | Matt Arsenault <arsenm2@gmail.com> | 2024-05-03 18:29:46 +0200 |
commit | c7ad12d0d7606b0b9fb531b0b273bdc5f1490ddb (patch) | |
tree | a8af58ae2a7fe9c9f043c576ba077a3cab4be8e2 | |
parent | 0faf494200860c307ba473114df6e50f7da1b52a (diff) |
AMDGPU: Try to fix build error with old gcc
-rw-r--r-- | llvm/lib/Target/AMDGPU/SIModeRegisterDefaults.cpp | 106 | ||||
-rw-r--r-- | llvm/lib/Target/AMDGPU/SIModeRegisterDefaults.h | 7 |
2 files changed, 57 insertions, 56 deletions
diff --git a/llvm/lib/Target/AMDGPU/SIModeRegisterDefaults.cpp b/llvm/lib/Target/AMDGPU/SIModeRegisterDefaults.cpp index f03fd0b1f408..72bffc8400fa 100644 --- a/llvm/lib/Target/AMDGPU/SIModeRegisterDefaults.cpp +++ b/llvm/lib/Target/AMDGPU/SIModeRegisterDefaults.cpp @@ -234,56 +234,62 @@ constexpr uint64_t AMDGPU::FltRoundToHWConversionTable = encodeFltRoundsToHWTable(HWTowardNegative, HWTowardPositive, TowardNegativeF32_TowardPositiveF64); +/// Read the hardware rounding mode equivalent of a AMDGPUFltRounds value. +static constexpr uint32_t +decodeFltRoundToHWConversionTable(uint64_t FltRoundToHWConversionTable, + uint32_t FltRounds) { + uint32_t IndexVal = FltRounds; + if (IndexVal > TowardNegative) + IndexVal -= ExtendedFltRoundOffset; + return (FltRoundToHWConversionTable >> (IndexVal << 2)) & 0xf; +} + +uint32_t AMDGPU::decodeFltRoundToHWConversionTable(uint32_t FltRounds) { + return ::decodeFltRoundToHWConversionTable(FltRoundToHWConversionTable, + FltRounds); +} + +static constexpr uint32_t decodeFltRoundToHW(uint32_t FltRounds) { + return ::decodeFltRoundToHWConversionTable(FltRoundToHWConversionTable, + FltRounds); +} + // Verify evaluation of FltRoundToHWConversionTable -static_assert(decodeFltRoundToHWConversionTable(AMDGPUFltRounds::TowardZero) == +static_assert(decodeFltRoundToHW(AMDGPUFltRounds::TowardZero) == getModeRegisterRoundMode(HWTowardZero, HWTowardZero)); -static_assert( - decodeFltRoundToHWConversionTable(AMDGPUFltRounds::NearestTiesToEven) == - getModeRegisterRoundMode(HWNearestTiesToEven, HWNearestTiesToEven)); -static_assert( - decodeFltRoundToHWConversionTable(AMDGPUFltRounds::TowardPositive) == - getModeRegisterRoundMode(HWTowardPositive, HWTowardPositive)); -static_assert( - decodeFltRoundToHWConversionTable(AMDGPUFltRounds::TowardNegative) == - getModeRegisterRoundMode(HWTowardNegative, HWTowardNegative)); - -static_assert( - decodeFltRoundToHWConversionTable(NearestTiesToEvenF32_TowardPositiveF64) == - getModeRegisterRoundMode(HWNearestTiesToEven, HWTowardPositive)); -static_assert( - decodeFltRoundToHWConversionTable(NearestTiesToEvenF32_TowardNegativeF64) == - getModeRegisterRoundMode(HWNearestTiesToEven, HWTowardNegative)); -static_assert( - decodeFltRoundToHWConversionTable(NearestTiesToEvenF32_TowardZeroF64) == - getModeRegisterRoundMode(HWNearestTiesToEven, HWTowardZero)); - -static_assert( - decodeFltRoundToHWConversionTable(TowardPositiveF32_NearestTiesToEvenF64) == - getModeRegisterRoundMode(HWTowardPositive, HWNearestTiesToEven)); -static_assert( - decodeFltRoundToHWConversionTable(TowardPositiveF32_TowardNegativeF64) == - getModeRegisterRoundMode(HWTowardPositive, HWTowardNegative)); -static_assert( - decodeFltRoundToHWConversionTable(TowardPositiveF32_TowardZeroF64) == - getModeRegisterRoundMode(HWTowardPositive, HWTowardZero)); - -static_assert( - decodeFltRoundToHWConversionTable(TowardNegativeF32_NearestTiesToEvenF64) == - getModeRegisterRoundMode(HWTowardNegative, HWNearestTiesToEven)); -static_assert( - decodeFltRoundToHWConversionTable(TowardNegativeF32_TowardPositiveF64) == - getModeRegisterRoundMode(HWTowardNegative, HWTowardPositive)); -static_assert( - decodeFltRoundToHWConversionTable(TowardNegativeF32_TowardZeroF64) == - getModeRegisterRoundMode(HWTowardNegative, HWTowardZero)); - -static_assert( - decodeFltRoundToHWConversionTable(TowardZeroF32_NearestTiesToEvenF64) == - getModeRegisterRoundMode(HWTowardZero, HWNearestTiesToEven)); -static_assert( - decodeFltRoundToHWConversionTable(TowardZeroF32_TowardPositiveF64) == - getModeRegisterRoundMode(HWTowardZero, HWTowardPositive)); -static_assert( - decodeFltRoundToHWConversionTable(TowardZeroF32_TowardNegativeF64) == - getModeRegisterRoundMode(HWTowardZero, HWTowardNegative)); +static_assert(decodeFltRoundToHW(AMDGPUFltRounds::NearestTiesToEven) == + getModeRegisterRoundMode(HWNearestTiesToEven, + HWNearestTiesToEven)); +static_assert(decodeFltRoundToHW(AMDGPUFltRounds::TowardPositive) == + getModeRegisterRoundMode(HWTowardPositive, HWTowardPositive)); +static_assert(decodeFltRoundToHW(AMDGPUFltRounds::TowardNegative) == + getModeRegisterRoundMode(HWTowardNegative, HWTowardNegative)); + +static_assert(decodeFltRoundToHW(NearestTiesToEvenF32_TowardPositiveF64) == + getModeRegisterRoundMode(HWNearestTiesToEven, HWTowardPositive)); +static_assert(decodeFltRoundToHW(NearestTiesToEvenF32_TowardNegativeF64) == + getModeRegisterRoundMode(HWNearestTiesToEven, HWTowardNegative)); +static_assert(decodeFltRoundToHW(NearestTiesToEvenF32_TowardZeroF64) == + getModeRegisterRoundMode(HWNearestTiesToEven, HWTowardZero)); + +static_assert(decodeFltRoundToHW(TowardPositiveF32_NearestTiesToEvenF64) == + getModeRegisterRoundMode(HWTowardPositive, HWNearestTiesToEven)); +static_assert(decodeFltRoundToHW(TowardPositiveF32_TowardNegativeF64) == + getModeRegisterRoundMode(HWTowardPositive, HWTowardNegative)); +static_assert(decodeFltRoundToHW(TowardPositiveF32_TowardZeroF64) == + getModeRegisterRoundMode(HWTowardPositive, HWTowardZero)); + +static_assert(decodeFltRoundToHW(TowardNegativeF32_NearestTiesToEvenF64) == + getModeRegisterRoundMode(HWTowardNegative, HWNearestTiesToEven)); +static_assert(decodeFltRoundToHW(TowardNegativeF32_TowardPositiveF64) == + getModeRegisterRoundMode(HWTowardNegative, HWTowardPositive)); +static_assert(decodeFltRoundToHW(TowardNegativeF32_TowardZeroF64) == + getModeRegisterRoundMode(HWTowardNegative, HWTowardZero)); + +static_assert(decodeFltRoundToHW(TowardZeroF32_NearestTiesToEvenF64) == + getModeRegisterRoundMode(HWTowardZero, HWNearestTiesToEven)); +static_assert(decodeFltRoundToHW(TowardZeroF32_TowardPositiveF64) == + getModeRegisterRoundMode(HWTowardZero, HWTowardPositive)); +static_assert(decodeFltRoundToHW(TowardZeroF32_TowardNegativeF64) == + getModeRegisterRoundMode(HWTowardZero, HWTowardNegative)); diff --git a/llvm/lib/Target/AMDGPU/SIModeRegisterDefaults.h b/llvm/lib/Target/AMDGPU/SIModeRegisterDefaults.h index 1bfb5add50f7..c86678a73253 100644 --- a/llvm/lib/Target/AMDGPU/SIModeRegisterDefaults.h +++ b/llvm/lib/Target/AMDGPU/SIModeRegisterDefaults.h @@ -149,12 +149,7 @@ extern const uint64_t FltRoundConversionTable; extern const uint64_t FltRoundToHWConversionTable; /// Read the hardware rounding mode equivalent of a AMDGPUFltRounds value. -constexpr uint32_t decodeFltRoundToHWConversionTable(uint32_t FltRounds) { - uint32_t IndexVal = FltRounds; - if (IndexVal > TowardNegative) - IndexVal -= ExtendedFltRoundOffset; - return (FltRoundToHWConversionTable >> (IndexVal << 2)) & 0xf; -} +uint32_t decodeFltRoundToHWConversionTable(uint32_t FltRounds); } // end namespace AMDGPU |