xref: /aosp_15_r20/external/clang/test/Driver/mips-features.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // Check handling MIPS specific features options.
2*67e74705SXin Li //
3*67e74705SXin Li // -mabicalls
4*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s -mno-abicalls -mabicalls 2>&1 \
5*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MABICALLS %s
6*67e74705SXin Li // CHECK-MABICALLS: "-target-feature" "-noabicalls"
7*67e74705SXin Li //
8*67e74705SXin Li // -mno-abicalls
9*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s -mabicalls -mno-abicalls 2>&1 \
10*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MNOABICALLS %s
11*67e74705SXin Li // CHECK-MNOABICALLS: "-target-feature" "+noabicalls"
12*67e74705SXin Li //
13*67e74705SXin Li // -mips16
14*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s \
15*67e74705SXin Li // RUN:     -mno-mips16 -mips16 2>&1 \
16*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MIPS16 %s
17*67e74705SXin Li // CHECK-MIPS16: "-target-feature" "+mips16"
18*67e74705SXin Li //
19*67e74705SXin Li // -mno-mips16
20*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s \
21*67e74705SXin Li // RUN:     -mips16 -mno-mips16 2>&1 \
22*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-NOMIPS16 %s
23*67e74705SXin Li // CHECK-NOMIPS16: "-target-feature" "-mips16"
24*67e74705SXin Li //
25*67e74705SXin Li // -mmicromips
26*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s \
27*67e74705SXin Li // RUN:     -mno-micromips -mmicromips 2>&1 \
28*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MICROMIPS %s
29*67e74705SXin Li // CHECK-MICROMIPS: "-target-feature" "+micromips"
30*67e74705SXin Li //
31*67e74705SXin Li // -mno-micromips
32*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s \
33*67e74705SXin Li // RUN:     -mmicromips -mno-micromips 2>&1 \
34*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-NOMICROMIPS %s
35*67e74705SXin Li // CHECK-NOMICROMIPS: "-target-feature" "-micromips"
36*67e74705SXin Li //
37*67e74705SXin Li // -mdsp
38*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s \
39*67e74705SXin Li // RUN:     -mno-dsp -mdsp 2>&1 \
40*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MDSP %s
41*67e74705SXin Li // CHECK-MDSP: "-target-feature" "+dsp"
42*67e74705SXin Li //
43*67e74705SXin Li // -mno-dsp
44*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s \
45*67e74705SXin Li // RUN:     -mdsp -mno-dsp 2>&1 \
46*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-NOMDSP %s
47*67e74705SXin Li // CHECK-NOMDSP: "-target-feature" "-dsp"
48*67e74705SXin Li //
49*67e74705SXin Li // -mdspr2
50*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s \
51*67e74705SXin Li // RUN:     -mno-dspr2 -mdspr2 2>&1 \
52*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MDSPR2 %s
53*67e74705SXin Li // CHECK-MDSPR2: "-target-feature" "+dspr2"
54*67e74705SXin Li //
55*67e74705SXin Li // -mno-dspr2
56*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s \
57*67e74705SXin Li // RUN:     -mdspr2 -mno-dspr2 2>&1 \
58*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-NOMDSPR2 %s
59*67e74705SXin Li // CHECK-NOMDSPR2: "-target-feature" "-dspr2"
60*67e74705SXin Li //
61*67e74705SXin Li // -mmsa
62*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s \
63*67e74705SXin Li // RUN:     -mno-msa -mmsa 2>&1 \
64*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MMSA %s
65*67e74705SXin Li // CHECK-MMSA: "-target-feature" "+msa"
66*67e74705SXin Li //
67*67e74705SXin Li // -mno-msa
68*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s \
69*67e74705SXin Li // RUN:     -mmsa -mno-msa 2>&1 \
70*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-NOMMSA %s
71*67e74705SXin Li // CHECK-NOMMSA: "-target-feature" "-msa"
72*67e74705SXin Li //
73*67e74705SXin Li // -modd-spreg
74*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s -mno-odd-spreg -modd-spreg 2>&1 \
75*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MODDSPREG %s
76*67e74705SXin Li // CHECK-MODDSPREG: "-target-feature" "-nooddspreg"
77*67e74705SXin Li //
78*67e74705SXin Li // -mno-odd-spreg
79*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s -modd-spreg -mno-odd-spreg 2>&1 \
80*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-NOMODDSPREG %s
81*67e74705SXin Li // CHECK-NOMODDSPREG: "-target-feature" "+nooddspreg"
82*67e74705SXin Li //
83*67e74705SXin Li // -mfpxx
84*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s -mfpxx 2>&1 \
85*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MFPXX %s
86*67e74705SXin Li // CHECK-MFPXX: "-target-feature" "+fpxx"
87*67e74705SXin Li // CHECK-MFPXX: "-target-feature" "+nooddspreg"
88*67e74705SXin Li //
89*67e74705SXin Li // -mfpxx -modd-spreg
90*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s -mfpxx -modd-spreg 2>&1 \
91*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MFPXX-ODDSPREG %s
92*67e74705SXin Li // CHECK-MFPXX-ODDSPREG: "-target-feature" "+fpxx"
93*67e74705SXin Li // CHECK-MFPXX-ODDSPREG: "-target-feature" "-nooddspreg"
94*67e74705SXin Li //
95*67e74705SXin Li // -mfp64
96*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s \
97*67e74705SXin Li // RUN:     -mfp32 -mfp64 2>&1 \
98*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MFP64 %s
99*67e74705SXin Li // CHECK-MFP64: "-target-feature" "+fp64"
100*67e74705SXin Li //
101*67e74705SXin Li // -mfp32
102*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s \
103*67e74705SXin Li // RUN:     -mfp64 -mfp32 2>&1 \
104*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-NOMFP64 %s
105*67e74705SXin Li // CHECK-NOMFP64: "-target-feature" "-fp64"
106*67e74705SXin Li //
107*67e74705SXin Li // -mnan=2008
108*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -march=mips32r3 -### -c %s \
109*67e74705SXin Li // RUN:     -mnan=legacy -mnan=2008 2>&1 \
110*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-NAN2008 %s
111*67e74705SXin Li // CHECK-NAN2008: "-target-feature" "+nan2008"
112*67e74705SXin Li //
113*67e74705SXin Li // -mnan=legacy
114*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -march=mips32r3 -### -c %s \
115*67e74705SXin Li // RUN:     -mnan=2008 -mnan=legacy 2>&1 \
116*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-NANLEGACY %s
117*67e74705SXin Li // CHECK-NANLEGACY: "-target-feature" "-nan2008"
118*67e74705SXin Li //
119*67e74705SXin Li // -mcompact-branches=never
120*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -march=mips32r6 -### -c %s \
121*67e74705SXin Li // RUN:     -mcompact-branches=never 2>&1 \
122*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-CBNEVER %s
123*67e74705SXin Li // CHECK-CBNEVER: "-mllvm" "-mips-compact-branches=never"
124*67e74705SXin Li //
125*67e74705SXin Li // -mcompact-branches=optimal
126*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -march=mips32r6 -### -c %s \
127*67e74705SXin Li // RUN:     -mcompact-branches=optimal 2>&1 \
128*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-CBOPTIMAL %s
129*67e74705SXin Li // CHECK-CBOPTIMAL: "-mllvm" "-mips-compact-branches=optimal"
130*67e74705SXin Li //
131*67e74705SXin Li // -mcompact-branches=always
132*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -march=mips32r6 -### -c %s \
133*67e74705SXin Li // RUN:     -mcompact-branches=always 2>&1 \
134*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-CBALWAYS %s
135*67e74705SXin Li // CHECK-CBALWAYS: "-mllvm" "-mips-compact-branches=always"
136*67e74705SXin Li //
137*67e74705SXin Li // -mxgot
138*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s \
139*67e74705SXin Li // RUN:     -mno-xgot -mxgot 2>&1 \
140*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-XGOT %s
141*67e74705SXin Li // CHECK-XGOT: "-mllvm" "-mxgot"
142*67e74705SXin Li //
143*67e74705SXin Li // -mno-xgot
144*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s \
145*67e74705SXin Li // RUN:     -mxgot -mno-xgot 2>&1 \
146*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-NOXGOT %s
147*67e74705SXin Li // CHECK-NOXGOT-NOT: "-mllvm" "-mxgot"
148*67e74705SXin Li //
149*67e74705SXin Li // -mldc1-sdc1
150*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s \
151*67e74705SXin Li // RUN:     -mno-ldc1-sdc1 -mldc1-sdc1 2>&1 \
152*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-LDC1SDC1 %s
153*67e74705SXin Li // CHECK-LDC1SDC1-NOT: "-mllvm" "-mno-ldc1-sdc1"
154*67e74705SXin Li //
155*67e74705SXin Li // -mno-ldc1-sdc1
156*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s \
157*67e74705SXin Li // RUN:     -mldc1-sdc1 -mno-ldc1-sdc1 2>&1 \
158*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-NOLDC1SDC1 %s
159*67e74705SXin Li // CHECK-NOLDC1SDC1: "-mllvm" "-mno-ldc1-sdc1"
160*67e74705SXin Li //
161*67e74705SXin Li // -mcheck-zero-division
162*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s \
163*67e74705SXin Li // RUN:     -mno-check-zero-division -mcheck-zero-division 2>&1 \
164*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ZERODIV %s
165*67e74705SXin Li // CHECK-ZERODIV-NOT: "-mllvm" "-mno-check-zero-division"
166*67e74705SXin Li //
167*67e74705SXin Li // -mno-check-zero-division
168*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s \
169*67e74705SXin Li // RUN:     -mcheck-zero-division -mno-check-zero-division 2>&1 \
170*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-NOZERODIV %s
171*67e74705SXin Li // CHECK-NOZERODIV: "-mllvm" "-mno-check-zero-division"
172*67e74705SXin Li //
173*67e74705SXin Li // -G
174*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s \
175*67e74705SXin Li // RUN:     -G 16 2>&1 \
176*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MIPS-G %s
177*67e74705SXin Li // CHECK-MIPS-G: "-mllvm" "-mips-ssection-threshold=16"
178*67e74705SXin Li //
179*67e74705SXin Li // -msoft-float (unknown vendor)
180*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s -msoft-float 2>&1 \
181*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-SOFTFLOAT %s
182*67e74705SXin Li // CHECK-SOFTFLOAT: "-target-feature" "+soft-float"
183*67e74705SXin Li // CHECK-SOFTFLOAT-NOT: "-target-feature" "+fpxx"
184*67e74705SXin Li //
185*67e74705SXin Li // -msoft-float -mfpxx (unknown vendor)
186*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s -msoft-float -mfpxx 2>&1 \
187*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-SOFTFLOAT-FPXX %s
188*67e74705SXin Li // CHECK-SOFTFLOAT-FPXX: "-target-feature" "+soft-float"
189*67e74705SXin Li // CHECK-SOFTFLOAT-FPXX: "-target-feature" "+fpxx"
190*67e74705SXin Li //
191*67e74705SXin Li // -msoft-float (MTI)
192*67e74705SXin Li // RUN: %clang -target mips-mti-linux-gnu -### -c %s -msoft-float 2>&1 \
193*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MTI-SOFTFLOAT %s
194*67e74705SXin Li // CHECK-MTI-SOFTFLOAT: "-target-feature" "+soft-float"
195*67e74705SXin Li // CHECK-MTI-SOFTFLOAT-NOT: "-target-feature" "+fpxx"
196*67e74705SXin Li //
197*67e74705SXin Li // -msoft-float -mfpxx (MTI)
198*67e74705SXin Li // RUN: %clang -target mips-mti-linux-gnu -### -c %s -msoft-float -mfpxx 2>&1 \
199*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MTI-SOFTFLOAT-FPXX %s
200*67e74705SXin Li // CHECK-MTI-SOFTFLOAT-FPXX: "-target-feature" "+soft-float"
201*67e74705SXin Li // CHECK-MTI-SOFTFLOAT-FPXX: "-target-feature" "+fpxx"
202*67e74705SXin Li //
203*67e74705SXin Li // -msoft-float (IMG)
204*67e74705SXin Li // RUN: %clang -target mips-img-linux-gnu -### -c %s -msoft-float 2>&1 \
205*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-IMG-SOFTFLOAT %s
206*67e74705SXin Li // CHECK-IMG-SOFTFLOAT: "-target-feature" "+soft-float"
207*67e74705SXin Li // CHECK-IMG-SOFTFLOAT-NOT: "-target-feature" "+fpxx"
208*67e74705SXin Li //
209*67e74705SXin Li // -msoft-float -mfpxx (IMG)
210*67e74705SXin Li // RUN: %clang -target mips-img-linux-gnu -### -c %s -msoft-float -mfpxx 2>&1 \
211*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-IMG-SOFTFLOAT-FPXX %s
212*67e74705SXin Li // CHECK-IMG-SOFTFLOAT-FPXX: "-target-feature" "+soft-float"
213*67e74705SXin Li // CHECK-IMG-SOFTFLOAT-FPXX: "-target-feature" "+fpxx"
214*67e74705SXin Li //
215*67e74705SXin Li // -msingle-float (unknown vendor)
216*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s -msingle-float 2>&1 \
217*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-SINGLEFLOAT %s
218*67e74705SXin Li // CHECK-SINGLEFLOAT: "-target-feature" "+single-float"
219*67e74705SXin Li // CHECK-SINGLEFLOAT-NOT: "-target-feature" "+fpxx"
220*67e74705SXin Li //
221*67e74705SXin Li // -msingle-float -mfpxx (unknown vendor)
222*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s -msingle-float -mfpxx 2>&1 \
223*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-SINGLEFLOAT-FPXX %s
224*67e74705SXin Li // CHECK-SINGLEFLOAT-FPXX: "-target-feature" "+single-float"
225*67e74705SXin Li // CHECK-SINGLEFLOAT-FPXX: "-target-feature" "+fpxx"
226*67e74705SXin Li //
227*67e74705SXin Li // -msingle-float (MTI)
228*67e74705SXin Li // RUN: %clang -target mips-mti-linux-gnu -### -c %s -msingle-float 2>&1 \
229*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MTI-SINGLEFLOAT %s
230*67e74705SXin Li // CHECK-MTI-SINGLEFLOAT: "-target-feature" "+single-float"
231*67e74705SXin Li // CHECK-MTI-SINGLEFLOAT-NOT: "-target-feature" "+fpxx"
232*67e74705SXin Li //
233*67e74705SXin Li // -msingle-float -mfpxx (MTI)
234*67e74705SXin Li // RUN: %clang -target mips-mti-linux-gnu -### -c %s -msingle-float -mfpxx 2>&1 \
235*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MTI-SINGLEFLOAT-FPXX %s
236*67e74705SXin Li // CHECK-MTI-SINGLEFLOAT-FPXX: "-target-feature" "+single-float"
237*67e74705SXin Li // CHECK-MTI-SINGLEFLOAT-FPXX: "-target-feature" "+fpxx"
238*67e74705SXin Li //
239*67e74705SXin Li // -msingle-float (IMG)
240*67e74705SXin Li // RUN: %clang -target mips-img-linux-gnu -### -c %s -msingle-float 2>&1 \
241*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-IMG-SINGLEFLOAT %s
242*67e74705SXin Li // CHECK-IMG-SINGLEFLOAT: "-target-feature" "+single-float"
243*67e74705SXin Li // CHECK-IMG-SINGLEFLOAT-NOT: "-target-feature" "+fpxx"
244*67e74705SXin Li //
245*67e74705SXin Li // -msingle-float -mfpxx (IMG)
246*67e74705SXin Li // RUN: %clang -target mips-img-linux-gnu -### -c %s -msingle-float -mfpxx 2>&1 \
247*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-IMG-SINGLEFLOAT-FPXX %s
248*67e74705SXin Li // CHECK-IMG-SINGLEFLOAT-FPXX: "-target-feature" "+single-float"
249*67e74705SXin Li // CHECK-IMG-SINGLEFLOAT-FPXX: "-target-feature" "+fpxx"
250