Use portable _Float128 instead of __float128. Fix ARM64 builds.#326
Open
N-Storm wants to merge 2 commits intopreda:masterfrom
Open
Use portable _Float128 instead of __float128. Fix ARM64 builds.#326N-Storm wants to merge 2 commits intopreda:masterfrom
N-Storm wants to merge 2 commits intopreda:masterfrom
Conversation
From https://gcc.gnu.org/onlinedocs/gcc/Floating-Types.html: > __float128 is available on i386, x86_64, IA-64, LoongArch and hppa HP-UX, as well as on PowerPC GNU/Linux targets that enable the vector scalar (VSX) instruction set. __float128 supports the 128-bit floating type. On i386, x86_64, PowerPC, LoongArch and IA-64, other than HP-UX, __float128 is an alias for _Float128. On hppa and IA-64 HP-UX, __float128 is an alias for long double. I.e. __float128 aren't portable, as it's not available on every platform. ARM64 aka aarch64 are the example platform without __float128. While _Float128 are standard and main platforms just alias __float128 to _Float128 anyways. This fixes building for ARM64 with GCC at least (tested under Ubuntu 25.x / gcc-14.x)
Contributor
|
Maybe update the CI to test on ARM as well. For example, update this line for Linux: gpuowl/.github/workflows/ci.yml Line 16 in d12753e os: [ubuntu-22.04, ubuntu-24.04, ubuntu-22.04-arm, ubuntu-24.04-arm]and this line for macOS: gpuowl/.github/workflows/ci.yml Line 91 in d12753e runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-13, macos-latest]
fail-fast: falseYou may need to remove the hardcoded GCC 14 as well. |
|
I don't think f128 is used anywhere currently. Perhaps it can be deleted? Use of f128 was supposedly introduced in 817a983, but I think it's been reverted somewhere down the line. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Hello,
( This fixes currently broken builds for ARM64 arch. )
From https://gcc.gnu.org/onlinedocs/gcc/Floating-Types.html:
I.e. __float128 aren't portable, as it's not available on every platform. ARM64 aka aarch64 are the example platform without __float128. While _Float128 are standard and main platforms just alias __float128 to _Float128 anyways.
This fixes building for ARM64 with GCC. I've tested under Ubuntu 25.x / gcc-14.x and main branch for prpll.
In case there are some reasons to have __float128 here, I can change this patch to add conditional alias __float128 -> _Float128 only if aarch64 macro defined.