Skip to content

Commit eaab2b7

Browse files
committedOct 16, 2018
[driver][mips] Support MIPS R6 target triples
This change adds support for the following MIPS target triples: mipsisa32r6-linux-gnu mipsisa32r6el-linux-gnu mipsisa64r6-linux-gnuabi64 mipsisa64r6el-linux-gnuabi64 mipsisa64r6-linux-gnuabin32 mipsisa64r6el-linux-gnuabin32 Patch by Yun Qiang Su. Differential revision: https://reviews.llvm.org/D50850 llvm-svn: 344608
1 parent 49b29ea commit eaab2b7

File tree

8 files changed

+184
-32
lines changed

8 files changed

+184
-32
lines changed
 

‎clang/lib/Driver/ToolChains/Arch/Mips.cpp

+5
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,11 @@ void mips::getMipsCPUAndABI(const ArgList &Args, const llvm::Triple &Triple,
3535
DefMips64CPU = "mips64r6";
3636
}
3737

38+
if (Triple.getSubArch() == llvm::Triple::MipsSubArch_r6) {
39+
DefMips32CPU = "mips32r6";
40+
DefMips64CPU = "mips64r6";
41+
}
42+
3843
// MIPS64r6 is the default for Android MIPS64 (mips64el-linux-android).
3944
if (Triple.isAndroid()) {
4045
DefMips32CPU = "mips32";

‎clang/lib/Driver/ToolChains/Gnu.cpp

+15-11
Original file line numberDiff line numberDiff line change
@@ -1871,26 +1871,30 @@ void Generic_GCC::GCCInstallationDetector::AddDefaultGCCPrefixes(
18711871
"i486-slackware-linux", "i686-montavista-linux", "i586-linux-gnu"};
18721872

18731873
static const char *const MIPSLibDirs[] = {"/lib"};
1874-
static const char *const MIPSTriples[] = {"mips-linux-gnu", "mips-mti-linux",
1875-
"mips-mti-linux-gnu",
1876-
"mips-img-linux-gnu"};
1874+
static const char *const MIPSTriples[] = {
1875+
"mips-linux-gnu", "mips-mti-linux", "mips-mti-linux-gnu",
1876+
"mips-img-linux-gnu", "mipsisa32r6-linux-gnu"};
18771877
static const char *const MIPSELLibDirs[] = {"/lib"};
1878-
static const char *const MIPSELTriples[] = {"mipsel-linux-gnu",
1879-
"mips-img-linux-gnu"};
1878+
static const char *const MIPSELTriples[] = {
1879+
"mipsel-linux-gnu", "mips-img-linux-gnu", "mipsisa32r6el-linux-gnu"};
18801880

18811881
static const char *const MIPS64LibDirs[] = {"/lib64", "/lib"};
18821882
static const char *const MIPS64Triples[] = {
1883-
"mips64-linux-gnu", "mips-mti-linux-gnu", "mips-img-linux-gnu",
1884-
"mips64-linux-gnuabi64"};
1883+
"mips64-linux-gnu", "mips-mti-linux-gnu",
1884+
"mips-img-linux-gnu", "mips64-linux-gnuabi64",
1885+
"mipsisa64r6-linux-gnu", "mipsisa64r6-linux-gnuabi64"};
18851886
static const char *const MIPS64ELLibDirs[] = {"/lib64", "/lib"};
18861887
static const char *const MIPS64ELTriples[] = {
1887-
"mips64el-linux-gnu", "mips-mti-linux-gnu", "mips-img-linux-gnu",
1888-
"mips64el-linux-gnuabi64"};
1888+
"mips64el-linux-gnu", "mips-mti-linux-gnu",
1889+
"mips-img-linux-gnu", "mips64el-linux-gnuabi64",
1890+
"mipsisa64r6el-linux-gnu", "mipsisa64r6el-linux-gnuabi64"};
18891891

18901892
static const char *const MIPSN32LibDirs[] = {"/lib32"};
1891-
static const char *const MIPSN32Triples[] = {"mips64-linux-gnuabin32"};
1893+
static const char *const MIPSN32Triples[] = {"mips64-linux-gnuabin32",
1894+
"mipsisa64r6-linux-gnuabin32"};
18921895
static const char *const MIPSN32ELLibDirs[] = {"/lib32"};
1893-
static const char *const MIPSN32ELTriples[] = {"mips64el-linux-gnuabin32"};
1896+
static const char *const MIPSN32ELTriples[] = {
1897+
"mips64el-linux-gnuabin32", "mipsisa64r6el-linux-gnuabin32"};
18941898

18951899
static const char *const PPCLibDirs[] = {"/lib32", "/lib"};
18961900
static const char *const PPCTriples[] = {

‎clang/lib/Driver/ToolChains/Linux.cpp

+56-21
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,7 @@ static std::string getMultiarchTriple(const Driver &D,
4444
llvm::Triple::EnvironmentType TargetEnvironment =
4545
TargetTriple.getEnvironment();
4646
bool IsAndroid = TargetTriple.isAndroid();
47-
std::string Mips64Abi = "gnuabi64";
48-
if (TargetEnvironment == llvm::Triple::GNUABIN32)
49-
Mips64Abi = "gnuabin32";
47+
bool IsMipsR6 = TargetTriple.getSubArch() == llvm::Triple::MipsSubArch_r6;
5048

5149
// For most architectures, just use whatever we have rather than trying to be
5250
// clever.
@@ -104,26 +102,36 @@ static std::string getMultiarchTriple(const Driver &D,
104102
if (D.getVFS().exists(SysRoot + "/lib/aarch64_be-linux-gnu"))
105103
return "aarch64_be-linux-gnu";
106104
break;
107-
case llvm::Triple::mips:
108-
if (D.getVFS().exists(SysRoot + "/lib/mips-linux-gnu"))
109-
return "mips-linux-gnu";
105+
case llvm::Triple::mips: {
106+
std::string Arch = IsMipsR6 ? "mipsisa32r6" : "mips";
107+
if (D.getVFS().exists(SysRoot + "/lib/" + Arch + "-linux-gnu"))
108+
return Arch + "-linux-gnu";
110109
break;
111-
case llvm::Triple::mipsel:
110+
}
111+
case llvm::Triple::mipsel: {
112112
if (IsAndroid)
113113
return "mipsel-linux-android";
114-
if (D.getVFS().exists(SysRoot + "/lib/mipsel-linux-gnu"))
115-
return "mipsel-linux-gnu";
114+
std::string Arch = IsMipsR6 ? "mipsisa32r6el" : "mipsel";
115+
if (D.getVFS().exists(SysRoot + "/lib/" + Arch + "-linux-gnu"))
116+
return Arch + "-linux-gnu";
116117
break;
117-
case llvm::Triple::mips64:
118-
if (D.getVFS().exists(SysRoot + "/lib/mips64-linux-" + Mips64Abi))
119-
return "mips64-linux-" + Mips64Abi;
118+
}
119+
case llvm::Triple::mips64: {
120+
std::string Arch = IsMipsR6 ? "mipsisa64r6" : "mips64";
121+
std::string ABI = llvm::Triple::getEnvironmentTypeName(TargetEnvironment);
122+
if (D.getVFS().exists(SysRoot + "/lib/" + Arch + "-linux-" + ABI))
123+
return Arch + "-linux-" + ABI;
120124
break;
121-
case llvm::Triple::mips64el:
125+
}
126+
case llvm::Triple::mips64el: {
122127
if (IsAndroid)
123128
return "mips64el-linux-android";
124-
if (D.getVFS().exists(SysRoot + "/lib/mips64el-linux-" + Mips64Abi))
125-
return "mips64el-linux-" + Mips64Abi;
129+
std::string Arch = IsMipsR6 ? "mipsisa64r6el" : "mips64el";
130+
std::string ABI = llvm::Triple::getEnvironmentTypeName(TargetEnvironment);
131+
if (D.getVFS().exists(SysRoot + "/lib/" + Arch + "-linux-" + ABI))
132+
return Arch + "-linux-" + ABI;
126133
break;
134+
}
127135
case llvm::Triple::ppc:
128136
if (D.getVFS().exists(SysRoot + "/lib/powerpc-linux-gnuspe"))
129137
return "powerpc-linux-gnuspe";
@@ -697,14 +705,25 @@ void Linux::AddClangSystemIncludeArgs(const ArgList &DriverArgs,
697705
const StringRef MIPSELMultiarchIncludeDirs[] = {
698706
"/usr/include/mipsel-linux-gnu"};
699707
const StringRef MIPS64MultiarchIncludeDirs[] = {
700-
"/usr/include/mips64-linux-gnu", "/usr/include/mips64-linux-gnuabi64"};
708+
"/usr/include/mips64-linux-gnuabi64"};
701709
const StringRef MIPS64ELMultiarchIncludeDirs[] = {
702-
"/usr/include/mips64el-linux-gnu",
703710
"/usr/include/mips64el-linux-gnuabi64"};
704711
const StringRef MIPSN32MultiarchIncludeDirs[] = {
705712
"/usr/include/mips64-linux-gnuabin32"};
706713
const StringRef MIPSN32ELMultiarchIncludeDirs[] = {
707714
"/usr/include/mips64el-linux-gnuabin32"};
715+
const StringRef MIPSR6MultiarchIncludeDirs[] = {
716+
"/usr/include/mipsisa32-linux-gnu"};
717+
const StringRef MIPSR6ELMultiarchIncludeDirs[] = {
718+
"/usr/include/mipsisa32r6el-linux-gnu"};
719+
const StringRef MIPS64R6MultiarchIncludeDirs[] = {
720+
"/usr/include/mipsisa64r6-linux-gnuabi64"};
721+
const StringRef MIPS64R6ELMultiarchIncludeDirs[] = {
722+
"/usr/include/mipsisa64r6el-linux-gnuabi64"};
723+
const StringRef MIPSN32R6MultiarchIncludeDirs[] = {
724+
"/usr/include/mipsisa64r6-linux-gnuabin32"};
725+
const StringRef MIPSN32R6ELMultiarchIncludeDirs[] = {
726+
"/usr/include/mipsisa64r6el-linux-gnuabin32"};
708727
const StringRef PPCMultiarchIncludeDirs[] = {
709728
"/usr/include/powerpc-linux-gnu",
710729
"/usr/include/powerpc-linux-gnuspe"};
@@ -745,19 +764,35 @@ void Linux::AddClangSystemIncludeArgs(const ArgList &DriverArgs,
745764
MultiarchIncludeDirs = ARMEBMultiarchIncludeDirs;
746765
break;
747766
case llvm::Triple::mips:
748-
MultiarchIncludeDirs = MIPSMultiarchIncludeDirs;
767+
if (getTriple().getSubArch() == llvm::Triple::MipsSubArch_r6)
768+
MultiarchIncludeDirs = MIPSR6MultiarchIncludeDirs;
769+
else
770+
MultiarchIncludeDirs = MIPSMultiarchIncludeDirs;
749771
break;
750772
case llvm::Triple::mipsel:
751-
MultiarchIncludeDirs = MIPSELMultiarchIncludeDirs;
773+
if (getTriple().getSubArch() == llvm::Triple::MipsSubArch_r6)
774+
MultiarchIncludeDirs = MIPSR6ELMultiarchIncludeDirs;
775+
else
776+
MultiarchIncludeDirs = MIPSELMultiarchIncludeDirs;
752777
break;
753778
case llvm::Triple::mips64:
754-
if (getTriple().getEnvironment() == llvm::Triple::GNUABIN32)
779+
if (getTriple().getSubArch() == llvm::Triple::MipsSubArch_r6)
780+
if (getTriple().getEnvironment() == llvm::Triple::GNUABIN32)
781+
MultiarchIncludeDirs = MIPSN32R6MultiarchIncludeDirs;
782+
else
783+
MultiarchIncludeDirs = MIPS64R6MultiarchIncludeDirs;
784+
else if (getTriple().getEnvironment() == llvm::Triple::GNUABIN32)
755785
MultiarchIncludeDirs = MIPSN32MultiarchIncludeDirs;
756786
else
757787
MultiarchIncludeDirs = MIPS64MultiarchIncludeDirs;
758788
break;
759789
case llvm::Triple::mips64el:
760-
if (getTriple().getEnvironment() == llvm::Triple::GNUABIN32)
790+
if (getTriple().getSubArch() == llvm::Triple::MipsSubArch_r6)
791+
if (getTriple().getEnvironment() == llvm::Triple::GNUABIN32)
792+
MultiarchIncludeDirs = MIPSN32R6ELMultiarchIncludeDirs;
793+
else
794+
MultiarchIncludeDirs = MIPS64R6ELMultiarchIncludeDirs;
795+
else if (getTriple().getEnvironment() == llvm::Triple::GNUABIN32)
761796
MultiarchIncludeDirs = MIPSN32ELMultiarchIncludeDirs;
762797
else
763798
MultiarchIncludeDirs = MIPS64ELMultiarchIncludeDirs;

‎clang/test/CodeGen/atomics-inlining.c

+2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22
// RUN: %clang_cc1 -triple powerpc-linux-gnu -emit-llvm %s -o - | FileCheck %s -check-prefix=PPC32
33
// RUN: %clang_cc1 -triple powerpc64-linux-gnu -emit-llvm %s -o - | FileCheck %s -check-prefix=PPC64
44
// RUN: %clang_cc1 -triple mipsel-linux-gnu -emit-llvm %s -o - | FileCheck %s -check-prefix=MIPS32
5+
// RUN: %clang_cc1 -triple mipsisa32r6el-linux-gnu -emit-llvm %s -o - | FileCheck %s -check-prefix=MIPS32
56
// RUN: %clang_cc1 -triple mips64el-linux-gnu -emit-llvm %s -o - | FileCheck %s -check-prefix=MIPS64
67
// RUN: %clang_cc1 -triple mips64el-linux-gnuabi64 -emit-llvm %s -o - | FileCheck %s -check-prefix=MIPS64
8+
// RUN: %clang_cc1 -triple mipsisa64r6el-linux-gnuabi64 -emit-llvm %s -o - | FileCheck %s -check-prefix=MIPS64
79
// RUN: %clang_cc1 -triple sparc-unknown-eabi -emit-llvm %s -o - | FileCheck %s -check-prefix=SPARCV8 -check-prefix=SPARC
810
// RUN: %clang_cc1 -triple sparcv9-unknown-eabi -emit-llvm %s -o - | FileCheck %s -check-prefix=SPARCV9 -check-prefix=SPARC
911

‎clang/test/CodeGen/mips-zero-sized-struct.c

+10
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,23 @@
11
// RUN: %clang_cc1 -triple mips-unknown-linux-gnu -S -emit-llvm -o - %s | FileCheck -check-prefix=O32 %s
22
// RUN: %clang_cc1 -triple mipsel-unknown-linux-gnu -S -emit-llvm -o - %s | FileCheck -check-prefix=O32 %s
3+
// RUN: %clang_cc1 -triple mipsisa32r6-unknown-linux-gnu -S -emit-llvm -o - %s | FileCheck -check-prefix=O32 %s
4+
// RUN: %clang_cc1 -triple mipsisa32r6el-unknown-linux-gnu -S -emit-llvm -o - %s | FileCheck -check-prefix=O32 %s
35
// RUN: %clang_cc1 -triple mips64-unknown-linux-gnu -S -emit-llvm -o - %s -target-abi n32 | FileCheck -check-prefix=N32 %s
46
// RUN: %clang_cc1 -triple mips64el-unknown-linux-gnu -S -emit-llvm -o - %s -target-abi n32 | FileCheck -check-prefix=N32 %s
7+
// RUN: %clang_cc1 -triple mipsisa64r6-unknown-linux-gnu -S -emit-llvm -o - %s -target-abi n32 | FileCheck -check-prefix=N32 %s
8+
// RUN: %clang_cc1 -triple mipsisa64r6el-unknown-linux-gnu -S -emit-llvm -o - %s -target-abi n32 | FileCheck -check-prefix=N32 %s
59
// RUN: %clang_cc1 -triple mips64-unknown-linux-gnuabin32 -S -emit-llvm -o - %s | FileCheck -check-prefix=N32 %s
610
// RUN: %clang_cc1 -triple mips64el-unknown-linux-gnuabin32 -S -emit-llvm -o - %s | FileCheck -check-prefix=N32 %s
11+
// RUN: %clang_cc1 -triple mipsisa64r6-unknown-linux-gnuabin32 -S -emit-llvm -o - %s | FileCheck -check-prefix=N32 %s
12+
// RUN: %clang_cc1 -triple mipsisa64r6el-unknown-linux-gnuabin32 -S -emit-llvm -o - %s | FileCheck -check-prefix=N32 %s
713
// RUN: %clang_cc1 -triple mips64-unknown-linux-gnu -S -emit-llvm -o - %s | FileCheck -check-prefix=N64 %s
814
// RUN: %clang_cc1 -triple mips64el-unknown-linux-gnu -S -emit-llvm -o - %s | FileCheck -check-prefix=N64 %s
15+
// RUN: %clang_cc1 -triple mipsisa64r6-unknown-linux-gnu -S -emit-llvm -o - %s | FileCheck -check-prefix=N64 %s
16+
// RUN: %clang_cc1 -triple mipsisa64r6el-unknown-linux-gnu -S -emit-llvm -o - %s | FileCheck -check-prefix=N64 %s
917
// RUN: %clang_cc1 -triple mips64-unknown-linux-gnuabi64 -S -emit-llvm -o - %s | FileCheck -check-prefix=N64 %s
1018
// RUN: %clang_cc1 -triple mips64el-unknown-linux-gnuabi64 -S -emit-llvm -o - %s | FileCheck -check-prefix=N64 %s
19+
// RUN: %clang_cc1 -triple mipsisa64r6-unknown-linux-gnuabi64 -S -emit-llvm -o - %s | FileCheck -check-prefix=N64 %s
20+
// RUN: %clang_cc1 -triple mipsisa64r6el-unknown-linux-gnuabi64 -S -emit-llvm -o - %s | FileCheck -check-prefix=N64 %s
1121

1222
// O32: define void @fn28(%struct.T2* noalias sret %agg.result, i8 signext %arg0)
1323
// N32: define void @fn28(i8 signext %arg0)

‎clang/test/CodeGen/target-data.c

+20
Original file line numberDiff line numberDiff line change
@@ -32,34 +32,54 @@
3232

3333
// RUN: %clang_cc1 -triple mipsel-linux-gnu -o - -emit-llvm %s | \
3434
// RUN: FileCheck %s -check-prefix=MIPS-32EL
35+
// RUN: %clang_cc1 -triple mipsisa32r6el-linux-gnu -o - -emit-llvm %s | \
36+
// RUN: FileCheck %s -check-prefix=MIPS-32EL
3537
// MIPS-32EL: target datalayout = "e-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64"
3638

3739
// RUN: %clang_cc1 -triple mips-linux-gnu -o - -emit-llvm %s | \
3840
// RUN: FileCheck %s -check-prefix=MIPS-32EB
41+
// RUN: %clang_cc1 -triple mipsisa32r6-linux-gnu -o - -emit-llvm %s | \
42+
// RUN: FileCheck %s -check-prefix=MIPS-32EB
3943
// MIPS-32EB: target datalayout = "E-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64"
4044

4145
// RUN: %clang_cc1 -triple mips64el-linux-gnu -o - -emit-llvm %s | \
4246
// RUN: FileCheck %s -check-prefix=MIPS-64EL
4347
// RUN: %clang_cc1 -triple mips64el-linux-gnuabi64 -o - -emit-llvm %s | \
4448
// RUN: FileCheck %s -check-prefix=MIPS-64EL
49+
// RUN: %clang_cc1 -triple mipsisa64r6el-linux-gnu -o - -emit-llvm %s | \
50+
// RUN: FileCheck %s -check-prefix=MIPS-64EL
51+
// RUN: %clang_cc1 -triple mipsisa64r6el-linux-gnuabi64 -o - -emit-llvm %s | \
52+
// RUN: FileCheck %s -check-prefix=MIPS-64EL
4553
// MIPS-64EL: target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-n32:64-S128"
4654

4755
// RUN: %clang_cc1 -triple mips64el-linux-gnu -o - -emit-llvm -target-abi n32 \
4856
// RUN: %s | FileCheck %s -check-prefix=MIPS-64EL-N32
4957
// RUN: %clang_cc1 -triple mips64el-linux-gnuabin32 -o - -emit-llvm \
5058
// RUN: %s | FileCheck %s -check-prefix=MIPS-64EL-N32
59+
// RUN: %clang_cc1 -triple mipsisa64r6el-linux-gnu -o - -emit-llvm -target-abi n32 \
60+
// RUN: %s | FileCheck %s -check-prefix=MIPS-64EL-N32
61+
// RUN: %clang_cc1 -triple mipsisa64r6el-linux-gnuabin32 -o - -emit-llvm \
62+
// RUN: %s | FileCheck %s -check-prefix=MIPS-64EL-N32
5163
// MIPS-64EL-N32: target datalayout = "e-m:e-p:32:32-i8:8:32-i16:16:32-i64:64-n32:64-S128"
5264

5365
// RUN: %clang_cc1 -triple mips64-linux-gnu -o - -emit-llvm %s | \
5466
// RUN: FileCheck %s -check-prefix=MIPS-64EB
5567
// RUN: %clang_cc1 -triple mips64-linux-gnuabi64 -o - -emit-llvm %s | \
5668
// RUN: FileCheck %s -check-prefix=MIPS-64EB
69+
// RUN: %clang_cc1 -triple mipsisa64r6-linux-gnu -o - -emit-llvm %s | \
70+
// RUN: FileCheck %s -check-prefix=MIPS-64EB
71+
// RUN: %clang_cc1 -triple mipsisa64r6-linux-gnuabi64 -o - -emit-llvm %s | \
72+
// RUN: FileCheck %s -check-prefix=MIPS-64EB
5773
// MIPS-64EB: target datalayout = "E-m:e-i8:8:32-i16:16:32-i64:64-n32:64-S128"
5874

5975
// RUN: %clang_cc1 -triple mips64-linux-gnu -o - -emit-llvm %s -target-abi n32 \
6076
// RUN: | FileCheck %s -check-prefix=MIPS-64EB-N32
6177
// RUN: %clang_cc1 -triple mips64-linux-gnuabin32 -o - -emit-llvm %s \
6278
// RUN: | FileCheck %s -check-prefix=MIPS-64EB-N32
79+
// RUN: %clang_cc1 -triple mipsisa64r6-linux-gnu -o - -emit-llvm %s -target-abi n32 \
80+
// RUN: | FileCheck %s -check-prefix=MIPS-64EB-N32
81+
// RUN: %clang_cc1 -triple mipsisa64r6-linux-gnuabin32 -o - -emit-llvm %s \
82+
// RUN: | FileCheck %s -check-prefix=MIPS-64EB-N32
6383
// MIPS-64EB-N32: target datalayout = "E-m:e-p:32:32-i8:8:32-i16:16:32-i64:64-n32:64-S128"
6484

6585
// RUN: %clang_cc1 -triple powerpc64-lv2 -o - -emit-llvm %s | \

‎clang/test/CodeGen/xray-attributes-supported.cpp

+16
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,36 @@
55
// RUN: %clang_cc1 %s -fxray-instrument -std=c++11 -x c++ -emit-llvm -o - \
66
// RUN: -triple mips-unknown-linux-gnu | FileCheck %s
77
// RUN: %clang_cc1 %s -fxray-instrument -std=c++11 -x c++ -emit-llvm -o - \
8+
// RUN: -triple mipsisa32r6-unknown-linux-gnu | FileCheck %s
9+
// RUN: %clang_cc1 %s -fxray-instrument -std=c++11 -x c++ -emit-llvm -o - \
810
// RUN: -triple mipsel-unknown-linux-gnu | FileCheck %s
911
// RUN: %clang_cc1 %s -fxray-instrument -std=c++11 -x c++ -emit-llvm -o - \
12+
// RUN: -triple mipsisa32r6el-unknown-linux-gnu | FileCheck %s
13+
// RUN: %clang_cc1 %s -fxray-instrument -std=c++11 -x c++ -emit-llvm -o - \
1014
// RUN: -triple mips64-unknown-linux-gnu | FileCheck %s
1115
// RUN: %clang_cc1 %s -fxray-instrument -std=c++11 -x c++ -emit-llvm -o - \
16+
// RUN: -triple mipsisa64r6-unknown-linux-gnu | FileCheck %s
17+
// RUN: %clang_cc1 %s -fxray-instrument -std=c++11 -x c++ -emit-llvm -o - \
1218
// RUN: -triple mips64el-unknown-linux-gnu | FileCheck %s
1319
// RUN: %clang_cc1 %s -fxray-instrument -std=c++11 -x c++ -emit-llvm -o - \
20+
// RUN: -triple mipsisa64r6el-unknown-linux-gnu | FileCheck %s
21+
// RUN: %clang_cc1 %s -fxray-instrument -std=c++11 -x c++ -emit-llvm -o - \
1422
// RUN: -triple mips64-unknown-linux-gnuabi64 | FileCheck %s
1523
// RUN: %clang_cc1 %s -fxray-instrument -std=c++11 -x c++ -emit-llvm -o - \
24+
// RUN: -triple mipsisa64r6-unknown-linux-gnuabi64 | FileCheck %s
25+
// RUN: %clang_cc1 %s -fxray-instrument -std=c++11 -x c++ -emit-llvm -o - \
1626
// RUN: -triple mips64el-unknown-linux-gnuabi64 | FileCheck %s
1727
// RUN: %clang_cc1 %s -fxray-instrument -std=c++11 -x c++ -emit-llvm -o - \
28+
// RUN: -triple mipsisa64r6el-unknown-linux-gnuabi64 | FileCheck %s
29+
// RUN: %clang_cc1 %s -fxray-instrument -std=c++11 -x c++ -emit-llvm -o - \
1830
// RUN: -triple mips64-unknown-linux-gnuabin32 | FileCheck %s
1931
// RUN: %clang_cc1 %s -fxray-instrument -std=c++11 -x c++ -emit-llvm -o - \
32+
// RUN: -triple mipsisa64r6-unknown-linux-gnuabin32 | FileCheck %s
33+
// RUN: %clang_cc1 %s -fxray-instrument -std=c++11 -x c++ -emit-llvm -o - \
2034
// RUN: -triple mips64el-unknown-linux-gnuabin32 | FileCheck %s
2135
// RUN: %clang_cc1 %s -fxray-instrument -std=c++11 -x c++ -emit-llvm -o - \
36+
// RUN: -triple mipsisa64r6el-unknown-linux-gnuabin32 | FileCheck %s
37+
// RUN: %clang_cc1 %s -fxray-instrument -std=c++11 -x c++ -emit-llvm -o - \
2238
// RUN: -triple powerpc64le-unknown-linux-gnu | FileCheck %s
2339

2440
// Make sure that the LLVM attribute for XRay-annotated functions do show up.

‎clang/test/Driver/clang-translation.c

+60
Original file line numberDiff line numberDiff line change
@@ -291,13 +291,27 @@
291291
// MIPS: "-target-cpu" "mips32r2"
292292
// MIPS: "-mfloat-abi" "hard"
293293

294+
// RUN: %clang -target mipsisa32r6-linux-gnu -### -S %s 2>&1 | \
295+
// RUN: FileCheck -check-prefix=MIPSR6 %s
296+
// MIPSR6: clang
297+
// MIPSR6: "-cc1"
298+
// MIPSR6: "-target-cpu" "mips32r6"
299+
// MIPSR6: "-mfloat-abi" "hard"
300+
294301
// RUN: %clang -target mipsel-linux-gnu -### -S %s 2>&1 | \
295302
// RUN: FileCheck -check-prefix=MIPSEL %s
296303
// MIPSEL: clang
297304
// MIPSEL: "-cc1"
298305
// MIPSEL: "-target-cpu" "mips32r2"
299306
// MIPSEL: "-mfloat-abi" "hard"
300307

308+
// RUN: %clang -target mipsisa32r6el-linux-gnu -### -S %s 2>&1 | \
309+
// RUN: FileCheck -check-prefix=MIPSR6EL %s
310+
// MIPSR6EL: clang
311+
// MIPSR6EL: "-cc1"
312+
// MIPSR6EL: "-target-cpu" "mips32r6"
313+
// MIPSR6EL: "-mfloat-abi" "hard"
314+
301315
// RUN: %clang -target mipsel-linux-android -### -S %s 2>&1 | \
302316
// RUN: FileCheck -check-prefix=MIPSEL-ANDROID %s
303317
// MIPSEL-ANDROID: clang
@@ -323,13 +337,27 @@
323337
// MIPS64: "-target-cpu" "mips64r2"
324338
// MIPS64: "-mfloat-abi" "hard"
325339

340+
// RUN: %clang -target mipsisa64r6-linux-gnu -### -S %s 2>&1 | \
341+
// RUN: FileCheck -check-prefix=MIPS64R6 %s
342+
// MIPS64R6: clang
343+
// MIPS64R6: "-cc1"
344+
// MIPS64R6: "-target-cpu" "mips64r6"
345+
// MIPS64R6: "-mfloat-abi" "hard"
346+
326347
// RUN: %clang -target mips64el-linux-gnu -### -S %s 2>&1 | \
327348
// RUN: FileCheck -check-prefix=MIPS64EL %s
328349
// MIPS64EL: clang
329350
// MIPS64EL: "-cc1"
330351
// MIPS64EL: "-target-cpu" "mips64r2"
331352
// MIPS64EL: "-mfloat-abi" "hard"
332353

354+
// RUN: %clang -target mipsisa64r6el-linux-gnu -### -S %s 2>&1 | \
355+
// RUN: FileCheck -check-prefix=MIPS64R6EL %s
356+
// MIPS64R6EL: clang
357+
// MIPS64R6EL: "-cc1"
358+
// MIPS64R6EL: "-target-cpu" "mips64r6"
359+
// MIPS64R6EL: "-mfloat-abi" "hard"
360+
333361
// RUN: %clang -target mips64-linux-gnuabi64 -### -S %s 2>&1 | \
334362
// RUN: FileCheck -check-prefix=MIPS64-GNUABI64 %s
335363
// MIPS64-GNUABI64: clang
@@ -338,6 +366,14 @@
338366
// MIPS64-GNUABI64: "-target-abi" "n64"
339367
// MIPS64-GNUABI64: "-mfloat-abi" "hard"
340368

369+
// RUN: %clang -target mipsisa64r6-linux-gnuabi64 -### -S %s 2>&1 | \
370+
// RUN: FileCheck -check-prefix=MIPS64R6-GNUABI64 %s
371+
// MIPS64R6-GNUABI64: clang
372+
// MIPS64R6-GNUABI64: "-cc1"
373+
// MIPS64R6-GNUABI64: "-target-cpu" "mips64r6"
374+
// MIPS64R6-GNUABI64: "-target-abi" "n64"
375+
// MIPS64R6-GNUABI64: "-mfloat-abi" "hard"
376+
341377
// RUN: %clang -target mips64el-linux-gnuabi64 -### -S %s 2>&1 | \
342378
// RUN: FileCheck -check-prefix=MIPS64EL-GNUABI64 %s
343379
// MIPS64EL-GNUABI64: clang
@@ -346,6 +382,14 @@
346382
// MIPS64EL-GNUABI64: "-target-abi" "n64"
347383
// MIPS64EL-GNUABI64: "-mfloat-abi" "hard"
348384

385+
// RUN: %clang -target mipsisa64r6el-linux-gnuabi64 -### -S %s 2>&1 | \
386+
// RUN: FileCheck -check-prefix=MIPS64R6EL-GNUABI64 %s
387+
// MIPS64R6EL-GNUABI64: clang
388+
// MIPS64R6EL-GNUABI64: "-cc1"
389+
// MIPS64R6EL-GNUABI64: "-target-cpu" "mips64r6"
390+
// MIPS64R6EL-GNUABI64: "-target-abi" "n64"
391+
// MIPS64R6EL-GNUABI64: "-mfloat-abi" "hard"
392+
349393
// RUN: %clang -target mips64-linux-gnuabin32 -### -S %s 2>&1 | \
350394
// RUN: FileCheck -check-prefix=MIPSN32 %s
351395
// MIPSN32: clang
@@ -354,6 +398,14 @@
354398
// MIPSN32: "-target-abi" "n32"
355399
// MIPSN32: "-mfloat-abi" "hard"
356400

401+
// RUN: %clang -target mipsisa64r6-linux-gnuabin32 -### -S %s 2>&1 | \
402+
// RUN: FileCheck -check-prefix=MIPSN32R6 %s
403+
// MIPSN32R6: clang
404+
// MIPSN32R6: "-cc1"
405+
// MIPSN32R6: "-target-cpu" "mips64r6"
406+
// MIPSN32R6: "-target-abi" "n32"
407+
// MIPSN32R6: "-mfloat-abi" "hard"
408+
357409
// RUN: %clang -target mips64el-linux-gnuabin32 -### -S %s 2>&1 | \
358410
// RUN: FileCheck -check-prefix=MIPSN32EL %s
359411
// MIPSN32EL: clang
@@ -362,6 +414,14 @@
362414
// MIPSN32EL: "-target-abi" "n32"
363415
// MIPSN32EL: "-mfloat-abi" "hard"
364416

417+
// RUN: %clang -target mipsisa64r6el-linux-gnuabin32 -### -S %s 2>&1 | \
418+
// RUN: FileCheck -check-prefix=MIPSN32R6EL %s
419+
// MIPSN32R6EL: clang
420+
// MIPSN32R6EL: "-cc1"
421+
// MIPSN32R6EL: "-target-cpu" "mips64r6"
422+
// MIPSN32R6EL: "-target-abi" "n32"
423+
// MIPSN32R6EL: "-mfloat-abi" "hard"
424+
365425
// RUN: %clang -target mips64el-linux-android -### -S %s 2>&1 | \
366426
// RUN: FileCheck -check-prefix=MIPS64EL-ANDROID %s
367427
// MIPS64EL-ANDROID: clang

0 commit comments

Comments
 (0)
Please sign in to comment.