xref: /aosp_15_r20/external/clang/test/Driver/cl-x86-flags.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
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 Li void f() {
88*67e74705SXin Li }
89