xref: /aosp_15_r20/external/clang/test/Driver/ppc-features.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // Check that we error when -faltivec is specified on non-ppc platforms.
2*67e74705SXin Li 
3*67e74705SXin Li // RUN: %clang -target powerpc-unk-unk -faltivec -fsyntax-only %s
4*67e74705SXin Li // RUN: %clang -target powerpc64-linux-gnu -faltivec -fsyntax-only %s
5*67e74705SXin Li // RUN: %clang -target powerpc64-linux-gnu -maltivec -fsyntax-only %s
6*67e74705SXin Li 
7*67e74705SXin Li // RUN: not %clang -target i386-pc-win32 -faltivec -fsyntax-only %s 2>&1 | FileCheck %s
8*67e74705SXin Li // RUN: not %clang -target x86_64-unknown-freebsd -faltivec -fsyntax-only %s 2>&1 | FileCheck %s
9*67e74705SXin Li // RUN: not %clang -target armv6-apple-darwin -faltivec -fsyntax-only %s 2>&1 | FileCheck %s
10*67e74705SXin Li // RUN: not %clang -target armv7-apple-darwin -faltivec -fsyntax-only %s 2>&1 | FileCheck %s
11*67e74705SXin Li // RUN: not %clang -target mips-linux-gnu -faltivec -fsyntax-only %s 2>&1 | FileCheck %s
12*67e74705SXin Li // RUN: not %clang -target mips64-linux-gnu -faltivec -fsyntax-only %s 2>&1 | FileCheck %s
13*67e74705SXin Li // RUN: not %clang -target sparc-unknown-solaris -faltivec -fsyntax-only %s 2>&1 | FileCheck %s
14*67e74705SXin Li 
15*67e74705SXin Li // check -msoft-float option for ppc32
16*67e74705SXin Li // RUN: %clang -target powerpc-unknown-linux-gnu %s -msoft-float -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-SOFTFLOAT %s
17*67e74705SXin Li // CHECK-SOFTFLOAT: "-target-feature" "+soft-float"
18*67e74705SXin Li 
19*67e74705SXin Li // check -mfloat-abi=soft option for ppc32
20*67e74705SXin Li // RUN: %clang -target powerpc-unknown-linux-gnu %s -mfloat-abi=soft -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-FLOATABISOFT %s
21*67e74705SXin Li // CHECK-FLOATABISOFT: "-target-feature" "+soft-float"
22*67e74705SXin Li 
23*67e74705SXin Li // check -mhard-float option for ppc32
24*67e74705SXin Li // RUN: %clang -target powerpc-unknown-linux-gnu %s -mhard-float -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-HARDFLOAT %s
25*67e74705SXin Li // CHECK-HARDFLOAT-NOT: "-target-feature" "+soft-float"
26*67e74705SXin Li 
27*67e74705SXin Li // check -mfloat-abi=hard option for ppc32
28*67e74705SXin Li // RUN: %clang -target powerpc-unknown-linux-gnu %s -mfloat-abi=hard -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-FLOATABIHARD %s
29*67e74705SXin Li // CHECK-FLOATABIHARD-NOT: "-target-feature" "+soft-float"
30*67e74705SXin Li 
31*67e74705SXin Li // check combine -mhard-float -msoft-float option for ppc32
32*67e74705SXin Li // RUN: %clang -target powerpc-unknown-linux-gnu %s -mhard-float -msoft-float -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-HARDSOFT %s
33*67e74705SXin Li // CHECK-HARDSOFT: "-target-feature" "+soft-float"
34*67e74705SXin Li 
35*67e74705SXin Li // check combine -msoft-float -mhard-float option for ppc32
36*67e74705SXin Li // RUN: %clang -target powerpc-unknown-linux-gnu %s -msoft-float -mhard-float -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-SOFTHARD %s
37*67e74705SXin Li // CHECK-SOFTHARD-NOT: "-target-feature" "+soft-float"
38*67e74705SXin Li 
39*67e74705SXin Li // check -mfloat-abi=x option
40*67e74705SXin Li // RUN: %clang -target powerpc-unknown-linux-gnu %s -mfloat-abi=x -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-ERRMSG %s
41*67e74705SXin Li // CHECK-ERRMSG: error: invalid float ABI '-mfloat-abi=x'
42*67e74705SXin Li 
43*67e74705SXin Li // check -msoft-float option for ppc64
44*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -msoft-float -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-SOFTFLOAT64 %s
45*67e74705SXin Li // CHECK-SOFTFLOAT64: error: invalid float ABI 'soft float is not supported for ppc64'
46*67e74705SXin Li 
47*67e74705SXin Li // check -mfloat-abi=soft option for ppc64
48*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -mfloat-abi=soft -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-FLOATABISOFT64 %s
49*67e74705SXin Li // CHECK-FLOATABISOFT64: error: invalid float ABI 'soft float is not supported for ppc64'
50*67e74705SXin Li 
51*67e74705SXin Li // check -msoft-float option for ppc64
52*67e74705SXin Li // RUN: %clang -target powerpc64le-unknown-linux-gnu %s -msoft-float -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-SOFTFLOAT64le %s
53*67e74705SXin Li // CHECK-SOFTFLOAT64le: error: invalid float ABI 'soft float is not supported for ppc64'
54*67e74705SXin Li 
55*67e74705SXin Li // check -mfloat-abi=soft option for ppc64
56*67e74705SXin Li // RUN: %clang -target powerpc64le-unknown-linux-gnu %s -mfloat-abi=soft -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-FLOATABISOFT64le %s
57*67e74705SXin Li // CHECK-FLOATABISOFT64le: error: invalid float ABI 'soft float is not supported for ppc64'
58*67e74705SXin Li 
59*67e74705SXin Li // CHECK: invalid argument '-faltivec' only allowed with 'ppc/ppc64/ppc64le'
60*67e74705SXin Li 
61*67e74705SXin Li // Check that -fno-altivec and -mno-altivec correctly disable the altivec
62*67e74705SXin Li // target feature on powerpc.
63*67e74705SXin Li 
64*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -fno-altivec -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-1 %s
65*67e74705SXin Li // CHECK-1: "-target-feature" "-altivec"
66*67e74705SXin Li 
67*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-altivec -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-2 %s
68*67e74705SXin Li // CHECK-2: "-target-feature" "-altivec"
69*67e74705SXin Li 
70*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -faltivec -mno-altivec -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-3 %s
71*67e74705SXin Li // CHECK-3: "-target-feature" "-altivec"
72*67e74705SXin Li 
73*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -maltivec -fno-altivec -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-4 %s
74*67e74705SXin Li // CHECK-4: "-target-feature" "-altivec"
75*67e74705SXin Li 
76*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-altivec -faltivec -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-5 %s
77*67e74705SXin Li // CHECK-5-NOT: "-target-feature" "-altivec"
78*67e74705SXin Li 
79*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -fno-altivec -maltivec -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-6 %s
80*67e74705SXin Li // CHECK-6-NOT: "-target-feature" "-altivec"
81*67e74705SXin Li 
82*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -fno-altivec -mcpu=7400 -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-7 %s
83*67e74705SXin Li // CHECK-7: "-target-feature" "-altivec"
84*67e74705SXin Li 
85*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -fno-altivec -mcpu=g4 -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-8 %s
86*67e74705SXin Li // CHECK-8: "-target-feature" "-altivec"
87*67e74705SXin Li 
88*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -fno-altivec -mcpu=7450 -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-9 %s
89*67e74705SXin Li // CHECK-9: "-target-feature" "-altivec"
90*67e74705SXin Li 
91*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -fno-altivec -mcpu=g4+ -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-10 %s
92*67e74705SXin Li // CHECK-10: "-target-feature" "-altivec"
93*67e74705SXin Li 
94*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -fno-altivec -mcpu=970 -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-11 %s
95*67e74705SXin Li // CHECK-11: "-target-feature" "-altivec"
96*67e74705SXin Li 
97*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -fno-altivec -mcpu=g5 -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-12 %s
98*67e74705SXin Li // CHECK-12: "-target-feature" "-altivec"
99*67e74705SXin Li 
100*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -fno-altivec -mcpu=pwr6 -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-13 %s
101*67e74705SXin Li // CHECK-13: "-target-feature" "-altivec"
102*67e74705SXin Li 
103*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -fno-altivec -mcpu=pwr7 -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-14 %s
104*67e74705SXin Li // CHECK-14: "-target-feature" "-altivec"
105*67e74705SXin Li 
106*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -fno-altivec -mcpu=pwr8 -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-15 %s
107*67e74705SXin Li // CHECK-15: "-target-feature" "-altivec"
108*67e74705SXin Li 
109*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -fno-altivec -mcpu=ppc64 -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-16 %s
110*67e74705SXin Li // CHECK-16: "-target-feature" "-altivec"
111*67e74705SXin Li 
112*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-qpx -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-NOQPX %s
113*67e74705SXin Li // CHECK-NOQPX: "-target-feature" "-qpx"
114*67e74705SXin Li 
115*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-qpx -mqpx -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-QPX %s
116*67e74705SXin Li // CHECK-QPX-NOT: "-target-feature" "-qpx"
117*67e74705SXin Li 
118*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-mfcrf -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-NOMFCRF %s
119*67e74705SXin Li // CHECK-NOMFCRF: "-target-feature" "-mfocrf"
120*67e74705SXin Li 
121*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-mfcrf -mmfcrf -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-MFCRF %s
122*67e74705SXin Li // CHECK-MFCRF: "-target-feature" "+mfocrf"
123*67e74705SXin Li 
124*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-isel -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-NOISEL %s
125*67e74705SXin Li // CHECK-NOISEL: "-target-feature" "-isel"
126*67e74705SXin Li 
127*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-isel -misel -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-ISEL %s
128*67e74705SXin Li // CHECK-ISEL: "-target-feature" "+isel"
129*67e74705SXin Li 
130*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-popcntd -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-NOPOPCNTD %s
131*67e74705SXin Li // CHECK-NOPOPCNTD: "-target-feature" "-popcntd"
132*67e74705SXin Li 
133*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-popcntd -mpopcntd -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-POPCNTD %s
134*67e74705SXin Li // CHECK-POPCNTD: "-target-feature" "+popcntd"
135*67e74705SXin Li 
136*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-fprnd -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-NOFPRND %s
137*67e74705SXin Li // CHECK-NOFPRND: "-target-feature" "-fprnd"
138*67e74705SXin Li 
139*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-fprnd -mfprnd -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-FPRND %s
140*67e74705SXin Li // CHECK-FPRND: "-target-feature" "+fprnd"
141*67e74705SXin Li 
142*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-cmpb -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-NOCMPB %s
143*67e74705SXin Li // CHECK-NOCMPB: "-target-feature" "-cmpb"
144*67e74705SXin Li 
145*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-cmpb -mcmpb -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-CMPB %s
146*67e74705SXin Li // CHECK-CMPB: "-target-feature" "+cmpb"
147*67e74705SXin Li 
148*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-vsx -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-NOVSX %s
149*67e74705SXin Li // CHECK-NOVSX: "-target-feature" "-vsx"
150*67e74705SXin Li 
151*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-vsx -mvsx -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-VSX %s
152*67e74705SXin Li // CHECK-VSX: "-target-feature" "+vsx"
153*67e74705SXin Li 
154*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-power8-vector -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-NOP8VECTOR %s
155*67e74705SXin Li // CHECK-NOP8VECTOR: "-target-feature" "-power8-vector"
156*67e74705SXin Li 
157*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-power8-vector -mpower8-vector -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-P8VECTOR %s
158*67e74705SXin Li // CHECK-P8VECTOR: "-target-feature" "+power8-vector"
159*67e74705SXin Li 
160*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-crbits -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-NOCRBITS %s
161*67e74705SXin Li // CHECK-NOCRBITS: "-target-feature" "-crbits"
162*67e74705SXin Li 
163*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-crbits -mcrbits -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-CRBITS %s
164*67e74705SXin Li // CHECK-CRBITS: "-target-feature" "+crbits"
165*67e74705SXin Li 
166*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-invariant-function-descriptors -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-NOINVFUNCDESC %s
167*67e74705SXin Li // CHECK-NOINVFUNCDESC: "-target-feature" "-invariant-function-descriptors"
168*67e74705SXin Li 
169*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-invariant-function-descriptors -minvariant-function-descriptors -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-INVFUNCDESC %s
170*67e74705SXin Li // CHECK-INVFUNCDESC: "-target-feature" "+invariant-function-descriptors"
171*67e74705SXin Li 
172*67e74705SXin Li // Assembler features
173*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -### -o %t.o -no-integrated-as 2>&1 | FileCheck -check-prefix=CHECK_BE_AS_ARGS %s
174*67e74705SXin Li // CHECK_BE_AS_ARGS: "-mppc64"
175*67e74705SXin Li // CHECK_BE_AS_ARGS: "-many"
176*67e74705SXin Li 
177*67e74705SXin Li // RUN: %clang -target powerpc64le-unknown-linux-gnu %s -### -o %t.o -no-integrated-as 2>&1 | FileCheck -check-prefix=CHECK_LE_AS_ARGS %s
178*67e74705SXin Li // CHECK_LE_AS_ARGS: "-mppc64"
179*67e74705SXin Li // CHECK_LE_AS_ARGS: "-many"
180*67e74705SXin Li // CHECK_LE_AS_ARGS: "-mlittle-endian"
181*67e74705SXin Li 
182*67e74705SXin Li // linker features
183*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK_BE_LD_ARGS %s
184*67e74705SXin Li // CHECK_BE_LD_ARGS: "elf64ppc"
185*67e74705SXin Li 
186*67e74705SXin Li // RUN: %clang -target powerpc64le-unknown-linux-gnu %s -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK_LE_LD_ARGS %s
187*67e74705SXin Li // CHECK_LE_LD_ARGS: "elf64lppc"
188*67e74705SXin Li 
189*67e74705SXin Li // OpenMP features
190*67e74705SXin Li // RUN: %clang -target powerpc-unknown-linux-gnu %s -### -fopenmp=libomp -o %t.o 2>&1 | FileCheck -check-prefix=CHECK_OPENMP_TLS %s
191*67e74705SXin Li // RUN: %clang -target powerpc64-unknown-linux-gnu %s -### -fopenmp=libomp -o %t.o 2>&1 | FileCheck -check-prefix=CHECK_OPENMP_TLS %s
192*67e74705SXin Li // RUN: %clang -target powerpc64le-unknown-linux-gnu %s -### -fopenmp=libomp -o %t.o 2>&1 | FileCheck -check-prefix=CHECK_OPENMP_TLS %s
193*67e74705SXin Li // CHECK_OPENMP_TLS-NOT: "-fnoopenmp-use-tls"
194