Skip to content

Commit c7ad12d

Browse files
committed
AMDGPU: Try to fix build error with old gcc
1 parent 0faf494 commit c7ad12d

File tree

2 files changed

+57
-56
lines changed

2 files changed

+57
-56
lines changed

llvm/lib/Target/AMDGPU/SIModeRegisterDefaults.cpp

Lines changed: 56 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -234,56 +234,62 @@ constexpr uint64_t AMDGPU::FltRoundToHWConversionTable =
234234
encodeFltRoundsToHWTable(HWTowardNegative, HWTowardPositive,
235235
TowardNegativeF32_TowardPositiveF64);
236236

237+
/// Read the hardware rounding mode equivalent of a AMDGPUFltRounds value.
238+
static constexpr uint32_t
239+
decodeFltRoundToHWConversionTable(uint64_t FltRoundToHWConversionTable,
240+
uint32_t FltRounds) {
241+
uint32_t IndexVal = FltRounds;
242+
if (IndexVal > TowardNegative)
243+
IndexVal -= ExtendedFltRoundOffset;
244+
return (FltRoundToHWConversionTable >> (IndexVal << 2)) & 0xf;
245+
}
246+
247+
uint32_t AMDGPU::decodeFltRoundToHWConversionTable(uint32_t FltRounds) {
248+
return ::decodeFltRoundToHWConversionTable(FltRoundToHWConversionTable,
249+
FltRounds);
250+
}
251+
252+
static constexpr uint32_t decodeFltRoundToHW(uint32_t FltRounds) {
253+
return ::decodeFltRoundToHWConversionTable(FltRoundToHWConversionTable,
254+
FltRounds);
255+
}
256+
237257
// Verify evaluation of FltRoundToHWConversionTable
238258

239-
static_assert(decodeFltRoundToHWConversionTable(AMDGPUFltRounds::TowardZero) ==
259+
static_assert(decodeFltRoundToHW(AMDGPUFltRounds::TowardZero) ==
240260
getModeRegisterRoundMode(HWTowardZero, HWTowardZero));
241-
static_assert(
242-
decodeFltRoundToHWConversionTable(AMDGPUFltRounds::NearestTiesToEven) ==
243-
getModeRegisterRoundMode(HWNearestTiesToEven, HWNearestTiesToEven));
244-
static_assert(
245-
decodeFltRoundToHWConversionTable(AMDGPUFltRounds::TowardPositive) ==
246-
getModeRegisterRoundMode(HWTowardPositive, HWTowardPositive));
247-
static_assert(
248-
decodeFltRoundToHWConversionTable(AMDGPUFltRounds::TowardNegative) ==
249-
getModeRegisterRoundMode(HWTowardNegative, HWTowardNegative));
250-
251-
static_assert(
252-
decodeFltRoundToHWConversionTable(NearestTiesToEvenF32_TowardPositiveF64) ==
253-
getModeRegisterRoundMode(HWNearestTiesToEven, HWTowardPositive));
254-
static_assert(
255-
decodeFltRoundToHWConversionTable(NearestTiesToEvenF32_TowardNegativeF64) ==
256-
getModeRegisterRoundMode(HWNearestTiesToEven, HWTowardNegative));
257-
static_assert(
258-
decodeFltRoundToHWConversionTable(NearestTiesToEvenF32_TowardZeroF64) ==
259-
getModeRegisterRoundMode(HWNearestTiesToEven, HWTowardZero));
260-
261-
static_assert(
262-
decodeFltRoundToHWConversionTable(TowardPositiveF32_NearestTiesToEvenF64) ==
263-
getModeRegisterRoundMode(HWTowardPositive, HWNearestTiesToEven));
264-
static_assert(
265-
decodeFltRoundToHWConversionTable(TowardPositiveF32_TowardNegativeF64) ==
266-
getModeRegisterRoundMode(HWTowardPositive, HWTowardNegative));
267-
static_assert(
268-
decodeFltRoundToHWConversionTable(TowardPositiveF32_TowardZeroF64) ==
269-
getModeRegisterRoundMode(HWTowardPositive, HWTowardZero));
270-
271-
static_assert(
272-
decodeFltRoundToHWConversionTable(TowardNegativeF32_NearestTiesToEvenF64) ==
273-
getModeRegisterRoundMode(HWTowardNegative, HWNearestTiesToEven));
274-
static_assert(
275-
decodeFltRoundToHWConversionTable(TowardNegativeF32_TowardPositiveF64) ==
276-
getModeRegisterRoundMode(HWTowardNegative, HWTowardPositive));
277-
static_assert(
278-
decodeFltRoundToHWConversionTable(TowardNegativeF32_TowardZeroF64) ==
279-
getModeRegisterRoundMode(HWTowardNegative, HWTowardZero));
280-
281-
static_assert(
282-
decodeFltRoundToHWConversionTable(TowardZeroF32_NearestTiesToEvenF64) ==
283-
getModeRegisterRoundMode(HWTowardZero, HWNearestTiesToEven));
284-
static_assert(
285-
decodeFltRoundToHWConversionTable(TowardZeroF32_TowardPositiveF64) ==
286-
getModeRegisterRoundMode(HWTowardZero, HWTowardPositive));
287-
static_assert(
288-
decodeFltRoundToHWConversionTable(TowardZeroF32_TowardNegativeF64) ==
289-
getModeRegisterRoundMode(HWTowardZero, HWTowardNegative));
261+
static_assert(decodeFltRoundToHW(AMDGPUFltRounds::NearestTiesToEven) ==
262+
getModeRegisterRoundMode(HWNearestTiesToEven,
263+
HWNearestTiesToEven));
264+
static_assert(decodeFltRoundToHW(AMDGPUFltRounds::TowardPositive) ==
265+
getModeRegisterRoundMode(HWTowardPositive, HWTowardPositive));
266+
static_assert(decodeFltRoundToHW(AMDGPUFltRounds::TowardNegative) ==
267+
getModeRegisterRoundMode(HWTowardNegative, HWTowardNegative));
268+
269+
static_assert(decodeFltRoundToHW(NearestTiesToEvenF32_TowardPositiveF64) ==
270+
getModeRegisterRoundMode(HWNearestTiesToEven, HWTowardPositive));
271+
static_assert(decodeFltRoundToHW(NearestTiesToEvenF32_TowardNegativeF64) ==
272+
getModeRegisterRoundMode(HWNearestTiesToEven, HWTowardNegative));
273+
static_assert(decodeFltRoundToHW(NearestTiesToEvenF32_TowardZeroF64) ==
274+
getModeRegisterRoundMode(HWNearestTiesToEven, HWTowardZero));
275+
276+
static_assert(decodeFltRoundToHW(TowardPositiveF32_NearestTiesToEvenF64) ==
277+
getModeRegisterRoundMode(HWTowardPositive, HWNearestTiesToEven));
278+
static_assert(decodeFltRoundToHW(TowardPositiveF32_TowardNegativeF64) ==
279+
getModeRegisterRoundMode(HWTowardPositive, HWTowardNegative));
280+
static_assert(decodeFltRoundToHW(TowardPositiveF32_TowardZeroF64) ==
281+
getModeRegisterRoundMode(HWTowardPositive, HWTowardZero));
282+
283+
static_assert(decodeFltRoundToHW(TowardNegativeF32_NearestTiesToEvenF64) ==
284+
getModeRegisterRoundMode(HWTowardNegative, HWNearestTiesToEven));
285+
static_assert(decodeFltRoundToHW(TowardNegativeF32_TowardPositiveF64) ==
286+
getModeRegisterRoundMode(HWTowardNegative, HWTowardPositive));
287+
static_assert(decodeFltRoundToHW(TowardNegativeF32_TowardZeroF64) ==
288+
getModeRegisterRoundMode(HWTowardNegative, HWTowardZero));
289+
290+
static_assert(decodeFltRoundToHW(TowardZeroF32_NearestTiesToEvenF64) ==
291+
getModeRegisterRoundMode(HWTowardZero, HWNearestTiesToEven));
292+
static_assert(decodeFltRoundToHW(TowardZeroF32_TowardPositiveF64) ==
293+
getModeRegisterRoundMode(HWTowardZero, HWTowardPositive));
294+
static_assert(decodeFltRoundToHW(TowardZeroF32_TowardNegativeF64) ==
295+
getModeRegisterRoundMode(HWTowardZero, HWTowardNegative));

llvm/lib/Target/AMDGPU/SIModeRegisterDefaults.h

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -149,12 +149,7 @@ extern const uint64_t FltRoundConversionTable;
149149
extern const uint64_t FltRoundToHWConversionTable;
150150

151151
/// Read the hardware rounding mode equivalent of a AMDGPUFltRounds value.
152-
constexpr uint32_t decodeFltRoundToHWConversionTable(uint32_t FltRounds) {
153-
uint32_t IndexVal = FltRounds;
154-
if (IndexVal > TowardNegative)
155-
IndexVal -= ExtendedFltRoundOffset;
156-
return (FltRoundToHWConversionTable >> (IndexVal << 2)) & 0xf;
157-
}
152+
uint32_t decodeFltRoundToHWConversionTable(uint32_t FltRounds);
158153

159154
} // end namespace AMDGPU
160155

0 commit comments

Comments
 (0)