From e20f4b1bbacbe7a5a3d9038caeb5e185f99bb565 Mon Sep 17 00:00:00 2001 From: Matthias Klose Date: Mon, 11 Dec 2023 22:56:07 +0100 Subject: [PATCH 01/19] * libclang1-17: Remove the full version symlinks. --- debian/changelog | 6 ++++++ debian/libclang1-X.Y.links.in | 3 --- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index 38179801..fd9d2af8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +llvm-toolchain-17 (1:17.0.6-3) UNRELEASED; urgency=medium + + * libclang1-17: Remove the full version symlinks. + + -- Matthias Klose Mon, 11 Dec 2023 22:54:48 +0100 + llvm-toolchain-17 (1:17.0.6-2) unstable; urgency=medium [ Gianfranco Costamagna ] diff --git a/debian/libclang1-X.Y.links.in b/debian/libclang1-X.Y.links.in index 91a1ca2d..5c1051d0 100644 --- a/debian/libclang1-X.Y.links.in +++ b/debian/libclang1-X.Y.links.in @@ -3,6 +3,3 @@ usr/lib/@DEB_HOST_MULTIARCH@/libclang-@LLVM_VERSION@.so.@LLVM_VERSION@ usr/lib/@ usr/lib/@DEB_HOST_MULTIARCH@/libclang-@LLVM_VERSION@.so.@LLVM_VERSION@ usr/lib/llvm-@LLVM_VERSION@/lib/libclang-@LLVM_VERSION@.so.@LLVM_VERSION@ usr/lib/@DEB_HOST_MULTIARCH@/libclang-@LLVM_VERSION@.so.@LLVM_VERSION@ usr/lib/llvm-@LLVM_VERSION@/lib/libclang-@LLVM_VERSION@.so.1 usr/lib/llvm-@LLVM_VERSION@/lib/libclang-@LLVM_VERSION@.so.@LLVM_VERSION@ usr/lib/llvm-@LLVM_VERSION@/lib/libclang.so.1 -# one link for the last soname with the full version -usr/lib/@DEB_HOST_MULTIARCH@/libclang-@LLVM_VERSION@.so.@LLVM_VERSION@ usr/lib/@DEB_HOST_MULTIARCH@/libclang-@LLVM_VERSION@.so.17.0.5 -usr/lib/@DEB_HOST_MULTIARCH@/libclang-@LLVM_VERSION@.so.@LLVM_VERSION@ usr/lib/@DEB_HOST_MULTIARCH@/libclang-@LLVM_VERSION@.so.17.0.4 From 4c6dc0ef68d36e337f58923e095995c6a8a1e370 Mon Sep 17 00:00:00 2001 From: Faidon Liambotis Date: Fri, 5 Jan 2024 17:48:32 +0200 Subject: [PATCH 02/19] Add libc++-*-dev -> libc++abi-*-dev dependency libc++abi-*-dev is necessary when using libc++-*-dev: $ apt install clang-17 libc++-17-dev $ clang++-17 -stdlib=libc++ -o hello hello.cpp /usr/bin/ld: cannot find -lc++abi: No such file or directory clang++-17: error: linker command failed with exit code 1 (use -v to see invocation) Note that the libc++1-* -> libc++abi-* dependency already exists. --- debian/control | 1 + debian/control.in | 1 + 2 files changed, 2 insertions(+) diff --git a/debian/control b/debian/control index b58c452d..b49af158 100644 --- a/debian/control +++ b/debian/control @@ -678,6 +678,7 @@ Section: libdevel Architecture: any Multi-Arch: same Depends: libc++1-17 (= ${binary:Version}), ${misc:Depends}, + libc++abi-17-dev (= ${binary:Version}), libunwind-17-dev [amd64 arm64 armhf i386 loong64 ppc64el ppc64 riscv64] Breaks: libc++-dev (<< 44), libc++abi-17-dev (<< 1:17.0.6-2) Provides: libc++-x.y-dev diff --git a/debian/control.in b/debian/control.in index f83a0c73..7ea86a76 100644 --- a/debian/control.in +++ b/debian/control.in @@ -678,6 +678,7 @@ Section: libdevel Architecture: any Multi-Arch: same Depends: libc++1-@LLVM_VERSION@ (= ${binary:Version}), ${misc:Depends}, + libc++abi-@LLVM_VERSION@-dev (= ${binary:Version}), libunwind-@LLVM_VERSION@-dev [amd64 arm64 armhf i386 loong64 ppc64el ppc64 riscv64] Breaks: libc++-dev (<< 44), libc++abi-@LLVM_VERSION@-dev (<< 1:17.0.6-2) Provides: libc++-x.y-dev From 400d89390891a1e95eb15837baca64bf000a352b Mon Sep 17 00:00:00 2001 From: Faidon Liambotis Date: Fri, 5 Jan 2024 17:30:57 +0200 Subject: [PATCH 03/19] Enable COMPILER_RT_DEFAULT_TARGET_ONLY for all archs This commit does two things in one go: 1) Enable COMPILER_RT_DEFAULT_TARGET_ONLY for i386 and amd64: Right now i386/amd64 are building compiler-rt for each other, in addition to themselves.: - libclang-rt-17-dev:amd64 is also shipping the i386 builtins, and Depending on libc6-i386:amd64/lib32stdc++:amd64. - libclang-rt-17-dev:i386 is also shipping the x86_64 built-ins, and Depending on libc6-amd64:i386/lib64stdc++6:i386/lib64atomic1:i386. Beyond the extra cruft in files and dependencies, this means that the amd64/i386 packages are shipping conflicting files, and dpkg is refusing to unpack one in the presence of the other (an RC bug in itself). This is also identified by the multiarch hinter with the following message: libclang-rt-17-dev conflicts on 78 files starting with /usr/lib/llvm-17/lib/clang/17/lib/linux/ on amd64 <-> i386 Let users who want to build e.g. 32-bit binaries in amd64 use multi-arch for this use case, by installing libclang-rt-17-dev:i386. The alternative would be to support multi-lib, and ship additional packages such as libclang-rt-17-dev-i386:amd64 (and vice-versa), but this feels like an overkill. Multi-lib remains still a possibility with (Debian's) clang's default, libgcc (lib32gcc/lib64gcc) as well. 2) Enable COMPILER_RT_DEFAULT_TARGET_ONLY unconditionally: This was being passed in an opt-in basis, via STAGE_ALL_CMAKE_EXTRA for the following architectures: * armel * armhf * powerpc * sparc * sparc64 * s390x * mips64el * hurd-i386 So, with i386/amd64 also opting-in, this leaves only a few remaining Debian architectures. Furthermore, upon inspecting compiler-rt/cmake/base-config-ix.cmake, it looks like the only architectures that are actually building for additional (non-default) targets are i386, amd64, powerpc (note: not ppc64el!), mips*, and arm. Turns out we've disabled that for all of them now. Therefore, pass COMPILER_RT_DEFAULT_TARGET_ONLY=ON to all architectures unconditionally, and thus reduce an additional variation factor. --- debian/rules | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/debian/rules b/debian/rules index 6f953d47..0fd35b24 100755 --- a/debian/rules +++ b/debian/rules @@ -173,7 +173,6 @@ export CXX=g++-$(GCC_VERSION) ifneq (,$(findstring $(DEB_HOST_ARCH),armel)) STAGE_ALL_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=arm-linux-gnueabi - STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON # align arch profile with debian baseline # https://wiki.debian.org/ArmEabiPort CFLAGS_EXTRA += -march=armv5t @@ -189,7 +188,6 @@ endif ifneq (,$(findstring $(DEB_HOST_ARCH),armhf)) STAGE_ALL_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=arm-linux-gnueabihf - STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON # align arch profile with debian baseline # https://wiki.debian.org/ArmHardFloatPort#Minimum_CPU_.26_FPU CFLAGS_EXTRA += -march=armv7-a -mfpu=vfpv3-d16 @@ -210,7 +208,6 @@ endif ifneq (,$(filter $(DEB_HOST_ARCH),powerpc)) STAGE_ALL_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=powerpc-linux-gnu - STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON endif # debug symbols OOM in Ubuntu Ubuntu and slows down build process. @@ -222,19 +219,16 @@ endif ifneq (,$(filter $(DEB_HOST_ARCH),sparc)) STAGE_ALL_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=sparc-linux-gnu - STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON STAGE_ALL_CMAKE_EXTRA += -DLLVM_PARALLEL_LINK_JOBS=4 endif ifneq (,$(filter $(DEB_HOST_ARCH),sparc64)) STAGE_ALL_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=sparc64-linux-gnu - STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON STAGE_ALL_CMAKE_EXTRA += -DLLVM_PARALLEL_LINK_JOBS=4 endif ifneq (,$(filter $(DEB_HOST_ARCH),s390x)) STAGE_ALL_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=s390x-linux-gnu - STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON LIBCXX_EXCEPTIONS := OFF # disable compiler-rt builtins (not supported for s390x) STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_BUILD_BUILTINS=OFF @@ -243,7 +237,6 @@ ifneq (,$(filter $(DEB_HOST_ARCH),s390x)) endif ifneq (,$(filter $(DEB_HOST_ARCH),mips64el)) - STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_BUILD_BUILTINS=OFF COMPILER_RT_USE_BUILTINS_LIBRARY := OFF LIBCXX_USE_COMPILER_RT := OFF @@ -258,7 +251,6 @@ ifneq (,$(filter $(DEB_HOST_ARCH),x32)) endif ifneq (,$(filter $(DEB_HOST_ARCH),hurd-i386)) - STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON endif ifeq ($(shell dpkg --compare-versions $(shell dpkg-query -W -f '$${Version}' g++-$(GCC_VERSION)) ge 4.8-20121128-1~ ; echo $$?),0) @@ -756,6 +748,7 @@ endif -DCOMPILER_RT_INCLUDE_TESTS=OFF \ -DCOMPILER_RT_USE_LIBCXX=OFF \ -DCOMPILER_RT_USE_BUILTINS_LIBRARY=$(COMPILER_RT_USE_BUILTINS_LIBRARY) \ + -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON \ -DLIBUNWIND_USE_COMPILER_RT=ON \ -DLIBUNWIND_INSTALL_LIBRARY=OFF \ -DLIBCXXABI_ENABLE_EXCEPTIONS=$(LIBCXX_EXCEPTIONS) \ @@ -777,7 +770,7 @@ endif -DRUNTIMES_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE_1_CFLAGS);-DCMAKE_CXX_FLAGS=$(STAGE_1_CXXFLAGS);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE_1_LDFLAGS);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE_1_LDFLAGS);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE_1_LDFLAGS);-DCMAKE_BUILD_TYPE=Release;-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \ -DCLANG_ENABLE_BOOTSTRAP=ON \ -DCLANG_BOOTSTRAP_TARGETS="$(ENABLED_STAGE2_CMAKE_BUILD_TARGETS)" \ - -DCLANG_BOOTSTRAP_PASSTHROUGH="CMAKE_INSTALL_PREFIX;CMAKE_SUPPRESS_REGENERATION;ENABLE_LINKER_BUILD_ID;LLVM_ENABLE_PIC;LLVM_ENABLE_RTTI;LLVM_INCLUDE_GO_TESTS;LLVM_USE_RELATIVE_PATHS_IN_FILES;CLANG_DEFAULT_LINKER;CLANG_DEFAULT_CXX_STDLIB;CLANG_DEFAULT_RTLIB;COMPILER_RT_USE_LIBCXX;COMPILER_RT_USE_BUILTINS_LIBRARY;COMPILER_RT_INCLUDE_TESTS;LIBUNWIND_USE_COMPILER_RT;LIBCXXABI_ENABLE_EXCEPTIONS;LIBCXXABI_USE_COMPILER_RT;LIBCXX_USE_COMPILER_RT;LIBCXX_ENABLE_EXCEPTIONS;LIBCXX_ENABLE_STATIC_ABI_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY;LIBOMP_ENABLE_RTTI;LLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN;CLANG_FORCE_MATCHING_LIBCLANG_SOVERSION;CMAKE_C_COMPILER_LAUNCHER;CMAKE_CXX_COMPILER_LAUNCHER" \ + -DCLANG_BOOTSTRAP_PASSTHROUGH="CMAKE_INSTALL_PREFIX;CMAKE_SUPPRESS_REGENERATION;ENABLE_LINKER_BUILD_ID;LLVM_ENABLE_PIC;LLVM_ENABLE_RTTI;LLVM_INCLUDE_GO_TESTS;LLVM_USE_RELATIVE_PATHS_IN_FILES;CLANG_DEFAULT_LINKER;CLANG_DEFAULT_CXX_STDLIB;CLANG_DEFAULT_RTLIB;COMPILER_RT_USE_LIBCXX;COMPILER_RT_USE_BUILTINS_LIBRARY;COMPILER_RT_DEFAULT_TARGET_ONLY;COMPILER_RT_INCLUDE_TESTS;LIBUNWIND_USE_COMPILER_RT;LIBCXXABI_ENABLE_EXCEPTIONS;LIBCXXABI_USE_COMPILER_RT;LIBCXX_USE_COMPILER_RT;LIBCXX_ENABLE_EXCEPTIONS;LIBCXX_ENABLE_STATIC_ABI_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY;LIBOMP_ENABLE_RTTI;LLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN;CLANG_FORCE_MATCHING_LIBCLANG_SOVERSION;CMAKE_C_COMPILER_LAUNCHER;CMAKE_CXX_COMPILER_LAUNCHER" \ -DBOOTSTRAP_CMAKE_BUILD_TYPE=RelWithDebInfo \ -DBOOTSTRAP_CMAKE_C_FLAGS_RELWITHDEBINFO="$(opt_flags)" \ -DBOOTSTRAP_CMAKE_CXX_FLAGS_RELWITHDEBINFO="$(opt_flags)" \ From 1b0abffef7149d26f5c0cb6480bfc7016b1673ee Mon Sep 17 00:00:00 2001 From: Faidon Liambotis Date: Fri, 5 Jan 2024 17:41:12 +0200 Subject: [PATCH 04/19] Enable COMPILER_RT_BUILD_BUILTINS for armel According to upstream commit aadec60ad9b81f00cf6fcdcbff61f1144d206769, starting with LLVM 17, armv4t is now supported. (untested) --- debian/rules | 3 --- 1 file changed, 3 deletions(-) diff --git a/debian/rules b/debian/rules index 6f953d47..027183e7 100755 --- a/debian/rules +++ b/debian/rules @@ -178,9 +178,6 @@ ifneq (,$(findstring $(DEB_HOST_ARCH),armel)) # https://wiki.debian.org/ArmEabiPort CFLAGS_EXTRA += -march=armv5t CXXFLAGS_EXTRA += -march=armv5t -# disable compiler-rt builtins (not supported for baseline armel arch: armv5t) -# See http://lists.llvm.org/pipermail/llvm-dev/2016-May/099761.html - STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_BUILD_BUILTINS=OFF COMPILER_RT_USE_BUILTINS_LIBRARY := OFF LIBCXX_USE_COMPILER_RT := OFF # disable scudo standalone (not supported for baseline armel arch: armv5t) From 7b0348cfde0ba338fff190925a573a30bd7214d3 Mon Sep 17 00:00:00 2001 From: Faidon Liambotis Date: Sat, 6 Jan 2024 08:59:02 +0200 Subject: [PATCH 05/19] Drop two unreferenced debian/patches sparc/sparc-D98574-clang-def.patch and sparc/sparc-D98575-compiler-rt.patch are not in debian/patches/series so it's safe to drop them. D98574 is now merged, D98575 is abandoned, due to it being fixed elsewhere, so there's no chance they're going to be revived either. --- .../sparc/sparc-D98574-clang-def.patch | 3762 ----------------- .../sparc/sparc-D98575-compiler-rt.patch | 17 - 2 files changed, 3779 deletions(-) delete mode 100644 debian/patches/sparc/sparc-D98574-clang-def.patch delete mode 100644 debian/patches/sparc/sparc-D98575-compiler-rt.patch diff --git a/debian/patches/sparc/sparc-D98574-clang-def.patch b/debian/patches/sparc/sparc-D98574-clang-def.patch deleted file mode 100644 index 9f7fd837..00000000 --- a/debian/patches/sparc/sparc-D98574-clang-def.patch +++ /dev/null @@ -1,3762 +0,0 @@ ---- llvm-toolchain-12-12.0.1~+rc1.orig/clang/lib/Basic/Targets/Sparc.cpp -+++ llvm-toolchain-12-12.0.1~+rc1/clang/lib/Basic/Targets/Sparc.cpp -@@ -156,8 +156,6 @@ void SparcV8TargetInfo::getTargetDefines - Builder.defineMacro("__sparcv8__"); - break; - case CG_V9: -- Builder.defineMacro("__sparcv9"); -- Builder.defineMacro("__sparcv9__"); - Builder.defineMacro("__sparc_v9__"); - break; - } -@@ -239,13 +237,25 @@ void SparcV8TargetInfo::getTargetDefines - void SparcV9TargetInfo::getTargetDefines(const LangOptions &Opts, - MacroBuilder &Builder) const { - SparcTargetInfo::getTargetDefines(Opts, Builder); -- Builder.defineMacro("__sparcv9"); - Builder.defineMacro("__arch64__"); -- // Solaris doesn't need these variants, but the BSDs do. -- if (getTriple().getOS() != llvm::Triple::Solaris) { -+ switch (getTriple().getOS()) { -+ case llvm::Triple::Linux: -+ Builder.defineMacro("__sparc_v9__"); -+ break; -+ case llvm::Triple::FreeBSD: -+ case llvm::Triple::NetBSD: - Builder.defineMacro("__sparc64__"); - Builder.defineMacro("__sparc_v9__"); -+ Builder.defineMacro("__sparcv9"); -+ break; -+ case llvm::Triple::OpenBSD: -+ Builder.defineMacro("__sparc64__"); - Builder.defineMacro("__sparcv9__"); -+ Builder.defineMacro("__sparc_v9__"); -+ break; -+ case llvm::Triple::Solaris: -+ Builder.defineMacro("__sparcv9"); -+ break; - } - - Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1"); ---- llvm-toolchain-12-12.0.1~+rc1.orig/clang/test/Preprocessor/predefined-arch-macros.c -+++ llvm-toolchain-12-12.0.1~+rc1/clang/test/Preprocessor/predefined-arch-macros.c -@@ -3418,11 +3418,8 @@ - // CHECK_SPARC: #define __BIG_ENDIAN__ 1 - // CHECK_SPARC: #define __sparc 1 - // CHECK_SPARC: #define __sparc__ 1 --// CHECK_SPARC-NOT: #define __sparcv9 1 --// CHECK_SPARC-NOT: #define __sparcv9__ 1 - // CHECK_SPARC: #define __sparcv8 1 --// CHECK_SPARC-NOT: #define __sparcv9 1 --// CHECK_SPARC-NOT: #define __sparcv9__ 1 -+// CHECK_SPARC-NOT: #define __sparc_v9__ 1 - - // RUN: %clang -mcpu=v9 -E -dM %s -o - 2>&1 \ - // RUN: -target sparc-unknown-linux \ -@@ -3430,8 +3427,6 @@ - // CHECK_SPARC-V9-NOT: #define __sparcv8 1 - // CHECK_SPARC-V9-NOT: #define __sparcv8__ 1 - // CHECK_SPARC-V9: #define __sparc_v9__ 1 --// CHECK_SPARC-V9: #define __sparcv9 1 --// CHECK_SPARC-V9: #define __sparcv9__ 1 - - // RUN: %clang -E -dM %s -o - 2>&1 \ - // RUN: -target sparc-sun-solaris \ -@@ -3518,12 +3513,10 @@ - // RUN: -target sparcv9-unknown-linux \ - // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SPARCV9 - // CHECK_SPARCV9: #define __BIG_ENDIAN__ 1 -+// CHECK_SPARCV9: #define __arch64__ 1 - // CHECK_SPARCV9: #define __sparc 1 --// CHECK_SPARCV9: #define __sparc64__ 1 - // CHECK_SPARCV9: #define __sparc__ 1 - // CHECK_SPARCV9: #define __sparc_v9__ 1 --// CHECK_SPARCV9: #define __sparcv9 1 --// CHECK_SPARCV9: #define __sparcv9__ 1 - - // RUN: %clang -E -dM %s -o - 2>&1 \ - // RUN: -target sparcv9-unknown-linux \ ---- /dev/null -+++ llvm-toolchain-12-12.0.1~+rc1/clang/test/Preprocessor/predefined-arch-macros.c.orig -@@ -0,0 +1,3681 @@ -+// REQUIRES: amdgpu-registered-target -+// Begin X86/GCC/Linux tests ---------------- -+ -+// RUN: %clang -march=i386 -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_I386_M32 -+// CHECK_I386_M32: #define __LAHF_SAHF__ 1 -+// CHECK_I386_M32: #define __i386 1 -+// CHECK_I386_M32: #define __i386__ 1 -+// CHECK_I386_M32: #define __tune_i386__ 1 -+// CHECK_I386_M32: #define i386 1 -+// RUN: not %clang -march=i386 -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_I386_M64 -+// CHECK_I386_M64: error: {{.*}} -+ -+// RUN: %clang -march=i486 -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_I486_M32 -+// CHECK_I486_M32: #define __i386 1 -+// CHECK_I486_M32: #define __i386__ 1 -+// CHECK_I486_M32: #define __i486 1 -+// CHECK_I486_M32: #define __i486__ 1 -+// CHECK_I486_M32: #define __tune_i486__ 1 -+// CHECK_I486_M32: #define i386 1 -+// RUN: not %clang -march=i486 -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_I486_M64 -+// CHECK_I486_M64: error: {{.*}} -+ -+// RUN: %clang -march=i586 -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_I586_M32 -+// CHECK_I586_M32: #define __i386 1 -+// CHECK_I586_M32: #define __i386__ 1 -+// CHECK_I586_M32: #define __i586 1 -+// CHECK_I586_M32: #define __i586__ 1 -+// CHECK_I586_M32: #define __pentium 1 -+// CHECK_I586_M32: #define __pentium__ 1 -+// CHECK_I586_M32: #define __tune_i586__ 1 -+// CHECK_I586_M32: #define __tune_pentium__ 1 -+// CHECK_I586_M32: #define i386 1 -+// RUN: not %clang -march=i586 -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_I586_M64 -+// CHECK_I586_M64: error: {{.*}} -+ -+// RUN: %clang -march=pentium -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM_M32 -+// CHECK_PENTIUM_M32: #define __i386 1 -+// CHECK_PENTIUM_M32: #define __i386__ 1 -+// CHECK_PENTIUM_M32: #define __i586 1 -+// CHECK_PENTIUM_M32: #define __i586__ 1 -+// CHECK_PENTIUM_M32: #define __pentium 1 -+// CHECK_PENTIUM_M32: #define __pentium__ 1 -+// CHECK_PENTIUM_M32: #define __tune_i586__ 1 -+// CHECK_PENTIUM_M32: #define __tune_pentium__ 1 -+// CHECK_PENTIUM_M32: #define i386 1 -+// RUN: not %clang -march=pentium -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM_M64 -+// CHECK_PENTIUM_M64: error: {{.*}} -+ -+// RUN: %clang -march=pentium-mmx -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM_MMX_M32 -+// CHECK_PENTIUM_MMX_M32: #define __MMX__ 1 -+// CHECK_PENTIUM_MMX_M32: #define __i386 1 -+// CHECK_PENTIUM_MMX_M32: #define __i386__ 1 -+// CHECK_PENTIUM_MMX_M32: #define __i586 1 -+// CHECK_PENTIUM_MMX_M32: #define __i586__ 1 -+// CHECK_PENTIUM_MMX_M32: #define __pentium 1 -+// CHECK_PENTIUM_MMX_M32: #define __pentium__ 1 -+// CHECK_PENTIUM_MMX_M32: #define __pentium_mmx__ 1 -+// CHECK_PENTIUM_MMX_M32: #define __tune_i586__ 1 -+// CHECK_PENTIUM_MMX_M32: #define __tune_pentium__ 1 -+// CHECK_PENTIUM_MMX_M32: #define __tune_pentium_mmx__ 1 -+// CHECK_PENTIUM_MMX_M32: #define i386 1 -+// RUN: not %clang -march=pentium-mmx -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM_MMX_M64 -+// CHECK_PENTIUM_MMX_M64: error: {{.*}} -+ -+// RUN: %clang -march=winchip-c6 -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_WINCHIP_C6_M32 -+// CHECK_WINCHIP_C6_M32: #define __MMX__ 1 -+// CHECK_WINCHIP_C6_M32: #define __i386 1 -+// CHECK_WINCHIP_C6_M32: #define __i386__ 1 -+// CHECK_WINCHIP_C6_M32: #define __i486 1 -+// CHECK_WINCHIP_C6_M32: #define __i486__ 1 -+// CHECK_WINCHIP_C6_M32: #define __tune_i486__ 1 -+// CHECK_WINCHIP_C6_M32: #define i386 1 -+// RUN: not %clang -march=winchip-c6 -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_WINCHIP_C6_M64 -+// CHECK_WINCHIP_C6_M64: error: {{.*}} -+ -+// RUN: %clang -march=winchip2 -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_WINCHIP2_M32 -+// CHECK_WINCHIP2_M32: #define __3dNOW__ 1 -+// CHECK_WINCHIP2_M32: #define __MMX__ 1 -+// CHECK_WINCHIP2_M32: #define __i386 1 -+// CHECK_WINCHIP2_M32: #define __i386__ 1 -+// CHECK_WINCHIP2_M32: #define __i486 1 -+// CHECK_WINCHIP2_M32: #define __i486__ 1 -+// CHECK_WINCHIP2_M32: #define __tune_i486__ 1 -+// CHECK_WINCHIP2_M32: #define i386 1 -+// RUN: not %clang -march=winchip2 -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_WINCHIP2_M64 -+// CHECK_WINCHIP2_M64: error: {{.*}} -+ -+// RUN: %clang -march=c3 -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_C3_M32 -+// CHECK_C3_M32: #define __3dNOW__ 1 -+// CHECK_C3_M32: #define __MMX__ 1 -+// CHECK_C3_M32: #define __i386 1 -+// CHECK_C3_M32: #define __i386__ 1 -+// CHECK_C3_M32: #define __i486 1 -+// CHECK_C3_M32: #define __i486__ 1 -+// CHECK_C3_M32: #define __tune_i486__ 1 -+// CHECK_C3_M32: #define i386 1 -+// RUN: not %clang -march=c3 -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_C3_M64 -+// CHECK_C3_M64: error: {{.*}} -+ -+// RUN: %clang -march=c3-2 -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_C3_2_M32 -+// CHECK_C3_2_M32: #define __MMX__ 1 -+// CHECK_C3_2_M32: #define __SSE__ 1 -+// CHECK_C3_2_M32: #define __i386 1 -+// CHECK_C3_2_M32: #define __i386__ 1 -+// CHECK_C3_2_M32: #define __i686 1 -+// CHECK_C3_2_M32: #define __i686__ 1 -+// CHECK_C3_2_M32: #define __pentiumpro 1 -+// CHECK_C3_2_M32: #define __pentiumpro__ 1 -+// CHECK_C3_2_M32: #define __tune_i686__ 1 -+// CHECK_C3_2_M32: #define __tune_pentium2__ 1 -+// CHECK_C3_2_M32: #define __tune_pentiumpro__ 1 -+// CHECK_C3_2_M32: #define i386 1 -+// RUN: not %clang -march=c3-2 -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_C3_2_M64 -+// CHECK_C3_2_M64: error: {{.*}} -+ -+// RUN: %clang -march=i686 -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_I686_M32 -+// CHECK_I686_M32: #define __i386 1 -+// CHECK_I686_M32: #define __i386__ 1 -+// CHECK_I686_M32: #define __i686 1 -+// CHECK_I686_M32: #define __i686__ 1 -+// CHECK_I686_M32: #define __pentiumpro 1 -+// CHECK_I686_M32: #define __pentiumpro__ 1 -+// CHECK_I686_M32: #define __tune_i686__ 1 -+// CHECK_I686_M32: #define __tune_pentiumpro__ 1 -+// CHECK_I686_M32: #define i386 1 -+// RUN: not %clang -march=i686 -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_I686_M64 -+// CHECK_I686_M64: error: {{.*}} -+ -+// RUN: %clang -march=pentiumpro -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUMPRO_M32 -+// CHECK_PENTIUMPRO_M32: #define __i386 1 -+// CHECK_PENTIUMPRO_M32: #define __i386__ 1 -+// CHECK_PENTIUMPRO_M32: #define __i686 1 -+// CHECK_PENTIUMPRO_M32: #define __i686__ 1 -+// CHECK_PENTIUMPRO_M32: #define __pentiumpro 1 -+// CHECK_PENTIUMPRO_M32: #define __pentiumpro__ 1 -+// CHECK_PENTIUMPRO_M32: #define __tune_i686__ 1 -+// CHECK_PENTIUMPRO_M32: #define __tune_pentiumpro__ 1 -+// CHECK_PENTIUMPRO_M32: #define i386 1 -+// RUN: not %clang -march=pentiumpro -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUMPRO_M64 -+// CHECK_PENTIUMPRO_M64: error: {{.*}} -+ -+// RUN: %clang -march=pentium2 -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM2_M32 -+// CHECK_PENTIUM2_M32: #define __FXSR__ 1 -+// CHECK_PENTIUM2_M32: #define __MMX__ 1 -+// CHECK_PENTIUM2_M32: #define __i386 1 -+// CHECK_PENTIUM2_M32: #define __i386__ 1 -+// CHECK_PENTIUM2_M32: #define __i686 1 -+// CHECK_PENTIUM2_M32: #define __i686__ 1 -+// CHECK_PENTIUM2_M32: #define __pentiumpro 1 -+// CHECK_PENTIUM2_M32: #define __pentiumpro__ 1 -+// CHECK_PENTIUM2_M32: #define __tune_i686__ 1 -+// CHECK_PENTIUM2_M32: #define __tune_pentium2__ 1 -+// CHECK_PENTIUM2_M32: #define __tune_pentiumpro__ 1 -+// CHECK_PENTIUM2_M32: #define i386 1 -+// RUN: not %clang -march=pentium2 -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM2_M64 -+// CHECK_PENTIUM2_M64: error: {{.*}} -+ -+// RUN: %clang -march=pentium3 -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM3_M32 -+// CHECK_PENTIUM3_M32: #define __MMX__ 1 -+// CHECK_PENTIUM3_M32: #define __SSE__ 1 -+// CHECK_PENTIUM3_M32: #define __i386 1 -+// CHECK_PENTIUM3_M32: #define __i386__ 1 -+// CHECK_PENTIUM3_M32: #define __i686 1 -+// CHECK_PENTIUM3_M32: #define __i686__ 1 -+// CHECK_PENTIUM3_M32: #define __pentiumpro 1 -+// CHECK_PENTIUM3_M32: #define __pentiumpro__ 1 -+// CHECK_PENTIUM3_M32: #define __tune_i686__ 1 -+// CHECK_PENTIUM3_M32: #define __tune_pentium2__ 1 -+// CHECK_PENTIUM3_M32: #define __tune_pentium3__ 1 -+// CHECK_PENTIUM3_M32: #define __tune_pentiumpro__ 1 -+// CHECK_PENTIUM3_M32: #define i386 1 -+// RUN: not %clang -march=pentium3 -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM3_M64 -+// CHECK_PENTIUM3_M64: error: {{.*}} -+ -+// RUN: %clang -march=pentium3m -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM3M_M32 -+// CHECK_PENTIUM3M_M32: #define __MMX__ 1 -+// CHECK_PENTIUM3M_M32: #define __SSE__ 1 -+// CHECK_PENTIUM3M_M32: #define __i386 1 -+// CHECK_PENTIUM3M_M32: #define __i386__ 1 -+// CHECK_PENTIUM3M_M32: #define __i686 1 -+// CHECK_PENTIUM3M_M32: #define __i686__ 1 -+// CHECK_PENTIUM3M_M32: #define __pentiumpro 1 -+// CHECK_PENTIUM3M_M32: #define __pentiumpro__ 1 -+// CHECK_PENTIUM3M_M32: #define __tune_i686__ 1 -+// CHECK_PENTIUM3M_M32: #define __tune_pentiumpro__ 1 -+// CHECK_PENTIUM3M_M32: #define i386 1 -+// RUN: not %clang -march=pentium3m -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM3M_M64 -+// CHECK_PENTIUM3M_M64: error: {{.*}} -+ -+// RUN: %clang -march=pentium-m -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM_M_M32 -+// CHECK_PENTIUM_M_M32: #define __MMX__ 1 -+// CHECK_PENTIUM_M_M32: #define __SSE2__ 1 -+// CHECK_PENTIUM_M_M32: #define __SSE__ 1 -+// CHECK_PENTIUM_M_M32: #define __i386 1 -+// CHECK_PENTIUM_M_M32: #define __i386__ 1 -+// CHECK_PENTIUM_M_M32: #define __i686 1 -+// CHECK_PENTIUM_M_M32: #define __i686__ 1 -+// CHECK_PENTIUM_M_M32: #define __pentiumpro 1 -+// CHECK_PENTIUM_M_M32: #define __pentiumpro__ 1 -+// CHECK_PENTIUM_M_M32: #define __tune_i686__ 1 -+// CHECK_PENTIUM_M_M32: #define __tune_pentiumpro__ 1 -+// CHECK_PENTIUM_M_M32: #define i386 1 -+// RUN: not %clang -march=pentium-m -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM_M_M64 -+// CHECK_PENTIUM_M_M64: error: {{.*}} -+ -+// RUN: %clang -march=pentium4 -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM4_M32 -+// CHECK_PENTIUM4_M32: #define __MMX__ 1 -+// CHECK_PENTIUM4_M32: #define __SSE2__ 1 -+// CHECK_PENTIUM4_M32: #define __SSE__ 1 -+// CHECK_PENTIUM4_M32: #define __i386 1 -+// CHECK_PENTIUM4_M32: #define __i386__ 1 -+// CHECK_PENTIUM4_M32: #define __pentium4 1 -+// CHECK_PENTIUM4_M32: #define __pentium4__ 1 -+// CHECK_PENTIUM4_M32: #define __tune_pentium4__ 1 -+// CHECK_PENTIUM4_M32: #define i386 1 -+// RUN: not %clang -march=pentium4 -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM4_M64 -+// CHECK_PENTIUM4_M64: error: {{.*}} -+ -+// RUN: %clang -march=pentium4m -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM4M_M32 -+// CHECK_PENTIUM4M_M32: #define __MMX__ 1 -+// CHECK_PENTIUM4M_M32: #define __SSE2__ 1 -+// CHECK_PENTIUM4M_M32: #define __SSE__ 1 -+// CHECK_PENTIUM4M_M32: #define __i386 1 -+// CHECK_PENTIUM4M_M32: #define __i386__ 1 -+// CHECK_PENTIUM4M_M32: #define __pentium4 1 -+// CHECK_PENTIUM4M_M32: #define __pentium4__ 1 -+// CHECK_PENTIUM4M_M32: #define __tune_pentium4__ 1 -+// CHECK_PENTIUM4M_M32: #define i386 1 -+// RUN: not %clang -march=pentium4m -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PENTIUM4M_M64 -+// CHECK_PENTIUM4M_M64: error: {{.*}} -+ -+// RUN: %clang -march=yonah -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_YONAH_M32 -+// CHECK_YONAH_M32: #define __MMX__ 1 -+// CHECK_YONAH_M32: #define __SSE2__ 1 -+// CHECK_YONAH_M32: #define __SSE3__ 1 -+// CHECK_YONAH_M32: #define __SSE__ 1 -+// CHECK_YONAH_M32: #define __i386 1 -+// CHECK_YONAH_M32: #define __i386__ 1 -+// CHECK_YONAH_M32: #define __nocona 1 -+// CHECK_YONAH_M32: #define __nocona__ 1 -+// CHECK_YONAH_M32: #define __tune_nocona__ 1 -+// CHECK_YONAH_M32: #define i386 1 -+// RUN: not %clang -march=yonah -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_YONAH_M64 -+// CHECK_YONAH_M64: error: {{.*}} -+ -+// RUN: %clang -march=prescott -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PRESCOTT_M32 -+// CHECK_PRESCOTT_M32: #define __MMX__ 1 -+// CHECK_PRESCOTT_M32: #define __SSE2__ 1 -+// CHECK_PRESCOTT_M32: #define __SSE3__ 1 -+// CHECK_PRESCOTT_M32: #define __SSE__ 1 -+// CHECK_PRESCOTT_M32: #define __i386 1 -+// CHECK_PRESCOTT_M32: #define __i386__ 1 -+// CHECK_PRESCOTT_M32: #define __nocona 1 -+// CHECK_PRESCOTT_M32: #define __nocona__ 1 -+// CHECK_PRESCOTT_M32: #define __tune_nocona__ 1 -+// CHECK_PRESCOTT_M32: #define i386 1 -+// RUN: not %clang -march=prescott -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PRESCOTT_M64 -+// CHECK_PRESCOTT_M64: error: {{.*}} -+ -+// RUN: %clang -march=nocona -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_NOCONA_M32 -+// CHECK_NOCONA_M32: #define __MMX__ 1 -+// CHECK_NOCONA_M32: #define __SSE2__ 1 -+// CHECK_NOCONA_M32: #define __SSE3__ 1 -+// CHECK_NOCONA_M32: #define __SSE__ 1 -+// CHECK_NOCONA_M32: #define __i386 1 -+// CHECK_NOCONA_M32: #define __i386__ 1 -+// CHECK_NOCONA_M32: #define __nocona 1 -+// CHECK_NOCONA_M32: #define __nocona__ 1 -+// CHECK_NOCONA_M32: #define __tune_nocona__ 1 -+// CHECK_NOCONA_M32: #define i386 1 -+// RUN: %clang -march=nocona -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_NOCONA_M64 -+// CHECK_NOCONA_M64: #define __MMX__ 1 -+// CHECK_NOCONA_M64: #define __SSE2_MATH__ 1 -+// CHECK_NOCONA_M64: #define __SSE2__ 1 -+// CHECK_NOCONA_M64: #define __SSE3__ 1 -+// CHECK_NOCONA_M64: #define __SSE_MATH__ 1 -+// CHECK_NOCONA_M64: #define __SSE__ 1 -+// CHECK_NOCONA_M64: #define __amd64 1 -+// CHECK_NOCONA_M64: #define __amd64__ 1 -+// CHECK_NOCONA_M64: #define __nocona 1 -+// CHECK_NOCONA_M64: #define __nocona__ 1 -+// CHECK_NOCONA_M64: #define __tune_nocona__ 1 -+// CHECK_NOCONA_M64: #define __x86_64 1 -+// CHECK_NOCONA_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=core2 -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CORE2_M32 -+// CHECK_CORE2_M32: #define __MMX__ 1 -+// CHECK_CORE2_M32: #define __SSE2__ 1 -+// CHECK_CORE2_M32: #define __SSE3__ 1 -+// CHECK_CORE2_M32: #define __SSE__ 1 -+// CHECK_CORE2_M32: #define __SSSE3__ 1 -+// CHECK_CORE2_M32: #define __core2 1 -+// CHECK_CORE2_M32: #define __core2__ 1 -+// CHECK_CORE2_M32: #define __i386 1 -+// CHECK_CORE2_M32: #define __i386__ 1 -+// CHECK_CORE2_M32: #define __tune_core2__ 1 -+// CHECK_CORE2_M32: #define i386 1 -+ -+// RUN: %clang -march=core2 -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CORE2_M64 -+// CHECK_CORE2_M64: #define __MMX__ 1 -+// CHECK_CORE2_M64: #define __SSE2_MATH__ 1 -+// CHECK_CORE2_M64: #define __SSE2__ 1 -+// CHECK_CORE2_M64: #define __SSE3__ 1 -+// CHECK_CORE2_M64: #define __SSE_MATH__ 1 -+// CHECK_CORE2_M64: #define __SSE__ 1 -+// CHECK_CORE2_M64: #define __SSSE3__ 1 -+// CHECK_CORE2_M64: #define __amd64 1 -+// CHECK_CORE2_M64: #define __amd64__ 1 -+// CHECK_CORE2_M64: #define __core2 1 -+// CHECK_CORE2_M64: #define __core2__ 1 -+// CHECK_CORE2_M64: #define __tune_core2__ 1 -+// CHECK_CORE2_M64: #define __x86_64 1 -+// CHECK_CORE2_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=corei7 -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_COREI7_M32 -+// CHECK_COREI7_M32: #define __MMX__ 1 -+// CHECK_COREI7_M32: #define __POPCNT__ 1 -+// CHECK_COREI7_M32: #define __SSE2__ 1 -+// CHECK_COREI7_M32: #define __SSE3__ 1 -+// CHECK_COREI7_M32: #define __SSE4_1__ 1 -+// CHECK_COREI7_M32: #define __SSE4_2__ 1 -+// CHECK_COREI7_M32: #define __SSE__ 1 -+// CHECK_COREI7_M32: #define __SSSE3__ 1 -+// CHECK_COREI7_M32: #define __corei7 1 -+// CHECK_COREI7_M32: #define __corei7__ 1 -+// CHECK_COREI7_M32: #define __i386 1 -+// CHECK_COREI7_M32: #define __i386__ 1 -+// CHECK_COREI7_M32: #define __tune_corei7__ 1 -+// CHECK_COREI7_M32: #define i386 1 -+ -+// RUN: %clang -march=corei7 -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_COREI7_M64 -+// CHECK_COREI7_M64: #define __MMX__ 1 -+// CHECK_COREI7_M64: #define __POPCNT__ 1 -+// CHECK_COREI7_M64: #define __SSE2_MATH__ 1 -+// CHECK_COREI7_M64: #define __SSE2__ 1 -+// CHECK_COREI7_M64: #define __SSE3__ 1 -+// CHECK_COREI7_M64: #define __SSE4_1__ 1 -+// CHECK_COREI7_M64: #define __SSE4_2__ 1 -+// CHECK_COREI7_M64: #define __SSE_MATH__ 1 -+// CHECK_COREI7_M64: #define __SSE__ 1 -+// CHECK_COREI7_M64: #define __SSSE3__ 1 -+// CHECK_COREI7_M64: #define __amd64 1 -+// CHECK_COREI7_M64: #define __amd64__ 1 -+// CHECK_COREI7_M64: #define __corei7 1 -+// CHECK_COREI7_M64: #define __corei7__ 1 -+// CHECK_COREI7_M64: #define __tune_corei7__ 1 -+// CHECK_COREI7_M64: #define __x86_64 1 -+// CHECK_COREI7_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=corei7-avx -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_COREI7_AVX_M32 -+// CHECK_COREI7_AVX_M32: #define __AVX__ 1 -+// CHECK_COREI7_AVX_M32: #define __MMX__ 1 -+// CHECK_COREI7_AVX_M32: #define __PCLMUL__ 1 -+// CHECK_COREI7_AVX_M32-NOT: __RDRND__ -+// CHECK_COREI7_AVX_M32: #define __POPCNT__ 1 -+// CHECK_COREI7_AVX_M32: #define __SSE2__ 1 -+// CHECK_COREI7_AVX_M32: #define __SSE3__ 1 -+// CHECK_COREI7_AVX_M32: #define __SSE4_1__ 1 -+// CHECK_COREI7_AVX_M32: #define __SSE4_2__ 1 -+// CHECK_COREI7_AVX_M32: #define __SSE__ 1 -+// CHECK_COREI7_AVX_M32: #define __SSSE3__ 1 -+// CHECK_COREI7_AVX_M32: #define __XSAVEOPT__ 1 -+// CHECK_COREI7_AVX_M32: #define __XSAVE__ 1 -+// CHECK_COREI7_AVX_M32: #define __corei7 1 -+// CHECK_COREI7_AVX_M32: #define __corei7__ 1 -+// CHECK_COREI7_AVX_M32: #define __i386 1 -+// CHECK_COREI7_AVX_M32: #define __i386__ 1 -+// CHECK_COREI7_AVX_M32: #define __tune_corei7__ 1 -+// CHECK_COREI7_AVX_M32: #define i386 1 -+ -+// RUN: %clang -march=corei7-avx -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_COREI7_AVX_M64 -+// CHECK_COREI7_AVX_M64: #define __AVX__ 1 -+// CHECK_COREI7_AVX_M64: #define __MMX__ 1 -+// CHECK_COREI7_AVX_M64: #define __PCLMUL__ 1 -+// CHECK_COREI7_AVX_M64-NOT: __RDRND__ -+// CHECK_COREI7_AVX_M64: #define __POPCNT__ 1 -+// CHECK_COREI7_AVX_M64: #define __SSE2_MATH__ 1 -+// CHECK_COREI7_AVX_M64: #define __SSE2__ 1 -+// CHECK_COREI7_AVX_M64: #define __SSE3__ 1 -+// CHECK_COREI7_AVX_M64: #define __SSE4_1__ 1 -+// CHECK_COREI7_AVX_M64: #define __SSE4_2__ 1 -+// CHECK_COREI7_AVX_M64: #define __SSE_MATH__ 1 -+// CHECK_COREI7_AVX_M64: #define __SSE__ 1 -+// CHECK_COREI7_AVX_M64: #define __SSSE3__ 1 -+// CHECK_COREI7_AVX_M64: #define __XSAVEOPT__ 1 -+// CHECK_COREI7_AVX_M64: #define __XSAVE__ 1 -+// CHECK_COREI7_AVX_M64: #define __amd64 1 -+// CHECK_COREI7_AVX_M64: #define __amd64__ 1 -+// CHECK_COREI7_AVX_M64: #define __corei7 1 -+// CHECK_COREI7_AVX_M64: #define __corei7__ 1 -+// CHECK_COREI7_AVX_M64: #define __tune_corei7__ 1 -+// CHECK_COREI7_AVX_M64: #define __x86_64 1 -+// CHECK_COREI7_AVX_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=core-avx-i -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CORE_AVX_I_M32 -+// CHECK_CORE_AVX_I_M32: #define __AVX__ 1 -+// CHECK_CORE_AVX_I_M32: #define __F16C__ 1 -+// CHECK_CORE_AVX_I_M32: #define __MMX__ 1 -+// CHECK_CORE_AVX_I_M32: #define __PCLMUL__ 1 -+// CHECK_CORE_AVX_I_M32: #define __RDRND__ 1 -+// CHECK_CORE_AVX_I_M32: #define __SSE2__ 1 -+// CHECK_CORE_AVX_I_M32: #define __SSE3__ 1 -+// CHECK_CORE_AVX_I_M32: #define __SSE4_1__ 1 -+// CHECK_CORE_AVX_I_M32: #define __SSE4_2__ 1 -+// CHECK_CORE_AVX_I_M32: #define __SSE__ 1 -+// CHECK_CORE_AVX_I_M32: #define __SSSE3__ 1 -+// CHECK_CORE_AVX_I_M32: #define __XSAVEOPT__ 1 -+// CHECK_CORE_AVX_I_M32: #define __XSAVE__ 1 -+// CHECK_CORE_AVX_I_M32: #define __corei7 1 -+// CHECK_CORE_AVX_I_M32: #define __corei7__ 1 -+// CHECK_CORE_AVX_I_M32: #define __i386 1 -+// CHECK_CORE_AVX_I_M32: #define __i386__ 1 -+// CHECK_CORE_AVX_I_M32: #define __tune_corei7__ 1 -+// CHECK_CORE_AVX_I_M32: #define i386 1 -+ -+// RUN: %clang -march=core-avx-i -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CORE_AVX_I_M64 -+// CHECK_CORE_AVX_I_M64: #define __AVX__ 1 -+// CHECK_CORE_AVX_I_M64: #define __F16C__ 1 -+// CHECK_CORE_AVX_I_M64: #define __MMX__ 1 -+// CHECK_CORE_AVX_I_M64: #define __PCLMUL__ 1 -+// CHECK_CORE_AVX_I_M64: #define __RDRND__ 1 -+// CHECK_CORE_AVX_I_M64: #define __SSE2_MATH__ 1 -+// CHECK_CORE_AVX_I_M64: #define __SSE2__ 1 -+// CHECK_CORE_AVX_I_M64: #define __SSE3__ 1 -+// CHECK_CORE_AVX_I_M64: #define __SSE4_1__ 1 -+// CHECK_CORE_AVX_I_M64: #define __SSE4_2__ 1 -+// CHECK_CORE_AVX_I_M64: #define __SSE_MATH__ 1 -+// CHECK_CORE_AVX_I_M64: #define __SSE__ 1 -+// CHECK_CORE_AVX_I_M64: #define __SSSE3__ 1 -+// CHECK_CORE_AVX_I_M64: #define __XSAVEOPT__ 1 -+// CHECK_CORE_AVX_I_M64: #define __XSAVE__ 1 -+// CHECK_CORE_AVX_I_M64: #define __amd64 1 -+// CHECK_CORE_AVX_I_M64: #define __amd64__ 1 -+// CHECK_CORE_AVX_I_M64: #define __corei7 1 -+// CHECK_CORE_AVX_I_M64: #define __corei7__ 1 -+// CHECK_CORE_AVX_I_M64: #define __tune_corei7__ 1 -+// CHECK_CORE_AVX_I_M64: #define __x86_64 1 -+// CHECK_CORE_AVX_I_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=core-avx2 -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CORE_AVX2_M32 -+// CHECK_CORE_AVX2_M32: #define __AVX2__ 1 -+// CHECK_CORE_AVX2_M32: #define __AVX__ 1 -+// CHECK_CORE_AVX2_M32: #define __BMI2__ 1 -+// CHECK_CORE_AVX2_M32: #define __BMI__ 1 -+// CHECK_CORE_AVX2_M32: #define __F16C__ 1 -+// CHECK_CORE_AVX2_M32: #define __FMA__ 1 -+// CHECK_CORE_AVX2_M32: #define __INVPCID__ 1 -+// CHECK_CORE_AVX2_M32: #define __LAHF_SAHF__ 1 -+// CHECK_CORE_AVX2_M32: #define __LZCNT__ 1 -+// CHECK_CORE_AVX2_M32: #define __MMX__ 1 -+// CHECK_CORE_AVX2_M32: #define __MOVBE__ 1 -+// CHECK_CORE_AVX2_M32: #define __PCLMUL__ 1 -+// CHECK_CORE_AVX2_M32: #define __POPCNT__ 1 -+// CHECK_CORE_AVX2_M32: #define __RDRND__ 1 -+// CHECK_CORE_AVX2_M32: #define __SSE2__ 1 -+// CHECK_CORE_AVX2_M32: #define __SSE3__ 1 -+// CHECK_CORE_AVX2_M32: #define __SSE4_1__ 1 -+// CHECK_CORE_AVX2_M32: #define __SSE4_2__ 1 -+// CHECK_CORE_AVX2_M32: #define __SSE__ 1 -+// CHECK_CORE_AVX2_M32: #define __SSSE3__ 1 -+// CHECK_CORE_AVX2_M32: #define __XSAVEOPT__ 1 -+// CHECK_CORE_AVX2_M32: #define __XSAVE__ 1 -+// CHECK_CORE_AVX2_M32: #define __corei7 1 -+// CHECK_CORE_AVX2_M32: #define __corei7__ 1 -+// CHECK_CORE_AVX2_M32: #define __i386 1 -+// CHECK_CORE_AVX2_M32: #define __i386__ 1 -+// CHECK_CORE_AVX2_M32: #define __tune_corei7__ 1 -+// CHECK_CORE_AVX2_M32: #define i386 1 -+ -+// RUN: %clang -march=core-avx2 -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CORE_AVX2_M64 -+// CHECK_CORE_AVX2_M64: #define __AVX2__ 1 -+// CHECK_CORE_AVX2_M64: #define __AVX__ 1 -+// CHECK_CORE_AVX2_M64: #define __BMI2__ 1 -+// CHECK_CORE_AVX2_M64: #define __BMI__ 1 -+// CHECK_CORE_AVX2_M64: #define __F16C__ 1 -+// CHECK_CORE_AVX2_M64: #define __FMA__ 1 -+// CHECK_CORE_AVX2_M64: #define __INVPCID__ 1 -+// CHECK_CORE_AVX2_M64: #define __LAHF_SAHF__ 1 -+// CHECK_CORE_AVX2_M64: #define __LZCNT__ 1 -+// CHECK_CORE_AVX2_M64: #define __MMX__ 1 -+// CHECK_CORE_AVX2_M64: #define __MOVBE__ 1 -+// CHECK_CORE_AVX2_M64: #define __PCLMUL__ 1 -+// CHECK_CORE_AVX2_M64: #define __POPCNT__ 1 -+// CHECK_CORE_AVX2_M64: #define __RDRND__ 1 -+// CHECK_CORE_AVX2_M64: #define __SSE2_MATH__ 1 -+// CHECK_CORE_AVX2_M64: #define __SSE2__ 1 -+// CHECK_CORE_AVX2_M64: #define __SSE3__ 1 -+// CHECK_CORE_AVX2_M64: #define __SSE4_1__ 1 -+// CHECK_CORE_AVX2_M64: #define __SSE4_2__ 1 -+// CHECK_CORE_AVX2_M64: #define __SSE_MATH__ 1 -+// CHECK_CORE_AVX2_M64: #define __SSE__ 1 -+// CHECK_CORE_AVX2_M64: #define __SSSE3__ 1 -+// CHECK_CORE_AVX2_M64: #define __XSAVEOPT__ 1 -+// CHECK_CORE_AVX2_M64: #define __XSAVE__ 1 -+// CHECK_CORE_AVX2_M64: #define __amd64 1 -+// CHECK_CORE_AVX2_M64: #define __amd64__ 1 -+// CHECK_CORE_AVX2_M64: #define __corei7 1 -+// CHECK_CORE_AVX2_M64: #define __corei7__ 1 -+// CHECK_CORE_AVX2_M64: #define __tune_corei7__ 1 -+// CHECK_CORE_AVX2_M64: #define __x86_64 1 -+// CHECK_CORE_AVX2_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=broadwell -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BROADWELL_M32 -+// CHECK_BROADWELL_M32: #define __ADX__ 1 -+// CHECK_BROADWELL_M32: #define __AVX2__ 1 -+// CHECK_BROADWELL_M32: #define __AVX__ 1 -+// CHECK_BROADWELL_M32: #define __BMI2__ 1 -+// CHECK_BROADWELL_M32: #define __BMI__ 1 -+// CHECK_BROADWELL_M32: #define __F16C__ 1 -+// CHECK_BROADWELL_M32: #define __FMA__ 1 -+// CHECK_BROADWELL_M32: #define __INVPCID__ 1 -+// CHECK_BROADWELL_M32: #define __LAHF_SAHF__ 1 -+// CHECK_BROADWELL_M32: #define __LZCNT__ 1 -+// CHECK_BROADWELL_M32: #define __MMX__ 1 -+// CHECK_BROADWELL_M32: #define __MOVBE__ 1 -+// CHECK_BROADWELL_M32: #define __PCLMUL__ 1 -+// CHECK_BROADWELL_M32: #define __POPCNT__ 1 -+// CHECK_BROADWELL_M32: #define __PRFCHW__ 1 -+// CHECK_BROADWELL_M32: #define __RDRND__ 1 -+// CHECK_BROADWELL_M32: #define __RDSEED__ 1 -+// CHECK_BROADWELL_M32: #define __SSE2__ 1 -+// CHECK_BROADWELL_M32: #define __SSE3__ 1 -+// CHECK_BROADWELL_M32: #define __SSE4_1__ 1 -+// CHECK_BROADWELL_M32: #define __SSE4_2__ 1 -+// CHECK_BROADWELL_M32: #define __SSE__ 1 -+// CHECK_BROADWELL_M32: #define __SSSE3__ 1 -+// CHECK_BROADWELL_M32: #define __XSAVEOPT__ 1 -+// CHECK_BROADWELL_M32: #define __XSAVE__ 1 -+// CHECK_BROADWELL_M32: #define __corei7 1 -+// CHECK_BROADWELL_M32: #define __corei7__ 1 -+// CHECK_BROADWELL_M32: #define __i386 1 -+// CHECK_BROADWELL_M32: #define __i386__ 1 -+// CHECK_BROADWELL_M32: #define __tune_corei7__ 1 -+// CHECK_BROADWELL_M32: #define i386 1 -+ -+// RUN: %clang -march=broadwell -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BROADWELL_M64 -+// CHECK_BROADWELL_M64: #define __ADX__ 1 -+// CHECK_BROADWELL_M64: #define __AVX2__ 1 -+// CHECK_BROADWELL_M64: #define __AVX__ 1 -+// CHECK_BROADWELL_M64: #define __BMI2__ 1 -+// CHECK_BROADWELL_M64: #define __BMI__ 1 -+// CHECK_BROADWELL_M64: #define __F16C__ 1 -+// CHECK_BROADWELL_M64: #define __FMA__ 1 -+// CHECK_BROADWELL_M64: #define __INVPCID__ 1 -+// CHECK_BROADWELL_M64: #define __LAHF_SAHF__ 1 -+// CHECK_BROADWELL_M64: #define __LZCNT__ 1 -+// CHECK_BROADWELL_M64: #define __MMX__ 1 -+// CHECK_BROADWELL_M64: #define __MOVBE__ 1 -+// CHECK_BROADWELL_M64: #define __PCLMUL__ 1 -+// CHECK_BROADWELL_M64: #define __POPCNT__ 1 -+// CHECK_BROADWELL_M64: #define __PRFCHW__ 1 -+// CHECK_BROADWELL_M64: #define __RDRND__ 1 -+// CHECK_BROADWELL_M64: #define __RDSEED__ 1 -+// CHECK_BROADWELL_M64: #define __SSE2_MATH__ 1 -+// CHECK_BROADWELL_M64: #define __SSE2__ 1 -+// CHECK_BROADWELL_M64: #define __SSE3__ 1 -+// CHECK_BROADWELL_M64: #define __SSE4_1__ 1 -+// CHECK_BROADWELL_M64: #define __SSE4_2__ 1 -+// CHECK_BROADWELL_M64: #define __SSE_MATH__ 1 -+// CHECK_BROADWELL_M64: #define __SSE__ 1 -+// CHECK_BROADWELL_M64: #define __SSSE3__ 1 -+// CHECK_BROADWELL_M64: #define __XSAVEOPT__ 1 -+// CHECK_BROADWELL_M64: #define __XSAVE__ 1 -+// CHECK_BROADWELL_M64: #define __amd64 1 -+// CHECK_BROADWELL_M64: #define __amd64__ 1 -+// CHECK_BROADWELL_M64: #define __corei7 1 -+// CHECK_BROADWELL_M64: #define __corei7__ 1 -+// CHECK_BROADWELL_M64: #define __tune_corei7__ 1 -+// CHECK_BROADWELL_M64: #define __x86_64 1 -+// CHECK_BROADWELL_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=skylake -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SKL_M32 -+// CHECK_SKL_M32: #define __ADX__ 1 -+// CHECK_SKL_M32: #define __AES__ 1 -+// CHECK_SKL_M32: #define __AVX2__ 1 -+// CHECK_SKL_M32: #define __AVX__ 1 -+// CHECK_SKL_M32: #define __BMI2__ 1 -+// CHECK_SKL_M32: #define __BMI__ 1 -+// CHECK_SKL_M32: #define __CLFLUSHOPT__ 1 -+// CHECK_SKL_M32: #define __F16C__ 1 -+// CHECK_SKL_M32: #define __FMA__ 1 -+// CHECK_SKL_M32: #define __INVPCID__ 1 -+// CHECK_SKL_M32: #define __LZCNT__ 1 -+// CHECK_SKL_M32: #define __MMX__ 1 -+// CHECK_SKL_M32: #define __MOVBE__ 1 -+// CHECK_SKL_M32: #define __PCLMUL__ 1 -+// CHECK_SKL_M32: #define __POPCNT__ 1 -+// CHECK_SKL_M32: #define __PRFCHW__ 1 -+// CHECK_SKL_M32: #define __RDRND__ 1 -+// CHECK_SKL_M32: #define __RDSEED__ 1 -+// CHECK_SKL_M32: #define __SGX__ 1 -+// CHECK_SKL_M32: #define __SSE2__ 1 -+// CHECK_SKL_M32: #define __SSE3__ 1 -+// CHECK_SKL_M32: #define __SSE4_1__ 1 -+// CHECK_SKL_M32: #define __SSE4_2__ 1 -+// CHECK_SKL_M32: #define __SSE__ 1 -+// CHECK_SKL_M32: #define __SSSE3__ 1 -+// CHECK_SKL_M32: #define __XSAVEC__ 1 -+// CHECK_SKL_M32: #define __XSAVEOPT__ 1 -+// CHECK_SKL_M32: #define __XSAVES__ 1 -+// CHECK_SKL_M32: #define __XSAVE__ 1 -+// CHECK_SKL_M32: #define i386 1 -+ -+// RUN: %clang -march=skylake -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SKL_M64 -+// CHECK_SKL_M64: #define __ADX__ 1 -+// CHECK_SKL_M64: #define __AES__ 1 -+// CHECK_SKL_M64: #define __AVX2__ 1 -+// CHECK_SKL_M64: #define __AVX__ 1 -+// CHECK_SKL_M64: #define __BMI2__ 1 -+// CHECK_SKL_M64: #define __BMI__ 1 -+// CHECK_SKL_M64: #define __CLFLUSHOPT__ 1 -+// CHECK_SKL_M64: #define __F16C__ 1 -+// CHECK_SKL_M64: #define __FMA__ 1 -+// CHECK_SKL_M64: #define __INVPCID__ 1 -+// CHECK_SKL_M64: #define __LZCNT__ 1 -+// CHECK_SKL_M64: #define __MMX__ 1 -+// CHECK_SKL_M64: #define __MOVBE__ 1 -+// CHECK_SKL_M64: #define __PCLMUL__ 1 -+// CHECK_SKL_M64: #define __POPCNT__ 1 -+// CHECK_SKL_M64: #define __PRFCHW__ 1 -+// CHECK_SKL_M64: #define __RDRND__ 1 -+// CHECK_SKL_M64: #define __RDSEED__ 1 -+// CHECK_SKL_M64: #define __SGX__ 1 -+// CHECK_SKL_M64: #define __SSE2_MATH__ 1 -+// CHECK_SKL_M64: #define __SSE2__ 1 -+// CHECK_SKL_M64: #define __SSE3__ 1 -+// CHECK_SKL_M64: #define __SSE4_1__ 1 -+// CHECK_SKL_M64: #define __SSE4_2__ 1 -+// CHECK_SKL_M64: #define __SSE_MATH__ 1 -+// CHECK_SKL_M64: #define __SSE__ 1 -+// CHECK_SKL_M64: #define __SSSE3__ 1 -+// CHECK_SKL_M64: #define __XSAVEC__ 1 -+// CHECK_SKL_M64: #define __XSAVEOPT__ 1 -+// CHECK_SKL_M64: #define __XSAVES__ 1 -+// CHECK_SKL_M64: #define __XSAVE__ 1 -+// CHECK_SKL_M64: #define __amd64 1 -+// CHECK_SKL_M64: #define __amd64__ 1 -+// CHECK_SKL_M64: #define __x86_64 1 -+// CHECK_SKL_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=knl -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_KNL_M32 -+// CHECK_KNL_M32: #define __AES__ 1 -+// CHECK_KNL_M32: #define __AVX2__ 1 -+// CHECK_KNL_M32: #define __AVX512CD__ 1 -+// CHECK_KNL_M32: #define __AVX512ER__ 1 -+// CHECK_KNL_M32: #define __AVX512F__ 1 -+// CHECK_KNL_M32: #define __AVX512PF__ 1 -+// CHECK_KNL_M32: #define __AVX__ 1 -+// CHECK_KNL_M32: #define __BMI2__ 1 -+// CHECK_KNL_M32: #define __BMI__ 1 -+// CHECK_KNL_M32: #define __F16C__ 1 -+// CHECK_KNL_M32: #define __FMA__ 1 -+// CHECK_KNL_M32: #define __LZCNT__ 1 -+// CHECK_KNL_M32: #define __MMX__ 1 -+// CHECK_KNL_M32: #define __MOVBE__ 1 -+// CHECK_KNL_M32: #define __PCLMUL__ 1 -+// CHECK_KNL_M32: #define __POPCNT__ 1 -+// CHECK_KNL_M32: #define __PREFETCHWT1__ 1 -+// CHECK_KNL_M32: #define __PRFCHW__ 1 -+// CHECK_KNL_M32: #define __RDRND__ 1 -+// CHECK_KNL_M32: #define __SSE2__ 1 -+// CHECK_KNL_M32: #define __SSE3__ 1 -+// CHECK_KNL_M32: #define __SSE4_1__ 1 -+// CHECK_KNL_M32: #define __SSE4_2__ 1 -+// CHECK_KNL_M32: #define __SSE__ 1 -+// CHECK_KNL_M32: #define __SSSE3__ 1 -+// CHECK_KNL_M32: #define __XSAVEOPT__ 1 -+// CHECK_KNL_M32: #define __XSAVE__ 1 -+// CHECK_KNL_M32: #define __i386 1 -+// CHECK_KNL_M32: #define __i386__ 1 -+// CHECK_KNL_M32: #define __knl 1 -+// CHECK_KNL_M32: #define __knl__ 1 -+// CHECK_KNL_M32: #define __tune_knl__ 1 -+// CHECK_KNL_M32: #define i386 1 -+ -+// RUN: %clang -march=knl -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_KNL_M64 -+// CHECK_KNL_M64: #define __AES__ 1 -+// CHECK_KNL_M64: #define __AVX2__ 1 -+// CHECK_KNL_M64: #define __AVX512CD__ 1 -+// CHECK_KNL_M64: #define __AVX512ER__ 1 -+// CHECK_KNL_M64: #define __AVX512F__ 1 -+// CHECK_KNL_M64: #define __AVX512PF__ 1 -+// CHECK_KNL_M64: #define __AVX__ 1 -+// CHECK_KNL_M64: #define __BMI2__ 1 -+// CHECK_KNL_M64: #define __BMI__ 1 -+// CHECK_KNL_M64: #define __F16C__ 1 -+// CHECK_KNL_M64: #define __FMA__ 1 -+// CHECK_KNL_M64: #define __LZCNT__ 1 -+// CHECK_KNL_M64: #define __MMX__ 1 -+// CHECK_KNL_M64: #define __MOVBE__ 1 -+// CHECK_KNL_M64: #define __PCLMUL__ 1 -+// CHECK_KNL_M64: #define __POPCNT__ 1 -+// CHECK_KNL_M64: #define __PREFETCHWT1__ 1 -+// CHECK_KNL_M64: #define __PRFCHW__ 1 -+// CHECK_KNL_M64: #define __RDRND__ 1 -+// CHECK_KNL_M64: #define __SSE2_MATH__ 1 -+// CHECK_KNL_M64: #define __SSE2__ 1 -+// CHECK_KNL_M64: #define __SSE3__ 1 -+// CHECK_KNL_M64: #define __SSE4_1__ 1 -+// CHECK_KNL_M64: #define __SSE4_2__ 1 -+// CHECK_KNL_M64: #define __SSE_MATH__ 1 -+// CHECK_KNL_M64: #define __SSE__ 1 -+// CHECK_KNL_M64: #define __SSSE3__ 1 -+// CHECK_KNL_M64: #define __XSAVEOPT__ 1 -+// CHECK_KNL_M64: #define __XSAVE__ 1 -+// CHECK_KNL_M64: #define __amd64 1 -+// CHECK_KNL_M64: #define __amd64__ 1 -+// CHECK_KNL_M64: #define __knl 1 -+// CHECK_KNL_M64: #define __knl__ 1 -+// CHECK_KNL_M64: #define __tune_knl__ 1 -+// CHECK_KNL_M64: #define __x86_64 1 -+// CHECK_KNL_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=knm -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_KNM_M32 -+// CHECK_KNM_M32: #define __AES__ 1 -+// CHECK_KNM_M32: #define __AVX2__ 1 -+// CHECK_KNM_M32: #define __AVX512CD__ 1 -+// CHECK_KNM_M32: #define __AVX512ER__ 1 -+// CHECK_KNM_M32: #define __AVX512F__ 1 -+// CHECK_KNM_M32: #define __AVX512PF__ 1 -+// CHECK_KNM_M32: #define __AVX512VPOPCNTDQ__ 1 -+// CHECK_KNM_M32: #define __AVX__ 1 -+// CHECK_KNM_M32: #define __BMI2__ 1 -+// CHECK_KNM_M32: #define __BMI__ 1 -+// CHECK_KNM_M32: #define __F16C__ 1 -+// CHECK_KNM_M32: #define __FMA__ 1 -+// CHECK_KNM_M32: #define __LZCNT__ 1 -+// CHECK_KNM_M32: #define __MMX__ 1 -+// CHECK_KNM_M32: #define __MOVBE__ 1 -+// CHECK_KNM_M32: #define __PCLMUL__ 1 -+// CHECK_KNM_M32: #define __POPCNT__ 1 -+// CHECK_KNM_M32: #define __PREFETCHWT1__ 1 -+// CHECK_KNM_M32: #define __PRFCHW__ 1 -+// CHECK_KNM_M32: #define __RDRND__ 1 -+// CHECK_KNM_M32: #define __SSE2__ 1 -+// CHECK_KNM_M32: #define __SSE3__ 1 -+// CHECK_KNM_M32: #define __SSE4_1__ 1 -+// CHECK_KNM_M32: #define __SSE4_2__ 1 -+// CHECK_KNM_M32: #define __SSE__ 1 -+// CHECK_KNM_M32: #define __SSSE3__ 1 -+// CHECK_KNM_M32: #define __XSAVEOPT__ 1 -+// CHECK_KNM_M32: #define __XSAVE__ 1 -+// CHECK_KNM_M32: #define __i386 1 -+// CHECK_KNM_M32: #define __i386__ 1 -+// CHECK_KNM_M32: #define i386 1 -+ -+// RUN: %clang -march=knm -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_KNM_M64 -+// CHECK_KNM_M64: #define __AES__ 1 -+// CHECK_KNM_M64: #define __AVX2__ 1 -+// CHECK_KNM_M64: #define __AVX512CD__ 1 -+// CHECK_KNM_M64: #define __AVX512ER__ 1 -+// CHECK_KNM_M64: #define __AVX512F__ 1 -+// CHECK_KNM_M64: #define __AVX512PF__ 1 -+// CHECK_KNM_M64: #define __AVX512VPOPCNTDQ__ 1 -+// CHECK_KNM_M64: #define __AVX__ 1 -+// CHECK_KNM_M64: #define __BMI2__ 1 -+// CHECK_KNM_M64: #define __BMI__ 1 -+// CHECK_KNM_M64: #define __F16C__ 1 -+// CHECK_KNM_M64: #define __FMA__ 1 -+// CHECK_KNM_M64: #define __LZCNT__ 1 -+// CHECK_KNM_M64: #define __MMX__ 1 -+// CHECK_KNM_M64: #define __MOVBE__ 1 -+// CHECK_KNM_M64: #define __PCLMUL__ 1 -+// CHECK_KNM_M64: #define __POPCNT__ 1 -+// CHECK_KNM_M64: #define __PREFETCHWT1__ 1 -+// CHECK_KNM_M64: #define __PRFCHW__ 1 -+// CHECK_KNM_M64: #define __RDRND__ 1 -+// CHECK_KNM_M64: #define __SSE2_MATH__ 1 -+// CHECK_KNM_M64: #define __SSE2__ 1 -+// CHECK_KNM_M64: #define __SSE3__ 1 -+// CHECK_KNM_M64: #define __SSE4_1__ 1 -+// CHECK_KNM_M64: #define __SSE4_2__ 1 -+// CHECK_KNM_M64: #define __SSE_MATH__ 1 -+// CHECK_KNM_M64: #define __SSE__ 1 -+// CHECK_KNM_M64: #define __SSSE3__ 1 -+// CHECK_KNM_M64: #define __XSAVEOPT__ 1 -+// CHECK_KNM_M64: #define __XSAVE__ 1 -+// CHECK_KNM_M64: #define __amd64 1 -+// CHECK_KNM_M64: #define __amd64__ 1 -+// CHECK_KNM_M64: #define __x86_64 1 -+// CHECK_KNM_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=skylake-avx512 -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SKX_M32 -+// CHECK_SKX_M32: #define __AES__ 1 -+// CHECK_SKX_M32: #define __AVX2__ 1 -+// CHECK_SKX_M32: #define __AVX512BW__ 1 -+// CHECK_SKX_M32: #define __AVX512CD__ 1 -+// CHECK_SKX_M32: #define __AVX512DQ__ 1 -+// CHECK_SKX_M32: #define __AVX512F__ 1 -+// CHECK_SKX_M32: #define __AVX512VL__ 1 -+// CHECK_SKX_M32: #define __AVX__ 1 -+// CHECK_SKX_M32: #define __BMI2__ 1 -+// CHECK_SKX_M32: #define __BMI__ 1 -+// CHECK_SKX_M32: #define __CLFLUSHOPT__ 1 -+// CHECK_SKX_M32: #define __CLWB__ 1 -+// CHECK_SKX_M32: #define __F16C__ 1 -+// CHECK_SKX_M32: #define __FMA__ 1 -+// CHECK_SKX_M32: #define __INVPCID__ 1 -+// CHECK_SKX_M32: #define __LZCNT__ 1 -+// CHECK_SKX_M32: #define __MMX__ 1 -+// CHECK_SKX_M32: #define __MOVBE__ 1 -+// CHECK_SKX_M32: #define __PCLMUL__ 1 -+// CHECK_SKX_M32: #define __PKU__ 1 -+// CHECK_SKX_M32: #define __POPCNT__ 1 -+// CHECK_SKX_M32: #define __PRFCHW__ 1 -+// CHECK_SKX_M32: #define __RDRND__ 1 -+// CHECK_SKX_M32: #define __RDSEED__ 1 -+// CHECK_SKX_M32-NOT: #define __SGX__ 1 -+// CHECK_SKX_M32: #define __SSE2__ 1 -+// CHECK_SKX_M32: #define __SSE3__ 1 -+// CHECK_SKX_M32: #define __SSE4_1__ 1 -+// CHECK_SKX_M32: #define __SSE4_2__ 1 -+// CHECK_SKX_M32: #define __SSE__ 1 -+// CHECK_SKX_M32: #define __SSSE3__ 1 -+// CHECK_SKX_M32: #define __XSAVEC__ 1 -+// CHECK_SKX_M32: #define __XSAVEOPT__ 1 -+// CHECK_SKX_M32: #define __XSAVES__ 1 -+// CHECK_SKX_M32: #define __XSAVE__ 1 -+// CHECK_SKX_M32: #define __corei7 1 -+// CHECK_SKX_M32: #define __corei7__ 1 -+// CHECK_SKX_M32: #define __i386 1 -+// CHECK_SKX_M32: #define __i386__ 1 -+// CHECK_SKX_M32: #define __tune_corei7__ 1 -+// CHECK_SKX_M32: #define i386 1 -+ -+// RUN: %clang -march=skylake-avx512 -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SKX_M64 -+// CHECK_SKX_M64: #define __AES__ 1 -+// CHECK_SKX_M64: #define __AVX2__ 1 -+// CHECK_SKX_M64: #define __AVX512BW__ 1 -+// CHECK_SKX_M64: #define __AVX512CD__ 1 -+// CHECK_SKX_M64: #define __AVX512DQ__ 1 -+// CHECK_SKX_M64: #define __AVX512F__ 1 -+// CHECK_SKX_M64: #define __AVX512VL__ 1 -+// CHECK_SKX_M64: #define __AVX__ 1 -+// CHECK_SKX_M64: #define __BMI2__ 1 -+// CHECK_SKX_M64: #define __BMI__ 1 -+// CHECK_SKX_M64: #define __CLFLUSHOPT__ 1 -+// CHECK_SKX_M64: #define __CLWB__ 1 -+// CHECK_SKX_M64: #define __F16C__ 1 -+// CHECK_SKX_M64: #define __FMA__ 1 -+// CHECK_SKX_M64: #define __INVPCID__ 1 -+// CHECK_SKX_M64: #define __LZCNT__ 1 -+// CHECK_SKX_M64: #define __MMX__ 1 -+// CHECK_SKX_M64: #define __MOVBE__ 1 -+// CHECK_SKX_M64: #define __PCLMUL__ 1 -+// CHECK_SKX_M64: #define __PKU__ 1 -+// CHECK_SKX_M64: #define __POPCNT__ 1 -+// CHECK_SKX_M64: #define __PRFCHW__ 1 -+// CHECK_SKX_M64: #define __RDRND__ 1 -+// CHECK_SKX_M64: #define __RDSEED__ 1 -+// CHECK_SKX_M64-NOT: #define __SGX__ 1 -+// CHECK_SKX_M64: #define __SSE2_MATH__ 1 -+// CHECK_SKX_M64: #define __SSE2__ 1 -+// CHECK_SKX_M64: #define __SSE3__ 1 -+// CHECK_SKX_M64: #define __SSE4_1__ 1 -+// CHECK_SKX_M64: #define __SSE4_2__ 1 -+// CHECK_SKX_M64: #define __SSE_MATH__ 1 -+// CHECK_SKX_M64: #define __SSE__ 1 -+// CHECK_SKX_M64: #define __SSSE3__ 1 -+// CHECK_SKX_M64: #define __XSAVEC__ 1 -+// CHECK_SKX_M64: #define __XSAVEOPT__ 1 -+// CHECK_SKX_M64: #define __XSAVES__ 1 -+// CHECK_SKX_M64: #define __XSAVE__ 1 -+// CHECK_SKX_M64: #define __amd64 1 -+// CHECK_SKX_M64: #define __amd64__ 1 -+// CHECK_SKX_M64: #define __corei7 1 -+// CHECK_SKX_M64: #define __corei7__ 1 -+// CHECK_SKX_M64: #define __tune_corei7__ 1 -+// CHECK_SKX_M64: #define __x86_64 1 -+// CHECK_SKX_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=cascadelake -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CLX_M32 -+// CHECK_CLX_M32: #define __AES__ 1 -+// CHECK_CLX_M32: #define __AVX2__ 1 -+// CHECK_CLX_M32: #define __AVX512BW__ 1 -+// CHECK_CLX_M32: #define __AVX512CD__ 1 -+// CHECK_CLX_M32: #define __AVX512DQ__ 1 -+// CHECK_CLX_M32: #define __AVX512F__ 1 -+// CHECK_CLX_M32: #define __AVX512VL__ 1 -+// CHECK_CLX_M32: #define __AVX512VNNI__ 1 -+// CHECK_CLX_M32: #define __AVX__ 1 -+// CHECK_CLX_M32: #define __BMI2__ 1 -+// CHECK_CLX_M32: #define __BMI__ 1 -+// CHECK_CLX_M32: #define __CLFLUSHOPT__ 1 -+// CHECK_CLX_M32: #define __CLWB__ 1 -+// CHECK_CLX_M32: #define __F16C__ 1 -+// CHECK_CLX_M32: #define __FMA__ 1 -+// CHECK_CLX_M32: #define __INVPCID__ 1 -+// CHECK_CLX_M32: #define __LZCNT__ 1 -+// CHECK_CLX_M32: #define __MMX__ 1 -+// CHECK_CLX_M32: #define __MOVBE__ 1 -+// CHECK_CLX_M32: #define __PCLMUL__ 1 -+// CHECK_CLX_M32: #define __PKU__ 1 -+// CHECK_CLX_M32: #define __POPCNT__ 1 -+// CHECK_CLX_M32: #define __PRFCHW__ 1 -+// CHECK_CLX_M32: #define __RDRND__ 1 -+// CHECK_CLX_M32: #define __RDSEED__ 1 -+// CHECK_CLX_M32-NOT: #define __SGX__ 1 -+// CHECK_CLX_M32: #define __SSE2__ 1 -+// CHECK_CLX_M32: #define __SSE3__ 1 -+// CHECK_CLX_M32: #define __SSE4_1__ 1 -+// CHECK_CLX_M32: #define __SSE4_2__ 1 -+// CHECK_CLX_M32: #define __SSE__ 1 -+// CHECK_CLX_M32: #define __SSSE3__ 1 -+// CHECK_CLX_M32: #define __XSAVEC__ 1 -+// CHECK_CLX_M32: #define __XSAVEOPT__ 1 -+// CHECK_CLX_M32: #define __XSAVES__ 1 -+// CHECK_CLX_M32: #define __XSAVE__ 1 -+// CHECK_CLX_M32: #define __corei7 1 -+// CHECK_CLX_M32: #define __corei7__ 1 -+// CHECK_CLX_M32: #define __i386 1 -+// CHECK_CLX_M32: #define __i386__ 1 -+// CHECK_CLX_M32: #define __tune_corei7__ 1 -+// CHECK_CLX_M32: #define i386 1 -+ -+// RUN: %clang -march=cascadelake -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CLX_M64 -+// CHECK_CLX_M64: #define __AES__ 1 -+// CHECK_CLX_M64: #define __AVX2__ 1 -+// CHECK_CLX_M64: #define __AVX512BW__ 1 -+// CHECK_CLX_M64: #define __AVX512CD__ 1 -+// CHECK_CLX_M64: #define __AVX512DQ__ 1 -+// CHECK_CLX_M64: #define __AVX512F__ 1 -+// CHECK_CLX_M64: #define __AVX512VL__ 1 -+// CHECK_CLX_M64: #define __AVX512VNNI__ 1 -+// CHECK_CLX_M64: #define __AVX__ 1 -+// CHECK_CLX_M64: #define __BMI2__ 1 -+// CHECK_CLX_M64: #define __BMI__ 1 -+// CHECK_CLX_M64: #define __CLFLUSHOPT__ 1 -+// CHECK_CLX_M64: #define __CLWB__ 1 -+// CHECK_CLX_M64: #define __F16C__ 1 -+// CHECK_CLX_M64: #define __FMA__ 1 -+// CHECK_CLX_M64: #define __INVPCID__ 1 -+// CHECK_CLX_M64: #define __LZCNT__ 1 -+// CHECK_CLX_M64: #define __MMX__ 1 -+// CHECK_CLX_M64: #define __MOVBE__ 1 -+// CHECK_CLX_M64: #define __PCLMUL__ 1 -+// CHECK_CLX_M64: #define __PKU__ 1 -+// CHECK_CLX_M64: #define __POPCNT__ 1 -+// CHECK_CLX_M64: #define __PRFCHW__ 1 -+// CHECK_CLX_M64: #define __RDRND__ 1 -+// CHECK_CLX_M64: #define __RDSEED__ 1 -+// CHECK_CLX_M64-NOT: #define __SGX__ 1 -+// CHECK_CLX_M64: #define __SSE2_MATH__ 1 -+// CHECK_CLX_M64: #define __SSE2__ 1 -+// CHECK_CLX_M64: #define __SSE3__ 1 -+// CHECK_CLX_M64: #define __SSE4_1__ 1 -+// CHECK_CLX_M64: #define __SSE4_2__ 1 -+// CHECK_CLX_M64: #define __SSE_MATH__ 1 -+// CHECK_CLX_M64: #define __SSE__ 1 -+// CHECK_CLX_M64: #define __SSSE3__ 1 -+// CHECK_CLX_M64: #define __XSAVEC__ 1 -+// CHECK_CLX_M64: #define __XSAVEOPT__ 1 -+// CHECK_CLX_M64: #define __XSAVES__ 1 -+// CHECK_CLX_M64: #define __XSAVE__ 1 -+// CHECK_CLX_M64: #define __amd64 1 -+// CHECK_CLX_M64: #define __amd64__ 1 -+// CHECK_CLX_M64: #define __corei7 1 -+// CHECK_CLX_M64: #define __corei7__ 1 -+// CHECK_CLX_M64: #define __tune_corei7__ 1 -+// CHECK_CLX_M64: #define __x86_64 1 -+// CHECK_CLX_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=cooperlake -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CPX_M32 -+// CHECK_CPX_M32: #define __AES__ 1 -+// CHECK_CPX_M32: #define __AVX2__ 1 -+// CHECK_CPX_M32: #define __AVX512BF16__ 1 -+// CHECK_CPX_M32: #define __AVX512BW__ 1 -+// CHECK_CPX_M32: #define __AVX512CD__ 1 -+// CHECK_CPX_M32: #define __AVX512DQ__ 1 -+// CHECK_CPX_M32: #define __AVX512F__ 1 -+// CHECK_CPX_M32: #define __AVX512VL__ 1 -+// CHECK_CPX_M32: #define __AVX512VNNI__ 1 -+// CHECK_CPX_M32: #define __AVX__ 1 -+// CHECK_CPX_M32: #define __BMI2__ 1 -+// CHECK_CPX_M32: #define __BMI__ 1 -+// CHECK_CPX_M32: #define __CLFLUSHOPT__ 1 -+// CHECK_CPX_M32: #define __CLWB__ 1 -+// CHECK_CPX_M32: #define __F16C__ 1 -+// CHECK_CPX_M32: #define __FMA__ 1 -+// CHECK_CPX_M32: #define __INVPCID__ 1 -+// CHECK_CPX_M32: #define __LZCNT__ 1 -+// CHECK_CPX_M32: #define __MMX__ 1 -+// CHECK_CPX_M32: #define __MOVBE__ 1 -+// CHECK_CPX_M32: #define __PCLMUL__ 1 -+// CHECK_CPX_M32: #define __PKU__ 1 -+// CHECK_CPX_M32: #define __POPCNT__ 1 -+// CHECK_CPX_M32: #define __PRFCHW__ 1 -+// CHECK_CPX_M32: #define __RDRND__ 1 -+// CHECK_CPX_M32: #define __RDSEED__ 1 -+// CHECK_CPX_M32-NOT: #define __SGX__ 1 -+// CHECK_CPX_M32: #define __SSE2__ 1 -+// CHECK_CPX_M32: #define __SSE3__ 1 -+// CHECK_CPX_M32: #define __SSE4_1__ 1 -+// CHECK_CPX_M32: #define __SSE4_2__ 1 -+// CHECK_CPX_M32: #define __SSE__ 1 -+// CHECK_CPX_M32: #define __SSSE3__ 1 -+// CHECK_CPX_M32: #define __XSAVEC__ 1 -+// CHECK_CPX_M32: #define __XSAVEOPT__ 1 -+// CHECK_CPX_M32: #define __XSAVES__ 1 -+// CHECK_CPX_M32: #define __XSAVE__ 1 -+// CHECK_CPX_M32: #define __corei7 1 -+// CHECK_CPX_M32: #define __corei7__ 1 -+// CHECK_CPX_M32: #define __i386 1 -+// CHECK_CPX_M32: #define __i386__ 1 -+// CHECK_CPX_M32: #define __tune_corei7__ 1 -+// CHECK_CPX_M32: #define i386 1 -+ -+// RUN: %clang -march=cooperlake -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CPX_M64 -+// CHECK_CPX_M64: #define __AES__ 1 -+// CHECK_CPX_M64: #define __AVX2__ 1 -+// CHECK_CPX_M64: #define __AVX512BF16__ 1 -+// CHECK_CPX_M64: #define __AVX512BW__ 1 -+// CHECK_CPX_M64: #define __AVX512CD__ 1 -+// CHECK_CPX_M64: #define __AVX512DQ__ 1 -+// CHECK_CPX_M64: #define __AVX512F__ 1 -+// CHECK_CPX_M64: #define __AVX512VL__ 1 -+// CHECK_CPX_M64: #define __AVX512VNNI__ 1 -+// CHECK_CPX_M64: #define __AVX__ 1 -+// CHECK_CPX_M64: #define __BMI2__ 1 -+// CHECK_CPX_M64: #define __BMI__ 1 -+// CHECK_CPX_M64: #define __CLFLUSHOPT__ 1 -+// CHECK_CPX_M64: #define __CLWB__ 1 -+// CHECK_CPX_M64: #define __F16C__ 1 -+// CHECK_CPX_M64: #define __FMA__ 1 -+// CHECK_CPX_M64: #define __INVPCID__ 1 -+// CHECK_CPX_M64: #define __LZCNT__ 1 -+// CHECK_CPX_M64: #define __MMX__ 1 -+// CHECK_CPX_M64: #define __MOVBE__ 1 -+// CHECK_CPX_M64: #define __PCLMUL__ 1 -+// CHECK_CPX_M64: #define __PKU__ 1 -+// CHECK_CPX_M64: #define __POPCNT__ 1 -+// CHECK_CPX_M64: #define __PRFCHW__ 1 -+// CHECK_CPX_M64: #define __RDRND__ 1 -+// CHECK_CPX_M64: #define __RDSEED__ 1 -+// CHECK_CPX_M64-NOT: #define __SGX__ 1 -+// CHECK_CPX_M64: #define __SSE2_MATH__ 1 -+// CHECK_CPX_M64: #define __SSE2__ 1 -+// CHECK_CPX_M64: #define __SSE3__ 1 -+// CHECK_CPX_M64: #define __SSE4_1__ 1 -+// CHECK_CPX_M64: #define __SSE4_2__ 1 -+// CHECK_CPX_M64: #define __SSE_MATH__ 1 -+// CHECK_CPX_M64: #define __SSE__ 1 -+// CHECK_CPX_M64: #define __SSSE3__ 1 -+// CHECK_CPX_M64: #define __XSAVEC__ 1 -+// CHECK_CPX_M64: #define __XSAVEOPT__ 1 -+// CHECK_CPX_M64: #define __XSAVES__ 1 -+// CHECK_CPX_M64: #define __XSAVE__ 1 -+// CHECK_CPX_M64: #define __amd64 1 -+// CHECK_CPX_M64: #define __amd64__ 1 -+// CHECK_CPX_M64: #define __corei7 1 -+// CHECK_CPX_M64: #define __corei7__ 1 -+// CHECK_CPX_M64: #define __tune_corei7__ 1 -+// CHECK_CPX_M64: #define __x86_64 1 -+// CHECK_CPX_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=cannonlake -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CNL_M32 -+// CHECK_CNL_M32: #define __AES__ 1 -+// CHECK_CNL_M32: #define __AVX2__ 1 -+// CHECK_CNL_M32: #define __AVX512BW__ 1 -+// CHECK_CNL_M32: #define __AVX512CD__ 1 -+// CHECK_CNL_M32: #define __AVX512DQ__ 1 -+// CHECK_CNL_M32: #define __AVX512F__ 1 -+// CHECK_CNL_M32: #define __AVX512IFMA__ 1 -+// CHECK_CNL_M32: #define __AVX512VBMI__ 1 -+// CHECK_CNL_M32: #define __AVX512VL__ 1 -+// CHECK_CNL_M32: #define __AVX__ 1 -+// CHECK_CNL_M32: #define __BMI2__ 1 -+// CHECK_CNL_M32: #define __BMI__ 1 -+// CHECK_CNL_M32: #define __CLFLUSHOPT__ 1 -+// CHECK_CNL_M32-NOT: #define __CLWB__ 1 -+// CHECK_CNL_M32: #define __F16C__ 1 -+// CHECK_CNL_M32: #define __FMA__ 1 -+// CHECK_CNL_M32: #define __INVPCID__ 1 -+// CHECK_CNL_M32: #define __LZCNT__ 1 -+// CHECK_CNL_M32: #define __MMX__ 1 -+// CHECK_CNL_M32: #define __MOVBE__ 1 -+// CHECK_CNL_M32: #define __PCLMUL__ 1 -+// CHECK_CNL_M32: #define __PKU__ 1 -+// CHECK_CNL_M32: #define __POPCNT__ 1 -+// CHECK_CNL_M32: #define __PRFCHW__ 1 -+// CHECK_CNL_M32: #define __RDRND__ 1 -+// CHECK_CNL_M32: #define __RDSEED__ 1 -+// CHECK_CNL_M32: #define __SGX__ 1 -+// CHECK_CNL_M32: #define __SHA__ 1 -+// CHECK_CNL_M32: #define __SSE2__ 1 -+// CHECK_CNL_M32: #define __SSE3__ 1 -+// CHECK_CNL_M32: #define __SSE4_1__ 1 -+// CHECK_CNL_M32: #define __SSE4_2__ 1 -+// CHECK_CNL_M32: #define __SSE__ 1 -+// CHECK_CNL_M32: #define __SSSE3__ 1 -+// CHECK_CNL_M32: #define __XSAVEC__ 1 -+// CHECK_CNL_M32: #define __XSAVEOPT__ 1 -+// CHECK_CNL_M32: #define __XSAVES__ 1 -+// CHECK_CNL_M32: #define __XSAVE__ 1 -+// CHECK_CNL_M32: #define __corei7 1 -+// CHECK_CNL_M32: #define __corei7__ 1 -+// CHECK_CNL_M32: #define __i386 1 -+// CHECK_CNL_M32: #define __i386__ 1 -+// CHECK_CNL_M32: #define __tune_corei7__ 1 -+// CHECK_CNL_M32: #define i386 1 -+ -+// RUN: %clang -march=cannonlake -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_CNL_M64 -+// CHECK_CNL_M64: #define __AES__ 1 -+// CHECK_CNL_M64: #define __AVX2__ 1 -+// CHECK_CNL_M64: #define __AVX512BW__ 1 -+// CHECK_CNL_M64: #define __AVX512CD__ 1 -+// CHECK_CNL_M64: #define __AVX512DQ__ 1 -+// CHECK_CNL_M64: #define __AVX512F__ 1 -+// CHECK_CNL_M64: #define __AVX512IFMA__ 1 -+// CHECK_CNL_M64: #define __AVX512VBMI__ 1 -+// CHECK_CNL_M64: #define __AVX512VL__ 1 -+// CHECK_CNL_M64: #define __AVX__ 1 -+// CHECK_CNL_M64: #define __BMI2__ 1 -+// CHECK_CNL_M64: #define __BMI__ 1 -+// CHECK_CNL_M64: #define __CLFLUSHOPT__ 1 -+// CHECK_CNL_M64-NOT: #define __CLWB__ 1 -+// CHECK_CNL_M64: #define __F16C__ 1 -+// CHECK_CNL_M64: #define __FMA__ 1 -+// CHECK_CNL_M64: #define __INVPCID__ 1 -+// CHECK_CNL_M64: #define __LZCNT__ 1 -+// CHECK_CNL_M64: #define __MMX__ 1 -+// CHECK_CNL_M64: #define __MOVBE__ 1 -+// CHECK_CNL_M64: #define __PCLMUL__ 1 -+// CHECK_CNL_M64: #define __PKU__ 1 -+// CHECK_CNL_M64: #define __POPCNT__ 1 -+// CHECK_CNL_M64: #define __PRFCHW__ 1 -+// CHECK_CNL_M64: #define __RDRND__ 1 -+// CHECK_CNL_M64: #define __RDSEED__ 1 -+// CHECK_CNL_M64: #define __SGX__ 1 -+// CHECK_CNL_M64: #define __SHA__ 1 -+// CHECK_CNL_M64: #define __SSE2__ 1 -+// CHECK_CNL_M64: #define __SSE3__ 1 -+// CHECK_CNL_M64: #define __SSE4_1__ 1 -+// CHECK_CNL_M64: #define __SSE4_2__ 1 -+// CHECK_CNL_M64: #define __SSE__ 1 -+// CHECK_CNL_M64: #define __SSSE3__ 1 -+// CHECK_CNL_M64: #define __XSAVEC__ 1 -+// CHECK_CNL_M64: #define __XSAVEOPT__ 1 -+// CHECK_CNL_M64: #define __XSAVES__ 1 -+// CHECK_CNL_M64: #define __XSAVE__ 1 -+// CHECK_CNL_M64: #define __amd64 1 -+// CHECK_CNL_M64: #define __amd64__ 1 -+// CHECK_CNL_M64: #define __corei7 1 -+// CHECK_CNL_M64: #define __corei7__ 1 -+// CHECK_CNL_M64: #define __tune_corei7__ 1 -+// CHECK_CNL_M64: #define __x86_64 1 -+// CHECK_CNL_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=icelake-client -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ICL_M32 -+// CHECK_ICL_M32: #define __AES__ 1 -+// CHECK_ICL_M32: #define __AVX2__ 1 -+// CHECK_ICL_M32: #define __AVX512BITALG__ 1 -+// CHECK_ICL_M32: #define __AVX512BW__ 1 -+// CHECK_ICL_M32: #define __AVX512CD__ 1 -+// CHECK_ICL_M32: #define __AVX512DQ__ 1 -+// CHECK_ICL_M32: #define __AVX512F__ 1 -+// CHECK_ICL_M32: #define __AVX512IFMA__ 1 -+// CHECK_ICL_M32: #define __AVX512VBMI2__ 1 -+// CHECK_ICL_M32: #define __AVX512VBMI__ 1 -+// CHECK_ICL_M32: #define __AVX512VL__ 1 -+// CHECK_ICL_M32: #define __AVX512VNNI__ 1 -+// CHECK_ICL_M32: #define __AVX512VPOPCNTDQ__ 1 -+// CHECK_ICL_M32: #define __AVX__ 1 -+// CHECK_ICL_M32: #define __BMI2__ 1 -+// CHECK_ICL_M32: #define __BMI__ 1 -+// CHECK_ICL_M32: #define __CLFLUSHOPT__ 1 -+// CHECK_ICL_M32: #define __CLWB__ 1 -+// CHECK_ICL_M32: #define __F16C__ 1 -+// CHECK_ICL_M32: #define __FMA__ 1 -+// CHECK_ICL_M32: #define __GFNI__ 1 -+// CHECK_ICL_M32: #define __INVPCID__ 1 -+// CHECK_ICL_M32: #define __LZCNT__ 1 -+// CHECK_ICL_M32: #define __MMX__ 1 -+// CHECK_ICL_M32: #define __MOVBE__ 1 -+// CHECK_ICL_M32: #define __PCLMUL__ 1 -+// CHECK_ICL_M32: #define __PKU__ 1 -+// CHECK_ICL_M32: #define __POPCNT__ 1 -+// CHECK_ICL_M32: #define __PRFCHW__ 1 -+// CHECK_ICL_M32: #define __RDPID__ 1 -+// CHECK_ICL_M32: #define __RDRND__ 1 -+// CHECK_ICL_M32: #define __RDSEED__ 1 -+// CHECK_ICL_M32: #define __SGX__ 1 -+// CHECK_ICL_M32: #define __SHA__ 1 -+// CHECK_ICL_M32: #define __SSE2__ 1 -+// CHECK_ICL_M32: #define __SSE3__ 1 -+// CHECK_ICL_M32: #define __SSE4_1__ 1 -+// CHECK_ICL_M32: #define __SSE4_2__ 1 -+// CHECK_ICL_M32: #define __SSE__ 1 -+// CHECK_ICL_M32: #define __SSSE3__ 1 -+// CHECK_ICL_M32: #define __VAES__ 1 -+// CHECK_ICL_M32: #define __VPCLMULQDQ__ 1 -+// CHECK_ICL_M32-NOT: #define __WBNOINVD__ 1 -+// CHECK_ICL_M32: #define __XSAVEC__ 1 -+// CHECK_ICL_M32: #define __XSAVEOPT__ 1 -+// CHECK_ICL_M32: #define __XSAVES__ 1 -+// CHECK_ICL_M32: #define __XSAVE__ 1 -+// CHECK_ICL_M32: #define __corei7 1 -+// CHECK_ICL_M32: #define __corei7__ 1 -+// CHECK_ICL_M32: #define __i386 1 -+// CHECK_ICL_M32: #define __i386__ 1 -+// CHECK_ICL_M32: #define __tune_corei7__ 1 -+// CHECK_ICL_M32: #define i386 1 -+ -+// RUN: %clang -march=icelake-client -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ICL_M64 -+// CHECK_ICL_M64: #define __AES__ 1 -+// CHECK_ICL_M64: #define __AVX2__ 1 -+// CHECK_ICL_M64: #define __AVX512BITALG__ 1 -+// CHECK_ICL_M64: #define __AVX512BW__ 1 -+// CHECK_ICL_M64: #define __AVX512CD__ 1 -+// CHECK_ICL_M64: #define __AVX512DQ__ 1 -+// CHECK_ICL_M64: #define __AVX512F__ 1 -+// CHECK_ICL_M64: #define __AVX512IFMA__ 1 -+// CHECK_ICL_M64: #define __AVX512VBMI2__ 1 -+// CHECK_ICL_M64: #define __AVX512VBMI__ 1 -+// CHECK_ICL_M64: #define __AVX512VL__ 1 -+// CHECK_ICL_M64: #define __AVX512VNNI__ 1 -+// CHECK_ICL_M64: #define __AVX512VPOPCNTDQ__ 1 -+// CHECK_ICL_M64: #define __AVX__ 1 -+// CHECK_ICL_M64: #define __BMI2__ 1 -+// CHECK_ICL_M64: #define __BMI__ 1 -+// CHECK_ICL_M64: #define __CLFLUSHOPT__ 1 -+// CHECK_ICL_M64: #define __CLWB__ 1 -+// CHECK_ICL_M64: #define __F16C__ 1 -+// CHECK_ICL_M64: #define __FMA__ 1 -+// CHECK_ICL_M64: #define __GFNI__ 1 -+// CHECK_ICL_M64: #define __INVPCID__ 1 -+// CHECK_ICL_M64: #define __LZCNT__ 1 -+// CHECK_ICL_M64: #define __MMX__ 1 -+// CHECK_ICL_M64: #define __MOVBE__ 1 -+// CHECK_ICL_M64: #define __PCLMUL__ 1 -+// CHECK_ICL_M64: #define __PKU__ 1 -+// CHECK_ICL_M64: #define __POPCNT__ 1 -+// CHECK_ICL_M64: #define __PRFCHW__ 1 -+// CHECK_ICL_M64: #define __RDPID__ 1 -+// CHECK_ICL_M64: #define __RDRND__ 1 -+// CHECK_ICL_M64: #define __RDSEED__ 1 -+// CHECK_ICL_M64: #define __SGX__ 1 -+// CHECK_ICL_M64: #define __SHA__ 1 -+// CHECK_ICL_M64: #define __SSE2__ 1 -+// CHECK_ICL_M64: #define __SSE3__ 1 -+// CHECK_ICL_M64: #define __SSE4_1__ 1 -+// CHECK_ICL_M64: #define __SSE4_2__ 1 -+// CHECK_ICL_M64: #define __SSE__ 1 -+// CHECK_ICL_M64: #define __SSSE3__ 1 -+// CHECK_ICL_M64: #define __VAES__ 1 -+// CHECK_ICL_M64: #define __VPCLMULQDQ__ 1 -+// CHECK_ICL_M64-NOT: #define __WBNOINVD__ 1 -+// CHECK_ICL_M64: #define __XSAVEC__ 1 -+// CHECK_ICL_M64: #define __XSAVEOPT__ 1 -+// CHECK_ICL_M64: #define __XSAVES__ 1 -+// CHECK_ICL_M64: #define __XSAVE__ 1 -+// CHECK_ICL_M64: #define __amd64 1 -+// CHECK_ICL_M64: #define __amd64__ 1 -+// CHECK_ICL_M64: #define __corei7 1 -+// CHECK_ICL_M64: #define __corei7__ 1 -+// CHECK_ICL_M64: #define __tune_corei7__ 1 -+// CHECK_ICL_M64: #define __x86_64 1 -+// CHECK_ICL_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=icelake-server -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ICX_M32 -+// CHECK_ICX_M32: #define __AES__ 1 -+// CHECK_ICX_M32: #define __AVX2__ 1 -+// CHECK_ICX_M32: #define __AVX512BITALG__ 1 -+// CHECK_ICX_M32: #define __AVX512BW__ 1 -+// CHECK_ICX_M32: #define __AVX512CD__ 1 -+// CHECK_ICX_M32: #define __AVX512DQ__ 1 -+// CHECK_ICX_M32: #define __AVX512F__ 1 -+// CHECK_ICX_M32: #define __AVX512IFMA__ 1 -+// CHECK_ICX_M32: #define __AVX512VBMI2__ 1 -+// CHECK_ICX_M32: #define __AVX512VBMI__ 1 -+// CHECK_ICX_M32: #define __AVX512VL__ 1 -+// CHECK_ICX_M32: #define __AVX512VNNI__ 1 -+// CHECK_ICX_M32: #define __AVX512VPOPCNTDQ__ 1 -+// CHECK_ICX_M32: #define __AVX__ 1 -+// CHECK_ICX_M32: #define __BMI2__ 1 -+// CHECK_ICX_M32: #define __BMI__ 1 -+// CHECK_ICX_M32: #define __CLFLUSHOPT__ 1 -+// CHECK_ICX_M32: #define __CLWB__ 1 -+// CHECK_ICX_M32: #define __F16C__ 1 -+// CHECK_ICX_M32: #define __FMA__ 1 -+// CHECK_ICX_M32: #define __GFNI__ 1 -+// CHECK_ICX_M32: #define __INVPCID__ 1 -+// CHECK_ICX_M32: #define __LZCNT__ 1 -+// CHECK_ICX_M32: #define __MMX__ 1 -+// CHECK_ICX_M32: #define __MOVBE__ 1 -+// CHECK_ICX_M32: #define __PCLMUL__ 1 -+// CHECK_ICX_M32: #define __PCONFIG__ 1 -+// CHECK_ICX_M32: #define __PKU__ 1 -+// CHECK_ICX_M32: #define __POPCNT__ 1 -+// CHECK_ICX_M32: #define __PRFCHW__ 1 -+// CHECK_ICX_M32: #define __RDPID__ 1 -+// CHECK_ICX_M32: #define __RDRND__ 1 -+// CHECK_ICX_M32: #define __RDSEED__ 1 -+// CHECK_ICX_M32: #define __SGX__ 1 -+// CHECK_ICX_M32: #define __SHA__ 1 -+// CHECK_ICX_M32: #define __SSE2__ 1 -+// CHECK_ICX_M32: #define __SSE3__ 1 -+// CHECK_ICX_M32: #define __SSE4_1__ 1 -+// CHECK_ICX_M32: #define __SSE4_2__ 1 -+// CHECK_ICX_M32: #define __SSE__ 1 -+// CHECK_ICX_M32: #define __SSSE3__ 1 -+// CHECK_ICX_M32: #define __VAES__ 1 -+// CHECK_ICX_M32: #define __VPCLMULQDQ__ 1 -+// CHECK_ICX_M32: #define __WBNOINVD__ 1 -+// CHECK_ICX_M32: #define __XSAVEC__ 1 -+// CHECK_ICX_M32: #define __XSAVEOPT__ 1 -+// CHECK_ICX_M32: #define __XSAVES__ 1 -+// CHECK_ICX_M32: #define __XSAVE__ 1 -+// CHECK_ICX_M32: #define __corei7 1 -+// CHECK_ICX_M32: #define __corei7__ 1 -+// CHECK_ICX_M32: #define __i386 1 -+// CHECK_ICX_M32: #define __i386__ 1 -+// CHECK_ICX_M32: #define __tune_corei7__ 1 -+// CHECK_ICX_M32: #define i386 1 -+ -+// RUN: %clang -march=icelake-server -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ICX_M64 -+// CHECK_ICX_M64: #define __AES__ 1 -+// CHECK_ICX_M64: #define __AVX2__ 1 -+// CHECK_ICX_M64: #define __AVX512BITALG__ 1 -+// CHECK_ICX_M64: #define __AVX512BW__ 1 -+// CHECK_ICX_M64: #define __AVX512CD__ 1 -+// CHECK_ICX_M64: #define __AVX512DQ__ 1 -+// CHECK_ICX_M64: #define __AVX512F__ 1 -+// CHECK_ICX_M64: #define __AVX512IFMA__ 1 -+// CHECK_ICX_M64: #define __AVX512VBMI2__ 1 -+// CHECK_ICX_M64: #define __AVX512VBMI__ 1 -+// CHECK_ICX_M64: #define __AVX512VL__ 1 -+// CHECK_ICX_M64: #define __AVX512VNNI__ 1 -+// CHECK_ICX_M64: #define __AVX512VPOPCNTDQ__ 1 -+// CHECK_ICX_M64: #define __AVX__ 1 -+// CHECK_ICX_M64: #define __BMI2__ 1 -+// CHECK_ICX_M64: #define __BMI__ 1 -+// CHECK_ICX_M64: #define __CLFLUSHOPT__ 1 -+// CHECK_ICX_M64: #define __CLWB__ 1 -+// CHECK_ICX_M64: #define __F16C__ 1 -+// CHECK_ICX_M64: #define __FMA__ 1 -+// CHECK_ICX_M64: #define __GFNI__ 1 -+// CHECK_ICX_M64: #define __INVPCID__ 1 -+// CHECK_ICX_M64: #define __LZCNT__ 1 -+// CHECK_ICX_M64: #define __MMX__ 1 -+// CHECK_ICX_M64: #define __MOVBE__ 1 -+// CHECK_ICX_M64: #define __PCLMUL__ 1 -+// CHECK_ICX_M64: #define __PCONFIG__ 1 -+// CHECK_ICX_M64: #define __PKU__ 1 -+// CHECK_ICX_M64: #define __POPCNT__ 1 -+// CHECK_ICX_M64: #define __PRFCHW__ 1 -+// CHECK_ICX_M64: #define __RDPID__ 1 -+// CHECK_ICX_M64: #define __RDRND__ 1 -+// CHECK_ICX_M64: #define __RDSEED__ 1 -+// CHECK_ICX_M64: #define __SGX__ 1 -+// CHECK_ICX_M64: #define __SHA__ 1 -+// CHECK_ICX_M64: #define __SSE2__ 1 -+// CHECK_ICX_M64: #define __SSE3__ 1 -+// CHECK_ICX_M64: #define __SSE4_1__ 1 -+// CHECK_ICX_M64: #define __SSE4_2__ 1 -+// CHECK_ICX_M64: #define __SSE__ 1 -+// CHECK_ICX_M64: #define __SSSE3__ 1 -+// CHECK_ICX_M64: #define __VAES__ 1 -+// CHECK_ICX_M64: #define __VPCLMULQDQ__ 1 -+// CHECK_ICX_M64: #define __WBNOINVD__ 1 -+// CHECK_ICX_M64: #define __XSAVEC__ 1 -+// CHECK_ICX_M64: #define __XSAVEOPT__ 1 -+// CHECK_ICX_M64: #define __XSAVES__ 1 -+// CHECK_ICX_M64: #define __XSAVE__ 1 -+// CHECK_ICX_M64: #define __amd64 1 -+// CHECK_ICX_M64: #define __amd64__ 1 -+// CHECK_ICX_M64: #define __corei7 1 -+// CHECK_ICX_M64: #define __corei7__ 1 -+// CHECK_ICX_M64: #define __tune_corei7__ 1 -+// CHECK_ICX_M64: #define __x86_64 1 -+// CHECK_ICX_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=tigerlake -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_TGL_M32 -+// CHECK_TGL_M32: #define __AES__ 1 -+// CHECK_TGL_M32: #define __AVX2__ 1 -+// CHECK_TGL_M32: #define __AVX512BITALG__ 1 -+// CHECK_TGL_M32: #define __AVX512BW__ 1 -+// CHECK_TGL_M32: #define __AVX512CD__ 1 -+// CHECK_TGL_M32: #define __AVX512DQ__ 1 -+// CHECK_TGL_M32: #define __AVX512F__ 1 -+// CHECK_TGL_M32: #define __AVX512IFMA__ 1 -+// CHECK_TGL_M32: #define __AVX512VBMI2__ 1 -+// CHECK_TGL_M32: #define __AVX512VBMI__ 1 -+// CHECK_TGL_M32: #define __AVX512VL__ 1 -+// CHECK_TGL_M32: #define __AVX512VNNI__ 1 -+// CHECK_TGL_M32: #define __AVX512VP2INTERSECT__ 1 -+// CHECK_TGL_M32: #define __AVX512VPOPCNTDQ__ 1 -+// CHECK_TGL_M32: #define __AVX__ 1 -+// CHECK_TGL_M32: #define __BMI2__ 1 -+// CHECK_TGL_M32: #define __BMI__ 1 -+// CHECK_TGL_M32: #define __CLFLUSHOPT__ 1 -+// CHECK_TGL_M32: #define __CLWB__ 1 -+// CHECK_TGL_M32: #define __F16C__ 1 -+// CHECK_TGL_M32: #define __FMA__ 1 -+// CHECK_TGL_M32: #define __GFNI__ 1 -+// CHECK_TGL_M32: #define __INVPCID__ 1 -+// CHECK_TGL_M32: #define __LZCNT__ 1 -+// CHECK_TGL_M32: #define __MMX__ 1 -+// CHECK_TGL_M32: #define __MOVBE__ 1 -+// CHECK_TGL_M32: #define __MOVDIR64B__ 1 -+// CHECK_TGL_M32: #define __MOVDIRI__ 1 -+// CHECK_TGL_M32: #define __PCLMUL__ 1 -+// CHECK_TGL_M32-NOT: #define __PCONFIG__ 1 -+// CHECK_TGL_M32: #define __PKU__ 1 -+// CHECK_TGL_M32: #define __POPCNT__ 1 -+// CHECK_TGL_M32: #define __PRFCHW__ 1 -+// CHECK_TGL_M32: #define __RDPID__ 1 -+// CHECK_TGL_M32: #define __RDRND__ 1 -+// CHECK_TGL_M32: #define __RDSEED__ 1 -+// CHECK_TGL_M32: #define __SGX__ 1 -+// CHECK_TGL_M32: #define __SHA__ 1 -+// CHECK_TGL_M32: #define __SHSTK__ 1 -+// CHECK_TGL_M32: #define __SSE2__ 1 -+// CHECK_TGL_M32: #define __SSE3__ 1 -+// CHECK_TGL_M32: #define __SSE4_1__ 1 -+// CHECK_TGL_M32: #define __SSE4_2__ 1 -+// CHECK_TGL_M32: #define __SSE__ 1 -+// CHECK_TGL_M32: #define __SSSE3__ 1 -+// CHECK_TGL_M32: #define __VAES__ 1 -+// CHECK_TGL_M32: #define __VPCLMULQDQ__ 1 -+// CHECK_TGL_M32-NOT: #define __WBNOINVD__ 1 -+// CHECK_TGL_M32: #define __XSAVEC__ 1 -+// CHECK_TGL_M32: #define __XSAVEOPT__ 1 -+// CHECK_TGL_M32: #define __XSAVES__ 1 -+// CHECK_TGL_M32: #define __XSAVE__ 1 -+// CHECK_TGL_M32: #define __corei7 1 -+// CHECK_TGL_M32: #define __corei7__ 1 -+// CHECK_TGL_M32: #define __i386 1 -+// CHECK_TGL_M32: #define __i386__ 1 -+// CHECK_TGL_M32: #define __tune_corei7__ 1 -+// CHECK_TGL_M32: #define i386 1 -+ -+// RUN: %clang -march=tigerlake -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_TGL_M64 -+// CHECK_TGL_M64: #define __AES__ 1 -+// CHECK_TGL_M64: #define __AVX2__ 1 -+// CHECK_TGL_M64: #define __AVX512BITALG__ 1 -+// CHECK_TGL_M64: #define __AVX512BW__ 1 -+// CHECK_TGL_M64: #define __AVX512CD__ 1 -+// CHECK_TGL_M64: #define __AVX512DQ__ 1 -+// CHECK_TGL_M64: #define __AVX512F__ 1 -+// CHECK_TGL_M64: #define __AVX512IFMA__ 1 -+// CHECK_TGL_M64: #define __AVX512VBMI2__ 1 -+// CHECK_TGL_M64: #define __AVX512VBMI__ 1 -+// CHECK_TGL_M64: #define __AVX512VL__ 1 -+// CHECK_TGL_M64: #define __AVX512VNNI__ 1 -+// CHECK_TGL_M64: #define __AVX512VP2INTERSECT__ 1 -+// CHECK_TGL_M64: #define __AVX512VPOPCNTDQ__ 1 -+// CHECK_TGL_M64: #define __AVX__ 1 -+// CHECK_TGL_M64: #define __BMI2__ 1 -+// CHECK_TGL_M64: #define __BMI__ 1 -+// CHECK_TGL_M64: #define __CLFLUSHOPT__ 1 -+// CHECK_TGL_M64: #define __CLWB__ 1 -+// CHECK_TGL_M64: #define __F16C__ 1 -+// CHECK_TGL_M64: #define __FMA__ 1 -+// CHECK_TGL_M64: #define __GFNI__ 1 -+// CHECK_TGL_M64: #define __INVPCID__ 1 -+// CHECK_TGL_M64: #define __LZCNT__ 1 -+// CHECK_TGL_M64: #define __MMX__ 1 -+// CHECK_TGL_M64: #define __MOVBE__ 1 -+// CHECK_TGL_M64: #define __MOVDIR64B__ 1 -+// CHECK_TGL_M64: #define __MOVDIRI__ 1 -+// CHECK_TGL_M64: #define __PCLMUL__ 1 -+// CHECK_TGL_M64-NOT: #define __PCONFIG__ 1 -+// CHECK_TGL_M64: #define __PKU__ 1 -+// CHECK_TGL_M64: #define __POPCNT__ 1 -+// CHECK_TGL_M64: #define __PRFCHW__ 1 -+// CHECK_TGL_M64: #define __RDPID__ 1 -+// CHECK_TGL_M64: #define __RDRND__ 1 -+// CHECK_TGL_M64: #define __RDSEED__ 1 -+// CHECK_TGL_M64: #define __SGX__ 1 -+// CHECK_TGL_M64: #define __SHA__ 1 -+// CHECK_TGL_M64: #define __SHSTK__ 1 -+// CHECK_TGL_M64: #define __SSE2__ 1 -+// CHECK_TGL_M64: #define __SSE3__ 1 -+// CHECK_TGL_M64: #define __SSE4_1__ 1 -+// CHECK_TGL_M64: #define __SSE4_2__ 1 -+// CHECK_TGL_M64: #define __SSE__ 1 -+// CHECK_TGL_M64: #define __SSSE3__ 1 -+// CHECK_TGL_M64: #define __VAES__ 1 -+// CHECK_TGL_M64: #define __VPCLMULQDQ__ 1 -+// CHECK_TGL_M64-NOT: #define __WBNOINVD__ 1 -+// CHECK_TGL_M64: #define __XSAVEC__ 1 -+// CHECK_TGL_M64: #define __XSAVEOPT__ 1 -+// CHECK_TGL_M64: #define __XSAVES__ 1 -+// CHECK_TGL_M64: #define __XSAVE__ 1 -+// CHECK_TGL_M64: #define __amd64 1 -+// CHECK_TGL_M64: #define __amd64__ 1 -+// CHECK_TGL_M64: #define __corei7 1 -+// CHECK_TGL_M64: #define __corei7__ 1 -+// CHECK_TGL_M64: #define __tune_corei7__ 1 -+// CHECK_TGL_M64: #define __x86_64 1 -+// CHECK_TGL_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=sapphirerapids -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SPR_M32 -+// CHECK_SPR_M32: #define __AES__ 1 -+// CHECK_SPR_M32: #define __AMXBF16__ 1 -+// CHECK_SPR_M32: #define __AMXINT8__ 1 -+// CHECK_SPR_M32: #define __AMXTILE__ 1 -+// CHECK_SPR_M32: #define __AVX2__ 1 -+// CHECK_SPR_M32: #define __AVX512BF16__ 1 -+// CHECK_SPR_M32: #define __AVX512BITALG__ 1 -+// CHECK_SPR_M32: #define __AVX512BW__ 1 -+// CHECK_SPR_M32: #define __AVX512CD__ 1 -+// CHECK_SPR_M32: #define __AVX512DQ__ 1 -+// CHECK_SPR_M32: #define __AVX512F__ 1 -+// CHECK_SPR_M32: #define __AVX512IFMA__ 1 -+// CHECK_SPR_M32: #define __AVX512VBMI2__ 1 -+// CHECK_SPR_M32: #define __AVX512VBMI__ 1 -+// CHECK_SPR_M32: #define __AVX512VL__ 1 -+// CHECK_SPR_M32: #define __AVX512VNNI__ 1 -+// CHECK_SPR_M32: #define __AVX512VPOPCNTDQ__ 1 -+// CHECK_SPR_M32: #define __AVXVNNI__ 1 -+// CHECK_SPR_M32: #define __AVX__ 1 -+// CHECK_SPR_M32: #define __BMI2__ 1 -+// CHECK_SPR_M32: #define __BMI__ 1 -+// CHECK_SPR_M32: #define __CLDEMOTE__ 1 -+// CHECK_SPR_M32: #define __CLFLUSHOPT__ 1 -+// CHECK_SPR_M32: #define __CLWB__ 1 -+// CHECK_SPR_M32: #define __ENQCMD__ 1 -+// CHECK_SPR_M32: #define __F16C__ 1 -+// CHECK_SPR_M32: #define __FMA__ 1 -+// CHECK_SPR_M32: #define __GFNI__ 1 -+// CHECK_SPR_M32: #define __INVPCID__ 1 -+// CHECK_SPR_M32: #define __LZCNT__ 1 -+// CHECK_SPR_M32: #define __MMX__ 1 -+// CHECK_SPR_M32: #define __MOVBE__ 1 -+// CHECK_SPR_M32: #define __PCLMUL__ 1 -+// CHECK_SPR_M32: #define __PCONFIG__ 1 -+// CHECK_SPR_M32: #define __PKU__ 1 -+// CHECK_SPR_M32: #define __POPCNT__ 1 -+// CHECK_SPR_M32: #define __PRFCHW__ 1 -+// CHECK_SPR_M32: #define __PTWRITE__ 1 -+// CHECK_SPR_M32: #define __RDPID__ 1 -+// CHECK_SPR_M32: #define __RDRND__ 1 -+// CHECK_SPR_M32: #define __RDSEED__ 1 -+// CHECK_SPR_M32: #define __SERIALIZE__ 1 -+// CHECK_SPR_M32: #define __SGX__ 1 -+// CHECK_SPR_M32: #define __SHA__ 1 -+// CHECK_SPR_M32: #define __SHSTK__ 1 -+// CHECK_SPR_M32: #define __SSE2__ 1 -+// CHECK_SPR_M32: #define __SSE3__ 1 -+// CHECK_SPR_M32: #define __SSE4_1__ 1 -+// CHECK_SPR_M32: #define __SSE4_2__ 1 -+// CHECK_SPR_M32: #define __SSE__ 1 -+// CHECK_SPR_M32: #define __SSSE3__ 1 -+// CHECK_SPR_M32: #define __TSXLDTRK__ 1 -+// CHECK_SPR_M32: #define __UINTR__ 1 -+// CHECK_SPR_M32: #define __VAES__ 1 -+// CHECK_SPR_M32: #define __VPCLMULQDQ__ 1 -+// CHECK_SPR_M32: #define __WAITPKG__ 1 -+// CHECK_SPR_M32: #define __WBNOINVD__ 1 -+// CHECK_SPR_M32: #define __XSAVEC__ 1 -+// CHECK_SPR_M32: #define __XSAVEOPT__ 1 -+// CHECK_SPR_M32: #define __XSAVES__ 1 -+// CHECK_SPR_M32: #define __XSAVE__ 1 -+// CHECK_SPR_M32: #define __corei7 1 -+// CHECK_SPR_M32: #define __corei7__ 1 -+// CHECK_SPR_M32: #define __i386 1 -+// CHECK_SPR_M32: #define __i386__ 1 -+// CHECK_SPR_M32: #define __tune_corei7__ 1 -+// CHECK_SPR_M32: #define i386 1 -+ -+// RUN: %clang -march=sapphirerapids -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SPR_M64 -+// CHECK_SPR_M64: #define __AES__ 1 -+// CHECK_SPR_M64: #define __AMXBF16__ 1 -+// CHECK_SPR_M64: #define __AMXINT8__ 1 -+// CHECK_SPR_M64: #define __AMXTILE__ 1 -+// CHECK_SPR_M64: #define __AVX2__ 1 -+// CHECK_SPR_M64: #define __AVX512BF16__ 1 -+// CHECK_SPR_M64: #define __AVX512BITALG__ 1 -+// CHECK_SPR_M64: #define __AVX512BW__ 1 -+// CHECK_SPR_M64: #define __AVX512CD__ 1 -+// CHECK_SPR_M64: #define __AVX512DQ__ 1 -+// CHECK_SPR_M64: #define __AVX512F__ 1 -+// CHECK_SPR_M64: #define __AVX512IFMA__ 1 -+// CHECK_SPR_M64: #define __AVX512VBMI2__ 1 -+// CHECK_SPR_M64: #define __AVX512VBMI__ 1 -+// CHECK_SPR_M64: #define __AVX512VL__ 1 -+// CHECK_SPR_M64: #define __AVX512VNNI__ 1 -+// CHECK_SPR_M64: #define __AVX512VPOPCNTDQ__ 1 -+// CHECK_SPR_M64: #define __AVXVNNI__ 1 -+// CHECK_SPR_M64: #define __AVX__ 1 -+// CHECK_SPR_M64: #define __BMI2__ 1 -+// CHECK_SPR_M64: #define __BMI__ 1 -+// CHECK_SPR_M64: #define __CLDEMOTE__ 1 -+// CHECK_SPR_M64: #define __CLFLUSHOPT__ 1 -+// CHECK_SPR_M64: #define __CLWB__ 1 -+// CHECK_SPR_M64: #define __ENQCMD__ 1 -+// CHECK_SPR_M64: #define __F16C__ 1 -+// CHECK_SPR_M64: #define __FMA__ 1 -+// CHECK_SPR_M64: #define __GFNI__ 1 -+// CHECK_SPR_M64: #define __INVPCID__ 1 -+// CHECK_SPR_M64: #define __LZCNT__ 1 -+// CHECK_SPR_M64: #define __MMX__ 1 -+// CHECK_SPR_M64: #define __MOVBE__ 1 -+// CHECK_SPR_M64: #define __PCLMUL__ 1 -+// CHECK_SPR_M64: #define __PCONFIG__ 1 -+// CHECK_SPR_M64: #define __PKU__ 1 -+// CHECK_SPR_M64: #define __POPCNT__ 1 -+// CHECK_SPR_M64: #define __PRFCHW__ 1 -+// CHECK_SPR_M64: #define __PTWRITE__ 1 -+// CHECK_SPR_M64: #define __RDPID__ 1 -+// CHECK_SPR_M64: #define __RDRND__ 1 -+// CHECK_SPR_M64: #define __RDSEED__ 1 -+// CHECK_SPR_M64: #define __SERIALIZE__ 1 -+// CHECK_SPR_M64: #define __SGX__ 1 -+// CHECK_SPR_M64: #define __SHA__ 1 -+// CHECK_SPR_M64: #define __SHSTK__ 1 -+// CHECK_SPR_M64: #define __SSE2__ 1 -+// CHECK_SPR_M64: #define __SSE3__ 1 -+// CHECK_SPR_M64: #define __SSE4_1__ 1 -+// CHECK_SPR_M64: #define __SSE4_2__ 1 -+// CHECK_SPR_M64: #define __SSE__ 1 -+// CHECK_SPR_M64: #define __SSSE3__ 1 -+// CHECK_SPR_M64: #define __TSXLDTRK__ 1 -+// CHECK_SPR_M64: #define __UINTR__ 1 -+// CHECK_SPR_M64: #define __VAES__ 1 -+// CHECK_SPR_M64: #define __VPCLMULQDQ__ 1 -+// CHECK_SPR_M64: #define __WAITPKG__ 1 -+// CHECK_SPR_M64: #define __WBNOINVD__ 1 -+// CHECK_SPR_M64: #define __XSAVEC__ 1 -+// CHECK_SPR_M64: #define __XSAVEOPT__ 1 -+// CHECK_SPR_M64: #define __XSAVES__ 1 -+// CHECK_SPR_M64: #define __XSAVE__ 1 -+// CHECK_SPR_M64: #define __amd64 1 -+// CHECK_SPR_M64: #define __amd64__ 1 -+// CHECK_SPR_M64: #define __corei7 1 -+// CHECK_SPR_M64: #define __corei7__ 1 -+// CHECK_SPR_M64: #define __tune_corei7__ 1 -+// CHECK_SPR_M64: #define __x86_64 1 -+// CHECK_SPR_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=alderlake -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ADL_M32 -+// CHECK_ADL_M32: #define __ADX__ 1 -+// CHECK_ADL_M32: #define __AES__ 1 -+// CHECK_ADL_M32: #define __AVX2__ 1 -+// CHECK_ADL_M32-NOT: AVX512 -+// CHECK_ADL_M32: #define __AVXVNNI__ 1 -+// CHECK_ADL_M32: #define __AVX__ 1 -+// CHECK_ADL_M32: #define __BMI2__ 1 -+// CHECK_ADL_M32: #define __BMI__ 1 -+// CHECK_ADL_M32: #define __CLDEMOTE__ 1 -+// CHECK_ADL_M32: #define __CLFLUSHOPT__ 1 -+// CHECK_ADL_M32: #define __F16C__ 1 -+// CHECK_ADL_M32: #define __FMA__ 1 -+// CHECK_ADL_M32: #define __HRESET__ 1 -+// CHECK_ADL_M32: #define __INVPCID__ 1 -+// CHECK_ADL_M32: #define __LZCNT__ 1 -+// CHECK_ADL_M32: #define __MMX__ 1 -+// CHECK_ADL_M32: #define __MOVBE__ 1 -+// CHECK_ADL_M32: #define __PCLMUL__ 1 -+// CHECK_ADL_M32: #define __POPCNT__ 1 -+// CHECK_ADL_M32: #define __PRFCHW__ 1 -+// CHECK_ADL_M32: #define __PTWRITE__ 1 -+// CHECK_ADL_M32: #define __RDRND__ 1 -+// CHECK_ADL_M32: #define __RDSEED__ 1 -+// CHECK_ADL_M32: #define __SERIALIZE__ 1 -+// CHECK_ADL_M32: #define __SGX__ 1 -+// CHECK_ADL_M32: #define __SSE2__ 1 -+// CHECK_ADL_M32: #define __SSE3__ 1 -+// CHECK_ADL_M32: #define __SSE4_1__ 1 -+// CHECK_ADL_M32: #define __SSE4_2__ 1 -+// CHECK_ADL_M32: #define __SSE__ 1 -+// CHECK_ADL_M32: #define __SSSE3__ 1 -+// CHECK_ADL_M32: #define __WAITPKG__ 1 -+// CHECK_ADL_M32: #define __XSAVEC__ 1 -+// CHECK_ADL_M32: #define __XSAVEOPT__ 1 -+// CHECK_ADL_M32: #define __XSAVES__ 1 -+// CHECK_ADL_M32: #define __XSAVE__ 1 -+// CHECK_ADL_M32: #define i386 1 -+ -+// RUN: %clang -march=alderlake -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ADL_M64 -+// CHECK_ADL_M64: #define __ADX__ 1 -+// CHECK_ADL_M64: #define __AES__ 1 -+// CHECK_ADL_M64: #define __AVX2__ 1 -+// CHECK_ADL_M64-NOT: AVX512 -+// CHECK_ADL_M64: #define __AVXVNNI__ 1 -+// CHECK_ADL_M64: #define __AVX__ 1 -+// CHECK_ADL_M64: #define __BMI2__ 1 -+// CHECK_ADL_M64: #define __BMI__ 1 -+// CHECK_ADL_M64: #define __CLDEMOTE__ 1 -+// CHECK_ADL_M64: #define __CLFLUSHOPT__ 1 -+// CHECK_ADL_M64: #define __F16C__ 1 -+// CHECK_ADL_M64: #define __FMA__ 1 -+// CHECK_ADL_M64: #define __HRESET__ 1 -+// CHECK_ADL_M64: #define __INVPCID__ 1 -+// CHECK_ADL_M64: #define __LZCNT__ 1 -+// CHECK_ADL_M64: #define __MMX__ 1 -+// CHECK_ADL_M64: #define __MOVBE__ 1 -+// CHECK_ADL_M64: #define __PCLMUL__ 1 -+// CHECK_ADL_M64: #define __POPCNT__ 1 -+// CHECK_ADL_M64: #define __PRFCHW__ 1 -+// CHECK_ADL_M64: #define __PTWRITE__ 1 -+// CHECK_ADL_M64: #define __RDRND__ 1 -+// CHECK_ADL_M64: #define __RDSEED__ 1 -+// CHECK_ADL_M64: #define __SERIALIZE__ 1 -+// CHECK_ADL_M64: #define __SGX__ 1 -+// CHECK_ADL_M64: #define __SSE2_MATH__ 1 -+// CHECK_ADL_M64: #define __SSE2__ 1 -+// CHECK_ADL_M64: #define __SSE3__ 1 -+// CHECK_ADL_M64: #define __SSE4_1__ 1 -+// CHECK_ADL_M64: #define __SSE4_2__ 1 -+// CHECK_ADL_M64: #define __SSE_MATH__ 1 -+// CHECK_ADL_M64: #define __SSE__ 1 -+// CHECK_ADL_M64: #define __SSSE3__ 1 -+// CHECK_ADL_M64: #define __WAITPKG__ 1 -+// CHECK_ADL_M64: #define __XSAVEC__ 1 -+// CHECK_ADL_M64: #define __XSAVEOPT__ 1 -+// CHECK_ADL_M64: #define __XSAVES__ 1 -+// CHECK_ADL_M64: #define __XSAVE__ 1 -+// CHECK_ADL_M64: #define __amd64 1 -+// CHECK_ADL_M64: #define __amd64__ 1 -+// CHECK_ADL_M64: #define __x86_64 1 -+// CHECK_ADL_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=atom -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATOM_M32 -+// CHECK_ATOM_M32: #define __MMX__ 1 -+// CHECK_ATOM_M32: #define __MOVBE__ 1 -+// CHECK_ATOM_M32: #define __SSE2__ 1 -+// CHECK_ATOM_M32: #define __SSE3__ 1 -+// CHECK_ATOM_M32: #define __SSE__ 1 -+// CHECK_ATOM_M32: #define __SSSE3__ 1 -+// CHECK_ATOM_M32: #define __atom 1 -+// CHECK_ATOM_M32: #define __atom__ 1 -+// CHECK_ATOM_M32: #define __i386 1 -+// CHECK_ATOM_M32: #define __i386__ 1 -+// CHECK_ATOM_M32: #define __tune_atom__ 1 -+// CHECK_ATOM_M32: #define i386 1 -+ -+// RUN: %clang -march=atom -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATOM_M64 -+// CHECK_ATOM_M64: #define __MMX__ 1 -+// CHECK_ATOM_M64: #define __MOVBE__ 1 -+// CHECK_ATOM_M64: #define __SSE2_MATH__ 1 -+// CHECK_ATOM_M64: #define __SSE2__ 1 -+// CHECK_ATOM_M64: #define __SSE3__ 1 -+// CHECK_ATOM_M64: #define __SSE_MATH__ 1 -+// CHECK_ATOM_M64: #define __SSE__ 1 -+// CHECK_ATOM_M64: #define __SSSE3__ 1 -+// CHECK_ATOM_M64: #define __amd64 1 -+// CHECK_ATOM_M64: #define __amd64__ 1 -+// CHECK_ATOM_M64: #define __atom 1 -+// CHECK_ATOM_M64: #define __atom__ 1 -+// CHECK_ATOM_M64: #define __tune_atom__ 1 -+// CHECK_ATOM_M64: #define __x86_64 1 -+// CHECK_ATOM_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=goldmont -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck %s -check-prefix=CHECK_GLM_M32 -+// CHECK_GLM_M32: #define __AES__ 1 -+// CHECK_GLM_M32: #define __CLFLUSHOPT__ 1 -+// CHECK_GLM_M32: #define __FSGSBASE__ 1 -+// CHECK_GLM_M32: #define __FXSR__ 1 -+// CHECK_GLM_M32: #define __MMX__ 1 -+// CHECK_GLM_M32: #define __MOVBE__ 1 -+// CHECK_GLM_M32: #define __PCLMUL__ 1 -+// CHECK_GLM_M32: #define __POPCNT__ 1 -+// CHECK_GLM_M32: #define __PRFCHW__ 1 -+// CHECK_GLM_M32: #define __RDRND__ 1 -+// CHECK_GLM_M32: #define __RDSEED__ 1 -+// CHECK_GLM_M32: #define __SHA__ 1 -+// CHECK_GLM_M32: #define __SSE2__ 1 -+// CHECK_GLM_M32: #define __SSE3__ 1 -+// CHECK_GLM_M32: #define __SSE4_1__ 1 -+// CHECK_GLM_M32: #define __SSE4_2__ 1 -+// CHECK_GLM_M32: #define __SSE_MATH__ 1 -+// CHECK_GLM_M32: #define __SSE__ 1 -+// CHECK_GLM_M32: #define __SSSE3__ 1 -+// CHECK_GLM_M32: #define __XSAVEC__ 1 -+// CHECK_GLM_M32: #define __XSAVEOPT__ 1 -+// CHECK_GLM_M32: #define __XSAVES__ 1 -+// CHECK_GLM_M32: #define __XSAVE__ 1 -+// CHECK_GLM_M32: #define __goldmont 1 -+// CHECK_GLM_M32: #define __goldmont__ 1 -+// CHECK_GLM_M32: #define __i386 1 -+// CHECK_GLM_M32: #define __i386__ 1 -+// CHECK_GLM_M32: #define __tune_goldmont__ 1 -+// CHECK_GLM_M32: #define i386 1 -+ -+// RUN: %clang -march=goldmont -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck %s -check-prefix=CHECK_GLM_M64 -+// CHECK_GLM_M64: #define __AES__ 1 -+// CHECK_GLM_M64: #define __CLFLUSHOPT__ 1 -+// CHECK_GLM_M64: #define __FSGSBASE__ 1 -+// CHECK_GLM_M64: #define __FXSR__ 1 -+// CHECK_GLM_M64: #define __MMX__ 1 -+// CHECK_GLM_M64: #define __MOVBE__ 1 -+// CHECK_GLM_M64: #define __PCLMUL__ 1 -+// CHECK_GLM_M64: #define __POPCNT__ 1 -+// CHECK_GLM_M64: #define __PRFCHW__ 1 -+// CHECK_GLM_M64: #define __RDRND__ 1 -+// CHECK_GLM_M64: #define __RDSEED__ 1 -+// CHECK_GLM_M64: #define __SHA__ 1 -+// CHECK_GLM_M64: #define __SSE2__ 1 -+// CHECK_GLM_M64: #define __SSE3__ 1 -+// CHECK_GLM_M64: #define __SSE4_1__ 1 -+// CHECK_GLM_M64: #define __SSE4_2__ 1 -+// CHECK_GLM_M64: #define __SSE__ 1 -+// CHECK_GLM_M64: #define __SSSE3__ 1 -+// CHECK_GLM_M64: #define __XSAVEC__ 1 -+// CHECK_GLM_M64: #define __XSAVEOPT__ 1 -+// CHECK_GLM_M64: #define __XSAVES__ 1 -+// CHECK_GLM_M64: #define __XSAVE__ 1 -+// CHECK_GLM_M64: #define __goldmont 1 -+// CHECK_GLM_M64: #define __goldmont__ 1 -+// CHECK_GLM_M64: #define __tune_goldmont__ 1 -+// CHECK_GLM_M64: #define __x86_64 1 -+// CHECK_GLM_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=goldmont-plus -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck %s -check-prefix=CHECK_GLMP_M32 -+// CHECK_GLMP_M32: #define __AES__ 1 -+// CHECK_GLMP_M32: #define __CLFLUSHOPT__ 1 -+// CHECK_GLMP_M32: #define __FSGSBASE__ 1 -+// CHECK_GLMP_M32: #define __FXSR__ 1 -+// CHECK_GLMP_M32: #define __MMX__ 1 -+// CHECK_GLMP_M32: #define __MOVBE__ 1 -+// CHECK_GLMP_M32: #define __PCLMUL__ 1 -+// CHECK_GLMP_M32: #define __POPCNT__ 1 -+// CHECK_GLMP_M32: #define __PRFCHW__ 1 -+// CHECK_GLMP_M32: #define __PTWRITE__ 1 -+// CHECK_GLMP_M32: #define __RDPID__ 1 -+// CHECK_GLMP_M32: #define __RDRND__ 1 -+// CHECK_GLMP_M32: #define __RDSEED__ 1 -+// CHECK_GLMP_M32: #define __SGX__ 1 -+// CHECK_GLMP_M32: #define __SHA__ 1 -+// CHECK_GLMP_M32: #define __SSE2__ 1 -+// CHECK_GLMP_M32: #define __SSE3__ 1 -+// CHECK_GLMP_M32: #define __SSE4_1__ 1 -+// CHECK_GLMP_M32: #define __SSE4_2__ 1 -+// CHECK_GLMP_M32: #define __SSE_MATH__ 1 -+// CHECK_GLMP_M32: #define __SSE__ 1 -+// CHECK_GLMP_M32: #define __SSSE3__ 1 -+// CHECK_GLMP_M32: #define __XSAVEC__ 1 -+// CHECK_GLMP_M32: #define __XSAVEOPT__ 1 -+// CHECK_GLMP_M32: #define __XSAVES__ 1 -+// CHECK_GLMP_M32: #define __XSAVE__ 1 -+// CHECK_GLMP_M32: #define __goldmont_plus 1 -+// CHECK_GLMP_M32: #define __goldmont_plus__ 1 -+// CHECK_GLMP_M32: #define __i386 1 -+// CHECK_GLMP_M32: #define __i386__ 1 -+// CHECK_GLMP_M32: #define __tune_goldmont_plus__ 1 -+// CHECK_GLMP_M32: #define i386 1 -+ -+// RUN: %clang -march=goldmont-plus -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck %s -check-prefix=CHECK_GLMP_M64 -+// CHECK_GLMP_M64: #define __AES__ 1 -+// CHECK_GLMP_M64: #define __CLFLUSHOPT__ 1 -+// CHECK_GLMP_M64: #define __FSGSBASE__ 1 -+// CHECK_GLMP_M64: #define __FXSR__ 1 -+// CHECK_GLMP_M64: #define __MMX__ 1 -+// CHECK_GLMP_M64: #define __MOVBE__ 1 -+// CHECK_GLMP_M64: #define __PCLMUL__ 1 -+// CHECK_GLMP_M64: #define __POPCNT__ 1 -+// CHECK_GLMP_M64: #define __PRFCHW__ 1 -+// CHECK_GLMP_M64: #define __PTWRITE__ 1 -+// CHECK_GLMP_M64: #define __RDPID__ 1 -+// CHECK_GLMP_M64: #define __RDRND__ 1 -+// CHECK_GLMP_M64: #define __RDSEED__ 1 -+// CHECK_GLMP_M64: #define __SGX__ 1 -+// CHECK_GLMP_M64: #define __SHA__ 1 -+// CHECK_GLMP_M64: #define __SSE2__ 1 -+// CHECK_GLMP_M64: #define __SSE3__ 1 -+// CHECK_GLMP_M64: #define __SSE4_1__ 1 -+// CHECK_GLMP_M64: #define __SSE4_2__ 1 -+// CHECK_GLMP_M64: #define __SSE__ 1 -+// CHECK_GLMP_M64: #define __SSSE3__ 1 -+// CHECK_GLMP_M64: #define __XSAVEC__ 1 -+// CHECK_GLMP_M64: #define __XSAVEOPT__ 1 -+// CHECK_GLMP_M64: #define __XSAVES__ 1 -+// CHECK_GLMP_M64: #define __XSAVE__ 1 -+// CHECK_GLMP_M64: #define __goldmont_plus 1 -+// CHECK_GLMP_M64: #define __goldmont_plus__ 1 -+// CHECK_GLMP_M64: #define __tune_goldmont_plus__ 1 -+// CHECK_GLMP_M64: #define __x86_64 1 -+// CHECK_GLMP_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=tremont -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck %s -check-prefix=CHECK_TRM_M32 -+// CHECK_TRM_M32: #define __AES__ 1 -+// CHECK_TRM_M32-NOT: #define __CLDEMOTE__ 1 -+// CHECK_TRM_M32: #define __CLFLUSHOPT__ 1 -+// CHECK_TRM_M32: #define __CLWB__ 1 -+// CHECK_TRM_M32: #define __FSGSBASE__ 1 -+// CHECK_TRM_M32: #define __FXSR__ 1 -+// CHECK_TRM_M32: #define __GFNI__ 1 -+// CHECK_TRM_M32: #define __MMX__ 1 -+// CHECK_TRM_M32: #define __MOVBE__ 1 -+// CHECK_TRM_M32-NOT: #define __MOVDIR64B__ 1 -+// CHECK_TRM_M32-NOT: #define __MOVDIRI__ 1 -+// CHECK_TRM_M32: #define __PCLMUL__ 1 -+// CHECK_TRM_M32: #define __POPCNT__ 1 -+// CHECK_TRM_M32: #define __PRFCHW__ 1 -+// CHECK_TRM_M32: #define __PTWRITE__ 1 -+// CHECK_TRM_M32: #define __RDPID__ 1 -+// CHECK_TRM_M32: #define __RDRND__ 1 -+// CHECK_TRM_M32: #define __RDSEED__ 1 -+// CHECK_TRM_M32: #define __SGX__ 1 -+// CHECK_TRM_M32: #define __SHA__ 1 -+// CHECK_TRM_M32: #define __SSE2__ 1 -+// CHECK_TRM_M32: #define __SSE3__ 1 -+// CHECK_TRM_M32: #define __SSE4_1__ 1 -+// CHECK_TRM_M32: #define __SSE4_2__ 1 -+// CHECK_TRM_M32: #define __SSE_MATH__ 1 -+// CHECK_TRM_M32: #define __SSE__ 1 -+// CHECK_TRM_M32: #define __SSSE3__ 1 -+// CHECK_TRM_M32-NOT: #define __WAITPKG__ 1 -+// CHECK_TRM_M32: #define __XSAVEC__ 1 -+// CHECK_TRM_M32: #define __XSAVEOPT__ 1 -+// CHECK_TRM_M32: #define __XSAVES__ 1 -+// CHECK_TRM_M32: #define __XSAVE__ 1 -+// CHECK_TRM_M32: #define __i386 1 -+// CHECK_TRM_M32: #define __i386__ 1 -+// CHECK_TRM_M32: #define __tremont 1 -+// CHECK_TRM_M32: #define __tremont__ 1 -+// CHECK_TRM_M32: #define __tune_tremont__ 1 -+// CHECK_TRM_M32: #define i386 1 -+ -+// RUN: %clang -march=tremont -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck %s -check-prefix=CHECK_TRM_M64 -+// CHECK_TRM_M64: #define __AES__ 1 -+// CHECK_TRM_M64-NOT: #define __CLDEMOTE__ 1 -+// CHECK_TRM_M64: #define __CLFLUSHOPT__ 1 -+// CHECK_TRM_M64: #define __CLWB__ 1 -+// CHECK_TRM_M64: #define __FSGSBASE__ 1 -+// CHECK_TRM_M64: #define __FXSR__ 1 -+// CHECK_TRM_M64: #define __GFNI__ 1 -+// CHECK_TRM_M64: #define __MMX__ 1 -+// CHECK_TRM_M64: #define __MOVBE__ 1 -+// CHECK_TRM_M64-NOT: #define __MOVDIR64B__ 1 -+// CHECK_TRM_M64-NOT: #define __MOVDIRI__ 1 -+// CHECK_TRM_M64: #define __PCLMUL__ 1 -+// CHECK_TRM_M64: #define __POPCNT__ 1 -+// CHECK_TRM_M64: #define __PRFCHW__ 1 -+// CHECK_TRM_M64: #define __PTWRITE__ 1 -+// CHECK_TRM_M64: #define __RDPID__ 1 -+// CHECK_TRM_M64: #define __RDRND__ 1 -+// CHECK_TRM_M64: #define __RDSEED__ 1 -+// CHECK_TRM_M64: #define __SGX__ 1 -+// CHECK_TRM_M64: #define __SHA__ 1 -+// CHECK_TRM_M64: #define __SSE2__ 1 -+// CHECK_TRM_M64: #define __SSE3__ 1 -+// CHECK_TRM_M64: #define __SSE4_1__ 1 -+// CHECK_TRM_M64: #define __SSE4_2__ 1 -+// CHECK_TRM_M64: #define __SSE__ 1 -+// CHECK_TRM_M64: #define __SSSE3__ 1 -+// CHECK_TRM_M64-NOT: #define __WAITPKG__ 1 -+// CHECK_TRM_M64: #define __XSAVEC__ 1 -+// CHECK_TRM_M64: #define __XSAVEOPT__ 1 -+// CHECK_TRM_M64: #define __XSAVES__ 1 -+// CHECK_TRM_M64: #define __XSAVE__ 1 -+// CHECK_TRM_M64: #define __tremont 1 -+// CHECK_TRM_M64: #define __tremont__ 1 -+// CHECK_TRM_M64: #define __tune_tremont__ 1 -+// CHECK_TRM_M64: #define __x86_64 1 -+// CHECK_TRM_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=slm -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SLM_M32 -+// CHECK_SLM_M32: #define __FXSR__ 1 -+// CHECK_SLM_M32: #define __MMX__ 1 -+// CHECK_SLM_M32: #define __MOVBE__ 1 -+// CHECK_SLM_M32: #define __PCLMUL__ 1 -+// CHECK_SLM_M32: #define __POPCNT__ 1 -+// CHECK_SLM_M32: #define __PRFCHW__ 1 -+// CHECK_SLM_M32: #define __RDRND__ 1 -+// CHECK_SLM_M32: #define __SSE2__ 1 -+// CHECK_SLM_M32: #define __SSE3__ 1 -+// CHECK_SLM_M32: #define __SSE4_1__ 1 -+// CHECK_SLM_M32: #define __SSE4_2__ 1 -+// CHECK_SLM_M32: #define __SSE__ 1 -+// CHECK_SLM_M32: #define __SSSE3__ 1 -+// CHECK_SLM_M32: #define __i386 1 -+// CHECK_SLM_M32: #define __i386__ 1 -+// CHECK_SLM_M32: #define __slm 1 -+// CHECK_SLM_M32: #define __slm__ 1 -+// CHECK_SLM_M32: #define __tune_slm__ 1 -+// CHECK_SLM_M32: #define i386 1 -+ -+// RUN: %clang -march=slm -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SLM_M64 -+// CHECK_SLM_M64: #define __FXSR__ 1 -+// CHECK_SLM_M64: #define __MMX__ 1 -+// CHECK_SLM_M64: #define __MOVBE__ 1 -+// CHECK_SLM_M64: #define __PCLMUL__ 1 -+// CHECK_SLM_M64: #define __POPCNT__ 1 -+// CHECK_SLM_M64: #define __PRFCHW__ 1 -+// CHECK_SLM_M64: #define __RDRND__ 1 -+// CHECK_SLM_M64: #define __SSE2_MATH__ 1 -+// CHECK_SLM_M64: #define __SSE2__ 1 -+// CHECK_SLM_M64: #define __SSE3__ 1 -+// CHECK_SLM_M64: #define __SSE4_1__ 1 -+// CHECK_SLM_M64: #define __SSE4_2__ 1 -+// CHECK_SLM_M64: #define __SSE_MATH__ 1 -+// CHECK_SLM_M64: #define __SSE__ 1 -+// CHECK_SLM_M64: #define __SSSE3__ 1 -+// CHECK_SLM_M64: #define __amd64 1 -+// CHECK_SLM_M64: #define __amd64__ 1 -+// CHECK_SLM_M64: #define __slm 1 -+// CHECK_SLM_M64: #define __slm__ 1 -+// CHECK_SLM_M64: #define __tune_slm__ 1 -+// CHECK_SLM_M64: #define __x86_64 1 -+// CHECK_SLM_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=lakemont -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck %s -check-prefix=CHECK_LAKEMONT_M32 -+// CHECK_LAKEMONT_M32: #define __i386 1 -+// CHECK_LAKEMONT_M32: #define __i386__ 1 -+// CHECK_LAKEMONT_M32: #define __i586 1 -+// CHECK_LAKEMONT_M32: #define __i586__ 1 -+// CHECK_LAKEMONT_M32: #define __pentium 1 -+// CHECK_LAKEMONT_M32: #define __pentium__ 1 -+// CHECK_LAKEMONT_M32: #define __tune_lakemont__ 1 -+// CHECK_LAKEMONT_M32: #define i386 1 -+// RUN: not %clang -march=lakemont -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck %s -check-prefix=CHECK_LAKEMONT_M64 -+// CHECK_LAKEMONT_M64: error: -+ -+// RUN: %clang -march=geode -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_GEODE_M32 -+// CHECK_GEODE_M32: #define __3dNOW_A__ 1 -+// CHECK_GEODE_M32: #define __3dNOW__ 1 -+// CHECK_GEODE_M32: #define __MMX__ 1 -+// CHECK_GEODE_M32: #define __geode 1 -+// CHECK_GEODE_M32: #define __geode__ 1 -+// CHECK_GEODE_M32: #define __i386 1 -+// CHECK_GEODE_M32: #define __i386__ 1 -+// CHECK_GEODE_M32: #define __tune_geode__ 1 -+// CHECK_GEODE_M32: #define i386 1 -+// RUN: not %clang -march=geode -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_GEODE_M64 -+// CHECK_GEODE_M64: error: {{.*}} -+ -+// RUN: %clang -march=k6 -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K6_M32 -+// CHECK_K6_M32: #define __MMX__ 1 -+// CHECK_K6_M32: #define __i386 1 -+// CHECK_K6_M32: #define __i386__ 1 -+// CHECK_K6_M32: #define __k6 1 -+// CHECK_K6_M32: #define __k6__ 1 -+// CHECK_K6_M32: #define __tune_k6__ 1 -+// CHECK_K6_M32: #define i386 1 -+// RUN: not %clang -march=k6 -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K6_M64 -+// CHECK_K6_M64: error: {{.*}} -+ -+// RUN: %clang -march=k6-2 -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K6_2_M32 -+// CHECK_K6_2_M32: #define __3dNOW__ 1 -+// CHECK_K6_2_M32: #define __MMX__ 1 -+// CHECK_K6_2_M32: #define __i386 1 -+// CHECK_K6_2_M32: #define __i386__ 1 -+// CHECK_K6_2_M32: #define __k6 1 -+// CHECK_K6_2_M32: #define __k6_2__ 1 -+// CHECK_K6_2_M32: #define __k6__ 1 -+// CHECK_K6_2_M32: #define __tune_k6_2__ 1 -+// CHECK_K6_2_M32: #define __tune_k6__ 1 -+// CHECK_K6_2_M32: #define i386 1 -+// RUN: not %clang -march=k6-2 -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K6_2_M64 -+// CHECK_K6_2_M64: error: {{.*}} -+ -+// RUN: %clang -march=k6-3 -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K6_3_M32 -+// CHECK_K6_3_M32: #define __3dNOW__ 1 -+// CHECK_K6_3_M32: #define __MMX__ 1 -+// CHECK_K6_3_M32: #define __i386 1 -+// CHECK_K6_3_M32: #define __i386__ 1 -+// CHECK_K6_3_M32: #define __k6 1 -+// CHECK_K6_3_M32: #define __k6_3__ 1 -+// CHECK_K6_3_M32: #define __k6__ 1 -+// CHECK_K6_3_M32: #define __tune_k6_3__ 1 -+// CHECK_K6_3_M32: #define __tune_k6__ 1 -+// CHECK_K6_3_M32: #define i386 1 -+// RUN: not %clang -march=k6-3 -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K6_3_M64 -+// CHECK_K6_3_M64: error: {{.*}} -+ -+// RUN: %clang -march=athlon -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_M32 -+// CHECK_ATHLON_M32: #define __3dNOW_A__ 1 -+// CHECK_ATHLON_M32: #define __3dNOW__ 1 -+// CHECK_ATHLON_M32: #define __MMX__ 1 -+// CHECK_ATHLON_M32: #define __athlon 1 -+// CHECK_ATHLON_M32: #define __athlon__ 1 -+// CHECK_ATHLON_M32: #define __i386 1 -+// CHECK_ATHLON_M32: #define __i386__ 1 -+// CHECK_ATHLON_M32: #define __tune_athlon__ 1 -+// CHECK_ATHLON_M32: #define i386 1 -+// RUN: not %clang -march=athlon -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_M64 -+// CHECK_ATHLON_M64: error: {{.*}} -+ -+// RUN: %clang -march=athlon-tbird -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_TBIRD_M32 -+// CHECK_ATHLON_TBIRD_M32: #define __3dNOW_A__ 1 -+// CHECK_ATHLON_TBIRD_M32: #define __3dNOW__ 1 -+// CHECK_ATHLON_TBIRD_M32: #define __MMX__ 1 -+// CHECK_ATHLON_TBIRD_M32: #define __athlon 1 -+// CHECK_ATHLON_TBIRD_M32: #define __athlon__ 1 -+// CHECK_ATHLON_TBIRD_M32: #define __i386 1 -+// CHECK_ATHLON_TBIRD_M32: #define __i386__ 1 -+// CHECK_ATHLON_TBIRD_M32: #define __tune_athlon__ 1 -+// CHECK_ATHLON_TBIRD_M32: #define i386 1 -+// RUN: not %clang -march=athlon-tbird -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_TBIRD_M64 -+// CHECK_ATHLON_TBIRD_M64: error: {{.*}} -+ -+// RUN: %clang -march=athlon-4 -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_4_M32 -+// CHECK_ATHLON_4_M32: #define __3dNOW_A__ 1 -+// CHECK_ATHLON_4_M32: #define __3dNOW__ 1 -+// CHECK_ATHLON_4_M32: #define __MMX__ 1 -+// CHECK_ATHLON_4_M32: #define __SSE__ 1 -+// CHECK_ATHLON_4_M32: #define __athlon 1 -+// CHECK_ATHLON_4_M32: #define __athlon__ 1 -+// CHECK_ATHLON_4_M32: #define __athlon_sse__ 1 -+// CHECK_ATHLON_4_M32: #define __i386 1 -+// CHECK_ATHLON_4_M32: #define __i386__ 1 -+// CHECK_ATHLON_4_M32: #define __tune_athlon__ 1 -+// CHECK_ATHLON_4_M32: #define __tune_athlon_sse__ 1 -+// CHECK_ATHLON_4_M32: #define i386 1 -+// RUN: not %clang -march=athlon-4 -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_4_M64 -+// CHECK_ATHLON_4_M64: error: {{.*}} -+ -+// RUN: %clang -march=athlon-xp -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_XP_M32 -+// CHECK_ATHLON_XP_M32: #define __3dNOW_A__ 1 -+// CHECK_ATHLON_XP_M32: #define __3dNOW__ 1 -+// CHECK_ATHLON_XP_M32: #define __MMX__ 1 -+// CHECK_ATHLON_XP_M32: #define __SSE__ 1 -+// CHECK_ATHLON_XP_M32: #define __athlon 1 -+// CHECK_ATHLON_XP_M32: #define __athlon__ 1 -+// CHECK_ATHLON_XP_M32: #define __athlon_sse__ 1 -+// CHECK_ATHLON_XP_M32: #define __i386 1 -+// CHECK_ATHLON_XP_M32: #define __i386__ 1 -+// CHECK_ATHLON_XP_M32: #define __tune_athlon__ 1 -+// CHECK_ATHLON_XP_M32: #define __tune_athlon_sse__ 1 -+// CHECK_ATHLON_XP_M32: #define i386 1 -+// RUN: not %clang -march=athlon-xp -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_XP_M64 -+// CHECK_ATHLON_XP_M64: error: {{.*}} -+ -+// RUN: %clang -march=athlon-mp -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_MP_M32 -+// CHECK_ATHLON_MP_M32: #define __3dNOW_A__ 1 -+// CHECK_ATHLON_MP_M32: #define __3dNOW__ 1 -+// CHECK_ATHLON_MP_M32: #define __MMX__ 1 -+// CHECK_ATHLON_MP_M32: #define __SSE__ 1 -+// CHECK_ATHLON_MP_M32: #define __athlon 1 -+// CHECK_ATHLON_MP_M32: #define __athlon__ 1 -+// CHECK_ATHLON_MP_M32: #define __athlon_sse__ 1 -+// CHECK_ATHLON_MP_M32: #define __i386 1 -+// CHECK_ATHLON_MP_M32: #define __i386__ 1 -+// CHECK_ATHLON_MP_M32: #define __tune_athlon__ 1 -+// CHECK_ATHLON_MP_M32: #define __tune_athlon_sse__ 1 -+// CHECK_ATHLON_MP_M32: #define i386 1 -+// RUN: not %clang -march=athlon-mp -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_MP_M64 -+// CHECK_ATHLON_MP_M64: error: {{.*}} -+ -+// RUN: %clang -march=x86-64 -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_X86_64_M32 -+// CHECK_X86_64_M32: #define __MMX__ 1 -+// CHECK_X86_64_M32: #define __SSE2__ 1 -+// CHECK_X86_64_M32: #define __SSE__ 1 -+// CHECK_X86_64_M32: #define __i386 1 -+// CHECK_X86_64_M32: #define __i386__ 1 -+// CHECK_X86_64_M32: #define __k8 1 -+// CHECK_X86_64_M32: #define __k8__ 1 -+// CHECK_X86_64_M32: #define i386 1 -+ -+// RUN: %clang -march=k8 -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K8_M32 -+// CHECK_K8_M32: #define __3dNOW_A__ 1 -+// CHECK_K8_M32: #define __3dNOW__ 1 -+// CHECK_K8_M32: #define __MMX__ 1 -+// CHECK_K8_M32: #define __SSE2__ 1 -+// CHECK_K8_M32: #define __SSE__ 1 -+// CHECK_K8_M32: #define __i386 1 -+// CHECK_K8_M32: #define __i386__ 1 -+// CHECK_K8_M32: #define __k8 1 -+// CHECK_K8_M32: #define __k8__ 1 -+// CHECK_K8_M32: #define __tune_k8__ 1 -+// CHECK_K8_M32: #define i386 1 -+ -+// RUN: %clang -march=k8 -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K8_M64 -+// CHECK_K8_M64: #define __3dNOW_A__ 1 -+// CHECK_K8_M64: #define __3dNOW__ 1 -+// CHECK_K8_M64: #define __MMX__ 1 -+// CHECK_K8_M64: #define __SSE2_MATH__ 1 -+// CHECK_K8_M64: #define __SSE2__ 1 -+// CHECK_K8_M64: #define __SSE_MATH__ 1 -+// CHECK_K8_M64: #define __SSE__ 1 -+// CHECK_K8_M64: #define __amd64 1 -+// CHECK_K8_M64: #define __amd64__ 1 -+// CHECK_K8_M64: #define __k8 1 -+// CHECK_K8_M64: #define __k8__ 1 -+// CHECK_K8_M64: #define __tune_k8__ 1 -+// CHECK_K8_M64: #define __x86_64 1 -+// CHECK_K8_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=k8-sse3 -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K8_SSE3_M32 -+// CHECK_K8_SSE3_M32: #define __3dNOW_A__ 1 -+// CHECK_K8_SSE3_M32: #define __3dNOW__ 1 -+// CHECK_K8_SSE3_M32: #define __MMX__ 1 -+// CHECK_K8_SSE3_M32: #define __SSE2__ 1 -+// CHECK_K8_SSE3_M32: #define __SSE3__ 1 -+// CHECK_K8_SSE3_M32: #define __SSE__ 1 -+// CHECK_K8_SSE3_M32: #define __i386 1 -+// CHECK_K8_SSE3_M32: #define __i386__ 1 -+// CHECK_K8_SSE3_M32: #define __k8 1 -+// CHECK_K8_SSE3_M32: #define __k8__ 1 -+// CHECK_K8_SSE3_M32: #define __tune_k8__ 1 -+// CHECK_K8_SSE3_M32: #define i386 1 -+ -+// RUN: %clang -march=k8-sse3 -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_K8_SSE3_M64 -+// CHECK_K8_SSE3_M64: #define __3dNOW_A__ 1 -+// CHECK_K8_SSE3_M64: #define __3dNOW__ 1 -+// CHECK_K8_SSE3_M64: #define __MMX__ 1 -+// CHECK_K8_SSE3_M64: #define __SSE2_MATH__ 1 -+// CHECK_K8_SSE3_M64: #define __SSE2__ 1 -+// CHECK_K8_SSE3_M64: #define __SSE3__ 1 -+// CHECK_K8_SSE3_M64: #define __SSE_MATH__ 1 -+// CHECK_K8_SSE3_M64: #define __SSE__ 1 -+// CHECK_K8_SSE3_M64: #define __amd64 1 -+// CHECK_K8_SSE3_M64: #define __amd64__ 1 -+// CHECK_K8_SSE3_M64: #define __k8 1 -+// CHECK_K8_SSE3_M64: #define __k8__ 1 -+// CHECK_K8_SSE3_M64: #define __tune_k8__ 1 -+// CHECK_K8_SSE3_M64: #define __x86_64 1 -+// CHECK_K8_SSE3_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=opteron -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_OPTERON_M32 -+// CHECK_OPTERON_M32: #define __3dNOW_A__ 1 -+// CHECK_OPTERON_M32: #define __3dNOW__ 1 -+// CHECK_OPTERON_M32: #define __MMX__ 1 -+// CHECK_OPTERON_M32: #define __SSE2__ 1 -+// CHECK_OPTERON_M32: #define __SSE__ 1 -+// CHECK_OPTERON_M32: #define __i386 1 -+// CHECK_OPTERON_M32: #define __i386__ 1 -+// CHECK_OPTERON_M32: #define __k8 1 -+// CHECK_OPTERON_M32: #define __k8__ 1 -+// CHECK_OPTERON_M32: #define __tune_k8__ 1 -+// CHECK_OPTERON_M32: #define i386 1 -+ -+// RUN: %clang -march=opteron -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_OPTERON_M64 -+// CHECK_OPTERON_M64: #define __3dNOW_A__ 1 -+// CHECK_OPTERON_M64: #define __3dNOW__ 1 -+// CHECK_OPTERON_M64: #define __MMX__ 1 -+// CHECK_OPTERON_M64: #define __SSE2_MATH__ 1 -+// CHECK_OPTERON_M64: #define __SSE2__ 1 -+// CHECK_OPTERON_M64: #define __SSE_MATH__ 1 -+// CHECK_OPTERON_M64: #define __SSE__ 1 -+// CHECK_OPTERON_M64: #define __amd64 1 -+// CHECK_OPTERON_M64: #define __amd64__ 1 -+// CHECK_OPTERON_M64: #define __k8 1 -+// CHECK_OPTERON_M64: #define __k8__ 1 -+// CHECK_OPTERON_M64: #define __tune_k8__ 1 -+// CHECK_OPTERON_M64: #define __x86_64 1 -+// CHECK_OPTERON_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=opteron-sse3 -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_OPTERON_SSE3_M32 -+// CHECK_OPTERON_SSE3_M32: #define __3dNOW_A__ 1 -+// CHECK_OPTERON_SSE3_M32: #define __3dNOW__ 1 -+// CHECK_OPTERON_SSE3_M32: #define __MMX__ 1 -+// CHECK_OPTERON_SSE3_M32: #define __SSE2__ 1 -+// CHECK_OPTERON_SSE3_M32: #define __SSE3__ 1 -+// CHECK_OPTERON_SSE3_M32: #define __SSE__ 1 -+// CHECK_OPTERON_SSE3_M32: #define __i386 1 -+// CHECK_OPTERON_SSE3_M32: #define __i386__ 1 -+// CHECK_OPTERON_SSE3_M32: #define __k8 1 -+// CHECK_OPTERON_SSE3_M32: #define __k8__ 1 -+// CHECK_OPTERON_SSE3_M32: #define __tune_k8__ 1 -+// CHECK_OPTERON_SSE3_M32: #define i386 1 -+ -+// RUN: %clang -march=opteron-sse3 -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_OPTERON_SSE3_M64 -+// CHECK_OPTERON_SSE3_M64: #define __3dNOW_A__ 1 -+// CHECK_OPTERON_SSE3_M64: #define __3dNOW__ 1 -+// CHECK_OPTERON_SSE3_M64: #define __MMX__ 1 -+// CHECK_OPTERON_SSE3_M64: #define __SSE2_MATH__ 1 -+// CHECK_OPTERON_SSE3_M64: #define __SSE2__ 1 -+// CHECK_OPTERON_SSE3_M64: #define __SSE3__ 1 -+// CHECK_OPTERON_SSE3_M64: #define __SSE_MATH__ 1 -+// CHECK_OPTERON_SSE3_M64: #define __SSE__ 1 -+// CHECK_OPTERON_SSE3_M64: #define __amd64 1 -+// CHECK_OPTERON_SSE3_M64: #define __amd64__ 1 -+// CHECK_OPTERON_SSE3_M64: #define __k8 1 -+// CHECK_OPTERON_SSE3_M64: #define __k8__ 1 -+// CHECK_OPTERON_SSE3_M64: #define __tune_k8__ 1 -+// CHECK_OPTERON_SSE3_M64: #define __x86_64 1 -+// CHECK_OPTERON_SSE3_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=athlon64 -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON64_M32 -+// CHECK_ATHLON64_M32: #define __3dNOW_A__ 1 -+// CHECK_ATHLON64_M32: #define __3dNOW__ 1 -+// CHECK_ATHLON64_M32: #define __MMX__ 1 -+// CHECK_ATHLON64_M32: #define __SSE2__ 1 -+// CHECK_ATHLON64_M32: #define __SSE__ 1 -+// CHECK_ATHLON64_M32: #define __i386 1 -+// CHECK_ATHLON64_M32: #define __i386__ 1 -+// CHECK_ATHLON64_M32: #define __k8 1 -+// CHECK_ATHLON64_M32: #define __k8__ 1 -+// CHECK_ATHLON64_M32: #define __tune_k8__ 1 -+// CHECK_ATHLON64_M32: #define i386 1 -+ -+// RUN: %clang -march=athlon64 -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON64_M64 -+// CHECK_ATHLON64_M64: #define __3dNOW_A__ 1 -+// CHECK_ATHLON64_M64: #define __3dNOW__ 1 -+// CHECK_ATHLON64_M64: #define __MMX__ 1 -+// CHECK_ATHLON64_M64: #define __SSE2_MATH__ 1 -+// CHECK_ATHLON64_M64: #define __SSE2__ 1 -+// CHECK_ATHLON64_M64: #define __SSE_MATH__ 1 -+// CHECK_ATHLON64_M64: #define __SSE__ 1 -+// CHECK_ATHLON64_M64: #define __amd64 1 -+// CHECK_ATHLON64_M64: #define __amd64__ 1 -+// CHECK_ATHLON64_M64: #define __k8 1 -+// CHECK_ATHLON64_M64: #define __k8__ 1 -+// CHECK_ATHLON64_M64: #define __tune_k8__ 1 -+// CHECK_ATHLON64_M64: #define __x86_64 1 -+// CHECK_ATHLON64_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=athlon64-sse3 -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON64_SSE3_M32 -+// CHECK_ATHLON64_SSE3_M32: #define __3dNOW_A__ 1 -+// CHECK_ATHLON64_SSE3_M32: #define __3dNOW__ 1 -+// CHECK_ATHLON64_SSE3_M32: #define __MMX__ 1 -+// CHECK_ATHLON64_SSE3_M32: #define __SSE2__ 1 -+// CHECK_ATHLON64_SSE3_M32: #define __SSE3__ 1 -+// CHECK_ATHLON64_SSE3_M32: #define __SSE__ 1 -+// CHECK_ATHLON64_SSE3_M32: #define __i386 1 -+// CHECK_ATHLON64_SSE3_M32: #define __i386__ 1 -+// CHECK_ATHLON64_SSE3_M32: #define __k8 1 -+// CHECK_ATHLON64_SSE3_M32: #define __k8__ 1 -+// CHECK_ATHLON64_SSE3_M32: #define __tune_k8__ 1 -+// CHECK_ATHLON64_SSE3_M32: #define i386 1 -+ -+// RUN: %clang -march=athlon64-sse3 -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON64_SSE3_M64 -+// CHECK_ATHLON64_SSE3_M64: #define __3dNOW_A__ 1 -+// CHECK_ATHLON64_SSE3_M64: #define __3dNOW__ 1 -+// CHECK_ATHLON64_SSE3_M64: #define __MMX__ 1 -+// CHECK_ATHLON64_SSE3_M64: #define __SSE2_MATH__ 1 -+// CHECK_ATHLON64_SSE3_M64: #define __SSE2__ 1 -+// CHECK_ATHLON64_SSE3_M64: #define __SSE3__ 1 -+// CHECK_ATHLON64_SSE3_M64: #define __SSE_MATH__ 1 -+// CHECK_ATHLON64_SSE3_M64: #define __SSE__ 1 -+// CHECK_ATHLON64_SSE3_M64: #define __amd64 1 -+// CHECK_ATHLON64_SSE3_M64: #define __amd64__ 1 -+// CHECK_ATHLON64_SSE3_M64: #define __k8 1 -+// CHECK_ATHLON64_SSE3_M64: #define __k8__ 1 -+// CHECK_ATHLON64_SSE3_M64: #define __tune_k8__ 1 -+// CHECK_ATHLON64_SSE3_M64: #define __x86_64 1 -+// CHECK_ATHLON64_SSE3_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=athlon-fx -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_FX_M32 -+// CHECK_ATHLON_FX_M32: #define __3dNOW_A__ 1 -+// CHECK_ATHLON_FX_M32: #define __3dNOW__ 1 -+// CHECK_ATHLON_FX_M32: #define __MMX__ 1 -+// CHECK_ATHLON_FX_M32: #define __SSE2__ 1 -+// CHECK_ATHLON_FX_M32: #define __SSE__ 1 -+// CHECK_ATHLON_FX_M32: #define __i386 1 -+// CHECK_ATHLON_FX_M32: #define __i386__ 1 -+// CHECK_ATHLON_FX_M32: #define __k8 1 -+// CHECK_ATHLON_FX_M32: #define __k8__ 1 -+// CHECK_ATHLON_FX_M32: #define __tune_k8__ 1 -+// CHECK_ATHLON_FX_M32: #define i386 1 -+ -+// RUN: %clang -march=athlon-fx -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ATHLON_FX_M64 -+// CHECK_ATHLON_FX_M64: #define __3dNOW_A__ 1 -+// CHECK_ATHLON_FX_M64: #define __3dNOW__ 1 -+// CHECK_ATHLON_FX_M64: #define __MMX__ 1 -+// CHECK_ATHLON_FX_M64: #define __SSE2_MATH__ 1 -+// CHECK_ATHLON_FX_M64: #define __SSE2__ 1 -+// CHECK_ATHLON_FX_M64: #define __SSE_MATH__ 1 -+// CHECK_ATHLON_FX_M64: #define __SSE__ 1 -+// CHECK_ATHLON_FX_M64: #define __amd64 1 -+// CHECK_ATHLON_FX_M64: #define __amd64__ 1 -+// CHECK_ATHLON_FX_M64: #define __k8 1 -+// CHECK_ATHLON_FX_M64: #define __k8__ 1 -+// CHECK_ATHLON_FX_M64: #define __tune_k8__ 1 -+// CHECK_ATHLON_FX_M64: #define __x86_64 1 -+// CHECK_ATHLON_FX_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=amdfam10 -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_AMDFAM10_M32 -+// CHECK_AMDFAM10_M32: #define __3dNOW_A__ 1 -+// CHECK_AMDFAM10_M32: #define __3dNOW__ 1 -+// CHECK_AMDFAM10_M32: #define __LAHF_SAHF__ 1 -+// CHECK_AMDFAM10_M32: #define __LZCNT__ 1 -+// CHECK_AMDFAM10_M32: #define __MMX__ 1 -+// CHECK_AMDFAM10_M32: #define __POPCNT__ 1 -+// CHECK_AMDFAM10_M32: #define __PRFCHW__ 1 -+// CHECK_AMDFAM10_M32: #define __SSE2_MATH__ 1 -+// CHECK_AMDFAM10_M32: #define __SSE2__ 1 -+// CHECK_AMDFAM10_M32: #define __SSE3__ 1 -+// CHECK_AMDFAM10_M32: #define __SSE4A__ 1 -+// CHECK_AMDFAM10_M32: #define __SSE_MATH__ 1 -+// CHECK_AMDFAM10_M32: #define __SSE__ 1 -+// CHECK_AMDFAM10_M32-NOT: #define __SSSE3__ 1 -+// CHECK_AMDFAM10_M32: #define __amdfam10 1 -+// CHECK_AMDFAM10_M32: #define __amdfam10__ 1 -+// CHECK_AMDFAM10_M32: #define __i386 1 -+// CHECK_AMDFAM10_M32: #define __i386__ 1 -+// CHECK_AMDFAM10_M32: #define __tune_amdfam10__ 1 -+ -+// RUN: %clang -march=amdfam10 -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_AMDFAM10_M64 -+// CHECK_AMDFAM10_M64: #define __3dNOW_A__ 1 -+// CHECK_AMDFAM10_M64: #define __3dNOW__ 1 -+// CHECK_AMDFAM10_M64: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 1 -+// CHECK_AMDFAM10_M64: #define __LAHF_SAHF__ 1 -+// CHECK_AMDFAM10_M64: #define __LZCNT__ 1 -+// CHECK_AMDFAM10_M64: #define __MMX__ 1 -+// CHECK_AMDFAM10_M64: #define __POPCNT__ 1 -+// CHECK_AMDFAM10_M64: #define __PRFCHW__ 1 -+// CHECK_AMDFAM10_M64: #define __SSE2_MATH__ 1 -+// CHECK_AMDFAM10_M64: #define __SSE2__ 1 -+// CHECK_AMDFAM10_M64: #define __SSE3__ 1 -+// CHECK_AMDFAM10_M64: #define __SSE4A__ 1 -+// CHECK_AMDFAM10_M64: #define __SSE_MATH__ 1 -+// CHECK_AMDFAM10_M64: #define __SSE__ 1 -+// CHECK_AMDFAM10_M64-NOT: #define __SSSE3__ 1 -+// CHECK_AMDFAM10_M64: #define __amd64 1 -+// CHECK_AMDFAM10_M64: #define __amd64__ 1 -+// CHECK_AMDFAM10_M64: #define __amdfam10 1 -+// CHECK_AMDFAM10_M64: #define __amdfam10__ 1 -+// CHECK_AMDFAM10_M64: #define __tune_amdfam10__ 1 -+// CHECK_AMDFAM10_M64: #define __x86_64 1 -+// CHECK_AMDFAM10_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=btver1 -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BTVER1_M32 -+// CHECK_BTVER1_M32-NOT: #define __3dNOW_A__ 1 -+// CHECK_BTVER1_M32-NOT: #define __3dNOW__ 1 -+// CHECK_BTVER1_M32: #define __LAHF_SAHF__ 1 -+// CHECK_BTVER1_M32: #define __LZCNT__ 1 -+// CHECK_BTVER1_M32: #define __MMX__ 1 -+// CHECK_BTVER1_M32: #define __POPCNT__ 1 -+// CHECK_BTVER1_M32: #define __PRFCHW__ 1 -+// CHECK_BTVER1_M32: #define __SSE2_MATH__ 1 -+// CHECK_BTVER1_M32: #define __SSE2__ 1 -+// CHECK_BTVER1_M32: #define __SSE3__ 1 -+// CHECK_BTVER1_M32: #define __SSE4A__ 1 -+// CHECK_BTVER1_M32: #define __SSE_MATH__ 1 -+// CHECK_BTVER1_M32: #define __SSE__ 1 -+// CHECK_BTVER1_M32: #define __SSSE3__ 1 -+// CHECK_BTVER1_M32: #define __btver1 1 -+// CHECK_BTVER1_M32: #define __btver1__ 1 -+// CHECK_BTVER1_M32: #define __i386 1 -+// CHECK_BTVER1_M32: #define __i386__ 1 -+// CHECK_BTVER1_M32: #define __tune_btver1__ 1 -+ -+// RUN: %clang -march=btver1 -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BTVER1_M64 -+// CHECK_BTVER1_M64-NOT: #define __3dNOW_A__ 1 -+// CHECK_BTVER1_M64-NOT: #define __3dNOW__ 1 -+// CHECK_BTVER1_M64: #define __LAHF_SAHF__ 1 -+// CHECK_BTVER1_M64: #define __LZCNT__ 1 -+// CHECK_BTVER1_M64: #define __MMX__ 1 -+// CHECK_BTVER1_M64: #define __POPCNT__ 1 -+// CHECK_BTVER1_M64: #define __PRFCHW__ 1 -+// CHECK_BTVER1_M64: #define __SSE2_MATH__ 1 -+// CHECK_BTVER1_M64: #define __SSE2__ 1 -+// CHECK_BTVER1_M64: #define __SSE3__ 1 -+// CHECK_BTVER1_M64: #define __SSE4A__ 1 -+// CHECK_BTVER1_M64: #define __SSE_MATH__ 1 -+// CHECK_BTVER1_M64: #define __SSE__ 1 -+// CHECK_BTVER1_M64: #define __SSSE3__ 1 -+// CHECK_BTVER1_M64: #define __amd64 1 -+// CHECK_BTVER1_M64: #define __amd64__ 1 -+// CHECK_BTVER1_M64: #define __btver1 1 -+// CHECK_BTVER1_M64: #define __btver1__ 1 -+// CHECK_BTVER1_M64: #define __tune_btver1__ 1 -+// CHECK_BTVER1_M64: #define __x86_64 1 -+// CHECK_BTVER1_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=btver2 -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BTVER2_M32 -+// CHECK_BTVER2_M32-NOT: #define __3dNOW_A__ 1 -+// CHECK_BTVER2_M32-NOT: #define __3dNOW__ 1 -+// CHECK_BTVER2_M32: #define __AES__ 1 -+// CHECK_BTVER2_M32: #define __AVX__ 1 -+// CHECK_BTVER2_M32: #define __BMI__ 1 -+// CHECK_BTVER2_M32: #define __F16C__ 1 -+// CHECK_BTVER2_M32: #define __LZCNT__ 1 -+// CHECK_BTVER2_M32: #define __MMX__ 1 -+// CHECK_BTVER2_M32: #define __MOVBE__ 1 -+// CHECK_BTVER2_M32: #define __PCLMUL__ 1 -+// CHECK_BTVER2_M32: #define __POPCNT__ 1 -+// CHECK_BTVER2_M32: #define __PRFCHW__ 1 -+// CHECK_BTVER2_M32: #define __SSE2_MATH__ 1 -+// CHECK_BTVER2_M32: #define __SSE2__ 1 -+// CHECK_BTVER2_M32: #define __SSE3__ 1 -+// CHECK_BTVER2_M32: #define __SSE4A__ 1 -+// CHECK_BTVER2_M32: #define __SSE_MATH__ 1 -+// CHECK_BTVER2_M32: #define __SSE__ 1 -+// CHECK_BTVER2_M32: #define __SSSE3__ 1 -+// CHECK_BTVER2_M32: #define __XSAVEOPT__ 1 -+// CHECK_BTVER2_M32: #define __XSAVE__ 1 -+// CHECK_BTVER2_M32: #define __btver2 1 -+// CHECK_BTVER2_M32: #define __btver2__ 1 -+// CHECK_BTVER2_M32: #define __i386 1 -+// CHECK_BTVER2_M32: #define __i386__ 1 -+// CHECK_BTVER2_M32: #define __tune_btver2__ 1 -+ -+// RUN: %clang -march=btver2 -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BTVER2_M64 -+// CHECK_BTVER2_M64-NOT: #define __3dNOW_A__ 1 -+// CHECK_BTVER2_M64-NOT: #define __3dNOW__ 1 -+// CHECK_BTVER2_M64: #define __AES__ 1 -+// CHECK_BTVER2_M64: #define __AVX__ 1 -+// CHECK_BTVER2_M64: #define __BMI__ 1 -+// CHECK_BTVER2_M64: #define __F16C__ 1 -+// CHECK_BTVER2_M64: #define __LZCNT__ 1 -+// CHECK_BTVER2_M64: #define __MMX__ 1 -+// CHECK_BTVER2_M64: #define __MOVBE__ 1 -+// CHECK_BTVER2_M64: #define __PCLMUL__ 1 -+// CHECK_BTVER2_M64: #define __POPCNT__ 1 -+// CHECK_BTVER2_M64: #define __PRFCHW__ 1 -+// CHECK_BTVER2_M64: #define __SSE2_MATH__ 1 -+// CHECK_BTVER2_M64: #define __SSE2__ 1 -+// CHECK_BTVER2_M64: #define __SSE3__ 1 -+// CHECK_BTVER2_M64: #define __SSE4A__ 1 -+// CHECK_BTVER2_M64: #define __SSE_MATH__ 1 -+// CHECK_BTVER2_M64: #define __SSE__ 1 -+// CHECK_BTVER2_M64: #define __SSSE3__ 1 -+// CHECK_BTVER2_M64: #define __XSAVEOPT__ 1 -+// CHECK_BTVER2_M64: #define __XSAVE__ 1 -+// CHECK_BTVER2_M64: #define __amd64 1 -+// CHECK_BTVER2_M64: #define __amd64__ 1 -+// CHECK_BTVER2_M64: #define __btver2 1 -+// CHECK_BTVER2_M64: #define __btver2__ 1 -+// CHECK_BTVER2_M64: #define __tune_btver2__ 1 -+// CHECK_BTVER2_M64: #define __x86_64 1 -+// CHECK_BTVER2_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=bdver1 -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER1_M32 -+// CHECK_BDVER1_M32-NOT: #define __3dNOW_A__ 1 -+// CHECK_BDVER1_M32-NOT: #define __3dNOW__ 1 -+// CHECK_BDVER1_M32: #define __AES__ 1 -+// CHECK_BDVER1_M32: #define __AVX__ 1 -+// CHECK_BDVER1_M32: #define __FMA4__ 1 -+// CHECK_BDVER1_M32: #define __LWP__ 1 -+// CHECK_BDVER1_M32: #define __LZCNT__ 1 -+// CHECK_BDVER1_M32: #define __MMX__ 1 -+// CHECK_BDVER1_M32: #define __PCLMUL__ 1 -+// CHECK_BDVER1_M32: #define __POPCNT__ 1 -+// CHECK_BDVER1_M32: #define __PRFCHW__ 1 -+// CHECK_BDVER1_M32: #define __SSE2_MATH__ 1 -+// CHECK_BDVER1_M32: #define __SSE2__ 1 -+// CHECK_BDVER1_M32: #define __SSE3__ 1 -+// CHECK_BDVER1_M32: #define __SSE4A__ 1 -+// CHECK_BDVER1_M32: #define __SSE4_1__ 1 -+// CHECK_BDVER1_M32: #define __SSE4_2__ 1 -+// CHECK_BDVER1_M32: #define __SSE_MATH__ 1 -+// CHECK_BDVER1_M32: #define __SSE__ 1 -+// CHECK_BDVER1_M32: #define __SSSE3__ 1 -+// CHECK_BDVER1_M32: #define __XOP__ 1 -+// CHECK_BDVER1_M32: #define __XSAVE__ 1 -+// CHECK_BDVER1_M32: #define __bdver1 1 -+// CHECK_BDVER1_M32: #define __bdver1__ 1 -+// CHECK_BDVER1_M32: #define __i386 1 -+// CHECK_BDVER1_M32: #define __i386__ 1 -+// CHECK_BDVER1_M32: #define __tune_bdver1__ 1 -+ -+// RUN: %clang -march=bdver1 -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER1_M64 -+// CHECK_BDVER1_M64-NOT: #define __3dNOW_A__ 1 -+// CHECK_BDVER1_M64-NOT: #define __3dNOW__ 1 -+// CHECK_BDVER1_M64: #define __AES__ 1 -+// CHECK_BDVER1_M64: #define __AVX__ 1 -+// CHECK_BDVER1_M64: #define __FMA4__ 1 -+// CHECK_BDVER1_M64: #define __LWP__ 1 -+// CHECK_BDVER1_M64: #define __LZCNT__ 1 -+// CHECK_BDVER1_M64: #define __MMX__ 1 -+// CHECK_BDVER1_M64: #define __PCLMUL__ 1 -+// CHECK_BDVER1_M64: #define __POPCNT__ 1 -+// CHECK_BDVER1_M64: #define __PRFCHW__ 1 -+// CHECK_BDVER1_M64: #define __SSE2_MATH__ 1 -+// CHECK_BDVER1_M64: #define __SSE2__ 1 -+// CHECK_BDVER1_M64: #define __SSE3__ 1 -+// CHECK_BDVER1_M64: #define __SSE4A__ 1 -+// CHECK_BDVER1_M64: #define __SSE4_1__ 1 -+// CHECK_BDVER1_M64: #define __SSE4_2__ 1 -+// CHECK_BDVER1_M64: #define __SSE_MATH__ 1 -+// CHECK_BDVER1_M64: #define __SSE__ 1 -+// CHECK_BDVER1_M64: #define __SSSE3__ 1 -+// CHECK_BDVER1_M64: #define __XOP__ 1 -+// CHECK_BDVER1_M64: #define __XSAVE__ 1 -+// CHECK_BDVER1_M64: #define __amd64 1 -+// CHECK_BDVER1_M64: #define __amd64__ 1 -+// CHECK_BDVER1_M64: #define __bdver1 1 -+// CHECK_BDVER1_M64: #define __bdver1__ 1 -+// CHECK_BDVER1_M64: #define __tune_bdver1__ 1 -+// CHECK_BDVER1_M64: #define __x86_64 1 -+// CHECK_BDVER1_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=bdver2 -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER2_M32 -+// CHECK_BDVER2_M32-NOT: #define __3dNOW_A__ 1 -+// CHECK_BDVER2_M32-NOT: #define __3dNOW__ 1 -+// CHECK_BDVER2_M32: #define __AES__ 1 -+// CHECK_BDVER2_M32: #define __AVX__ 1 -+// CHECK_BDVER2_M32: #define __BMI__ 1 -+// CHECK_BDVER2_M32: #define __F16C__ 1 -+// CHECK_BDVER2_M32: #define __FMA4__ 1 -+// CHECK_BDVER2_M32: #define __FMA__ 1 -+// CHECK_BDVER2_M32: #define __LWP__ 1 -+// CHECK_BDVER2_M32: #define __LZCNT__ 1 -+// CHECK_BDVER2_M32: #define __MMX__ 1 -+// CHECK_BDVER2_M32: #define __PCLMUL__ 1 -+// CHECK_BDVER2_M32: #define __POPCNT__ 1 -+// CHECK_BDVER2_M32: #define __PRFCHW__ 1 -+// CHECK_BDVER2_M32: #define __SSE2_MATH__ 1 -+// CHECK_BDVER2_M32: #define __SSE2__ 1 -+// CHECK_BDVER2_M32: #define __SSE3__ 1 -+// CHECK_BDVER2_M32: #define __SSE4A__ 1 -+// CHECK_BDVER2_M32: #define __SSE4_1__ 1 -+// CHECK_BDVER2_M32: #define __SSE4_2__ 1 -+// CHECK_BDVER2_M32: #define __SSE_MATH__ 1 -+// CHECK_BDVER2_M32: #define __SSE__ 1 -+// CHECK_BDVER2_M32: #define __SSSE3__ 1 -+// CHECK_BDVER2_M32: #define __TBM__ 1 -+// CHECK_BDVER2_M32: #define __XOP__ 1 -+// CHECK_BDVER2_M32: #define __XSAVE__ 1 -+// CHECK_BDVER2_M32: #define __bdver2 1 -+// CHECK_BDVER2_M32: #define __bdver2__ 1 -+// CHECK_BDVER2_M32: #define __i386 1 -+// CHECK_BDVER2_M32: #define __i386__ 1 -+// CHECK_BDVER2_M32: #define __tune_bdver2__ 1 -+ -+// RUN: %clang -march=bdver2 -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER2_M64 -+// CHECK_BDVER2_M64-NOT: #define __3dNOW_A__ 1 -+// CHECK_BDVER2_M64-NOT: #define __3dNOW__ 1 -+// CHECK_BDVER2_M64: #define __AES__ 1 -+// CHECK_BDVER2_M64: #define __AVX__ 1 -+// CHECK_BDVER2_M64: #define __BMI__ 1 -+// CHECK_BDVER2_M64: #define __F16C__ 1 -+// CHECK_BDVER2_M64: #define __FMA4__ 1 -+// CHECK_BDVER2_M64: #define __FMA__ 1 -+// CHECK_BDVER2_M64: #define __LWP__ 1 -+// CHECK_BDVER2_M64: #define __LZCNT__ 1 -+// CHECK_BDVER2_M64: #define __MMX__ 1 -+// CHECK_BDVER2_M64: #define __PCLMUL__ 1 -+// CHECK_BDVER2_M64: #define __POPCNT__ 1 -+// CHECK_BDVER2_M64: #define __PRFCHW__ 1 -+// CHECK_BDVER2_M64: #define __SSE2_MATH__ 1 -+// CHECK_BDVER2_M64: #define __SSE2__ 1 -+// CHECK_BDVER2_M64: #define __SSE3__ 1 -+// CHECK_BDVER2_M64: #define __SSE4A__ 1 -+// CHECK_BDVER2_M64: #define __SSE4_1__ 1 -+// CHECK_BDVER2_M64: #define __SSE4_2__ 1 -+// CHECK_BDVER2_M64: #define __SSE_MATH__ 1 -+// CHECK_BDVER2_M64: #define __SSE__ 1 -+// CHECK_BDVER2_M64: #define __SSSE3__ 1 -+// CHECK_BDVER2_M64: #define __TBM__ 1 -+// CHECK_BDVER2_M64: #define __XOP__ 1 -+// CHECK_BDVER2_M64: #define __XSAVE__ 1 -+// CHECK_BDVER2_M64: #define __amd64 1 -+// CHECK_BDVER2_M64: #define __amd64__ 1 -+// CHECK_BDVER2_M64: #define __bdver2 1 -+// CHECK_BDVER2_M64: #define __bdver2__ 1 -+// CHECK_BDVER2_M64: #define __tune_bdver2__ 1 -+// CHECK_BDVER2_M64: #define __x86_64 1 -+// CHECK_BDVER2_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=bdver3 -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER3_M32 -+// CHECK_BDVER3_M32-NOT: #define __3dNOW_A__ 1 -+// CHECK_BDVER3_M32-NOT: #define __3dNOW__ 1 -+// CHECK_BDVER3_M32: #define __AES__ 1 -+// CHECK_BDVER3_M32: #define __AVX__ 1 -+// CHECK_BDVER3_M32: #define __BMI__ 1 -+// CHECK_BDVER3_M32: #define __F16C__ 1 -+// CHECK_BDVER3_M32: #define __FMA4__ 1 -+// CHECK_BDVER3_M32: #define __FMA__ 1 -+// CHECK_BDVER3_M32: #define __FSGSBASE__ 1 -+// CHECK_BDVER3_M32: #define __LWP__ 1 -+// CHECK_BDVER3_M32: #define __LZCNT__ 1 -+// CHECK_BDVER3_M32: #define __MMX__ 1 -+// CHECK_BDVER3_M32: #define __PCLMUL__ 1 -+// CHECK_BDVER3_M32: #define __POPCNT__ 1 -+// CHECK_BDVER3_M32: #define __PRFCHW__ 1 -+// CHECK_BDVER3_M32: #define __SSE2_MATH__ 1 -+// CHECK_BDVER3_M32: #define __SSE2__ 1 -+// CHECK_BDVER3_M32: #define __SSE3__ 1 -+// CHECK_BDVER3_M32: #define __SSE4A__ 1 -+// CHECK_BDVER3_M32: #define __SSE4_1__ 1 -+// CHECK_BDVER3_M32: #define __SSE4_2__ 1 -+// CHECK_BDVER3_M32: #define __SSE_MATH__ 1 -+// CHECK_BDVER3_M32: #define __SSE__ 1 -+// CHECK_BDVER3_M32: #define __SSSE3__ 1 -+// CHECK_BDVER3_M32: #define __TBM__ 1 -+// CHECK_BDVER3_M32: #define __XOP__ 1 -+// CHECK_BDVER3_M32: #define __XSAVEOPT__ 1 -+// CHECK_BDVER3_M32: #define __XSAVE__ 1 -+// CHECK_BDVER3_M32: #define __bdver3 1 -+// CHECK_BDVER3_M32: #define __bdver3__ 1 -+// CHECK_BDVER3_M32: #define __i386 1 -+// CHECK_BDVER3_M32: #define __i386__ 1 -+// CHECK_BDVER3_M32: #define __tune_bdver3__ 1 -+ -+// RUN: %clang -march=bdver3 -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER3_M64 -+// CHECK_BDVER3_M64-NOT: #define __3dNOW_A__ 1 -+// CHECK_BDVER3_M64-NOT: #define __3dNOW__ 1 -+// CHECK_BDVER3_M64: #define __AES__ 1 -+// CHECK_BDVER3_M64: #define __AVX__ 1 -+// CHECK_BDVER3_M64: #define __BMI__ 1 -+// CHECK_BDVER3_M64: #define __F16C__ 1 -+// CHECK_BDVER3_M64: #define __FMA4__ 1 -+// CHECK_BDVER3_M64: #define __FMA__ 1 -+// CHECK_BDVER3_M64: #define __FSGSBASE__ 1 -+// CHECK_BDVER3_M64: #define __LWP__ 1 -+// CHECK_BDVER3_M64: #define __LZCNT__ 1 -+// CHECK_BDVER3_M64: #define __MMX__ 1 -+// CHECK_BDVER3_M64: #define __PCLMUL__ 1 -+// CHECK_BDVER3_M64: #define __POPCNT__ 1 -+// CHECK_BDVER3_M64: #define __PRFCHW__ 1 -+// CHECK_BDVER3_M64: #define __SSE2_MATH__ 1 -+// CHECK_BDVER3_M64: #define __SSE2__ 1 -+// CHECK_BDVER3_M64: #define __SSE3__ 1 -+// CHECK_BDVER3_M64: #define __SSE4A__ 1 -+// CHECK_BDVER3_M64: #define __SSE4_1__ 1 -+// CHECK_BDVER3_M64: #define __SSE4_2__ 1 -+// CHECK_BDVER3_M64: #define __SSE_MATH__ 1 -+// CHECK_BDVER3_M64: #define __SSE__ 1 -+// CHECK_BDVER3_M64: #define __SSSE3__ 1 -+// CHECK_BDVER3_M64: #define __TBM__ 1 -+// CHECK_BDVER3_M64: #define __XOP__ 1 -+// CHECK_BDVER3_M64: #define __XSAVEOPT__ 1 -+// CHECK_BDVER3_M64: #define __XSAVE__ 1 -+// CHECK_BDVER3_M64: #define __amd64 1 -+// CHECK_BDVER3_M64: #define __amd64__ 1 -+// CHECK_BDVER3_M64: #define __bdver3 1 -+// CHECK_BDVER3_M64: #define __bdver3__ 1 -+// CHECK_BDVER3_M64: #define __tune_bdver3__ 1 -+// CHECK_BDVER3_M64: #define __x86_64 1 -+// CHECK_BDVER3_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=bdver4 -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER4_M32 -+// CHECK_BDVER4_M32-NOT: #define __3dNOW_A__ 1 -+// CHECK_BDVER4_M32-NOT: #define __3dNOW__ 1 -+// CHECK_BDVER4_M32: #define __AES__ 1 -+// CHECK_BDVER4_M32: #define __AVX2__ 1 -+// CHECK_BDVER4_M32: #define __AVX__ 1 -+// CHECK_BDVER4_M32: #define __BMI2__ 1 -+// CHECK_BDVER4_M32: #define __BMI__ 1 -+// CHECK_BDVER4_M32: #define __F16C__ 1 -+// CHECK_BDVER4_M32: #define __FMA4__ 1 -+// CHECK_BDVER4_M32: #define __FMA__ 1 -+// CHECK_BDVER4_M32: #define __FSGSBASE__ 1 -+// CHECK_BDVER4_M32: #define __LWP__ 1 -+// CHECK_BDVER4_M32: #define __LZCNT__ 1 -+// CHECK_BDVER4_M32: #define __MMX__ 1 -+// CHECK_BDVER4_M32: #define __MOVBE__ 1 -+// CHECK_BDVER4_M32: #define __PCLMUL__ 1 -+// CHECK_BDVER4_M32: #define __POPCNT__ 1 -+// CHECK_BDVER4_M32: #define __PRFCHW__ 1 -+// CHECK_BDVER4_M32: #define __RDRND__ 1 -+// CHECK_BDVER4_M32: #define __SSE2_MATH__ 1 -+// CHECK_BDVER4_M32: #define __SSE2__ 1 -+// CHECK_BDVER4_M32: #define __SSE3__ 1 -+// CHECK_BDVER4_M32: #define __SSE4A__ 1 -+// CHECK_BDVER4_M32: #define __SSE4_1__ 1 -+// CHECK_BDVER4_M32: #define __SSE4_2__ 1 -+// CHECK_BDVER4_M32: #define __SSE_MATH__ 1 -+// CHECK_BDVER4_M32: #define __SSE__ 1 -+// CHECK_BDVER4_M32: #define __SSSE3__ 1 -+// CHECK_BDVER4_M32: #define __TBM__ 1 -+// CHECK_BDVER4_M32: #define __XOP__ 1 -+// CHECK_BDVER4_M32: #define __XSAVE__ 1 -+// CHECK_BDVER4_M32: #define __bdver4 1 -+// CHECK_BDVER4_M32: #define __bdver4__ 1 -+// CHECK_BDVER4_M32: #define __i386 1 -+// CHECK_BDVER4_M32: #define __i386__ 1 -+// CHECK_BDVER4_M32: #define __tune_bdver4__ 1 -+ -+// RUN: %clang -march=bdver4 -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_BDVER4_M64 -+// CHECK_BDVER4_M64-NOT: #define __3dNOW_A__ 1 -+// CHECK_BDVER4_M64-NOT: #define __3dNOW__ 1 -+// CHECK_BDVER4_M64: #define __AES__ 1 -+// CHECK_BDVER4_M64: #define __AVX2__ 1 -+// CHECK_BDVER4_M64: #define __AVX__ 1 -+// CHECK_BDVER4_M64: #define __BMI2__ 1 -+// CHECK_BDVER4_M64: #define __BMI__ 1 -+// CHECK_BDVER4_M64: #define __F16C__ 1 -+// CHECK_BDVER4_M64: #define __FMA4__ 1 -+// CHECK_BDVER4_M64: #define __FMA__ 1 -+// CHECK_BDVER4_M64: #define __FSGSBASE__ 1 -+// CHECK_BDVER4_M64: #define __LWP__ 1 -+// CHECK_BDVER4_M64: #define __LZCNT__ 1 -+// CHECK_BDVER4_M64: #define __MMX__ 1 -+// CHECK_BDVER4_M64: #define __MOVBE__ 1 -+// CHECK_BDVER4_M64: #define __PCLMUL__ 1 -+// CHECK_BDVER4_M64: #define __POPCNT__ 1 -+// CHECK_BDVER4_M64: #define __PRFCHW__ 1 -+// CHECK_BDVER4_M64: #define __RDRND__ 1 -+// CHECK_BDVER4_M64: #define __SSE2_MATH__ 1 -+// CHECK_BDVER4_M64: #define __SSE2__ 1 -+// CHECK_BDVER4_M64: #define __SSE3__ 1 -+// CHECK_BDVER4_M64: #define __SSE4A__ 1 -+// CHECK_BDVER4_M64: #define __SSE4_1__ 1 -+// CHECK_BDVER4_M64: #define __SSE4_2__ 1 -+// CHECK_BDVER4_M64: #define __SSE_MATH__ 1 -+// CHECK_BDVER4_M64: #define __SSE__ 1 -+// CHECK_BDVER4_M64: #define __SSSE3__ 1 -+// CHECK_BDVER4_M64: #define __TBM__ 1 -+// CHECK_BDVER4_M64: #define __XOP__ 1 -+// CHECK_BDVER4_M64: #define __XSAVE__ 1 -+// CHECK_BDVER4_M64: #define __amd64 1 -+// CHECK_BDVER4_M64: #define __amd64__ 1 -+// CHECK_BDVER4_M64: #define __bdver4 1 -+// CHECK_BDVER4_M64: #define __bdver4__ 1 -+// CHECK_BDVER4_M64: #define __tune_bdver4__ 1 -+// CHECK_BDVER4_M64: #define __x86_64 1 -+// CHECK_BDVER4_M64: #define __x86_64__ 1 -+ -+// RUN: %clang -march=znver1 -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ZNVER1_M32 -+// CHECK_ZNVER1_M32-NOT: #define __3dNOW_A__ 1 -+// CHECK_ZNVER1_M32-NOT: #define __3dNOW__ 1 -+// CHECK_ZNVER1_M32: #define __ADX__ 1 -+// CHECK_ZNVER1_M32: #define __AES__ 1 -+// CHECK_ZNVER1_M32: #define __AVX2__ 1 -+// CHECK_ZNVER1_M32: #define __AVX__ 1 -+// CHECK_ZNVER1_M32: #define __BMI2__ 1 -+// CHECK_ZNVER1_M32: #define __BMI__ 1 -+// CHECK_ZNVER1_M32: #define __CLFLUSHOPT__ 1 -+// CHECK_ZNVER1_M32: #define __CLZERO__ 1 -+// CHECK_ZNVER1_M32: #define __F16C__ 1 -+// CHECK_ZNVER1_M32-NOT: #define __FMA4__ 1 -+// CHECK_ZNVER1_M32: #define __FMA__ 1 -+// CHECK_ZNVER1_M32: #define __FSGSBASE__ 1 -+// CHECK_ZNVER1_M32: #define __LZCNT__ 1 -+// CHECK_ZNVER1_M32: #define __MMX__ 1 -+// CHECK_ZNVER1_M32: #define __MOVBE__ 1 -+// CHECK_ZNVER1_M32: #define __PCLMUL__ 1 -+// CHECK_ZNVER1_M32: #define __POPCNT__ 1 -+// CHECK_ZNVER1_M32: #define __PRFCHW__ 1 -+// CHECK_ZNVER1_M32: #define __RDRND__ 1 -+// CHECK_ZNVER1_M32: #define __RDSEED__ 1 -+// CHECK_ZNVER1_M32: #define __SHA__ 1 -+// CHECK_ZNVER1_M32: #define __SSE2_MATH__ 1 -+// CHECK_ZNVER1_M32: #define __SSE2__ 1 -+// CHECK_ZNVER1_M32: #define __SSE3__ 1 -+// CHECK_ZNVER1_M32: #define __SSE4A__ 1 -+// CHECK_ZNVER1_M32: #define __SSE4_1__ 1 -+// CHECK_ZNVER1_M32: #define __SSE4_2__ 1 -+// CHECK_ZNVER1_M32: #define __SSE_MATH__ 1 -+// CHECK_ZNVER1_M32: #define __SSE__ 1 -+// CHECK_ZNVER1_M32: #define __SSSE3__ 1 -+// CHECK_ZNVER1_M32-NOT: #define __TBM__ 1 -+// CHECK_ZNVER1_M32-NOT: #define __XOP__ 1 -+// CHECK_ZNVER1_M32: #define __XSAVEC__ 1 -+// CHECK_ZNVER1_M32: #define __XSAVEOPT__ 1 -+// CHECK_ZNVER1_M32: #define __XSAVES__ 1 -+// CHECK_ZNVER1_M32: #define __XSAVE__ 1 -+// CHECK_ZNVER1_M32: #define __i386 1 -+// CHECK_ZNVER1_M32: #define __i386__ 1 -+// CHECK_ZNVER1_M32: #define __tune_znver1__ 1 -+// CHECK_ZNVER1_M32: #define __znver1 1 -+// CHECK_ZNVER1_M32: #define __znver1__ 1 -+ -+// RUN: %clang -march=znver1 -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ZNVER1_M64 -+// CHECK_ZNVER1_M64-NOT: #define __3dNOW_A__ 1 -+// CHECK_ZNVER1_M64-NOT: #define __3dNOW__ 1 -+// CHECK_ZNVER1_M64: #define __ADX__ 1 -+// CHECK_ZNVER1_M64: #define __AES__ 1 -+// CHECK_ZNVER1_M64: #define __AVX2__ 1 -+// CHECK_ZNVER1_M64: #define __AVX__ 1 -+// CHECK_ZNVER1_M64: #define __BMI2__ 1 -+// CHECK_ZNVER1_M64: #define __BMI__ 1 -+// CHECK_ZNVER1_M64: #define __CLFLUSHOPT__ 1 -+// CHECK_ZNVER1_M64: #define __CLZERO__ 1 -+// CHECK_ZNVER1_M64: #define __F16C__ 1 -+// CHECK_ZNVER1_M64-NOT: #define __FMA4__ 1 -+// CHECK_ZNVER1_M64: #define __FMA__ 1 -+// CHECK_ZNVER1_M64: #define __FSGSBASE__ 1 -+// CHECK_ZNVER1_M64: #define __LAHF_SAHF__ 1 -+// CHECK_ZNVER1_M64: #define __LZCNT__ 1 -+// CHECK_ZNVER1_M64: #define __MMX__ 1 -+// CHECK_ZNVER1_M64: #define __MOVBE__ 1 -+// CHECK_ZNVER1_M64: #define __PCLMUL__ 1 -+// CHECK_ZNVER1_M64: #define __POPCNT__ 1 -+// CHECK_ZNVER1_M64: #define __PRFCHW__ 1 -+// CHECK_ZNVER1_M64: #define __RDRND__ 1 -+// CHECK_ZNVER1_M64: #define __RDSEED__ 1 -+// CHECK_ZNVER1_M64: #define __SHA__ 1 -+// CHECK_ZNVER1_M64: #define __SSE2_MATH__ 1 -+// CHECK_ZNVER1_M64: #define __SSE2__ 1 -+// CHECK_ZNVER1_M64: #define __SSE3__ 1 -+// CHECK_ZNVER1_M64: #define __SSE4A__ 1 -+// CHECK_ZNVER1_M64: #define __SSE4_1__ 1 -+// CHECK_ZNVER1_M64: #define __SSE4_2__ 1 -+// CHECK_ZNVER1_M64: #define __SSE_MATH__ 1 -+// CHECK_ZNVER1_M64: #define __SSE__ 1 -+// CHECK_ZNVER1_M64: #define __SSSE3__ 1 -+// CHECK_ZNVER1_M64-NOT: #define __TBM__ 1 -+// CHECK_ZNVER1_M64-NOT: #define __XOP__ 1 -+// CHECK_ZNVER1_M64: #define __XSAVEC__ 1 -+// CHECK_ZNVER1_M64: #define __XSAVEOPT__ 1 -+// CHECK_ZNVER1_M64: #define __XSAVES__ 1 -+// CHECK_ZNVER1_M64: #define __XSAVE__ 1 -+// CHECK_ZNVER1_M64: #define __amd64 1 -+// CHECK_ZNVER1_M64: #define __amd64__ 1 -+// CHECK_ZNVER1_M64: #define __tune_znver1__ 1 -+// CHECK_ZNVER1_M64: #define __x86_64 1 -+// CHECK_ZNVER1_M64: #define __x86_64__ 1 -+// CHECK_ZNVER1_M64: #define __znver1 1 -+// CHECK_ZNVER1_M64: #define __znver1__ 1 -+ -+// RUN: %clang -march=znver2 -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ZNVER2_M32 -+// CHECK_ZNVER2_M32-NOT: #define __3dNOW_A__ 1 -+// CHECK_ZNVER2_M32-NOT: #define __3dNOW__ 1 -+// CHECK_ZNVER2_M32: #define __ADX__ 1 -+// CHECK_ZNVER2_M32: #define __AES__ 1 -+// CHECK_ZNVER2_M32: #define __AVX2__ 1 -+// CHECK_ZNVER2_M32: #define __AVX__ 1 -+// CHECK_ZNVER2_M32: #define __BMI2__ 1 -+// CHECK_ZNVER2_M32: #define __BMI__ 1 -+// CHECK_ZNVER2_M32: #define __CLFLUSHOPT__ 1 -+// CHECK_ZNVER2_M32: #define __CLWB__ 1 -+// CHECK_ZNVER2_M32: #define __CLZERO__ 1 -+// CHECK_ZNVER2_M32: #define __F16C__ 1 -+// CHECK_ZNVER2_M32-NOT: #define __FMA4__ 1 -+// CHECK_ZNVER2_M32: #define __FMA__ 1 -+// CHECK_ZNVER2_M32: #define __FSGSBASE__ 1 -+// CHECK_ZNVER2_M32: #define __LAHF_SAHF__ 1 -+// CHECK_ZNVER2_M32: #define __LZCNT__ 1 -+// CHECK_ZNVER2_M32: #define __MMX__ 1 -+// CHECK_ZNVER2_M32: #define __PCLMUL__ 1 -+// CHECK_ZNVER2_M32: #define __POPCNT__ 1 -+// CHECK_ZNVER2_M32: #define __PRFCHW__ 1 -+// CHECK_ZNVER2_M32: #define __RDPID__ 1 -+// CHECK_ZNVER2_M32: #define __RDRND__ 1 -+// CHECK_ZNVER2_M32: #define __RDSEED__ 1 -+// CHECK_ZNVER2_M32: #define __SHA__ 1 -+// CHECK_ZNVER2_M32: #define __SSE2_MATH__ 1 -+// CHECK_ZNVER2_M32: #define __SSE2__ 1 -+// CHECK_ZNVER2_M32: #define __SSE3__ 1 -+// CHECK_ZNVER2_M32: #define __SSE4A__ 1 -+// CHECK_ZNVER2_M32: #define __SSE4_1__ 1 -+// CHECK_ZNVER2_M32: #define __SSE4_2__ 1 -+// CHECK_ZNVER2_M32: #define __SSE_MATH__ 1 -+// CHECK_ZNVER2_M32: #define __SSE__ 1 -+// CHECK_ZNVER2_M32: #define __SSSE3__ 1 -+// CHECK_ZNVER2_M32-NOT: #define __TBM__ 1 -+// CHECK_ZNVER2_M32: #define __WBNOINVD__ 1 -+// CHECK_ZNVER2_M32-NOT: #define __XOP__ 1 -+// CHECK_ZNVER2_M32: #define __XSAVEC__ 1 -+// CHECK_ZNVER2_M32: #define __XSAVEOPT__ 1 -+// CHECK_ZNVER2_M32: #define __XSAVES__ 1 -+// CHECK_ZNVER2_M32: #define __XSAVE__ 1 -+// CHECK_ZNVER2_M32: #define __i386 1 -+// CHECK_ZNVER2_M32: #define __i386__ 1 -+// CHECK_ZNVER2_M32: #define __tune_znver2__ 1 -+// CHECK_ZNVER2_M32: #define __znver2 1 -+// CHECK_ZNVER2_M32: #define __znver2__ 1 -+ -+// RUN: %clang -march=znver2 -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ZNVER2_M64 -+// CHECK_ZNVER2_M64-NOT: #define __3dNOW_A__ 1 -+// CHECK_ZNVER2_M64-NOT: #define __3dNOW__ 1 -+// CHECK_ZNVER2_M64: #define __ADX__ 1 -+// CHECK_ZNVER2_M64: #define __AES__ 1 -+// CHECK_ZNVER2_M64: #define __AVX2__ 1 -+// CHECK_ZNVER2_M64: #define __AVX__ 1 -+// CHECK_ZNVER2_M64: #define __BMI2__ 1 -+// CHECK_ZNVER2_M64: #define __BMI__ 1 -+// CHECK_ZNVER2_M64: #define __CLFLUSHOPT__ 1 -+// CHECK_ZNVER2_M64: #define __CLWB__ 1 -+// CHECK_ZNVER2_M64: #define __CLZERO__ 1 -+// CHECK_ZNVER2_M64: #define __F16C__ 1 -+// CHECK_ZNVER2_M64-NOT: #define __FMA4__ 1 -+// CHECK_ZNVER2_M64: #define __FMA__ 1 -+// CHECK_ZNVER2_M64: #define __FSGSBASE__ 1 -+// CHECK_ZNVER2_M64: #define __LAHF_SAHF__ 1 -+// CHECK_ZNVER2_M64: #define __LZCNT__ 1 -+// CHECK_ZNVER2_M64: #define __MMX__ 1 -+// CHECK_ZNVER2_M64: #define __PCLMUL__ 1 -+// CHECK_ZNVER2_M64: #define __POPCNT__ 1 -+// CHECK_ZNVER2_M64: #define __PRFCHW__ 1 -+// CHECK_ZNVER2_M64: #define __RDPID__ 1 -+// CHECK_ZNVER2_M64: #define __RDRND__ 1 -+// CHECK_ZNVER2_M64: #define __RDSEED__ 1 -+// CHECK_ZNVER2_M64: #define __SHA__ 1 -+// CHECK_ZNVER2_M64: #define __SSE2_MATH__ 1 -+// CHECK_ZNVER2_M64: #define __SSE2__ 1 -+// CHECK_ZNVER2_M64: #define __SSE3__ 1 -+// CHECK_ZNVER2_M64: #define __SSE4A__ 1 -+// CHECK_ZNVER2_M64: #define __SSE4_1__ 1 -+// CHECK_ZNVER2_M64: #define __SSE4_2__ 1 -+// CHECK_ZNVER2_M64: #define __SSE_MATH__ 1 -+// CHECK_ZNVER2_M64: #define __SSE__ 1 -+// CHECK_ZNVER2_M64: #define __SSSE3__ 1 -+// CHECK_ZNVER2_M64-NOT: #define __TBM__ 1 -+// CHECK_ZNVER2_M64: #define __WBNOINVD__ 1 -+// CHECK_ZNVER2_M64-NOT: #define __XOP__ 1 -+// CHECK_ZNVER2_M64: #define __XSAVEC__ 1 -+// CHECK_ZNVER2_M64: #define __XSAVEOPT__ 1 -+// CHECK_ZNVER2_M64: #define __XSAVES__ 1 -+// CHECK_ZNVER2_M64: #define __XSAVE__ 1 -+// CHECK_ZNVER2_M64: #define __amd64 1 -+// CHECK_ZNVER2_M64: #define __amd64__ 1 -+// CHECK_ZNVER2_M64: #define __tune_znver2__ 1 -+// CHECK_ZNVER2_M64: #define __x86_64 1 -+// CHECK_ZNVER2_M64: #define __x86_64__ 1 -+// CHECK_ZNVER2_M64: #define __znver2 1 -+// CHECK_ZNVER2_M64: #define __znver2__ 1 -+ -+// RUN: %clang -march=znver3 -m32 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ZNVER3_M32 -+// CHECK_ZNVER3_M32-NOT: #define __3dNOW_A__ 1 -+// CHECK_ZNVER3_M32-NOT: #define __3dNOW__ 1 -+// CHECK_ZNVER3_M32: #define __ADX__ 1 -+// CHECK_ZNVER3_M32: #define __AES__ 1 -+// CHECK_ZNVER3_M32: #define __AVX2__ 1 -+// CHECK_ZNVER3_M32: #define __AVX__ 1 -+// CHECK_ZNVER3_M32: #define __BMI2__ 1 -+// CHECK_ZNVER3_M32: #define __BMI__ 1 -+// CHECK_ZNVER3_M32: #define __CLFLUSHOPT__ 1 -+// CHECK_ZNVER3_M32: #define __CLWB__ 1 -+// CHECK_ZNVER3_M32: #define __CLZERO__ 1 -+// CHECK_ZNVER3_M32: #define __F16C__ 1 -+// CHECK_ZNVER3_M32-NOT: #define __FMA4__ 1 -+// CHECK_ZNVER3_M32: #define __FMA__ 1 -+// CHECK_ZNVER3_M32: #define __FSGSBASE__ 1 -+// CHECK_ZNVER3_M32: #define __LZCNT__ 1 -+// CHECK_ZNVER3_M32: #define __MMX__ 1 -+// CHECK_ZNVER3_M32: #define __PCLMUL__ 1 -+// CHECK_ZNVER3_M32: #define __PKU__ 1 -+// CHECK_ZNVER3_M32: #define __POPCNT__ 1 -+// CHECK_ZNVER3_M32: #define __PRFCHW__ 1 -+// CHECK_ZNVER3_M32: #define __RDPID__ 1 -+// CHECK_ZNVER3_M32: #define __RDRND__ 1 -+// CHECK_ZNVER3_M32: #define __RDSEED__ 1 -+// CHECK_ZNVER3_M32: #define __SHA__ 1 -+// CHECK_ZNVER3_M32: #define __SSE2_MATH__ 1 -+// CHECK_ZNVER3_M32: #define __SSE2__ 1 -+// CHECK_ZNVER3_M32: #define __SSE3__ 1 -+// CHECK_ZNVER3_M32: #define __SSE4A__ 1 -+// CHECK_ZNVER3_M32: #define __SSE4_1__ 1 -+// CHECK_ZNVER3_M32: #define __SSE4_2__ 1 -+// CHECK_ZNVER3_M32: #define __SSE_MATH__ 1 -+// CHECK_ZNVER3_M32: #define __SSE__ 1 -+// CHECK_ZNVER3_M32: #define __SSSE3__ 1 -+// CHECK_ZNVER3_M32-NOT: #define __TBM__ 1 -+// CHECK_ZNVER3_M32: #define __WBNOINVD__ 1 -+// CHECK_ZNVER3_M32-NOT: #define __XOP__ 1 -+// CHECK_ZNVER3_M32: #define __XSAVEC__ 1 -+// CHECK_ZNVER3_M32: #define __XSAVEOPT__ 1 -+// CHECK_ZNVER3_M32: #define __XSAVES__ 1 -+// CHECK_ZNVER3_M32: #define __XSAVE__ 1 -+// CHECK_ZNVER3_M32: #define __i386 1 -+// CHECK_ZNVER3_M32: #define __i386__ 1 -+// CHECK_ZNVER3_M32: #define __tune_znver3__ 1 -+// CHECK_ZNVER3_M32: #define __znver3 1 -+// CHECK_ZNVER3_M32: #define __znver3__ 1 -+ -+// RUN: %clang -march=znver3 -m64 -E -dM %s -o - 2>&1 \ -+// RUN: -target i386-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_ZNVER3_M64 -+// CHECK_ZNVER3_M64-NOT: #define __3dNOW_A__ 1 -+// CHECK_ZNVER3_M64-NOT: #define __3dNOW__ 1 -+// CHECK_ZNVER3_M64: #define __ADX__ 1 -+// CHECK_ZNVER3_M64: #define __AES__ 1 -+// CHECK_ZNVER3_M64: #define __AVX2__ 1 -+// CHECK_ZNVER3_M64: #define __AVX__ 1 -+// CHECK_ZNVER3_M64: #define __BMI2__ 1 -+// CHECK_ZNVER3_M64: #define __BMI__ 1 -+// CHECK_ZNVER3_M64: #define __CLFLUSHOPT__ 1 -+// CHECK_ZNVER3_M64: #define __CLWB__ 1 -+// CHECK_ZNVER3_M64: #define __CLZERO__ 1 -+// CHECK_ZNVER3_M64: #define __F16C__ 1 -+// CHECK_ZNVER3_M64-NOT: #define __FMA4__ 1 -+// CHECK_ZNVER3_M64: #define __FMA__ 1 -+// CHECK_ZNVER3_M64: #define __FSGSBASE__ 1 -+// CHECK_ZNVER3_M64: #define __LZCNT__ 1 -+// CHECK_ZNVER3_M64: #define __MMX__ 1 -+// CHECK_ZNVER3_M64: #define __PCLMUL__ 1 -+// CHECK_ZNVER3_M64: #define __PKU__ 1 -+// CHECK_ZNVER3_M64: #define __POPCNT__ 1 -+// CHECK_ZNVER3_M64: #define __PRFCHW__ 1 -+// CHECK_ZNVER3_M64: #define __RDPID__ 1 -+// CHECK_ZNVER3_M64: #define __RDRND__ 1 -+// CHECK_ZNVER3_M64: #define __RDSEED__ 1 -+// CHECK_ZNVER3_M64: #define __SHA__ 1 -+// CHECK_ZNVER3_M64: #define __SSE2_MATH__ 1 -+// CHECK_ZNVER3_M64: #define __SSE2__ 1 -+// CHECK_ZNVER3_M64: #define __SSE3__ 1 -+// CHECK_ZNVER3_M64: #define __SSE4A__ 1 -+// CHECK_ZNVER3_M64: #define __SSE4_1__ 1 -+// CHECK_ZNVER3_M64: #define __SSE4_2__ 1 -+// CHECK_ZNVER3_M64: #define __SSE_MATH__ 1 -+// CHECK_ZNVER3_M64: #define __SSE__ 1 -+// CHECK_ZNVER3_M64: #define __SSSE3__ 1 -+// CHECK_ZNVER3_M64-NOT: #define __TBM__ 1 -+// CHECK_ZNVER3_M64: #define __VAES__ 1 -+// CHECK_ZNVER3_M64: #define __VPCLMULQDQ__ 1 -+// CHECK_ZNVER3_M64: #define __WBNOINVD__ 1 -+// CHECK_ZNVER3_M64-NOT: #define __XOP__ 1 -+// CHECK_ZNVER3_M64: #define __XSAVEC__ 1 -+// CHECK_ZNVER3_M64: #define __XSAVEOPT__ 1 -+// CHECK_ZNVER3_M64: #define __XSAVES__ 1 -+// CHECK_ZNVER3_M64: #define __XSAVE__ 1 -+// CHECK_ZNVER3_M64: #define __amd64 1 -+// CHECK_ZNVER3_M64: #define __amd64__ 1 -+// CHECK_ZNVER3_M64: #define __tune_znver3__ 1 -+// CHECK_ZNVER3_M64: #define __x86_64 1 -+// CHECK_ZNVER3_M64: #define __x86_64__ 1 -+// CHECK_ZNVER3_M64: #define __znver3 1 -+// CHECK_ZNVER3_M64: #define __znver3__ 1 -+ -+// End X86/GCC/Linux tests ------------------ -+ -+// Begin PPC/GCC/Linux tests ---------------- -+// Check that VSX also turns on altivec. -+// RUN: %clang -mvsx -E -dM %s -o - 2>&1 \ -+// RUN: -target powerpc-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_VSX_M32 -+// CHECK_PPC_VSX_M32: #define __ALTIVEC__ 1 -+// CHECK_PPC_VSX_M32: #define __VSX__ 1 -+ -+// RUN: %clang -mvsx -E -dM %s -o - 2>&1 \ -+// RUN: -target powerpc64-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_VSX_M64 -+// CHECK_PPC_VSX_M64: #define __VSX__ 1 -+ -+// RUN: %clang -mpower8-vector -E -dM %s -o - 2>&1 \ -+// RUN: -target powerpc64-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_POWER8_VECTOR_M64 -+// CHECK_PPC_POWER8_VECTOR_M64: #define __POWER8_VECTOR__ 1 -+ -+// RUN: %clang -mpower9-vector -E -dM %s -o - 2>&1 \ -+// RUN: -target powerpc64-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_POWER9_VECTOR_M64 -+// CHECK_PPC_POWER9_VECTOR_M64: #define __POWER9_VECTOR__ 1 -+ -+// RUN: %clang -mcrypto -E -dM %s -o - 2>&1 \ -+// RUN: -target powerpc64-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_CRYPTO_M64 -+// CHECK_PPC_CRYPTO_M64: #define __CRYPTO__ 1 -+ -+// HTM is available on power8 or later which includes all of powerpc64le as an -+// ABI choice. Test that, the cpus, and the option. -+// RUN: %clang -mhtm -E -dM %s -o - 2>&1 \ -+// RUN: -target powerpc64-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_HTM -+// RUN: %clang -E -dM %s -o - 2>&1 \ -+// RUN: -target powerpc64le-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_HTM -+// RUN: %clang -mcpu=pwr8 -E -dM %s -o - 2>&1 \ -+// RUN: -target powerpc64-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_HTM -+// RUN: %clang -mcpu=pwr9 -E -dM %s -o - 2>&1 \ -+// RUN: -target powerpc64-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_HTM -+// CHECK_PPC_HTM: #define __HTM__ 1 -+ -+// RUN: %clang -mcpu=ppc64 -E -dM %s -o - 2>&1 \ -+// RUN: -target powerpc64-unknown-unknown \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_GCC_ATOMICS -+// RUN: %clang -mcpu=pwr8 -E -dM %s -o - 2>&1 \ -+// RUN: -target powerpc64-unknown-unknown \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_GCC_ATOMICS -+// RUN: %clang -E -dM %s -o - 2>&1 \ -+// RUN: -target powerpc64le-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_PPC_GCC_ATOMICS -+// CHECK_PPC_GCC_ATOMICS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 -+// CHECK_PPC_GCC_ATOMICS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 -+// CHECK_PPC_GCC_ATOMICS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 -+// CHECK_PPC_GCC_ATOMICS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 -+ -+// End PPC/GCC/Linux tests ------------------ -+ -+// Begin Sparc/GCC/Linux tests ---------------- -+ -+// RUN: %clang -E -dM %s -o - 2>&1 \ -+// RUN: -target sparc-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SPARC -+// CHECK_SPARC: #define __BIG_ENDIAN__ 1 -+// CHECK_SPARC: #define __sparc 1 -+// CHECK_SPARC: #define __sparc__ 1 -+// CHECK_SPARC-NOT: #define __sparcv9 1 -+// CHECK_SPARC-NOT: #define __sparcv9__ 1 -+// CHECK_SPARC: #define __sparcv8 1 -+// CHECK_SPARC-NOT: #define __sparcv9 1 -+// CHECK_SPARC-NOT: #define __sparcv9__ 1 -+ -+// RUN: %clang -mcpu=v9 -E -dM %s -o - 2>&1 \ -+// RUN: -target sparc-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SPARC-V9 -+// CHECK_SPARC-V9-NOT: #define __sparcv8 1 -+// CHECK_SPARC-V9-NOT: #define __sparcv8__ 1 -+// CHECK_SPARC-V9: #define __sparc_v9__ 1 -+// CHECK_SPARC-V9: #define __sparcv9 1 -+// CHECK_SPARC-V9: #define __sparcv9__ 1 -+ -+// RUN: %clang -E -dM %s -o - 2>&1 \ -+// RUN: -target sparc-sun-solaris \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SPARC_SOLARIS_GCC_ATOMICS -+// CHECK_SPARC_SOLARIS_GCC_ATOMICS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 -+// CHECK_SPARC_SOLARIS_GCC_ATOMICS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 -+// CHECK_SPARC_SOLARIS_GCC_ATOMICS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 -+// CHECK_SPARC_SOLARIS_GCC_ATOMICS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 -+ -+// RUN: %clang -mcpu=v8 -E -dM %s -o - 2>&1 \ -+// RUN: -target sparc-sun-solaris \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SPARC_SOLARIS_GCC_ATOMICS-V8 -+// CHECK_SPARC_SOLARIS_GCC_ATOMICS-V8-NOT: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 -+// CHECK_SPARC_SOLARIS_GCC_ATOMICS-V8-NOT: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 -+// CHECK_SPARC_SOLARIS_GCC_ATOMICS-V8-NOT: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 -+// CHECK_SPARC_SOLARIS_GCC_ATOMICS-V8-NOT: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 -+ -+// RUN: %clang -E -dM %s -o - 2>&1 \ -+// RUN: -target sparcel-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SPARCEL -+// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=myriad2 2>&1 \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \ -+// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 -+// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=myriad2.1 2>&1 \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-1 \ -+// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 -+// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=myriad2.2 2>&1 \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \ -+// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 -+// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=myriad2.3 2>&1 \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-3 \ -+// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 -+// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2100 2>&1 \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-1 \ -+// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 -+// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2150 2>&1 \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \ -+// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 -+// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2155 2>&1 \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \ -+// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 -+// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2450 2>&1 \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \ -+// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 -+// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2455 2>&1 \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \ -+// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 -+// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2x5x 2>&1 \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \ -+// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 -+// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2080 2>&1 \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-3 \ -+// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 -+// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2085 2>&1 \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-3 \ -+// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 -+// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2480 2>&1 \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-3 \ -+// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 -+// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2485 2>&1 \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-3 \ -+// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 -+// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2x8x 2>&1 \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-3 \ -+// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 -+// CHECK_SPARCEL: #define __LITTLE_ENDIAN__ 1 -+// CHECK_MYRIAD2: #define __leon__ 1 -+// CHECK_MYRIAD2-1: #define __myriad2 1 -+// CHECK_MYRIAD2-1: #define __myriad2__ 1 -+// CHECK_MYRIAD2-2: #define __ma2x5x 1 -+// CHECK_MYRIAD2-2: #define __ma2x5x__ 1 -+// CHECK_MYRIAD2-2: #define __myriad2 2 -+// CHECK_MYRIAD2-2: #define __myriad2__ 2 -+// CHECK_MYRIAD2-3: #define __ma2x8x 1 -+// CHECK_MYRIAD2-3: #define __ma2x8x__ 1 -+// CHECK_MYRIAD2-3: #define __myriad2 3 -+// CHECK_MYRIAD2-3: #define __myriad2__ 3 -+// CHECK_SPARCEL: #define __sparc 1 -+// CHECK_SPARCEL: #define __sparc__ 1 -+// CHECK_MYRIAD2: #define __sparc_v8__ 1 -+// CHECK_SPARCEL: #define __sparcv8 1 -+ -+// RUN: %clang -E -dM %s -o - 2>&1 \ -+// RUN: -target sparcv9-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SPARCV9 -+// CHECK_SPARCV9: #define __BIG_ENDIAN__ 1 -+// CHECK_SPARCV9: #define __sparc 1 -+// CHECK_SPARCV9: #define __sparc64__ 1 -+// CHECK_SPARCV9: #define __sparc__ 1 -+// CHECK_SPARCV9: #define __sparc_v9__ 1 -+// CHECK_SPARCV9: #define __sparcv9 1 -+// CHECK_SPARCV9: #define __sparcv9__ 1 -+ -+// RUN: %clang -E -dM %s -o - 2>&1 \ -+// RUN: -target sparcv9-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SPARCV9_GCC_ATOMICS -+// CHECK_SPARCV9_GCC_ATOMICS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 -+// CHECK_SPARCV9_GCC_ATOMICS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 -+// CHECK_SPARCV9_GCC_ATOMICS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 -+// CHECK_SPARCV9_GCC_ATOMICS: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 -+ -+// Begin SystemZ/GCC/Linux tests ---------------- -+ -+// RUN: %clang -march=arch8 -E -dM %s -o - 2>&1 \ -+// RUN: -target s390x-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH8 -+// RUN: %clang -march=z10 -E -dM %s -o - 2>&1 \ -+// RUN: -target s390x-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH8 -+// CHECK_SYSTEMZ_ARCH8: #define __ARCH__ 8 -+// CHECK_SYSTEMZ_ARCH8: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 -+// CHECK_SYSTEMZ_ARCH8: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 -+// CHECK_SYSTEMZ_ARCH8: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 -+// CHECK_SYSTEMZ_ARCH8: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 -+// CHECK_SYSTEMZ_ARCH8: #define __LONG_DOUBLE_128__ 1 -+// CHECK_SYSTEMZ_ARCH8: #define __s390__ 1 -+// CHECK_SYSTEMZ_ARCH8: #define __s390x__ 1 -+// CHECK_SYSTEMZ_ARCH8: #define __zarch__ 1 -+ -+// RUN: %clang -march=arch9 -E -dM %s -o - 2>&1 \ -+// RUN: -target s390x-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH9 -+// RUN: %clang -march=z196 -E -dM %s -o - 2>&1 \ -+// RUN: -target s390x-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH9 -+// CHECK_SYSTEMZ_ARCH9: #define __ARCH__ 9 -+// CHECK_SYSTEMZ_ARCH9: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 -+// CHECK_SYSTEMZ_ARCH9: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 -+// CHECK_SYSTEMZ_ARCH9: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 -+// CHECK_SYSTEMZ_ARCH9: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 -+// CHECK_SYSTEMZ_ARCH9: #define __LONG_DOUBLE_128__ 1 -+// CHECK_SYSTEMZ_ARCH9: #define __s390__ 1 -+// CHECK_SYSTEMZ_ARCH9: #define __s390x__ 1 -+// CHECK_SYSTEMZ_ARCH9: #define __zarch__ 1 -+ -+// RUN: %clang -march=arch10 -E -dM %s -o - 2>&1 \ -+// RUN: -target s390x-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH10 -+// RUN: %clang -march=zEC12 -E -dM %s -o - 2>&1 \ -+// RUN: -target s390x-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH10 -+// CHECK_SYSTEMZ_ARCH10: #define __ARCH__ 10 -+// CHECK_SYSTEMZ_ARCH10: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 -+// CHECK_SYSTEMZ_ARCH10: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 -+// CHECK_SYSTEMZ_ARCH10: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 -+// CHECK_SYSTEMZ_ARCH10: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 -+// CHECK_SYSTEMZ_ARCH10: #define __HTM__ 1 -+// CHECK_SYSTEMZ_ARCH10: #define __LONG_DOUBLE_128__ 1 -+// CHECK_SYSTEMZ_ARCH10: #define __s390__ 1 -+// CHECK_SYSTEMZ_ARCH10: #define __s390x__ 1 -+// CHECK_SYSTEMZ_ARCH10: #define __zarch__ 1 -+ -+// RUN: %clang -march=arch11 -E -dM %s -o - 2>&1 \ -+// RUN: -target s390x-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH11 -+// RUN: %clang -march=z13 -E -dM %s -o - 2>&1 \ -+// RUN: -target s390x-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH11 -+// CHECK_SYSTEMZ_ARCH11: #define __ARCH__ 11 -+// CHECK_SYSTEMZ_ARCH11: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 -+// CHECK_SYSTEMZ_ARCH11: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 -+// CHECK_SYSTEMZ_ARCH11: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 -+// CHECK_SYSTEMZ_ARCH11: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 -+// CHECK_SYSTEMZ_ARCH11: #define __HTM__ 1 -+// CHECK_SYSTEMZ_ARCH11: #define __LONG_DOUBLE_128__ 1 -+// CHECK_SYSTEMZ_ARCH11: #define __VX__ 1 -+// CHECK_SYSTEMZ_ARCH11: #define __s390__ 1 -+// CHECK_SYSTEMZ_ARCH11: #define __s390x__ 1 -+// CHECK_SYSTEMZ_ARCH11: #define __zarch__ 1 -+ -+// RUN: %clang -march=arch12 -E -dM %s -o - 2>&1 \ -+// RUN: -target s390x-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH12 -+// RUN: %clang -march=z14 -E -dM %s -o - 2>&1 \ -+// RUN: -target s390x-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH12 -+// CHECK_SYSTEMZ_ARCH12: #define __ARCH__ 12 -+// CHECK_SYSTEMZ_ARCH12: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 -+// CHECK_SYSTEMZ_ARCH12: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 -+// CHECK_SYSTEMZ_ARCH12: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 -+// CHECK_SYSTEMZ_ARCH12: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 -+// CHECK_SYSTEMZ_ARCH12: #define __HTM__ 1 -+// CHECK_SYSTEMZ_ARCH12: #define __LONG_DOUBLE_128__ 1 -+// CHECK_SYSTEMZ_ARCH12: #define __VX__ 1 -+// CHECK_SYSTEMZ_ARCH12: #define __s390__ 1 -+// CHECK_SYSTEMZ_ARCH12: #define __s390x__ 1 -+// CHECK_SYSTEMZ_ARCH12: #define __zarch__ 1 -+ -+// RUN: %clang -march=arch13 -E -dM %s -o - 2>&1 \ -+// RUN: -target s390x-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH13 -+// RUN: %clang -march=z15 -E -dM %s -o - 2>&1 \ -+// RUN: -target s390x-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ARCH13 -+// CHECK_SYSTEMZ_ARCH13: #define __ARCH__ 13 -+// CHECK_SYSTEMZ_ARCH13: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1 -+// CHECK_SYSTEMZ_ARCH13: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1 -+// CHECK_SYSTEMZ_ARCH13: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1 -+// CHECK_SYSTEMZ_ARCH13: #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1 -+// CHECK_SYSTEMZ_ARCH13: #define __HTM__ 1 -+// CHECK_SYSTEMZ_ARCH13: #define __LONG_DOUBLE_128__ 1 -+// CHECK_SYSTEMZ_ARCH13: #define __VX__ 1 -+// CHECK_SYSTEMZ_ARCH13: #define __s390__ 1 -+// CHECK_SYSTEMZ_ARCH13: #define __s390x__ 1 -+// CHECK_SYSTEMZ_ARCH13: #define __zarch__ 1 -+ -+// RUN: %clang -mhtm -E -dM %s -o - 2>&1 \ -+// RUN: -target s390x-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_HTM -+// CHECK_SYSTEMZ_HTM: #define __HTM__ 1 -+ -+// RUN: %clang -mvx -E -dM %s -o - 2>&1 \ -+// RUN: -target s390x-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_VX -+// CHECK_SYSTEMZ_VX: #define __VX__ 1 -+ -+// RUN: %clang -fzvector -E -dM %s -o - 2>&1 \ -+// RUN: -target s390x-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ZVECTOR -+// RUN: %clang -mzvector -E -dM %s -o - 2>&1 \ -+// RUN: -target s390x-unknown-linux \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SYSTEMZ_ZVECTOR -+// CHECK_SYSTEMZ_ZVECTOR: #define __VEC__ 10303 -+ -+// Begin amdgcn tests ---------------- -+ -+// RUN: %clang -march=amdgcn -E -dM %s -o - 2>&1 \ -+// RUN: -target amdgcn-unknown-unknown \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_AMDGCN -+// CHECK_AMDGCN: #define __AMDGCN__ 1 -+// CHECK_AMDGCN: #define __HAS_FMAF__ 1 -+// CHECK_AMDGCN: #define __HAS_FP64__ 1 -+// CHECK_AMDGCN: #define __HAS_LDEXPF__ 1 -+ -+// Begin r600 tests ---------------- -+ -+// RUN: %clang -march=amdgcn -E -dM %s -o - 2>&1 \ -+// RUN: -target r600-unknown-unknown \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_R600 -+// CHECK_R600: #define __R600__ 1 -+// CHECK_R600-NOT: #define __HAS_FMAF__ 1 -+ -+// RUN: %clang -march=amdgcn -mcpu=cypress -E -dM %s -o - 2>&1 \ -+// RUN: -target r600-unknown-unknown \ -+// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_R600_FP64 -+// CHECK_R600_FP64-DAG: #define __R600__ 1 -+// CHECK_R600_FP64-DAG: #define __HAS_FMAF__ 1 diff --git a/debian/patches/sparc/sparc-D98575-compiler-rt.patch b/debian/patches/sparc/sparc-D98575-compiler-rt.patch deleted file mode 100644 index f794a107..00000000 --- a/debian/patches/sparc/sparc-D98575-compiler-rt.patch +++ /dev/null @@ -1,17 +0,0 @@ ---- llvm-toolchain-12-12.0.1~+rc1.orig/compiler-rt/cmake/base-config-ix.cmake -+++ llvm-toolchain-12-12.0.1~+rc1/compiler-rt/cmake/base-config-ix.cmake -@@ -189,8 +189,12 @@ macro(test_targets) - elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "s390x") - test_target_arch(s390x "" "") - elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "sparc") -- test_target_arch(sparc "" "-m32") -- test_target_arch(sparcv9 "" "-m64") -+ if (CMAKE_SIZEOF_VOID_P EQUAL 4) -+ test_target_arch(sparc "" "-mcpu=v9" "-m32") -+ append("-latomic" CMAKE_LD_FLAGS) -+ else() -+ test_target_arch(sparcv9 "" "-m64") -+ endif() - elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "mipsel|mips64el") - # Gcc doesn't accept -m32/-m64 so we do the next best thing and use - # -mips32r2/-mips64r2. We don't use -mips1/-mips3 because we want to match From 84f2134e5c239527894af8c17c4fe7cbddbf99a8 Mon Sep 17 00:00:00 2001 From: Faidon Liambotis Date: Fri, 5 Jan 2024 17:54:20 +0200 Subject: [PATCH 06/19] Mark documentation packages as Multi-Arch: foreign ..and convert clang-*-examples from Architecture: any -> all. Identified by the multiarch hinter: * clang-17-examples could be converted to Architecture: all and marked Multi-Arch: foreign * clang-17-doc could be marked Multi-Arch: foreign * libomp-17-doc could be marked Multi-Arch: foreign * llvm-17-doc could be marked Multi-Arch: foreign --- debian/control | 6 +++++- debian/control.in | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/debian/control b/debian/control index b58c452d..4981ee00 100644 --- a/debian/control +++ b/debian/control @@ -116,6 +116,7 @@ Description: Language server that provides IDE-like features to editors Package: clang-17-doc Architecture: all +Multi-Arch: foreign Section: doc Depends: ${shlibs:Depends}, ${misc:Depends}, libjs-mathjax Description: C, C++ and Objective-C compiler - Documentation @@ -314,7 +315,8 @@ Description: Clang Python Bindings This binding package provides access to the Clang compiler and libraries. Package: clang-17-examples -Architecture: any +Architecture: all +Multi-Arch: foreign Section: doc Depends: ${shlibs:Depends}, ${misc:Depends} Description: Clang examples @@ -470,6 +472,7 @@ Description: Modular compiler and toolchain technologies, OCaml bindings Package: llvm-17-doc Section: doc Architecture: all +Multi-Arch: foreign Depends: ${misc:Depends}, libjs-jquery, libjs-underscore Description: Modular compiler and toolchain technologies, documentation LLVM is a collection of libraries and tools that make it easy to build @@ -637,6 +640,7 @@ Description: LLVM OpenMP runtime Package: libomp-17-doc Section: doc Architecture: all +Multi-Arch: foreign Depends: ${shlibs:Depends}, ${misc:Depends}, libjs-jquery Replaces: libiomp-x.y-doc Breaks: libiomp-x.y-doc diff --git a/debian/control.in b/debian/control.in index f83a0c73..f333faab 100644 --- a/debian/control.in +++ b/debian/control.in @@ -116,6 +116,7 @@ Description: Language server that provides IDE-like features to editors Package: clang-@LLVM_VERSION@-doc Architecture: all +Multi-Arch: foreign Section: doc Depends: ${shlibs:Depends}, ${misc:Depends}, libjs-mathjax Description: C, C++ and Objective-C compiler - Documentation @@ -314,7 +315,8 @@ Description: Clang Python Bindings This binding package provides access to the Clang compiler and libraries. Package: clang-@LLVM_VERSION@-examples -Architecture: any +Architecture: all +Multi-Arch: foreign Section: doc Depends: ${shlibs:Depends}, ${misc:Depends} Description: Clang examples @@ -470,6 +472,7 @@ Description: Modular compiler and toolchain technologies, OCaml bindings Package: llvm-@LLVM_VERSION@-doc Section: doc Architecture: all +Multi-Arch: foreign Depends: ${misc:Depends}, libjs-jquery, libjs-underscore Description: Modular compiler and toolchain technologies, documentation LLVM is a collection of libraries and tools that make it easy to build @@ -637,6 +640,7 @@ Description: LLVM OpenMP runtime Package: libomp-@LLVM_VERSION@-doc Section: doc Architecture: all +Multi-Arch: foreign Depends: ${shlibs:Depends}, ${misc:Depends}, libjs-jquery Replaces: libiomp-x.y-doc Breaks: libiomp-x.y-doc From c7d388292fd1afd9ce77c8ad766ecfd3c3b9baa6 Mon Sep 17 00:00:00 2001 From: Faidon Liambotis Date: Fri, 5 Jan 2024 18:05:11 +0200 Subject: [PATCH 07/19] Convert libclang-common-*-dev to Arch: all/M-A: foreign libclang-common-*-dev is an Architecture: any package, possibly due to the fact that it contained compiler-rt before it was split off to a separate package. It is not marked as Multi-Arch: same, despite the hinter suggesting to do so, presumably due to identical files. Convert it to Architecture: all / Multi-Arch: foreign instead. This requires the removal of the arch: any dependency libllvm17, which is spurious anyway. However, for extra safety, add version specifiers to other packages that do depend on (an unversioned) libllvm17, such as clang. --- debian/control | 17 +++++++++++------ debian/control.in | 17 +++++++++++------ 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/debian/control b/debian/control index b58c452d..e06a0142 100644 --- a/debian/control +++ b/debian/control @@ -44,7 +44,9 @@ Vcs-Browser: https://salsa.debian.org/pkg-llvm-team/llvm-toolchain/tree/17 Package: clang-17 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, ${dep:devlibs}, - ${dep:devlibs-objc}, libclang-common-17-dev (= ${binary:Version}), + ${dep:devlibs-objc}, + libllvm17 (= ${binary:Version}), + libclang-common-17-dev (= ${source:Version}), llvm-17-linker-tools (= ${binary:Version}), libclang1-17 (= ${binary:Version}), libc6-dev, binutils Provides: c-compiler, objc-compiler, c++-compiler @@ -92,7 +94,8 @@ Description: Tool to format C/C++/Obj-C code Package: clang-tidy-17 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, python3, - libllvm17 (= ${binary:Version}), libclang-common-17-dev, + libllvm17 (= ${binary:Version}), + libclang-common-17-dev (= ${source:Version}), clang-tools-17, python3-yaml Description: clang-based C++ linter tool Provide an extensible framework for diagnosing and fixing typical programming @@ -103,7 +106,8 @@ Description: clang-based C++ linter tool Package: clangd-17 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, - libclang-common-17-dev (= ${binary:Version}) + libllvm17 (= ${binary:Version}), + libclang-common-17-dev (= ${source:Version}), Description: Language server that provides IDE-like features to editors clangd understands your C++ code and adds smart features to your editor: - code completion @@ -154,7 +158,7 @@ Architecture: any Section: libdevel Depends: ${shlibs:Depends}, ${misc:Depends}, ${dep:devlibs}, ${dep:devlibs-objc}, libclang1-17 (= ${binary:Version}), - libclang-common-17-dev (= ${binary:Version}) + libclang-common-17-dev (= ${source:Version}) Description: Clang library - Development package Clang project is a C, C++, Objective C and Objective C++ front-end based on the LLVM compiler. Its goal is to offer a replacement to the @@ -167,9 +171,10 @@ Description: Clang library - Development package libclang1-17. Package: libclang-common-17-dev -Architecture: any +Architecture: all +Multi-Arch: foreign Section: libdevel -Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm17 (= ${binary:Version}) +Depends: ${shlibs:Depends}, ${misc:Depends}, Recommends: libclang-rt-17-dev (>= 1:16~++20230115053056+df5fc4504b86-1~exp1) Description: Clang library - Common development package Clang project is a C, C++, Objective C and Objective C++ front-end diff --git a/debian/control.in b/debian/control.in index f83a0c73..f86e194e 100644 --- a/debian/control.in +++ b/debian/control.in @@ -44,7 +44,9 @@ Vcs-Browser: https://salsa.debian.org/pkg-llvm-team/llvm-toolchain/tree/@BRANCH_ Package: clang-@LLVM_VERSION@ Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, ${dep:devlibs}, - ${dep:devlibs-objc}, libclang-common-@LLVM_VERSION@-dev (= ${binary:Version}), + ${dep:devlibs-objc}, + libllvm@LLVM_VERSION@ (= ${binary:Version}), + libclang-common-@LLVM_VERSION@-dev (= ${source:Version}), llvm-@LLVM_VERSION@-linker-tools (= ${binary:Version}), libclang1-@LLVM_VERSION@ (= ${binary:Version}), libc6-dev, binutils Provides: c-compiler, objc-compiler, c++-compiler @@ -92,7 +94,8 @@ Description: Tool to format C/C++/Obj-C code Package: clang-tidy-@LLVM_VERSION@ Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, python3, - libllvm@LLVM_VERSION@ (= ${binary:Version}), libclang-common-@LLVM_VERSION@-dev, + libllvm@LLVM_VERSION@ (= ${binary:Version}), + libclang-common-@LLVM_VERSION@-dev (= ${source:Version}), clang-tools-@LLVM_VERSION@, python3-yaml Description: clang-based C++ linter tool Provide an extensible framework for diagnosing and fixing typical programming @@ -103,7 +106,8 @@ Description: clang-based C++ linter tool Package: clangd-@LLVM_VERSION@ Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, - libclang-common-@LLVM_VERSION@-dev (= ${binary:Version}) + libllvm@LLVM_VERSION@ (= ${binary:Version}), + libclang-common-@LLVM_VERSION@-dev (= ${source:Version}), Description: Language server that provides IDE-like features to editors clangd understands your C++ code and adds smart features to your editor: - code completion @@ -154,7 +158,7 @@ Architecture: any Section: libdevel Depends: ${shlibs:Depends}, ${misc:Depends}, ${dep:devlibs}, ${dep:devlibs-objc}, libclang1-@LLVM_VERSION@ (= ${binary:Version}), - libclang-common-@LLVM_VERSION@-dev (= ${binary:Version}) + libclang-common-@LLVM_VERSION@-dev (= ${source:Version}) Description: Clang library - Development package Clang project is a C, C++, Objective C and Objective C++ front-end based on the LLVM compiler. Its goal is to offer a replacement to the @@ -167,9 +171,10 @@ Description: Clang library - Development package libclang1-@LLVM_VERSION@. Package: libclang-common-@LLVM_VERSION@-dev -Architecture: any +Architecture: all +Multi-Arch: foreign Section: libdevel -Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm@LLVM_VERSION@ (= ${binary:Version}) +Depends: ${shlibs:Depends}, ${misc:Depends}, Recommends: libclang-rt-@LLVM_VERSION@-dev (>= 1:16~++20230115053056+df5fc4504b86-1~exp1) Description: Clang library - Common development package Clang project is a C, C++, Objective C and Objective C++ front-end From f463aa4e2351ec64bcde50d9ac0175b227cf3348 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Fri, 15 Dec 2023 18:53:06 +0100 Subject: [PATCH 08/19] Cherry pick the wasm fix from 16 (Closes: #1057838) --- debian/changelog | 14 ++++-- debian/patches/wasm/wasm-sysroot-usr.diff | 57 +++++++++++++---------- 2 files changed, 44 insertions(+), 27 deletions(-) diff --git a/debian/changelog b/debian/changelog index fd9d2af8..07eead8e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,16 @@ -llvm-toolchain-17 (1:17.0.6-3) UNRELEASED; urgency=medium +llvm-toolchain-17 (1:17.0.6-4) UNRELEASED; urgency=medium - * libclang1-17: Remove the full version symlinks. + [ Matthias Klose ] + * libclang1-17: Remove the full version symlinks. - -- Matthias Klose Mon, 11 Dec 2023 22:54:48 +0100 + -- Sylvestre Ledru Tue, 09 Jan 2024 09:42:35 +0100 + +llvm-toolchain-17 (1:17.0.6-3) unstable; urgency=medium + + * Cherry pick the wasm fix from 16 + (Closes: #1057838) + + -- Sylvestre Ledru Fri, 15 Dec 2023 18:51:57 +0100 llvm-toolchain-17 (1:17.0.6-2) unstable; urgency=medium diff --git a/debian/patches/wasm/wasm-sysroot-usr.diff b/debian/patches/wasm/wasm-sysroot-usr.diff index 46342231..b3bbf565 100644 --- a/debian/patches/wasm/wasm-sysroot-usr.diff +++ b/debian/patches/wasm/wasm-sysroot-usr.diff @@ -1,7 +1,7 @@ -Index: llvm-toolchain-snapshot_17~++20230523093327+96a003b9bf79/clang/lib/Driver/ToolChains/WebAssembly.cpp +Index: llvm-toolchain-16-16.0.6/clang/lib/Driver/ToolChains/WebAssembly.cpp =================================================================== ---- llvm-toolchain-snapshot_17~++20230523093327+96a003b9bf79.orig/clang/lib/Driver/ToolChains/WebAssembly.cpp -+++ llvm-toolchain-snapshot_17~++20230523093327+96a003b9bf79/clang/lib/Driver/ToolChains/WebAssembly.cpp +--- llvm-toolchain-16-16.0.6.orig/clang/lib/Driver/ToolChains/WebAssembly.cpp ++++ llvm-toolchain-16-16.0.6/clang/lib/Driver/ToolChains/WebAssembly.cpp @@ -174,7 +174,7 @@ WebAssembly::WebAssembly(const Driver &D getProgramPaths().push_back(getDriver().getInstalledDir()); @@ -19,7 +19,7 @@ Index: llvm-toolchain-snapshot_17~++20230523093327+96a003b9bf79/clang/lib/Driver if (!DriverArgs.hasArg(options::OPT_nobuiltininc)) { SmallString<128> P(D.ResourceDir); -@@ -425,12 +426,29 @@ void WebAssembly::AddClangSystemIncludeA +@@ -425,12 +426,20 @@ void WebAssembly::AddClangSystemIncludeA return; } @@ -28,22 +28,12 @@ Index: llvm-toolchain-snapshot_17~++20230523093327+96a003b9bf79/clang/lib/Driver const std::string MultiarchTriple = - getMultiarchTriple(D, getTriple(), D.SysRoot); - addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/include/" + MultiarchTriple); -- } -- addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/include"); + getMultiarchTriple(D, getTriple(), SysRoot); + addSystemInclude(DriverArgs, CC1Args, SysRoot + "/local/include/" + MultiarchTriple); + addSystemInclude(DriverArgs, CC1Args, SysRoot + "/local/include"); + addSystemInclude(DriverArgs, CC1Args, SysRoot + "/include/" + MultiarchTriple); -+ std::string LibPath = SysRoot + "/include"; -+ std::string Version = detectLibcxxVersion(LibPath); -+ -+ if (!getDriver().SysRoot.empty()) { -+ // Second add the generic one. -+ addSystemInclude(DriverArgs, CC1Args, LibPath + "/c++/" + Version); -+ // Third the backward one. -+ addSystemInclude(DriverArgs, CC1Args, LibPath + "/c++/" + Version + "/backward"); -+ } -+ } + } +- addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/include"); + + // also add the non-multiarch path, only on a known OS (as above), or when + // a sysroot is given, for backwards compatibility with the original driver @@ -53,7 +43,7 @@ Index: llvm-toolchain-snapshot_17~++20230523093327+96a003b9bf79/clang/lib/Driver } void WebAssembly::AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs, -@@ -481,6 +490,17 @@ Tool *WebAssembly::buildLinker() const { +@@ -478,6 +487,17 @@ Tool *WebAssembly::buildLinker() const { return new tools::wasm::Linker(*this); } @@ -71,18 +61,37 @@ Index: llvm-toolchain-snapshot_17~++20230523093327+96a003b9bf79/clang/lib/Driver void WebAssembly::addLibCxxIncludePaths( const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args) const { -@@ -502,7 +522,9 @@ void WebAssembly::addLibCxxIncludePaths( +@@ -488,18 +508,22 @@ void WebAssembly::addLibCxxIncludePaths( + getMultiarchTriple(D, getTriple(), SysRoot); + bool IsKnownOs = (getTriple().getOS() != llvm::Triple::UnknownOS); + +- std::string Version = detectLibcxxVersion(LibPath); +- if (Version.empty()) +- return; +- + // First add the per-target include path if the OS is known. + if (IsKnownOs) { +- std::string TargetDir = LibPath + "/" + MultiarchTriple + "/c++/" + Version; +- addSystemInclude(DriverArgs, CC1Args, TargetDir); ++ std::string Version = detectLibcxxVersion(LibPath + "/" + MultiarchTriple); ++ if (!Version.empty()) { ++ std::string TargetDir = LibPath + "/" + MultiarchTriple + "/c++/" + Version; ++ addSystemInclude(DriverArgs, CC1Args, TargetDir); ++ } } // Second add the generic one. - addSystemInclude(DriverArgs, CC1Args, LibPath + "/c++/" + Version); + // don't include the host architecture's headers in the search path -+ if (!getDriver().SysRoot.empty()) -+ addSystemInclude(DriverArgs, CC1Args, LibPath + "/c++/" + Version); ++ if (!getDriver().SysRoot.empty()) { ++ std::string Version = detectLibcxxVersion(LibPath); ++ if (!Version.empty()) ++ addSystemInclude(DriverArgs, CC1Args, LibPath + "/c++/" + Version); ++ } } void WebAssembly::addLibStdCXXIncludePaths( -@@ -549,8 +571,11 @@ void WebAssembly::addLibStdCXXIncludePat +@@ -546,8 +570,11 @@ void WebAssembly::addLibStdCXXIncludePat addSystemInclude(DriverArgs, CC1Args, TargetDir); } @@ -98,10 +107,10 @@ Index: llvm-toolchain-snapshot_17~++20230523093327+96a003b9bf79/clang/lib/Driver + addSystemInclude(DriverArgs, CC1Args, LibPath + "/c++/" + Version + "/backward"); + } } -Index: llvm-toolchain-snapshot_17~++20230523093327+96a003b9bf79/clang/lib/Driver/ToolChains/WebAssembly.h +Index: llvm-toolchain-16-16.0.6/clang/lib/Driver/ToolChains/WebAssembly.h =================================================================== ---- llvm-toolchain-snapshot_17~++20230523093327+96a003b9bf79.orig/clang/lib/Driver/ToolChains/WebAssembly.h -+++ llvm-toolchain-snapshot_17~++20230523093327+96a003b9bf79/clang/lib/Driver/ToolChains/WebAssembly.h +--- llvm-toolchain-16-16.0.6.orig/clang/lib/Driver/ToolChains/WebAssembly.h ++++ llvm-toolchain-16-16.0.6/clang/lib/Driver/ToolChains/WebAssembly.h @@ -89,6 +89,8 @@ private: llvm::opt::ArgStringList &CC1Args) const; void addLibStdCXXIncludePaths(const llvm::opt::ArgList &DriverArgs, From 0c176de6acde249bea81c2ac85f8acb4c6ad1671 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 9 Jan 2024 09:45:59 +0100 Subject: [PATCH 09/19] prepare upload --- debian/changelog | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 07eead8e..3604c3b0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,16 @@ -llvm-toolchain-17 (1:17.0.6-4) UNRELEASED; urgency=medium +llvm-toolchain-17 (1:17.0.6-4) unstable; urgency=medium [ Matthias Klose ] * libclang1-17: Remove the full version symlinks. - -- Sylvestre Ledru Tue, 09 Jan 2024 09:42:35 +0100 + [ Faidon Liambotis ] + * Enable COMPILER_RT_DEFAULT_TARGET_ONLY for all archs + * Enable COMPILER_RT_BUILD_BUILTINS for armel + * Drop two unreferenced debian/patches + * Mark documentation packages as Multi-Arch: foreign + * Convert libclang-common-*-dev to Arch: all/M-A: foreign + + -- Sylvestre Ledru Tue, 09 Jan 2024 09:45:17 +0100 llvm-toolchain-17 (1:17.0.6-3) unstable; urgency=medium From ac5a7481d4c0109e36018dbbcc1fe775de6a242c Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 9 Jan 2024 11:53:43 +0100 Subject: [PATCH 10/19] fix changelog --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 3604c3b0..492d5507 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,7 +1,7 @@ llvm-toolchain-17 (1:17.0.6-4) unstable; urgency=medium - [ Matthias Klose ] - * libclang1-17: Remove the full version symlinks. + [ Matthias Klose ] + * libclang1-17: Remove the full version symlinks. [ Faidon Liambotis ] * Enable COMPILER_RT_DEFAULT_TARGET_ONLY for all archs From 70777a3fed2b5eebc6e688b5bfe35300c7af6fb7 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 9 Jan 2024 11:54:56 +0100 Subject: [PATCH 11/19] fix package name --- debian/qualify-clang.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/qualify-clang.sh b/debian/qualify-clang.sh index a8aa3312..d85aaed4 100755 --- a/debian/qualify-clang.sh +++ b/debian/qualify-clang.sh @@ -9,7 +9,7 @@ VERSION=$(dpkg-parsechangelog | sed -rne "s,^Version: 1:([0-9]+).*,\1,p") DETAILED_VERSION=$(dpkg-parsechangelog | sed -rne "s,^Version: 1:([0-9.]+)(~|-)(.*),\1\2\3,p") DEB_HOST_ARCH=$(dpkg-architecture -qDEB_HOST_ARCH) -LIST="libomp5-${VERSION}_${DETAILED_VERSION}_amd64.deb libomp-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb lldb-${VERSION}_${DETAILED_VERSION}_amd64.deb python3-lldb-${VERSION}_${DETAILED_VERSION}_amd64.deb python3-clang-${VERSION}_${DETAILED_VERSION}_amd64.deb libllvm${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb liblldb-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang1-${VERSION}_${DETAILED_VERSION}_amd64.deb libclang-common-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}_${DETAILED_VERSION}_amd64.deb liblldb-${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-runtime_${DETAILED_VERSION}_amd64.deb lld-${VERSION}_${DETAILED_VERSION}_amd64.deb libfuzzer-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++abi-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++1-${VERSION}_${DETAILED_VERSION}_amd64.deb libc++abi1-${VERSION}_${DETAILED_VERSION}_amd64.deb clang-${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-tools_${DETAILED_VERSION}_amd64.deb clang-tools-${VERSION}_${DETAILED_VERSION}_amd64.deb clangd-${VERSION}_${DETAILED_VERSION}_amd64.deb libclang-cpp${VERSION}_${DETAILED_VERSION}_amd64.deb clang-tidy-${VERSION}_${DETAILED_VERSION}_amd64.deb libclang-cpp${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclc-${VERSION}_${DETAILED_VERSION}_all.deb libclc-${VERSION}-dev_${DETAILED_VERSION}_all.deb llvm-${VERSION}-linker-tools_${DETAILED_VERSION}_amd64.deb libunwind-${VERSION}_${DETAILED_VERSION}_amd64.deb libunwind-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libmlir-${VERSION}_${DETAILED_VERSION}_amd64.deb libmlir-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang-rt-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang-rt-${VERSION}-dev-wasm32_${DETAILED_VERSION}_all.deb libclang-rt-${VERSION}-dev-wasm64_${DETAILED_VERSION}_all.deb libc++abi-${VERSION}-dev-wasm32_${DETAILED_VERSION}_all.deb libc++-${VERSION}-dev-wasm32_${DETAILED_VERSION}_all.deb libpolly-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb bolt-${VERSION}_${DETAILED_VERSION}_amd64.deb libbolt-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb flang-${VERSION}_${DETAILED_VERSION}_amd64.deb libflang-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb" +LIST="libomp5-${VERSION}_${DETAILED_VERSION}_amd64.deb libomp-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb lldb-${VERSION}_${DETAILED_VERSION}_amd64.deb python3-lldb-${VERSION}_${DETAILED_VERSION}_amd64.deb python3-clang-${VERSION}_${DETAILED_VERSION}_amd64.deb libllvm${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb liblldb-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang1-${VERSION}_${DETAILED_VERSION}_amd64.deb libclang-common-${VERSION}-dev_${DETAILED_VERSION}_all.deb llvm-${VERSION}_${DETAILED_VERSION}_amd64.deb liblldb-${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-runtime_${DETAILED_VERSION}_amd64.deb lld-${VERSION}_${DETAILED_VERSION}_amd64.deb libfuzzer-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++abi-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++1-${VERSION}_${DETAILED_VERSION}_amd64.deb libc++abi1-${VERSION}_${DETAILED_VERSION}_amd64.deb clang-${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-tools_${DETAILED_VERSION}_amd64.deb clang-tools-${VERSION}_${DETAILED_VERSION}_amd64.deb clangd-${VERSION}_${DETAILED_VERSION}_amd64.deb libclang-cpp${VERSION}_${DETAILED_VERSION}_amd64.deb clang-tidy-${VERSION}_${DETAILED_VERSION}_amd64.deb libclang-cpp${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclc-${VERSION}_${DETAILED_VERSION}_all.deb libclc-${VERSION}-dev_${DETAILED_VERSION}_all.deb llvm-${VERSION}-linker-tools_${DETAILED_VERSION}_amd64.deb libunwind-${VERSION}_${DETAILED_VERSION}_amd64.deb libunwind-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libmlir-${VERSION}_${DETAILED_VERSION}_amd64.deb libmlir-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang-rt-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang-rt-${VERSION}-dev-wasm32_${DETAILED_VERSION}_all.deb libclang-rt-${VERSION}-dev-wasm64_${DETAILED_VERSION}_all.deb libc++abi-${VERSION}-dev-wasm32_${DETAILED_VERSION}_all.deb libc++-${VERSION}-dev-wasm32_${DETAILED_VERSION}_all.deb libpolly-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb bolt-${VERSION}_${DETAILED_VERSION}_amd64.deb libbolt-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb flang-${VERSION}_${DETAILED_VERSION}_amd64.deb libflang-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb" echo "To install everything:" echo "sudo apt --purge remove 'libomp5-*' 'libc++*dev' 'libc++*' 'python3-lldb-*' 'libunwind-*' 'libclc-*' 'libclc-*dev' 'libmlir-*'" From 556a6737b62eab978bba9b2cf598181590e6ac43 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 9 Jan 2024 13:03:28 +0100 Subject: [PATCH 12/19] debian/qualify-clang.sh: remove the test of i386 - use libcompiler-rt:i386 instead --- debian/changelog | 5 ++++- debian/qualify-clang.sh | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 492d5507..fe749e2e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,8 @@ llvm-toolchain-17 (1:17.0.6-4) unstable; urgency=medium + * debian/qualify-clang.sh: remove the compiler-rt test of i386 + use libclang-rt-17-dev:i386 instead + [ Matthias Klose ] * libclang1-17: Remove the full version symlinks. @@ -10,7 +13,7 @@ llvm-toolchain-17 (1:17.0.6-4) unstable; urgency=medium * Mark documentation packages as Multi-Arch: foreign * Convert libclang-common-*-dev to Arch: all/M-A: foreign - -- Sylvestre Ledru Tue, 09 Jan 2024 09:45:17 +0100 + -- Sylvestre Ledru Tue, 09 Jan 2024 13:03:56 +0100 llvm-toolchain-17 (1:17.0.6-3) unstable; urgency=medium diff --git a/debian/qualify-clang.sh b/debian/qualify-clang.sh index d85aaed4..9d2e4197 100755 --- a/debian/qualify-clang.sh +++ b/debian/qualify-clang.sh @@ -1655,7 +1655,8 @@ fi echo "if it fails, please run" echo "apt-get install libc6-dev:i386 libgcc-5-dev:i386 libc6-dev-x32 libx32gcc-5-dev libx32gcc-9-dev" for SYSTEM in ""; do - for MARCH in -m64 -m32 -mx32 "-m32 -march=i686"; do + # add "-m32 -march=i686" -m32 -mx32 to test multiarch with i386 + for MARCH in -m64; do for LIB in --rtlib=compiler-rt -fsanitize=address -fsanitize=thread -fsanitize=memory -fsanitize=undefined -fsanitize=dataflow; do # -fsanitize=efficiency-working-set; do if test "$MARCH" == "-m32" -o "$MARCH" == "-mx32"; then if test $LIB == "-fsanitize=thread" -o $LIB == "-fsanitize=memory" -o $LIB == "-fsanitize=dataflow" -o $LIB == "-fsanitize=address" -o $LIB == "-fsanitize=undefined"; then From bdfce0866c0b60c2b7968c09bf9eee061e7e8ccb Mon Sep 17 00:00:00 2001 From: Faidon Liambotis Date: Wed, 10 Jan 2024 09:32:21 +0200 Subject: [PATCH 13/19] Revert "Enable COMPILER_RT_BUILD_BUILTINS for armel" FTBFSes with: FAILED: CMakeFiles/clang_rt.builtins-arm.dir/arm/sync_fetch_and_add_4.S.o /<>/build-llvm/./bin/clang -target arm-linux-gnueabi -DVISIBILITY_HIDDEN -O3 -DNDEBUG -fno-lto -std=c11 -fPIC -fno-builtin -fvisibility=hidden -fomit-frame-pointer -DCOMPILER_RT_HAS_FLOAT16 -MD -MT CMakeFiles/clang_rt.builtins-arm.dir/arm/sync_fetch_and_add_4.S.o -MF CMakeFiles/clang_rt.builtins-arm.dir/arm/sync_fetch_and_add_4.S.o.d -o CMakeFiles/clang_rt.builtins-arm.dir/arm/sync_fetch_and_add_4.S.o -c /<>/compiler-rt/lib/builtins/arm/sync_fetch_and_add_4.S In file included from /<>/compiler-rt/lib/builtins/arm/sync_fetch_and_add_4.S:14: /<>/compiler-rt/lib/builtins/arm/sync-ops.h:22:2: error: DMB is only supported on ARMv6+ 22 | #error DMB is only supported on ARMv6+ | ^ This was despite an upstream commit labeled "[compiler-rt] support armv4t". Perhaps something going on with the way we configure? Revert for the time being, until (if) someone cares. This reverts commit 1b0abffef7149d26f5c0cb6480bfc7016b1673ee. --- debian/rules | 3 +++ 1 file changed, 3 insertions(+) diff --git a/debian/rules b/debian/rules index c7bc68be..0fd35b24 100755 --- a/debian/rules +++ b/debian/rules @@ -177,6 +177,9 @@ ifneq (,$(findstring $(DEB_HOST_ARCH),armel)) # https://wiki.debian.org/ArmEabiPort CFLAGS_EXTRA += -march=armv5t CXXFLAGS_EXTRA += -march=armv5t +# disable compiler-rt builtins (not supported for baseline armel arch: armv5t) +# See http://lists.llvm.org/pipermail/llvm-dev/2016-May/099761.html + STAGE_ALL_CMAKE_EXTRA += -DCOMPILER_RT_BUILD_BUILTINS=OFF COMPILER_RT_USE_BUILTINS_LIBRARY := OFF LIBCXX_USE_COMPILER_RT := OFF # disable scudo standalone (not supported for baseline armel arch: armv5t) From 9a997c558901bb11a38c53e7b3b04f4b81f115fc Mon Sep 17 00:00:00 2001 From: Faidon Liambotis Date: Wed, 10 Jan 2024 09:47:01 +0200 Subject: [PATCH 14/19] Fix i386 FTBFS resulting from COMPILER_RT_DEFAULT_TARGET_ONLY > dh_install: warning: Cannot find (any matches for) "usr/lib/llvm-17/lib/clang/17/bin/hwasan_symbolize" (tried in ., debian/tmp) hwasan_symbolize is actually an 64-bit-only feature, and was accidentally included before. Replace the arch opt-out list, with an opt-in one and a comment pointing to HWASAN_SUPPORTED_ARCH. > dh_install: warning: Cannot find (any matches for) "usr/lib/llvm-17/lib/clang/17*/lib/linux/liborc_rt*" (tried in ., debian/tmp) i386 is not in the ALL_ORC_SUPPORTED_ARCH list. Previously, the package shipped liborc_rt-x86_64.a, but since we don't ship amd64 multilib binaries anymore, remove the reference. Addresses regressions introduced with commit: 400d89390891a1e95eb15837baca64bf000a352b Enable COMPILER_RT_DEFAULT_TARGET_ONLY for all archs --- debian/clang-tools-X.Y.install.in | 3 ++- debian/libclang-rt-X.Y-dev.install.in | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/debian/clang-tools-X.Y.install.in b/debian/clang-tools-X.Y.install.in index 3002792a..d69cd402 100644 --- a/debian/clang-tools-X.Y.install.in +++ b/debian/clang-tools-X.Y.install.in @@ -61,7 +61,8 @@ usr/lib/llvm-@LLVM_VERSION@/libexec/analyze-cc usr/lib/llvm-@LLVM_VERSION@/libexec/intercept-c++ usr/lib/llvm-@LLVM_VERSION@/libexec/intercept-cc -[!armel !armhf !ppc64el !hurd-any !s390x !powerpc !ppc64 !mipsel !mips64el !sparc64 !loong64] usr/lib/llvm-@LLVM_VERSION@/lib/clang/@LLVM_VERSION@/bin/hwasan_symbolize +# See compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake / HWASAN_SUPPORTED_ARCH +[amd64 arm64 riscv64] usr/lib/llvm-@LLVM_VERSION@/lib/clang/@LLVM_VERSION@/bin/hwasan_symbolize clang/tools/scan-build-@LLVM_VERSION@ usr/share/clang/ clang/tools/scan-view-@LLVM_VERSION@ usr/share/clang/ diff --git a/debian/libclang-rt-X.Y-dev.install.in b/debian/libclang-rt-X.Y-dev.install.in index ebe7c0bd..be3689b8 100644 --- a/debian/libclang-rt-X.Y-dev.install.in +++ b/debian/libclang-rt-X.Y-dev.install.in @@ -7,4 +7,4 @@ usr/lib/llvm-@LLVM_VERSION@/lib/clang/@LLVM_VERSION@*/README.txt usr/lib/llvm-@LLVM_VERSION@/lib/clang/@LLVM_VERSION@*/include/fuzzer/ usr/lib/llvm-@LLVM_VERSION@/lib/clang/@LLVM_VERSION@*/include/orc/c_api.h # See compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake / ALL_ORC_SUPPORTED_ARCH -[amd64 arm64 armhf armel i386] usr/lib/llvm-@LLVM_VERSION@/lib/clang/@LLVM_VERSION@*/lib/linux/liborc_rt* +[amd64 arm64 armhf armel] usr/lib/llvm-@LLVM_VERSION@/lib/clang/@LLVM_VERSION@*/lib/linux/liborc_rt* From 2cd430f4933176cfba6ddb1b7c882bc7e6e42928 Mon Sep 17 00:00:00 2001 From: chenli Date: Mon, 15 Jan 2024 14:14:05 +0800 Subject: [PATCH 15/19] Enable flang on loong64 --- debian/control | 4 ++-- debian/control.in | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/debian/control b/debian/control index 1d7d6252..6ef2fb2f 100644 --- a/debian/control +++ b/debian/control @@ -933,7 +933,7 @@ Description: Post-link optimizer Package: flang-17 # no 32bit support # https://github.com/llvm/llvm-project/issues/59845 -Architecture: amd64 arm64 mips64el ppc64el kfreebsd-amd64 ppc64 sparc64 riscv64 +Architecture: amd64 arm64 mips64el ppc64el kfreebsd-amd64 ppc64 sparc64 riscv64 loong64 Depends: ${shlibs:Depends}, ${misc:Depends}, ${dep:devlibs}, libflang-17-dev (= ${binary:Version}), Provides: fortran-compiler, gfortran-mod-15 Description: Fortran compiler @@ -944,7 +944,7 @@ Description: Fortran compiler of examples, some functionalities are still missing. Package: libflang-17-dev -Architecture: amd64 arm64 mips64el ppc64el kfreebsd-amd64 ppc64 sparc64 riscv64 +Architecture: amd64 arm64 mips64el ppc64el kfreebsd-amd64 ppc64 sparc64 riscv64 loong64 Section: libdevel Depends: ${shlibs:Depends}, ${misc:Depends}, ${dep:devlibs}, Description: Flang library - Development package diff --git a/debian/control.in b/debian/control.in index ee73ffe8..012f6ce3 100644 --- a/debian/control.in +++ b/debian/control.in @@ -933,7 +933,7 @@ Description: Post-link optimizer Package: flang-@LLVM_VERSION@ # no 32bit support # https://github.com/llvm/llvm-project/issues/59845 -Architecture: amd64 arm64 mips64el ppc64el kfreebsd-amd64 ppc64 sparc64 riscv64 +Architecture: amd64 arm64 mips64el ppc64el kfreebsd-amd64 ppc64 sparc64 riscv64 loong64 Depends: ${shlibs:Depends}, ${misc:Depends}, ${dep:devlibs}, libflang-@LLVM_VERSION@-dev (= ${binary:Version}), Provides: fortran-compiler, gfortran-mod-15 Description: Fortran compiler @@ -944,7 +944,7 @@ Description: Fortran compiler of examples, some functionalities are still missing. Package: libflang-@LLVM_VERSION@-dev -Architecture: amd64 arm64 mips64el ppc64el kfreebsd-amd64 ppc64 sparc64 riscv64 +Architecture: amd64 arm64 mips64el ppc64el kfreebsd-amd64 ppc64 sparc64 riscv64 loong64 Section: libdevel Depends: ${shlibs:Depends}, ${misc:Depends}, ${dep:devlibs}, Description: Flang library - Development package From 97c059388eaa742d9b30ae96988d0646f820fc47 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Mon, 15 Jan 2024 08:56:07 +0100 Subject: [PATCH 16/19] uploaded --- debian/changelog | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/debian/changelog b/debian/changelog index fe749e2e..1481fc30 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +llvm-toolchain-17 (1:17.0.6-5) unstable; urgency=medium + + [ Faidon Liambotis ] + * Revert "Enable COMPILER_RT_BUILD_BUILTINS for armel" + * Fix i386 FTBFS resulting from COMPILER_RT_DEFAULT_TARGET_ONLY + (Closes: #1060440) + + -- Sylvestre Ledru Thu, 11 Jan 2024 14:15:09 +0100 + llvm-toolchain-17 (1:17.0.6-4) unstable; urgency=medium * debian/qualify-clang.sh: remove the compiler-rt test of i386 From 2a2d05e96700e2a6b599e672a345e24a3656e01f Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Mon, 15 Jan 2024 08:56:45 +0100 Subject: [PATCH 17/19] update of the changelog --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index 1481fc30..9ff4ad2e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +llvm-toolchain-17 (1:17.0.6-6) UNRELEASED; urgency=medium + + [ chenli ] + * Enable flang on loong64 + + -- Sylvestre Ledru Mon, 15 Jan 2024 08:56:16 +0100 + llvm-toolchain-17 (1:17.0.6-5) unstable; urgency=medium [ Faidon Liambotis ] From 9827291d40cf70ef26a6d4c2dec16c10de65100b Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Wed, 24 Jan 2024 11:51:17 +0100 Subject: [PATCH 18/19] try to enable sccache on 'my' s390x machines --- debian/rules | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/debian/rules b/debian/rules index 0fd35b24..c1ba7f25 100755 --- a/debian/rules +++ b/debian/rules @@ -509,7 +509,7 @@ SCCACHE_ENABLE=no SCCACHE_CMAKE = # if sccache is installed in the chroot, use it ifeq ($(shell test -e /opt/sccache/sccache && echo -n yes),yes) - ifneq (,$(filter $(DEB_HOST_ARCH),i386 amd64)) + ifneq (,$(filter $(DEB_HOST_ARCH),i386 amd64 s390x)) STAGE_1_CMAKE_EXTRA += $(SCCACHE_CMAKE) SCCACHE_ENABLE=yes SCCACHE_PATH=/opt/sccache/ @@ -710,8 +710,13 @@ endif ifeq (${SCCACHE_ENABLE},yes) # Just in case... $(SCCACHE_CMD) --stop-server||true +ifneq (,$(filter $(DEB_HOST_ARCH),i386 amd64)) # Start the sccache server with the right set of options to use GCP - SCCACHE_LOG=sccache=debug SCCACHE_ERROR_LOG=$(SCCACHE_PATH)/sccache.log SCCACHE_GCS_KEY_PATH=$(SCCACHE_PATH)/secret-gcp-storage.json SCCACHE_GCS_BUCKET=apt-llvm-org-sccache SCCACHE_GCS_RW_MODE=READ_WRITE $(SCCACHE_CMD) --start-server + SCCACHE_LOG=sccache=debug SCCACHE_ERROR_LOG=$(SCCACHE_PATH)/sccache.log SCCACHE_GCS_KEY_PATH=$(SCCACHE_PATH)/secret-gcp-storage.json SCCACHE_GCS_BUCKET=apt-llvm-org-sccache SCCACHE_GCS_RW_MODE=READ_WRITE $(SCCACHE_CMD) --start-server +else +# on s390x machine, use a local cache + SCCACHE_LOG=sccache=debug SCCACHE_ERROR_LOG=$(SCCACHE_PATH)/sccache.log SCCACHE_DIR=/opt/sccache/cache/ SCCACHE_DIRECT=true $(SCCACHE_CMD) --start-server +endif endif echo "Running tests: $(RUN_TEST)" echo "Using cmake: $(CMAKE_BIN)"; \ From a883ee8d454ed0586b99b9289cfa53bee3578b3d Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Wed, 24 Jan 2024 13:30:08 +0100 Subject: [PATCH 19/19] try to enable sccache on 'my' s390x machines --- debian/changelog | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 9ff4ad2e..b1e315b1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,7 +3,10 @@ llvm-toolchain-17 (1:17.0.6-6) UNRELEASED; urgency=medium [ chenli ] * Enable flang on loong64 - -- Sylvestre Ledru Mon, 15 Jan 2024 08:56:16 +0100 + [ Sylvestre Ledru ] + * try to enable sccache on 'my' s390x machines + + -- Sylvestre Ledru Wed, 24 Jan 2024 13:29:35 +0100 llvm-toolchain-17 (1:17.0.6-5) unstable; urgency=medium