]> granicus.if.org Git - clang/commitdiff
[X86] Add 3dnow and 3dnowa to the list of valid target features
authorMartin Storsjo <martin@martin.st>
Mon, 6 Nov 2017 20:33:13 +0000 (20:33 +0000)
committerMartin Storsjo <martin@martin.st>
Mon, 6 Nov 2017 20:33:13 +0000 (20:33 +0000)
These were missed in SVN r316783, which broke compiling mingw-w64 CRT.

Differential Revision: https://reviews.llvm.org/D39631

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@317504 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Basic/Targets/X86.cpp
test/Headers/mm3dnow.c [new file with mode: 0644]

index ee70c14e1d2f3b708f31f263aad14c69aaa2bfc6..a08ba478a0bc8c559634bce913129aa93e228848 100644 (file)
@@ -1121,6 +1121,8 @@ void X86TargetInfo::getTargetDefines(const LangOptions &Opts,
 
 bool X86TargetInfo::isValidFeatureName(StringRef Name) const {
   return llvm::StringSwitch<bool>(Name)
+      .Case("3dnow", true)
+      .Case("3dnowa", true)
       .Case("aes", true)
       .Case("avx", true)
       .Case("avx2", true)
diff --git a/test/Headers/mm3dnow.c b/test/Headers/mm3dnow.c
new file mode 100644 (file)
index 0000000..255483c
--- /dev/null
@@ -0,0 +1,16 @@
+// RUN: %clang_cc1 -fsyntax-only -ffreestanding %s -verify
+// RUN: %clang_cc1 -fsyntax-only -ffreestanding -x c++ %s -verify
+// expected-no-diagnostics
+
+#if defined(i386) || defined(__x86_64__)
+#include <mm3dnow.h>
+
+int __attribute__((__target__(("3dnow")))) foo(int a) {
+  _m_femms();
+  return 4;
+}
+
+__m64 __attribute__((__target__(("3dnowa")))) bar(__m64 a) {
+  return _m_pf2iw(a);
+}
+#endif