xref: /aosp_15_r20/external/clang/test/Driver/mips-abi.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // Check passing Mips ABI options to the backend.
2*67e74705SXin Li //
3*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s 2>&1 \
4*67e74705SXin Li // RUN:   | FileCheck -check-prefix=MIPS32R2-O32 %s
5*67e74705SXin Li // RUN: %clang -target mips64-linux-gnu -mips32r2 -mabi=32 -### -c %s 2>&1 \
6*67e74705SXin Li // RUN:   | FileCheck -check-prefix=MIPS32R2-O32 %s
7*67e74705SXin Li // MIPS32R2-O32: "-target-cpu" "mips32r2"
8*67e74705SXin Li // MIPS32R2-O32: "-target-abi" "o32"
9*67e74705SXin Li //
10*67e74705SXin Li // FIXME: This is a valid combination of options but we reject it at the moment
11*67e74705SXin Li //        because the backend can't handle it.
12*67e74705SXin Li // RUN: not %clang -target mips-linux-gnu -c %s \
13*67e74705SXin Li // RUN:        -march=mips64r2 -mabi=32 2>&1 \
14*67e74705SXin Li // RUN:   | FileCheck -check-prefix=MIPS64R2-O32 %s
15*67e74705SXin Li // MIPS64R2-O32: error: ABI 'o32' is not supported on CPU 'mips64r2'
16*67e74705SXin Li //
17*67e74705SXin Li // RUN: %clang -target mips64-linux-gnu -### -c %s 2>&1 \
18*67e74705SXin Li // RUN:   | FileCheck -check-prefix=MIPS64R2-N64 %s
19*67e74705SXin Li // RUN: %clang -target mips-img-linux-gnu -mips64r2 -### -c %s 2>&1 \
20*67e74705SXin Li // RUN:   | FileCheck -check-prefix=MIPS64R2-N64 %s
21*67e74705SXin Li // RUN: %clang -target mips-mti-linux-gnu -mips64r2 -### -c %s 2>&1 \
22*67e74705SXin Li // RUN:   | FileCheck -check-prefix=MIPS64R2-N64 %s
23*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -mips64r2 -mabi=64 -### -c %s 2>&1 \
24*67e74705SXin Li // RUN:   | FileCheck -check-prefix=MIPS64R2-N64 %s
25*67e74705SXin Li // MIPS64R2-N64: "-target-cpu" "mips64r2"
26*67e74705SXin Li // MIPS64R2-N64: "-target-abi" "n64"
27*67e74705SXin Li //
28*67e74705SXin Li // RUN: %clang -target mips64-linux-gnu -### -mips64r3 -c %s 2>&1 \
29*67e74705SXin Li // RUN:   | FileCheck -check-prefix=MIPS64R3-N64 %s
30*67e74705SXin Li // RUN: %clang -target mips-img-linux-gnu -mips64r3 -### -c %s 2>&1 \
31*67e74705SXin Li // RUN:   | FileCheck -check-prefix=MIPS64R3-N64 %s
32*67e74705SXin Li // RUN: %clang -target mips-mti-linux-gnu -mips64r3 -### -c %s 2>&1 \
33*67e74705SXin Li // RUN:   | FileCheck -check-prefix=MIPS64R3-N64 %s
34*67e74705SXin Li // MIPS64R3-N64: "-target-cpu" "mips64r3"
35*67e74705SXin Li // MIPS64R3-N64: "-target-abi" "n64"
36*67e74705SXin Li //
37*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s \
38*67e74705SXin Li // RUN:        -mabi=32 2>&1 \
39*67e74705SXin Li // RUN:   | FileCheck -check-prefix=MIPS-ABI-32 %s
40*67e74705SXin Li // MIPS-ABI-32: "-target-cpu" "mips32r2"
41*67e74705SXin Li // MIPS-ABI-32: "-target-abi" "o32"
42*67e74705SXin Li //
43*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s \
44*67e74705SXin Li // RUN:        -mabi=o32 2>&1 \
45*67e74705SXin Li // RUN:   | FileCheck -check-prefix=MIPS-ABI-O32 %s
46*67e74705SXin Li // MIPS-ABI-O32: "-target-cpu" "mips32r2"
47*67e74705SXin Li // MIPS-ABI-O32: "-target-abi" "o32"
48*67e74705SXin Li //
49*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s \
50*67e74705SXin Li // RUN:        -mabi=n32 2>&1 \
51*67e74705SXin Li // RUN:   | FileCheck -check-prefix=MIPS-ABI-N32 %s
52*67e74705SXin Li // MIPS-ABI-N32: "-target-cpu" "mips64r2"
53*67e74705SXin Li // MIPS-ABI-N32: "-target-abi" "n32"
54*67e74705SXin Li //
55*67e74705SXin Li // RUN: %clang -target mips64-linux-gnu -### -c %s \
56*67e74705SXin Li // RUN:        -mabi=64 2>&1 \
57*67e74705SXin Li // RUN:   | FileCheck -check-prefix=MIPS-ABI-64 %s
58*67e74705SXin Li // MIPS-ABI-64: "-target-cpu" "mips64r2"
59*67e74705SXin Li // MIPS-ABI-64: "-target-abi" "n64"
60*67e74705SXin Li //
61*67e74705SXin Li // RUN: %clang -target mips64-linux-gnu -### -c %s \
62*67e74705SXin Li // RUN:        -mabi=n64 2>&1 \
63*67e74705SXin Li // RUN:   | FileCheck -check-prefix=MIPS-ABI-N64 %s
64*67e74705SXin Li // MIPS-ABI-N64: "-target-cpu" "mips64r2"
65*67e74705SXin Li // MIPS-ABI-N64: "-target-abi" "n64"
66*67e74705SXin Li //
67*67e74705SXin Li // RUN: not %clang -target mips64-linux-gnu -c %s \
68*67e74705SXin Li // RUN:        -mabi=o64 2>&1 \
69*67e74705SXin Li // RUN:   | FileCheck -check-prefix=MIPS-ABI-O64 %s
70*67e74705SXin Li // MIPS-ABI-O64: error: unknown target ABI 'o64'
71*67e74705SXin Li //
72*67e74705SXin Li // RUN: not %clang -target mips-linux-gnu -c %s \
73*67e74705SXin Li // RUN:        -mabi=unknown 2>&1 \
74*67e74705SXin Li // RUN:   | FileCheck -check-prefix=MIPS-ABI-UNKNOWN %s
75*67e74705SXin Li // MIPS-ABI-UNKNOWN: error: unknown target ABI 'unknown'
76*67e74705SXin Li //
77*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s \
78*67e74705SXin Li // RUN:        -march=mips1 2>&1 \
79*67e74705SXin Li // RUN:   | FileCheck -check-prefix=MIPS-ARCH-1 %s
80*67e74705SXin Li // MIPS-ARCH-1: "-target-cpu" "mips1"
81*67e74705SXin Li // MIPS-ARCH-1: "-target-abi" "o32"
82*67e74705SXin Li //
83*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s \
84*67e74705SXin Li // RUN:        -march=mips2 2>&1 \
85*67e74705SXin Li // RUN:   | FileCheck -check-prefix=MIPS-ARCH-2 %s
86*67e74705SXin Li // MIPS-ARCH-2: "-target-cpu" "mips2"
87*67e74705SXin Li // MIPS-ARCH-2: "-target-abi" "o32"
88*67e74705SXin Li //
89*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s \
90*67e74705SXin Li // RUN:        -march=mips3 2>&1 \
91*67e74705SXin Li // RUN:   | FileCheck -check-prefix=MIPS-ARCH-3 %s
92*67e74705SXin Li // MIPS-ARCH-3: "-target-cpu" "mips3"
93*67e74705SXin Li // MIPS-ARCH-3: "-target-abi" "o32"
94*67e74705SXin Li //
95*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s \
96*67e74705SXin Li // RUN:        -march=mips4 2>&1 \
97*67e74705SXin Li // RUN:   | FileCheck -check-prefix=MIPS-ARCH-4 %s
98*67e74705SXin Li // MIPS-ARCH-4: "-target-cpu" "mips4"
99*67e74705SXin Li // MIPS-ARCH-4: "-target-abi" "o32"
100*67e74705SXin Li //
101*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s \
102*67e74705SXin Li // RUN:        -march=mips5 2>&1 \
103*67e74705SXin Li // RUN:   | FileCheck -check-prefix=MIPS-ARCH-5 %s
104*67e74705SXin Li // MIPS-ARCH-5: "-target-cpu" "mips5"
105*67e74705SXin Li // MIPS-ARCH-5: "-target-abi" "o32"
106*67e74705SXin Li //
107*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s \
108*67e74705SXin Li // RUN:        -march=mips32 2>&1 \
109*67e74705SXin Li // RUN:   | FileCheck -check-prefix=MIPS-ARCH-32 %s
110*67e74705SXin Li // MIPS-ARCH-32: "-target-cpu" "mips32"
111*67e74705SXin Li // MIPS-ARCH-32: "-target-abi" "o32"
112*67e74705SXin Li //
113*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s \
114*67e74705SXin Li // RUN:        -march=mips32r2 2>&1 \
115*67e74705SXin Li // RUN:   | FileCheck -check-prefix=MIPS-ARCH-32R2 %s
116*67e74705SXin Li // MIPS-ARCH-32R2: "-target-cpu" "mips32r2"
117*67e74705SXin Li // MIPS-ARCH-32R2: "-target-abi" "o32"
118*67e74705SXin Li //
119*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s \
120*67e74705SXin Li // RUN:        -march=p5600 2>&1 \
121*67e74705SXin Li // RUN:   | FileCheck -check-prefix=MIPS-ARCH-P5600 %s
122*67e74705SXin Li // MIPS-ARCH-P5600: "-target-cpu" "p5600"
123*67e74705SXin Li // MIPS-ARCH-P5600: "-target-abi" "o32"
124*67e74705SXin Li //
125*67e74705SXin Li // RUN: not %clang -target mips-linux-gnu -c %s \
126*67e74705SXin Li // RUN:        -march=p5600 -mabi=64 2>&1 \
127*67e74705SXin Li // RUN:   | FileCheck -check-prefix=MIPS-ARCH-P5600-N64 %s
128*67e74705SXin Li // MIPS-ARCH-P5600-N64: error: ABI 'n64' is not supported on CPU 'p5600'
129*67e74705SXin Li //
130*67e74705SXin Li // RUN: %clang -target mips-linux-gnu -### -c %s \
131*67e74705SXin Li // RUN:        -march=mips64 2>&1 \
132*67e74705SXin Li // RUN:   | FileCheck -check-prefix=MIPS-ARCH-3264 %s
133*67e74705SXin Li // MIPS-ARCH-3264: "-target-cpu" "mips64"
134*67e74705SXin Li // MIPS-ARCH-3264: "-target-abi" "o32"
135*67e74705SXin Li //
136*67e74705SXin Li // RUN: %clang -target mips64-linux-gnu -### -c %s \
137*67e74705SXin Li // RUN:        -march=mips64 2>&1 \
138*67e74705SXin Li // RUN:   | FileCheck -check-prefix=MIPS-ARCH-64 %s
139*67e74705SXin Li // MIPS-ARCH-64: "-target-cpu" "mips64"
140*67e74705SXin Li // MIPS-ARCH-64: "-target-abi" "n64"
141*67e74705SXin Li //
142*67e74705SXin Li // RUN: %clang -target mips64-linux-gnu -### -c %s \
143*67e74705SXin Li // RUN:        -march=mips64r2 2>&1 \
144*67e74705SXin Li // RUN:   | FileCheck -check-prefix=MIPS-ARCH-64R2 %s
145*67e74705SXin Li // MIPS-ARCH-64R2: "-target-cpu" "mips64r2"
146*67e74705SXin Li // MIPS-ARCH-64R2: "-target-abi" "n64"
147*67e74705SXin Li //
148*67e74705SXin Li // RUN: %clang -target mips64-linux-gnu -### -c %s \
149*67e74705SXin Li // RUN:        -march=octeon 2>&1 \
150*67e74705SXin Li // RUN:   | FileCheck -check-prefix=MIPS-ARCH-OCTEON %s
151*67e74705SXin Li // MIPS-ARCH-OCTEON: "-target-cpu" "octeon"
152*67e74705SXin Li // MIPS-ARCH-OCTEON: "-target-abi" "n64"
153*67e74705SXin Li //
154*67e74705SXin Li // RUN: not %clang -target mips64-linux-gnu -c %s \
155*67e74705SXin Li // RUN:        -march=mips32 2>&1 \
156*67e74705SXin Li // RUN:   | FileCheck -check-prefix=MIPS-ARCH-6432 %s
157*67e74705SXin Li // MIPS-ARCH-6432: error: ABI 'n64' is not supported on CPU 'mips32'
158*67e74705SXin Li //
159*67e74705SXin Li // RUN: not %clang -target mips-linux-gnu -c %s \
160*67e74705SXin Li // RUN:        -march=unknown 2>&1 \
161*67e74705SXin Li // RUN:   | FileCheck -check-prefix=MIPS-ARCH-UNKNOWN %s
162*67e74705SXin Li // MIPS-ARCH-UNKNOWN: error: unknown target CPU 'unknown'
163