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