Author: Ben Langmuir Date: 2022-06-28T10:59:03-07:00 New Revision: eab2a06f0fde51eee6b1526bd301d60c4cc9b050
URL: https://github.com/llvm/llvm-project/commit/eab2a06f0fde51eee6b1526bd301d60c4cc9b050 DIFF: https://github.com/llvm/llvm-project/commit/eab2a06f0fde51eee6b1526bd301d60c4cc9b050.diff LOG: Revert "Reland "[X86] Support `_Float16` on SSE2 and up"" Broke compiler-rt on Darwin: https://green.lab.llvm.org/green/job/clang-stage1-RA/29920/ This reverts commit 527ef8ca981e88a35758c0e4143be6853ea26dfc. Added: clang/test/CodeGen/X86/avx512fp16-complex.c Modified: clang/docs/LanguageExtensions.rst clang/docs/ReleaseNotes.rst clang/lib/Basic/Targets/X86.cpp clang/test/Sema/Float16.c clang/test/Sema/conversion-target-dep.c clang/test/SemaCXX/Float16.cpp compiler-rt/test/builtins/CMakeLists.txt Removed: clang/test/CodeGen/X86/Float16-arithmetic.c clang/test/CodeGen/X86/Float16-complex.c ################################################################################ diff --git a/clang/docs/LanguageExtensions.rst b/clang/docs/LanguageExtensions.rst index 1bac2aee84bd9..af697fafd8c41 100644 --- a/clang/docs/LanguageExtensions.rst +++ b/clang/docs/LanguageExtensions.rst @@ -743,13 +743,7 @@ targets pending ABI standardization: * 64-bit ARM (AArch64) * AMDGPU * SPIR -* X86 (see below) - -On X86 targets, ``_Float16`` is supported as long as SSE2 is available, which -includes all 64-bit and all recent 32-bit processors. When the target supports -AVX512-FP16, ``_Float16`` arithmetic is performed using that native support. -Otherwise, ``_Float16`` arithmetic is performed by promoting to ``float``, -performing the operation, and then truncating to ``_Float16``. +* X86 (Only available under feature AVX512-FP16) ``_Float16`` will be supported on more targets as they define ABIs for it. diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst index 733f10a7e4d1a..3e29987ad2631 100644 --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -514,9 +514,6 @@ X86 Support in Clang - Support ``-mharden-sls=[none|all|return|indirect-jmp]`` for straight-line speculation hardening. -- Support for the ``_Float16`` type has been added for all targets with SSE2. - When AVX512-FP16 is not available, arithmetic on ``_Float16`` is emulated - using ``float``. DWARF Support in Clang ---------------------- diff --git a/clang/lib/Basic/Targets/X86.cpp b/clang/lib/Basic/Targets/X86.cpp index 0b3d87837ef6a..b83b3517ddf90 100644 --- a/clang/lib/Basic/Targets/X86.cpp +++ b/clang/lib/Basic/Targets/X86.cpp @@ -239,6 +239,7 @@ bool X86TargetInfo::handleTargetFeatures(std::vector<std::string> &Features, HasAVX512ER = true; } else if (Feature == "+avx512fp16") { HasAVX512FP16 = true; + HasFloat16 = true; } else if (Feature == "+avx512pf") { HasAVX512PF = true; } else if (Feature == "+avx512dq") { @@ -354,9 +355,6 @@ bool X86TargetInfo::handleTargetFeatures(std::vector<std::string> &Features, .Default(NoSSE); SSELevel = std::max(SSELevel, Level); - // Turn on _float16 for x86 (feature sse2) - HasFloat16 = SSELevel >= SSE2; - MMX3DNowEnum ThreeDNowLevel = llvm::StringSwitch<MMX3DNowEnum>(Feature) .Case("+3dnowa", AMD3DNowAthlon) .Case("+3dnow", AMD3DNow) diff --git a/clang/test/CodeGen/X86/Float16-arithmetic.c b/clang/test/CodeGen/X86/Float16-arithmetic.c deleted file mode 100644 index 726da22a22b08..0000000000000 --- a/clang/test/CodeGen/X86/Float16-arithmetic.c +++ /dev/null @@ -1,29 +0,0 @@ -// RUN: %clang_cc1 -triple x86_64-unknown-unknown \ -// RUN: -emit-llvm -o - %s | FileCheck %s --check-prefixes=CHECK - -// CHECK-NOT: fpext -// CHECK-NOT: fptrunc - -_Float16 add1(_Float16 a, _Float16 b) { - return a + b; -} - -_Float16 add2(_Float16 a, _Float16 b, _Float16 c) { - return a + b + c; -} - -_Float16 div(_Float16 a, _Float16 b) { - return a / b; -} - -_Float16 mul(_Float16 a, _Float16 b) { - return a * b; -} - -_Float16 add_and_mul1(_Float16 a, _Float16 b, _Float16 c, _Float16 d) { - return a * b + c * d; -} - -_Float16 add_and_mul2(_Float16 a, _Float16 b, _Float16 c, _Float16 d) { - return (a - 6 * b) + c; -} diff --git a/clang/test/CodeGen/X86/Float16-complex.c b/clang/test/CodeGen/X86/avx512fp16-complex.c similarity index 96% rename from clang/test/CodeGen/X86/Float16-complex.c rename to clang/test/CodeGen/X86/avx512fp16-complex.c index ebb290c976e7d..8a6b50eb0056b 100644 --- a/clang/test/CodeGen/X86/Float16-complex.c +++ b/clang/test/CodeGen/X86/avx512fp16-complex.c @@ -1,5 +1,4 @@ // RUN: %clang_cc1 %s -O0 -emit-llvm -triple x86_64-unknown-unknown -target-feature +avx512fp16 -o - | FileCheck %s --check-prefix=X86 -// RUN: %clang_cc1 %s -O0 -emit-llvm -triple x86_64-unknown-unknown -o - | FileCheck %s --check-prefix=X86 _Float16 _Complex add_half_rr(_Float16 a, _Float16 b) { // X86-LABEL: @add_half_rr( diff --git a/clang/test/Sema/Float16.c b/clang/test/Sema/Float16.c index 26c604fed27aa..f0b94666f74d7 100644 --- a/clang/test/Sema/Float16.c +++ b/clang/test/Sema/Float16.c @@ -1,6 +1,5 @@ -// RUN: %clang_cc1 -fsyntax-only -verify -triple i686-linux-pc %s -// RUN: %clang_cc1 -fsyntax-only -verify -triple i686-linux-pc -target-feature +sse2 %s -DHAVE -// RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64-linux-pc %s -DHAVE +// RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64-linux-pc %s +// RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64-linux-pc -target-feature +avx512fp16 %s -DHAVE // RUN: %clang_cc1 -fsyntax-only -verify -triple spir-unknown-unknown %s -DHAVE // RUN: %clang_cc1 -fsyntax-only -verify -triple armv7a-linux-gnu %s -DHAVE // RUN: %clang_cc1 -fsyntax-only -verify -triple aarch64-linux-gnu %s -DHAVE diff --git a/clang/test/Sema/conversion-target-dep.c b/clang/test/Sema/conversion-target-dep.c index 1b22cb8209343..958a4d8b1f076 100644 --- a/clang/test/Sema/conversion-target-dep.c +++ b/clang/test/Sema/conversion-target-dep.c @@ -6,7 +6,7 @@ long double ld; double d; -_Float16 f16; +_Float16 f16; // x86-error {{_Float16 is not supported on this target}} int main(void) { ld = d; // x86-warning {{implicit conversion increases floating-point precision: 'double' to 'long double'}} diff --git a/clang/test/SemaCXX/Float16.cpp b/clang/test/SemaCXX/Float16.cpp index 61b02a50687b9..f27c3839854e1 100644 --- a/clang/test/SemaCXX/Float16.cpp +++ b/clang/test/SemaCXX/Float16.cpp @@ -1,6 +1,4 @@ -// RUN: %clang_cc1 -fsyntax-only -verify -triple i686-linux-pc %s -// RUN: %clang_cc1 -fsyntax-only -verify -triple i686-linux-pc -target-feature +sse2 %s -DHAVE -// RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64-linux-pc %s -DHAVE +// RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64-linux-pc %s // RUN: %clang_cc1 -fsyntax-only -verify -triple spir-unknown-unknown %s -DHAVE // RUN: %clang_cc1 -fsyntax-only -verify -triple armv7a-linux-gnu %s -DHAVE // RUN: %clang_cc1 -fsyntax-only -verify -triple aarch64-linux-gnu %s -DHAVE diff --git a/compiler-rt/test/builtins/CMakeLists.txt b/compiler-rt/test/builtins/CMakeLists.txt index 23d9bf021cd81..d56ffc69763b6 100644 --- a/compiler-rt/test/builtins/CMakeLists.txt +++ b/compiler-rt/test/builtins/CMakeLists.txt @@ -44,7 +44,7 @@ foreach(arch ${BUILTIN_TEST_ARCH}) string(REPLACE ";" " " BUILTINS_TEST_TARGET_CFLAGS "${BUILTINS_TEST_TARGET_CFLAGS}") endif() - if (${arch} MATCHES "arm|aarch64|arm64|i?86|x86_64|AMD64" AND COMPILER_RT_HAS_FLOAT16) + if (${arch} MATCHES "arm|aarch64|arm64" AND COMPILER_RT_HAS_FLOAT16) list(APPEND BUILTINS_TEST_TARGET_CFLAGS -DCOMPILER_RT_HAS_FLOAT16) string(REPLACE ";" " " BUILTINS_TEST_TARGET_CFLAGS "${BUILTINS_TEST_TARGET_CFLAGS}") endif() _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits