[cfe-commits] r100253 - in /cfe/trunk: include/clang/Driver/Options.td lib/Basic/Targets.cpp
Eric Christopher
echristo at apple.com
Fri Apr 2 16:50:19 PDT 2010
Author: echristo
Date: Fri Apr 2 18:50:19 2010
New Revision: 100253
URL: http://llvm.org/viewvc/llvm-project?rev=100253&view=rev
Log:
Add option and macro definition for AES instructions. Now produces real
assembly for testcases.
Modified:
cfe/trunk/include/clang/Driver/Options.td
cfe/trunk/lib/Basic/Targets.cpp
Modified: cfe/trunk/include/clang/Driver/Options.td
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=100253&r1=100252&r2=100253&view=diff
==============================================================================
--- cfe/trunk/include/clang/Driver/Options.td (original)
+++ cfe/trunk/include/clang/Driver/Options.td Fri Apr 2 18:50:19 2010
@@ -431,6 +431,7 @@
def mno_sse4_2 : Flag<"-mno-sse4.2">, Group<m_x86_Features_Group>;
def mno_sse : Flag<"-mno-sse">, Group<m_x86_Features_Group>;
def mno_ssse3 : Flag<"-mno-ssse3">, Group<m_x86_Features_Group>;
+def mno_aes : Flag<"-mno-aes">, Group<m_x86_Features_Group>;
def mno_thumb : Flag<"-mno-thumb">, Group<m_Group>;
def marm : Flag<"-marm">, Alias<mno_thumb>;
@@ -447,6 +448,7 @@
def msse4_2 : Flag<"-msse4.2">, Group<m_x86_Features_Group>;
def msse : Flag<"-msse">, Group<m_x86_Features_Group>;
def mssse3 : Flag<"-mssse3">, Group<m_x86_Features_Group>;
+def maes : Flag<"-maes">, Group<m_x86_Features_Group>;
def mthumb : Flag<"-mthumb">, Group<m_Group>;
def mtune_EQ : Joined<"-mtune=">, Group<m_Group>;
def multi__module : Flag<"-multi_module">;
Modified: cfe/trunk/lib/Basic/Targets.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets.cpp?rev=100253&r1=100252&r2=100253&view=diff
==============================================================================
--- cfe/trunk/lib/Basic/Targets.cpp (original)
+++ cfe/trunk/lib/Basic/Targets.cpp Fri Apr 2 18:50:19 2010
@@ -765,9 +765,12 @@
NoAMD3DNow, AMD3DNow, AMD3DNowAthlon
} AMD3DNowLevel;
+ bool HasAES;
+
public:
X86TargetInfo(const std::string& triple)
- : TargetInfo(triple), SSELevel(NoMMXSSE), AMD3DNowLevel(NoAMD3DNow) {
+ : TargetInfo(triple), SSELevel(NoMMXSSE), AMD3DNowLevel(NoAMD3DNow),
+ HasAES(false) {
LongDoubleFormat = &llvm::APFloat::x87DoubleExtended;
}
virtual void getTargetBuiltins(const Builtin::Info *&Records,
@@ -813,6 +816,7 @@
Features["ssse3"] = false;
Features["sse41"] = false;
Features["sse42"] = false;
+ Features["aes"] = false;
// LLVM does not currently recognize this.
// Features["sse4a"] = false;
@@ -841,8 +845,10 @@
Features["sse42"] = false;
} else if (CPU == "atom")
setFeatureEnabled(Features, "sse3", true);
- else if (CPU == "corei7")
+ else if (CPU == "corei7") {
setFeatureEnabled(Features, "sse4", true);
+ setFeatureEnabled(Features, "aes", true);
+ }
else if (CPU == "k6" || CPU == "winchip-c6")
setFeatureEnabled(Features, "mmx", true);
else if (CPU == "k6-2" || CPU == "k6-3" || CPU == "athlon" ||
@@ -892,6 +898,8 @@
Features["3dnowa"] = true;
else if (Name == "3dnowa")
Features["3dnow"] = Features["3dnowa"] = true;
+ else if (Name == "aes")
+ Features["aes"] = true;
} else {
if (Name == "mmx")
Features["mmx"] = Features["sse"] = Features["sse2"] = Features["sse3"] =
@@ -917,6 +925,8 @@
Features["3dnow"] = Features["3dnowa"] = false;
else if (Name == "3dnowa")
Features["3dnowa"] = false;
+ else if (Name == "aes")
+ Features["aes"] = false;
}
return true;
@@ -931,6 +941,11 @@
if (Features[i][0] == '-')
continue;
+ if (Features[i].substr(1) == "aes") {
+ HasAES = true;
+ continue;
+ }
+
assert(Features[i][0] == '+' && "Invalid target feature!");
X86SSEEnum Level = llvm::StringSwitch<X86SSEEnum>(Features[i].substr(1))
.Case("sse42", SSE42)
@@ -969,6 +984,9 @@
DefineStd(Builder, "i386", Opts);
}
+ if (HasAES)
+ Builder.defineMacro("__AES__");
+
// Target properties.
Builder.defineMacro("__LITTLE_ENDIAN__");
More information about the cfe-commits
mailing list