-
Notifications
You must be signed in to change notification settings - Fork 11.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[X86][clang] 128bit floating-point operations in x86 machines #77401
Comments
@llvm/issue-subscribers-backend-x86 Author: Longsheng Mou (CoTinker)
testcase:
compile command:
compile in x86_64 will return normally, but x86 output Fail. |
Technically you need to enable FENV_ACCESS for this program |
#pragma STDC FENV_ACCESS ON |
@arsenm Hi, enable FENV_ACCESS still fail. Does FENV_ACCESS supported in |
CC @brad0 |
https://godbolt.org/z/4KbaWcvsG I see the asm, clang x86 with |
CC @hvdijk |
I think it should work the same as x64 |
In fact, not work! I guess float128 (long double) not align to 16 in x86-32. |
Do you have any idea about this problem? |
Correct |
So sad :( |
|
What Info I get from gdb debug is that in function but not used in In this case,
|
https://godbolt.org/z/48GcPM5xM If we disable |
Just as a note, LLVM and GCC are ABI-incompatible on x86 MinGW. I think it is GCC doing the wrong thing here, opened https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115054 (unrelated to this issue, but possibly relevant for testing) |
@beetrees clarified that this is a stack alignment issue in rust-lang/compiler-builtins#622 (comment):
Table 2.1 specifies |
With the `compiler-builtins` update to 0.1.137 [1], we now provide symbols necessary to work with `f128` everywhere. This means that we are no longer restricted to 64-bit linux, and can enable tests by default. There are still a handful of platforms that need to remain disabled because of bugs. This patch additionally disables the following: 1. MIPS [2] 2. 32-bit x86 [3] Math support is still off by default since those symbols are not yet available. [1]: rust-lang#132433 [2]: llvm/llvm-project#96432 [3]: llvm/llvm-project#77401
With the `compiler-builtins` update to 0.1.137 [1], we now provide symbols necessary to work with `f128` everywhere. This means that we are no longer restricted to 64-bit linux, and can enable tests by default. There are still a handful of platforms that need to remain disabled because of bugs. This patch additionally disables the following: 1. MIPS [2] 2. 32-bit x86 [3] Math support is still off by default since those symbols are not yet available. [1]: rust-lang#132433 [2]: llvm/llvm-project#96432 [3]: llvm/llvm-project#77401
With the `compiler-builtins` update to 0.1.137 [1], we now provide symbols necessary to work with `f128` everywhere. This means that we are no longer restricted to 64-bit linux, and can enable tests by default. There are still a handful of platforms that need to remain disabled because of bugs. This patch additionally disables the following: 1. MIPS [2] 2. 32-bit x86 [3] Math support is still off by default since those symbols are not yet available. [1]: rust-lang#132433 [2]: llvm/llvm-project#96432 [3]: llvm/llvm-project#77401
testcase:
compile command:
compile in x86_64 will return normally, but x86 output Fail.
https://godbolt.org/z/vhdsMhd8d
The text was updated successfully, but these errors were encountered: