forked from OSchip/llvm-project
Add Clang support for -mdirect-move on PPC
This patch corresponds to review: http://reviews.llvm.org/D8930 This just adds a front end option to let the back end know the target has PPC direct move instructions. llvm-svn: 234683
This commit is contained in:
parent
c38b5311cb
commit
35458c2fe9
|
@ -1269,6 +1269,10 @@ def mpower8_crypto : Flag<["-"], "mcrypto">,
|
|||
Group<m_ppc_Features_Group>;
|
||||
def mnopower8_crypto : Flag<["-"], "mno-crypto">,
|
||||
Group<m_ppc_Features_Group>;
|
||||
def mdirect_move : Flag<["-"], "mdirect-move">,
|
||||
Group<m_ppc_Features_Group>;
|
||||
def mnodirect_move : Flag<["-"], "mno-direct-move">,
|
||||
Group<m_ppc_Features_Group>;
|
||||
def mhtm : Flag<["-"], "mhtm">, Group<m_ppc_Features_Group>;
|
||||
def mno_htm : Flag<["-"], "mno-htm">, Group<m_ppc_Features_Group>;
|
||||
def mfprnd : Flag<["-"], "mfprnd">, Group<m_ppc_Features_Group>;
|
||||
|
|
|
@ -743,6 +743,7 @@ class PPCTargetInfo : public TargetInfo {
|
|||
bool HasVSX;
|
||||
bool HasP8Vector;
|
||||
bool HasP8Crypto;
|
||||
bool HasDirectMove;
|
||||
bool HasQPX;
|
||||
bool HasHTM;
|
||||
bool HasBPERMD;
|
||||
|
@ -754,7 +755,7 @@ protected:
|
|||
public:
|
||||
PPCTargetInfo(const llvm::Triple &Triple)
|
||||
: TargetInfo(Triple), HasVSX(false), HasP8Vector(false),
|
||||
HasP8Crypto(false), HasQPX(false), HasHTM(false),
|
||||
HasP8Crypto(false), HasDirectMove(false), HasQPX(false), HasHTM(false),
|
||||
HasBPERMD(false), HasExtDiv(false) {
|
||||
BigEndian = (Triple.getArch() != llvm::Triple::ppc64le);
|
||||
LongDoubleWidth = LongDoubleAlign = 128;
|
||||
|
@ -1035,6 +1036,11 @@ bool PPCTargetInfo::handleTargetFeatures(std::vector<std::string> &Features,
|
|||
continue;
|
||||
}
|
||||
|
||||
if (Feature == "direct-move") {
|
||||
HasDirectMove = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (Feature == "qpx") {
|
||||
HasQPX = true;
|
||||
continue;
|
||||
|
@ -1257,6 +1263,10 @@ void PPCTargetInfo::getDefaultFeatures(llvm::StringMap<bool> &Features) const {
|
|||
.Case("pwr8", true)
|
||||
.Case("pwr7", true)
|
||||
.Default(false);
|
||||
Features["direct-move"] = llvm::StringSwitch<bool>(CPU)
|
||||
.Case("ppc64le", true)
|
||||
.Case("pwr8", true)
|
||||
.Default(false);
|
||||
}
|
||||
|
||||
bool PPCTargetInfo::hasFeature(StringRef Feature) const {
|
||||
|
@ -1265,6 +1275,7 @@ bool PPCTargetInfo::hasFeature(StringRef Feature) const {
|
|||
.Case("vsx", HasVSX)
|
||||
.Case("power8-vector", HasP8Vector)
|
||||
.Case("crypto", HasP8Crypto)
|
||||
.Case("direct-move", HasDirectMove)
|
||||
.Case("qpx", HasQPX)
|
||||
.Case("htm", HasHTM)
|
||||
.Case("bpermd", HasBPERMD)
|
||||
|
|
Loading…
Reference in New Issue