[X86] Support -march=sierraforest, grandridge, graniterapids.

Reviewed By: skan, pengfei, MaskRay

Differential Revision: https://reviews.llvm.org/D137153
diff --git a/clang/test/Preprocessor/predefined-arch-macros.c b/clang/test/Preprocessor/predefined-arch-macros.c
index 10f0987..f1c0a14 100644
--- a/clang/test/Preprocessor/predefined-arch-macros.c
+++ b/clang/test/Preprocessor/predefined-arch-macros.c
@@ -1788,6 +1788,155 @@
 // CHECK_SPR_M64: #define __x86_64 1
 // CHECK_SPR_M64: #define __x86_64__ 1
 
+// RUN: %clang -march=graniterapids -m32 -E -dM %s -o - 2>&1 \
+// RUN:     --target=i386 \
+// RUN:   | FileCheck -match-full-lines %s -check-prefix=CHECK_GNR_M32
+// CHECK_GNR_M32: #define __AES__ 1
+// CHECK_GNR_M32: #define __AMXBF16__ 1
+// CHECK_GNR_M32: #define __AMXFP16__ 1
+// CHECK_GNR_M32: #define __AMXINT8__ 1
+// CHECK_GNR_M32: #define __AMXTILE__ 1
+// CHECK_GNR_M32: #define __AVX2__ 1
+// CHECK_GNR_M32: #define __AVX512BF16__ 1
+// CHECK_GNR_M32: #define __AVX512BITALG__ 1
+// CHECK_GNR_M32: #define __AVX512BW__ 1
+// CHECK_GNR_M32: #define __AVX512CD__ 1
+// CHECK_GNR_M32: #define __AVX512DQ__ 1
+// CHECK_GNR_M32: #define __AVX512FP16__ 1
+// CHECK_GNR_M32: #define __AVX512F__ 1
+// CHECK_GNR_M32: #define __AVX512IFMA__ 1
+// CHECK_GNR_M32: #define __AVX512VBMI2__ 1
+// CHECK_GNR_M32: #define __AVX512VBMI__ 1
+// CHECK_GNR_M32: #define __AVX512VL__ 1
+// CHECK_GNR_M32: #define __AVX512VNNI__ 1
+// CHECK_GNR_M32: #define __AVX512VPOPCNTDQ__ 1
+// CHECK_GNR_M32: #define __AVXVNNI__ 1
+// CHECK_GNR_M32: #define __AVX__ 1
+// CHECK_GNR_M32: #define __BMI2__ 1
+// CHECK_GNR_M32: #define __BMI__ 1
+// CHECK_GNR_M32: #define __CLDEMOTE__ 1
+// CHECK_GNR_M32: #define __CLFLUSHOPT__ 1
+// CHECK_GNR_M32: #define __CLWB__ 1
+// CHECK_GNR_M32: #define __ENQCMD__ 1
+// CHECK_GNR_M32: #define __F16C__ 1
+// CHECK_GNR_M32: #define __FMA__ 1
+// CHECK_GNR_M32: #define __GFNI__ 1
+// CHECK_GNR_M32: #define __INVPCID__ 1
+// CHECK_GNR_M32: #define __LZCNT__ 1
+// CHECK_GNR_M32: #define __MMX__ 1
+// CHECK_GNR_M32: #define __MOVBE__ 1
+// CHECK_GNR_M32: #define __PCLMUL__ 1
+// CHECK_GNR_M32: #define __PCONFIG__ 1
+// CHECK_GNR_M32: #define __PKU__ 1
+// CHECK_GNR_M32: #define __POPCNT__ 1
+// CHECK_GNR_M32: #define __PREFETCHI__ 1
+// CHECK_GNR_M32: #define __PRFCHW__ 1
+// CHECK_GNR_M32: #define __PTWRITE__ 1
+// CHECK_GNR_M32: #define __RDPID__ 1
+// CHECK_GNR_M32: #define __RDRND__ 1
+// CHECK_GNR_M32: #define __RDSEED__ 1
+// CHECK_GNR_M32: #define __SERIALIZE__ 1
+// CHECK_GNR_M32: #define __SGX__ 1
+// CHECK_GNR_M32: #define __SHA__ 1
+// CHECK_GNR_M32: #define __SHSTK__ 1
+// CHECK_GNR_M32: #define __SSE2__ 1
+// CHECK_GNR_M32: #define __SSE3__ 1
+// CHECK_GNR_M32: #define __SSE4_1__ 1
+// CHECK_GNR_M32: #define __SSE4_2__ 1
+// CHECK_GNR_M32: #define __SSE__ 1
+// CHECK_GNR_M32: #define __SSSE3__ 1
+// CHECK_GNR_M32: #define __TSXLDTRK__ 1
+// CHECK_GNR_M32: #define __UINTR__ 1
+// CHECK_GNR_M32: #define __VAES__ 1
+// CHECK_GNR_M32: #define __VPCLMULQDQ__ 1
+// CHECK_GNR_M32: #define __WAITPKG__ 1
+// CHECK_GNR_M32: #define __WBNOINVD__ 1
+// CHECK_GNR_M32: #define __XSAVEC__ 1
+// CHECK_GNR_M32: #define __XSAVEOPT__ 1
+// CHECK_GNR_M32: #define __XSAVES__ 1
+// CHECK_GNR_M32: #define __XSAVE__ 1
+// CHECK_GNR_M32: #define __corei7 1
+// CHECK_GNR_M32: #define __corei7__ 1
+// CHECK_GNR_M32: #define __i386 1
+// CHECK_GNR_M32: #define __i386__ 1
+// CHECK_GNR_M32: #define __tune_corei7__ 1
+// CHECK_GNR_M32: #define i386 1
+
+// RUN: %clang -march=graniterapids -m64 -E -dM %s -o - 2>&1 \
+// RUN:     --target=x86_64 \
+// RUN:   | FileCheck -match-full-lines %s -check-prefix=CHECK_GNR_M64
+// CHECK_GNR_M64: #define __AES__ 1
+// CHECK_GNR_M64: #define __AMXBF16__ 1
+// CHECK_GNR_M64: #define __AMXFP16__ 1
+// CHECK_GNR_M64: #define __AMXINT8__ 1
+// CHECK_GNR_M64: #define __AMXTILE__ 1
+// CHECK_GNR_M64: #define __AVX2__ 1
+// CHECK_GNR_M64: #define __AVX512BF16__ 1
+// CHECK_GNR_M64: #define __AVX512BITALG__ 1
+// CHECK_GNR_M64: #define __AVX512BW__ 1
+// CHECK_GNR_M64: #define __AVX512CD__ 1
+// CHECK_GNR_M64: #define __AVX512DQ__ 1
+// CHECK_GNR_M64: #define __AVX512FP16__ 1
+// CHECK_GNR_M64: #define __AVX512F__ 1
+// CHECK_GNR_M64: #define __AVX512IFMA__ 1
+// CHECK_GNR_M64: #define __AVX512VBMI2__ 1
+// CHECK_GNR_M64: #define __AVX512VBMI__ 1
+// CHECK_GNR_M64: #define __AVX512VL__ 1
+// CHECK_GNR_M64: #define __AVX512VNNI__ 1
+// CHECK_GNR_M64: #define __AVX512VPOPCNTDQ__ 1
+// CHECK_GNR_M64: #define __AVXVNNI__ 1
+// CHECK_GNR_M64: #define __AVX__ 1
+// CHECK_GNR_M64: #define __BMI2__ 1
+// CHECK_GNR_M64: #define __BMI__ 1
+// CHECK_GNR_M64: #define __CLDEMOTE__ 1
+// CHECK_GNR_M64: #define __CLFLUSHOPT__ 1
+// CHECK_GNR_M64: #define __CLWB__ 1
+// CHECK_GNR_M64: #define __ENQCMD__ 1
+// CHECK_GNR_M64: #define __F16C__ 1
+// CHECK_GNR_M64: #define __FMA__ 1
+// CHECK_GNR_M64: #define __GFNI__ 1
+// CHECK_GNR_M64: #define __INVPCID__ 1
+// CHECK_GNR_M64: #define __LZCNT__ 1
+// CHECK_GNR_M64: #define __MMX__ 1
+// CHECK_GNR_M64: #define __MOVBE__ 1
+// CHECK_GNR_M64: #define __PCLMUL__ 1
+// CHECK_GNR_M64: #define __PCONFIG__ 1
+// CHECK_GNR_M64: #define __PKU__ 1
+// CHECK_GNR_M64: #define __POPCNT__ 1
+// CHECK_GNR_M64: #define __PREFETCHI__ 1
+// CHECK_GNR_M64: #define __PRFCHW__ 1
+// CHECK_GNR_M64: #define __PTWRITE__ 1
+// CHECK_GNR_M64: #define __RDPID__ 1
+// CHECK_GNR_M64: #define __RDRND__ 1
+// CHECK_GNR_M64: #define __RDSEED__ 1
+// CHECK_GNR_M64: #define __SERIALIZE__ 1
+// CHECK_GNR_M64: #define __SGX__ 1
+// CHECK_GNR_M64: #define __SHA__ 1
+// CHECK_GNR_M64: #define __SHSTK__ 1
+// CHECK_GNR_M64: #define __SSE2__ 1
+// CHECK_GNR_M64: #define __SSE3__ 1
+// CHECK_GNR_M64: #define __SSE4_1__ 1
+// CHECK_GNR_M64: #define __SSE4_2__ 1
+// CHECK_GNR_M64: #define __SSE__ 1
+// CHECK_GNR_M64: #define __SSSE3__ 1
+// CHECK_GNR_M64: #define __TSXLDTRK__ 1
+// CHECK_GNR_M64: #define __UINTR__ 1
+// CHECK_GNR_M64: #define __VAES__ 1
+// CHECK_GNR_M64: #define __VPCLMULQDQ__ 1
+// CHECK_GNR_M64: #define __WAITPKG__ 1
+// CHECK_GNR_M64: #define __WBNOINVD__ 1
+// CHECK_GNR_M64: #define __XSAVEC__ 1
+// CHECK_GNR_M64: #define __XSAVEOPT__ 1
+// CHECK_GNR_M64: #define __XSAVES__ 1
+// CHECK_GNR_M64: #define __XSAVE__ 1
+// CHECK_GNR_M64: #define __amd64 1
+// CHECK_GNR_M64: #define __amd64__ 1
+// CHECK_GNR_M64: #define __corei7 1
+// CHECK_GNR_M64: #define __corei7__ 1
+// CHECK_GNR_M64: #define __tune_corei7__ 1
+// CHECK_GNR_M64: #define __x86_64 1
+// CHECK_GNR_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
@@ -2242,6 +2391,276 @@
 // RUN:   | FileCheck %s -check-prefix=CHECK_LAKEMONT_M64
 // CHECK_LAKEMONT_M64: error:
 
+// RUN: %clang -march=sierraforest -m32 -E -dM %s -o - 2>&1 \
+// RUN:     --target=i386 \
+// RUN:   | FileCheck -match-full-lines %s -check-prefix=CHECK_SRF_M32
+// CHECK_SRF_M32: #define __ADX__ 1
+// CHECK_SRF_M32: #define __AES__ 1
+// CHECK_SRF_M32: #define __AVX2__ 1
+// CHECK_SRF_M32-NOT: AVX512
+// CHECK_SRF_M32: #define __AVXIFMA__ 1
+// CHECK_SRF_M32: #define __AVXNECONVERT__ 1
+// CHECK_SRF_M32: #define __AVXVNNIINT8__ 1
+// CHECK_SRF_M32: #define __AVXVNNI__ 1
+// CHECK_SRF_M32: #define __AVX__ 1
+// CHECK_SRF_M32: #define __BMI2__ 1
+// CHECK_SRF_M32: #define __BMI__ 1
+// CHECK_SRF_M32: #define __CLDEMOTE__ 1
+// CHECK_SRF_M32: #define __CLFLUSHOPT__ 1
+// CHECK_SRF_M32: #define __CLWB__ 1
+// CHECK_SRF_M32: #define __CMPCCXADD__ 1
+// CHECK_SRF_M32: #define __F16C__ 1
+// CHECK_SRF_M32: #define __FMA__ 1
+// CHECK_SRF_M32: #define __FSGSBASE__ 1
+// CHECK_SRF_M32: #define __FXSR__ 1
+// CHECK_SRF_M32: #define __GFNI__ 1
+// CHECK_SRF_M32: #define __HRESET__ 1
+// CHECK_SRF_M32: #define __INVPCID__ 1
+// CHECK_SRF_M32: #define __KL__ 1
+// CHECK_SRF_M32: #define __LZCNT__ 1
+// CHECK_SRF_M32: #define __MMX__ 1
+// CHECK_SRF_M32: #define __MOVBE__ 1
+// CHECK_SRF_M32: #define __MOVDIR64B__ 1
+// CHECK_SRF_M32: #define __MOVDIRI__ 1
+// CHECK_SRF_M32: #define __PCLMUL__ 1
+// CHECK_SRF_M32: #define __PCONFIG__ 1
+// CHECK_SRF_M32: #define __PKU__ 1
+// CHECK_SRF_M32: #define __POPCNT__ 1
+// CHECK_SRF_M32: #define __PRFCHW__ 1
+// CHECK_SRF_M32: #define __PTWRITE__ 1
+// CHECK_SRF_M32: #define __RDPID__ 1
+// CHECK_SRF_M32: #define __RDRND__ 1
+// CHECK_SRF_M32: #define __RDSEED__ 1
+// CHECK_SRF_M32: #define __SERIALIZE__ 1
+// CHECK_SRF_M32: #define __SGX__ 1
+// CHECK_SRF_M32: #define __SHA__ 1
+// CHECK_SRF_M32: #define __SHSTK__ 1
+// CHECK_SRF_M32: #define __SSE2__ 1
+// CHECK_SRF_M32: #define __SSE3__ 1
+// CHECK_SRF_M32: #define __SSE4_1__ 1
+// CHECK_SRF_M32: #define __SSE4_2__ 1
+// CHECK_SRF_M32: #define __SSE_MATH__ 1
+// CHECK_SRF_M32: #define __SSE__ 1
+// CHECK_SRF_M32: #define __SSSE3__ 1
+// CHECK_SRF_M32: #define __VAES__ 1
+// CHECK_SRF_M32: #define __VPCLMULQDQ__ 1
+// CHECK_SRF_M32: #define __WAITPKG__ 1
+// CHECK_SRF_M32: #define __WIDEKL__ 1
+// CHECK_SRF_M32: #define __XSAVEC__ 1
+// CHECK_SRF_M32: #define __XSAVEOPT__ 1
+// CHECK_SRF_M32: #define __XSAVES__ 1
+// CHECK_SRF_M32: #define __XSAVE__ 1
+// CHECK_SRF_M32: #define __corei7 1
+// CHECK_SRF_M32: #define __corei7__ 1
+// CHECK_SRF_M32: #define __i386 1
+// CHECK_SRF_M32: #define __i386__ 1
+// CHECK_SRF_M32: #define __tune_corei7__ 1
+// CHECK_SRF_M32: #define i386 1
+
+// RUN: %clang -march=sierraforest -m64 -E -dM %s -o - 2>&1 \
+// RUN:     --target=i386 \
+// RUN:   | FileCheck -match-full-lines %s -check-prefix=CHECK_SRF_M64
+// CHECK_SRF_M64: #define __ADX__ 1
+// CHECK_SRF_M64: #define __AES__ 1
+// CHECK_SRF_M64: #define __AVX2__ 1
+// CHECK_SRF_M64-NOT: AVX512
+// CHECK_SRF_M64: #define __AVXIFMA__ 1
+// CHECK_SRF_M64: #define __AVXNECONVERT__ 1
+// CHECK_SRF_M64: #define __AVXVNNIINT8__ 1
+// CHECK_SRF_M64: #define __AVXVNNI__ 1
+// CHECK_SRF_M64: #define __AVX__ 1
+// CHECK_SRF_M64: #define __BMI2__ 1
+// CHECK_SRF_M64: #define __BMI__ 1
+// CHECK_SRF_M64: #define __CLDEMOTE__ 1
+// CHECK_SRF_M64: #define __CLFLUSHOPT__ 1
+// CHECK_SRF_M64: #define __CLWB__ 1
+// CHECK_SRF_M64: #define __CMPCCXADD__ 1
+// CHECK_SRF_M64: #define __F16C__ 1
+// CHECK_SRF_M64: #define __FMA__ 1
+// CHECK_SRF_M64: #define __FSGSBASE__ 1
+// CHECK_SRF_M64: #define __FXSR__ 1
+// CHECK_SRF_M64: #define __GFNI__ 1
+// CHECK_SRF_M64: #define __HRESET__ 1
+// CHECK_SRF_M64: #define __INVPCID__ 1
+// CHECK_SRF_M64: #define __KL__ 1
+// CHECK_SRF_M64: #define __LZCNT__ 1
+// CHECK_SRF_M64: #define __MMX__ 1
+// CHECK_SRF_M64: #define __MOVBE__ 1
+// CHECK_SRF_M64: #define __MOVDIR64B__ 1
+// CHECK_SRF_M64: #define __MOVDIRI__ 1
+// CHECK_SRF_M64: #define __PCLMUL__ 1
+// CHECK_SRF_M64: #define __PCONFIG__ 1
+// CHECK_SRF_M64: #define __PKU__ 1
+// CHECK_SRF_M64: #define __POPCNT__ 1
+// CHECK_SRF_M64: #define __PRFCHW__ 1
+// CHECK_SRF_M64: #define __PTWRITE__ 1
+// CHECK_SRF_M64: #define __RDPID__ 1
+// CHECK_SRF_M64: #define __RDRND__ 1
+// CHECK_SRF_M64: #define __RDSEED__ 1
+// CHECK_SRF_M64: #define __SERIALIZE__ 1
+// CHECK_SRF_M64: #define __SGX__ 1
+// CHECK_SRF_M64: #define __SHA__ 1
+// CHECK_SRF_M64: #define __SHSTK__ 1
+// CHECK_SRF_M64: #define __SSE2_MATH__ 1
+// CHECK_SRF_M64: #define __SSE2__ 1
+// CHECK_SRF_M64: #define __SSE3__ 1
+// CHECK_SRF_M64: #define __SSE4_1__ 1
+// CHECK_SRF_M64: #define __SSE4_2__ 1
+// CHECK_SRF_M64: #define __SSE_MATH__ 1
+// CHECK_SRF_M64: #define __SSE__ 1
+// CHECK_SRF_M64: #define __SSSE3__ 1
+// CHECK_SRF_M64: #define __VAES__ 1
+// CHECK_SRF_M64: #define __VPCLMULQDQ__ 1
+// CHECK_SRF_M64: #define __WAITPKG__ 1
+// CHECK_SRF_M64: #define __WIDEKL__ 1
+// CHECK_SRF_M64: #define __XSAVEC__ 1
+// CHECK_SRF_M64: #define __XSAVEOPT__ 1
+// CHECK_SRF_M64: #define __XSAVES__ 1
+// CHECK_SRF_M64: #define __XSAVE__ 1
+// CHECK_SRF_M64: #define __amd64 1
+// CHECK_SRF_M64: #define __amd64__ 1
+// CHECK_SRF_M64: #define __corei7 1
+// CHECK_SRF_M64: #define __corei7__ 1
+// CHECK_SRF_M64: #define __tune_corei7__ 1
+// CHECK_SRF_M64: #define __x86_64 1
+// CHECK_SRF_M64: #define __x86_64__ 1
+
+// RUN: %clang -march=grandridge -m32 -E -dM %s -o - 2>&1 \
+// RUN:     --target=i386 \
+// RUN:   | FileCheck -match-full-lines %s -check-prefix=CHECK_GRR_M32
+// CHECK_GRR_M32: #define __ADX__ 1
+// CHECK_GRR_M32: #define __AES__ 1
+// CHECK_GRR_M32: #define __AVX2__ 1
+// CHECK_GRR_M32-NOT: AVX512
+// CHECK_GRR_M32: #define __AVXIFMA__ 1
+// CHECK_GRR_M32: #define __AVXNECONVERT__ 1
+// CHECK_GRR_M32: #define __AVXVNNIINT8__ 1
+// CHECK_GRR_M32: #define __AVXVNNI__ 1
+// CHECK_GRR_M32: #define __AVX__ 1
+// CHECK_GRR_M32: #define __BMI2__ 1
+// CHECK_GRR_M32: #define __BMI__ 1
+// CHECK_GRR_M32: #define __CLDEMOTE__ 1
+// CHECK_GRR_M32: #define __CLFLUSHOPT__ 1
+// CHECK_GRR_M32: #define __CLWB__ 1
+// CHECK_GRR_M32: #define __CMPCCXADD__ 1
+// CHECK_GRR_M32: #define __F16C__ 1
+// CHECK_GRR_M32: #define __FMA__ 1
+// CHECK_GRR_M32: #define __FSGSBASE__ 1
+// CHECK_GRR_M32: #define __FXSR__ 1
+// CHECK_GRR_M32: #define __GFNI__ 1
+// CHECK_GRR_M32: #define __HRESET__ 1
+// CHECK_GRR_M32: #define __INVPCID__ 1
+// CHECK_GRR_M32: #define __KL__ 1
+// CHECK_GRR_M32: #define __LZCNT__ 1
+// CHECK_GRR_M32: #define __MMX__ 1
+// CHECK_GRR_M32: #define __MOVBE__ 1
+// CHECK_GRR_M32: #define __MOVDIR64B__ 1
+// CHECK_GRR_M32: #define __MOVDIRI__ 1
+// CHECK_GRR_M32: #define __PCLMUL__ 1
+// CHECK_GRR_M32: #define __PCONFIG__ 1
+// CHECK_GRR_M32: #define __PKU__ 1
+// CHECK_GRR_M32: #define __POPCNT__ 1
+// CHECK_GRR_M32: #define __PRFCHW__ 1
+// CHECK_GRR_M32: #define __PTWRITE__ 1
+// CHECK_GRR_M32: #define __RAOINT__ 1
+// CHECK_GRR_M32: #define __RDPID__ 1
+// CHECK_GRR_M32: #define __RDRND__ 1
+// CHECK_GRR_M32: #define __RDSEED__ 1
+// CHECK_GRR_M32: #define __SERIALIZE__ 1
+// CHECK_GRR_M32: #define __SGX__ 1
+// CHECK_GRR_M32: #define __SHA__ 1
+// CHECK_GRR_M32: #define __SHSTK__ 1
+// CHECK_GRR_M32: #define __SSE2__ 1
+// CHECK_GRR_M32: #define __SSE3__ 1
+// CHECK_GRR_M32: #define __SSE4_1__ 1
+// CHECK_GRR_M32: #define __SSE4_2__ 1
+// CHECK_GRR_M32: #define __SSE_MATH__ 1
+// CHECK_GRR_M32: #define __SSE__ 1
+// CHECK_GRR_M32: #define __SSSE3__ 1
+// CHECK_GRR_M32: #define __VAES__ 1
+// CHECK_GRR_M32: #define __VPCLMULQDQ__ 1
+// CHECK_GRR_M32: #define __WAITPKG__ 1
+// CHECK_GRR_M32: #define __WIDEKL__ 1
+// CHECK_GRR_M32: #define __XSAVEC__ 1
+// CHECK_GRR_M32: #define __XSAVEOPT__ 1
+// CHECK_GRR_M32: #define __XSAVES__ 1
+// CHECK_GRR_M32: #define __XSAVE__ 1
+// CHECK_GRR_M32: #define __corei7 1
+// CHECK_GRR_M32: #define __corei7__ 1
+// CHECK_GRR_M32: #define __i386 1
+// CHECK_GRR_M32: #define __i386__ 1
+// CHECK_GRR_M32: #define __tune_corei7__ 1
+// CHECK_GRR_M32: #define i386 1
+
+// RUN: %clang -march=grandridge -m64 -E -dM %s -o - 2>&1 \
+// RUN:     --target=x86_64 \
+// RUN:   | FileCheck -match-full-lines %s -check-prefix=CHECK_GRR_M64
+// CHECK_GRR_M64: #define __ADX__ 1
+// CHECK_GRR_M64: #define __AES__ 1
+// CHECK_GRR_M64: #define __AVX2__ 1
+// CHECK_GRR_M64-NOT: AVX512
+// CHECK_GRR_M64: #define __AVXIFMA__ 1
+// CHECK_GRR_M64: #define __AVXNECONVERT__ 1
+// CHECK_GRR_M64: #define __AVXVNNIINT8__ 1
+// CHECK_GRR_M64: #define __AVXVNNI__ 1
+// CHECK_GRR_M64: #define __AVX__ 1
+// CHECK_GRR_M64: #define __BMI2__ 1
+// CHECK_GRR_M64: #define __BMI__ 1
+// CHECK_GRR_M64: #define __CLDEMOTE__ 1
+// CHECK_GRR_M64: #define __CLFLUSHOPT__ 1
+// CHECK_GRR_M64: #define __CLWB__ 1
+// CHECK_GRR_M64: #define __CMPCCXADD__ 1
+// CHECK_GRR_M64: #define __F16C__ 1
+// CHECK_GRR_M64: #define __FMA__ 1
+// CHECK_GRR_M64: #define __FSGSBASE__ 1
+// CHECK_GRR_M64: #define __FXSR__ 1
+// CHECK_GRR_M64: #define __GFNI__ 1
+// CHECK_GRR_M64: #define __HRESET__ 1
+// CHECK_GRR_M64: #define __INVPCID__ 1
+// CHECK_GRR_M64: #define __KL__ 1
+// CHECK_GRR_M64: #define __LZCNT__ 1
+// CHECK_GRR_M64: #define __MMX__ 1
+// CHECK_GRR_M64: #define __MOVBE__ 1
+// CHECK_GRR_M64: #define __MOVDIR64B__ 1
+// CHECK_GRR_M64: #define __MOVDIRI__ 1
+// CHECK_GRR_M64: #define __PCLMUL__ 1
+// CHECK_GRR_M64: #define __PCONFIG__ 1
+// CHECK_GRR_M64: #define __PKU__ 1
+// CHECK_GRR_M64: #define __POPCNT__ 1
+// CHECK_GRR_M64: #define __PRFCHW__ 1
+// CHECK_GRR_M64: #define __PTWRITE__ 1
+// CHECK_GRR_M64: #define __RAOINT__ 1
+// CHECK_GRR_M64: #define __RDPID__ 1
+// CHECK_GRR_M64: #define __RDRND__ 1
+// CHECK_GRR_M64: #define __RDSEED__ 1
+// CHECK_GRR_M64: #define __SERIALIZE__ 1
+// CHECK_GRR_M64: #define __SGX__ 1
+// CHECK_GRR_M64: #define __SHA__ 1
+// CHECK_GRR_M64: #define __SHSTK__ 1
+// CHECK_GRR_M64: #define __SSE2_MATH__ 1
+// CHECK_GRR_M64: #define __SSE2__ 1
+// CHECK_GRR_M64: #define __SSE3__ 1
+// CHECK_GRR_M64: #define __SSE4_1__ 1
+// CHECK_GRR_M64: #define __SSE4_2__ 1
+// CHECK_GRR_M64: #define __SSE_MATH__ 1
+// CHECK_GRR_M64: #define __SSE__ 1
+// CHECK_GRR_M64: #define __SSSE3__ 1
+// CHECK_GRR_M64: #define __VAES__ 1
+// CHECK_GRR_M64: #define __VPCLMULQDQ__ 1
+// CHECK_GRR_M64: #define __WAITPKG__ 1
+// CHECK_GRR_M64: #define __WIDEKL__ 1
+// CHECK_GRR_M64: #define __XSAVEC__ 1
+// CHECK_GRR_M64: #define __XSAVEOPT__ 1
+// CHECK_GRR_M64: #define __XSAVES__ 1
+// CHECK_GRR_M64: #define __XSAVE__ 1
+// CHECK_GRR_M64: #define __amd64 1
+// CHECK_GRR_M64: #define __amd64__ 1
+// CHECK_GRR_M64: #define __corei7 1
+// CHECK_GRR_M64: #define __corei7__ 1
+// CHECK_GRR_M64: #define __tune_corei7__ 1
+// CHECK_GRR_M64: #define __x86_64 1
+// CHECK_GRR_M64: #define __x86_64__ 1
+
 // 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