diff --git a/debian/changelog b/debian/changelog index 152a2b8d..48581e22 100644 --- a/debian/changelog +++ b/debian/changelog @@ -103,6 +103,49 @@ llvm-toolchain-snapshot (1:18~++20230725115106+b6847edfc235-1~exp1) experimental -- Sylvestre Ledru Tue, 25 Jul 2023 23:52:42 +0200 +llvm-toolchain-17 (1:17.0.6-6) UNRELEASED; urgency=medium + + [ chenli ] + * Enable flang on loong64 + + [ 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 + + [ 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 + use libclang-rt-17-dev:i386 instead + + [ Matthias Klose ] + * libclang1-17: Remove the full version symlinks. + + [ 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 13:03:56 +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 [ Gianfranco Costamagna ] 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/control b/debian/control index 51299311..1f404ba6 100644 --- a/debian/control +++ b/debian/control @@ -43,7 +43,9 @@ Vcs-Browser: https://salsa.debian.org/pkg-llvm-team/llvm-toolchain/tree/snapshot Package: clang-18 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, ${dep:devlibs}, - ${dep:devlibs-objc}, libclang-common-18-dev (= ${binary:Version}), + ${dep:devlibs-objc}, + libllvm18 (= ${binary:Version}), + libclang-common-18-dev (= ${source:Version}), llvm-18-linker-tools (= ${binary:Version}), libclang1-18 (= ${binary:Version}), libc6-dev, binutils Provides: c-compiler, objc-compiler, c++-compiler @@ -91,7 +93,8 @@ Description: Tool to format C/C++/Obj-C code Package: clang-tidy-18 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, python3, - libllvm18 (= ${binary:Version}), libclang-common-18-dev, + libllvm18 (= ${binary:Version}), + libclang-common-18-dev (= ${source:Version}), clang-tools-18, python3-yaml Description: clang-based C++ linter tool Provide an extensible framework for diagnosing and fixing typical programming @@ -102,7 +105,8 @@ Description: clang-based C++ linter tool Package: clangd-18 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, - libclang-common-18-dev (= ${binary:Version}) + libllvm18 (= ${binary:Version}), + libclang-common-18-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 @@ -115,6 +119,7 @@ Description: Language server that provides IDE-like features to editors Package: clang-18-doc Architecture: all +Multi-Arch: foreign Section: doc Depends: ${shlibs:Depends}, ${misc:Depends}, libjs-mathjax Description: C, C++ and Objective-C compiler - Documentation @@ -153,7 +158,7 @@ Architecture: any Section: libdevel Depends: ${shlibs:Depends}, ${misc:Depends}, ${dep:devlibs}, ${dep:devlibs-objc}, libclang1-18 (= ${binary:Version}), - libclang-common-18-dev (= ${binary:Version}) + libclang-common-18-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 @@ -166,9 +171,10 @@ Description: Clang library - Development package libclang1-18. Package: libclang-common-18-dev -Architecture: any +Architecture: all +Multi-Arch: foreign Section: libdevel -Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm18 (= ${binary:Version}) +Depends: ${shlibs:Depends}, ${misc:Depends}, Recommends: libclang-rt-18-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 @@ -313,7 +319,8 @@ Description: Clang Python Bindings This binding package provides access to the Clang compiler and libraries. Package: clang-18-examples -Architecture: any +Architecture: all +Multi-Arch: foreign Section: doc Depends: ${shlibs:Depends}, ${misc:Depends} Description: Clang examples @@ -469,6 +476,7 @@ Description: Modular compiler and toolchain technologies, OCaml bindings Package: llvm-18-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 @@ -636,6 +644,7 @@ Description: LLVM OpenMP runtime Package: libomp-18-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 @@ -677,6 +686,7 @@ Section: libdevel Architecture: any Multi-Arch: same Depends: libc++1-18 (= ${binary:Version}), ${misc:Depends}, + libc++abi-18-dev (= ${binary:Version}), libunwind-18-dev [amd64 arm64 armhf i386 loong64 ppc64el ppc64 riscv64] Breaks: libc++-dev (<< 44), libc++abi-18-dev (<< 1:18~++20231211102647+75193b192ad9-1) Provides: libc++-x.y-dev @@ -922,7 +932,7 @@ Description: Post-link optimizer Package: flang-18 # 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-18-dev (= ${binary:Version}), Provides: fortran-compiler, gfortran-mod-15 Description: Fortran compiler @@ -933,7 +943,7 @@ Description: Fortran compiler of examples, some functionalities are still missing. Package: libflang-18-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 c31e40af..3e5cec17 100644 --- a/debian/control.in +++ b/debian/control.in @@ -43,7 +43,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 @@ -91,7 +93,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 @@ -102,7 +105,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 @@ -115,6 +119,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 @@ -153,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 @@ -166,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 @@ -313,7 +319,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 @@ -469,6 +476,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 @@ -636,6 +644,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 @@ -677,6 +686,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:18~++20231211102647+75193b192ad9-1) Provides: libc++-x.y-dev @@ -922,7 +932,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 @@ -933,7 +943,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 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 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, diff --git a/debian/qualify-clang.sh b/debian/qualify-clang.sh index a8aa3312..9d2e4197 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-*'" @@ -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 diff --git a/debian/rules b/debian/rules index 7b1f3f94..a7240e81 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) @@ -522,6 +514,20 @@ ifeq ($(shell test -e /tmp/cmake/bin/cmake && echo -n yes),yes) export LD_LIBRARY_PATH=$$LD_LIBRARY_PATH:/tmp/cmake/bin/ endif +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 s390x)) + STAGE_1_CMAKE_EXTRA += $(SCCACHE_CMAKE) + SCCACHE_ENABLE=yes + SCCACHE_PATH=/opt/sccache/ + SCCACHE_CMD=$(SCCACHE_PATH)/sccache + SCCACHE_CMAKE = -DCMAKE_C_COMPILER_LAUNCHER=$(SCCACHE_CMD) -DCMAKE_CXX_COMPILER_LAUNCHER=$(SCCACHE_CMD) + export LD_LIBRARY_PATH=$$LD_LIBRARY_PATH:/opt/sccache + endif +endif + COVERITY_ENABLE=0 ifneq (,$(filter coverity,$(DEB_BUILD_OPTIONS))) # enable the build using coverity @@ -539,21 +545,6 @@ ifneq (,$(filter coverity,$(DEB_BUILD_OPTIONS))) RUN_TEST=no endif -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)) - ifeq ($(COVERITY_ENABLE),0) # Only enable SCCache if Coverity is not enabled - STAGE_1_CMAKE_EXTRA += $(SCCACHE_CMAKE) - SCCACHE_ENABLE=yes - SCCACHE_PATH=/opt/sccache/ - SCCACHE_CMD=$(SCCACHE_PATH)/sccache - SCCACHE_CMAKE = -DCMAKE_C_COMPILER_LAUNCHER=$(SCCACHE_CMD) -DCMAKE_CXX_COMPILER_LAUNCHER=$(SCCACHE_CMD) - export LD_LIBRARY_PATH=$$LD_LIBRARY_PATH:/opt/sccache - endif - endif -endif # enables cmake build targets like stage2-[target_name] ENABLED_STAGE2_CMAKE_BUILD_TARGETS = check-all;check-llvm;check-clang;check-clang-tools;check-lld;check-libcxx;check-libcxxabi;check-mlir;check-sanitizer;llvm-config;test-suite @@ -729,8 +720,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)"; \ @@ -787,7 +783,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)" \