1*67e74705SXin Li // REQUIRES: x86-registered-target 2*67e74705SXin Li 3*67e74705SXin Li // We support -m32 and -m64. We support all x86 CPU feature flags in gcc's -m 4*67e74705SXin Li // flag space. 5*67e74705SXin Li // RUN: %clang_cl /Zs /WX -m32 -m64 -msse3 -msse4.1 -mavx -mno-avx \ 6*67e74705SXin Li // RUN: --target=i386-pc-win32 -### -- 2>&1 %s | FileCheck -check-prefix=MFLAGS %s 7*67e74705SXin Li // MFLAGS-NOT: argument unused during compilation 8*67e74705SXin Li 9*67e74705SXin Li // RUN: %clang_cl -m32 -arch:IA32 --target=i386 -### -- 2>&1 %s | FileCheck -check-prefix=IA32 %s 10*67e74705SXin Li // IA32: "-target-cpu" "i386" 11*67e74705SXin Li // IA32-NOT: -target-feature 12*67e74705SXin Li // IA32-NOT: argument unused during compilation 13*67e74705SXin Li 14*67e74705SXin Li // RUN: %clang_cl -m32 -arch:ia32 --target=i386 -### -- 2>&1 %s | FileCheck -check-prefix=ia32 %s 15*67e74705SXin Li // ia32: argument unused during compilation 16*67e74705SXin Li // ia32-NOT: -target-feature 17*67e74705SXin Li 18*67e74705SXin Li // RUN: %clang_cl -m64 -arch:IA32 --target=x86_64 -### -- 2>&1 %s | FileCheck -check-prefix=IA3264 %s 19*67e74705SXin Li // IA3264: argument unused during compilation 20*67e74705SXin Li // IA3264-NOT: -target-feature 21*67e74705SXin Li 22*67e74705SXin Li // RUN: %clang_cl -m32 -arch:SSE --target=i386 -### -- 2>&1 %s | FileCheck -check-prefix=SSE %s 23*67e74705SXin Li // SSE: "-target-cpu" "pentium3" 24*67e74705SXin Li // SSE: -target-feature 25*67e74705SXin Li // SSE: +sse 26*67e74705SXin Li // SSE-NOT: argument unused during compilation 27*67e74705SXin Li 28*67e74705SXin Li // RUN: %clang_cl -m32 -arch:sse --target=i386 -### -- 2>&1 %s | FileCheck -check-prefix=sse %s 29*67e74705SXin Li // sse: argument unused during compilation 30*67e74705SXin Li // sse-NOT: -target-feature 31*67e74705SXin Li 32*67e74705SXin Li // RUN: %clang_cl -m32 -arch:SSE2 --target=i386 -### -- 2>&1 %s | FileCheck -check-prefix=SSE2 %s 33*67e74705SXin Li // SSE2: "-target-cpu" "pentium4" 34*67e74705SXin Li // SSE2: -target-feature 35*67e74705SXin Li // SSE2: +sse2 36*67e74705SXin Li // SSE2-NOT: argument unused during compilation 37*67e74705SXin Li 38*67e74705SXin Li // RUN: %clang_cl -m32 -arch:sse2 --target=i386 -### -- 2>&1 %s | FileCheck -check-prefix=sse %s 39*67e74705SXin Li // sse2: argument unused during compilation 40*67e74705SXin Li // sse2-NOT: -target-feature 41*67e74705SXin Li 42*67e74705SXin Li // RUN: %clang_cl -m64 -arch:SSE --target=x86_64 -### -- 2>&1 %s | FileCheck -check-prefix=SSE64 %s 43*67e74705SXin Li // SSE64: argument unused during compilation 44*67e74705SXin Li // SSE64-NOT: -target-feature 45*67e74705SXin Li // SSE64-NOT: pentium3 46*67e74705SXin Li 47*67e74705SXin Li // RUN: %clang_cl -m64 -arch:SSE2 --target=x86_64 -### -- 2>&1 %s | FileCheck -check-prefix=SSE264 %s 48*67e74705SXin Li // SSE264: argument unused during compilation 49*67e74705SXin Li // SSE264-NOT: -target-feature 50*67e74705SXin Li 51*67e74705SXin Li // RUN: %clang_cl -m32 -arch:AVX --target=i386 -### -- 2>&1 %s | FileCheck -check-prefix=AVX %s 52*67e74705SXin Li // AVX: "-target-cpu" "sandybridge" 53*67e74705SXin Li // AVX: -target-feature 54*67e74705SXin Li // AVX: +avx 55*67e74705SXin Li 56*67e74705SXin Li // RUN: %clang_cl -m32 -arch:avx --target=i386 -### -- 2>&1 %s | FileCheck -check-prefix=avx %s 57*67e74705SXin Li // avx: argument unused during compilation 58*67e74705SXin Li // avx-NOT: -target-feature 59*67e74705SXin Li 60*67e74705SXin Li // RUN: %clang_cl -m32 -arch:AVX2 --target=i386 -### -- 2>&1 %s | FileCheck -check-prefix=AVX2 %s 61*67e74705SXin Li // AVX2: "-target-cpu" "haswell" 62*67e74705SXin Li // AVX2: -target-feature 63*67e74705SXin Li // AVX2: +avx2 64*67e74705SXin Li 65*67e74705SXin Li // RUN: %clang_cl -m32 -arch:avx2 --target=i386 -### -- 2>&1 %s | FileCheck -check-prefix=avx2 %s 66*67e74705SXin Li // avx2: argument unused during compilation 67*67e74705SXin Li // avx2-NOT: -target-feature 68*67e74705SXin Li 69*67e74705SXin Li // RUN: %clang_cl -m64 -arch:AVX --target=x86_64 -### -- 2>&1 %s | FileCheck -check-prefix=AVX64 %s 70*67e74705SXin Li // AVX64: "-target-cpu" "sandybridge" 71*67e74705SXin Li // AVX64: -target-feature 72*67e74705SXin Li // AVX64: +avx 73*67e74705SXin Li 74*67e74705SXin Li // RUN: %clang_cl -m64 -arch:avx --target=x86_64 -### -- 2>&1 %s | FileCheck -check-prefix=avx64 %s 75*67e74705SXin Li // avx64: argument unused during compilation 76*67e74705SXin Li // avx64-NOT: -target-feature 77*67e74705SXin Li 78*67e74705SXin Li // RUN: %clang_cl -m64 -arch:AVX2 --target=x86_64 -### -- 2>&1 %s | FileCheck -check-prefix=AVX264 %s 79*67e74705SXin Li // AVX264: "-target-cpu" "haswell" 80*67e74705SXin Li // AVX264: -target-feature 81*67e74705SXin Li // AVX264: +avx2 82*67e74705SXin Li 83*67e74705SXin Li // RUN: %clang_cl -m64 -arch:avx2 --target=x86_64 -### -- 2>&1 %s | FileCheck -check-prefix=avx264 %s 84*67e74705SXin Li // avx264: argument unused during compilation 85*67e74705SXin Li // avx264-NOT: -target-feature 86*67e74705SXin Li f()87*67e74705SXin Livoid f() { 88*67e74705SXin Li } 89