WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
274086
REGRESSION(
278410@main
): Fails to build with clang: error: _Float16 is not supported on this target
https://bugs.webkit.org/show_bug.cgi?id=274086
Summary
REGRESSION(278410@main): Fails to build with clang: error: _Float16 is not su...
Alberto Garcia
Reported
2024-05-13 07:29:20 PDT
I have reproduced this problem on at least i386 and s390x. x86_64 works fine. ---------------------------- Source/WTF/wtf/simde/arm/neon.h:8808:11: error: _Float16 is not supported on this target typedef _Float16 simde_float16; ^ Source/WTF/wtf/simde/arm/neon.h:34339:47: error: _Float16 is not supported on this target return simde_vceq_f16(a, simde_vdup_n_f16(SIMDE_FLOAT16_VALUE(0.0))); ^ Source/WTF/wtf/simde/arm/neon.h:8975:38: note: expanded from macro 'SIMDE_FLOAT16_VALUE' #define SIMDE_FLOAT16_VALUE(value) SIMDE_FLOAT16_C(value) ^ Source/WTF/wtf/simde/arm/neon.h:8813:55: note: expanded from macro 'SIMDE_FLOAT16_C' #define SIMDE_FLOAT16_C(value) HEDLEY_STATIC_CAST(_Float16, (value)) ^ ----------------------------
Attachments
Add attachment
proposed patch, testcase, etc.
Michael Catanzaro
Comment 1
2024-05-14 08:47:49 PDT
I can reproduce on s390x. This blocks updating to 2.45.1/2.45.2. At first I thought "surely wtf/simde/arm is not supposed to be built on non-ARM architectures" but actually it is; it's intended to provide the ARM APIs on non-ARM architectures. It seems the preprocessor tests in simde-f16.h will need some work.
Michael Catanzaro
Comment 2
2024-05-14 09:25:40 PDT
The problem is this branch
https://github.com/simd-everywhere/simde/blob/f046ab773733f09edaadec30345b592dfe85368e/simde/simde-f16.h#L86
is being taken improperly, for unknown reasons. The condition is very complex. I don't see this on i686. Maybe the i386 vs. i686 microarchitecture difference is relevant.
Michael Catanzaro
Comment 3
2024-05-14 12:37:03 PDT
(In reply to Michael Catanzaro from
comment #2
)
> I don't see this on i686. Maybe the i386 vs. i686 microarchitecture > difference is relevant.
I've been checking the GCC [1][2] and Clang [3] manuals, and the difference must be SSE2 instruction set. Debian probably does not enable it. Fedora does. [1]
https://gcc.gnu.org/onlinedocs/gcc/Floating-Types.html
[2]
https://gcc.gnu.org/onlinedocs/gcc/Half-Precision.html
[3]
https://clang.llvm.org/docs/LanguageExtensions.html#half-precision-floating-point
Alberto Garcia
Comment 4
2024-05-14 14:02:05 PDT
> the difference must be SSE2 instruction set. Debian probably does not enable it
Oh, I see, the i386 baseline in Debian is i686, which does not include SSE:
https://wiki.debian.org/ArchitectureSpecificsMemo#i386-1
When this started to cause problems with WebKitGTK I disabled anything that would produce such code. The idea was that all PC users should switch to a 64-bit OS, and anyone who was still running the 32-bit version was probably running very old hardware so compatibility was more important than performance.
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=930935
Michael Catanzaro
Comment 5
2024-05-14 14:30:49 PDT
I think it's broken only when using Clang rather than GCC. I've created a pull request at
https://github.com/simd-everywhere/simde/pull/1182
. There is a *lot* of upstream CI and I'm not expecting it all to pass; we'll see how it goes. Berto, give this a try please: diff --git a/Source/WTF/wtf/simde/arm/neon.h b/Source/WTF/wtf/simde/arm/neon.h index 1ecd8cf565f1..b6d0fdf4f5d1 100644 --- a/Source/WTF/wtf/simde/arm/neon.h +++ b/Source/WTF/wtf/simde/arm/neon.h @@ -8785,8 +8785,7 @@ SIMDE_BEGIN_DECLS_ defined(SIMDE_X86_AVX512FP16_NATIVE) || \ (defined(SIMDE_ARCH_X86_SSE2) && HEDLEY_GCC_VERSION_CHECK(12,0,0)) || \ (defined(SIMDE_ARCH_AARCH64) && HEDLEY_GCC_VERSION_CHECK(7,0,0) && !defined(__cplusplus)) || \ - ((defined(SIMDE_ARCH_X86) || defined(SIMDE_ARCH_AMD64)) && SIMDE_DETECT_CLANG_VERSION_CHECK(15,0,0)) || \ - (!(defined(SIMDE_ARCH_X86) || defined(SIMDE_ARCH_AMD64)) && SIMDE_DETECT_CLANG_VERSION_CHECK(6,0,0))) || \ + ((defined(SIMDE_ARCH_X86_SSE2) || defined(SIMDE_ARCH_AMD64)) && SIMDE_DETECT_CLANG_VERSION_CHECK(15,0,0))) || \ defined(SIMDE_ARCH_RISCV_ZVFH) /* We haven't found a better way to detect this. It seems like defining * __STDC_WANT_IEC_60559_TYPES_EXT__, then including float.h, then
Alberto Garcia
Comment 6
2024-05-15 03:06:35 PDT
> Berto, give this a try please
Tested in Debian experimental i386, it builds and works fine (on a VM at least).
Michael Catanzaro
Comment 7
2024-05-15 09:23:46 PDT
Pull request:
https://github.com/WebKit/WebKit/pull/28597
EWS
Comment 8
2024-05-15 12:16:15 PDT
Committed
278821@main
(3b302c530534): <
https://commits.webkit.org/278821@main
> Reviewed commits have been landed. Closing PR #28597 and removing active labels.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug