[llvm-commits] [dragonegg] r149688 - in /dragonegg/trunk/src/x86: Target.cpp x86_builtins

Duncan Sands baldrick at free.fr
Fri Feb 3 01:23:56 PST 2012


Author: baldrick
Date: Fri Feb  3 03:23:56 2012
New Revision: 149688

URL: http://llvm.org/viewvc/llvm-project?rev=149688&view=rev
Log:
Expand the various pcmp* builtins by hand now that the LLVM intrinsics
have been removed.  Based on Craig Topper's auto-upgrade logic.

Modified:
    dragonegg/trunk/src/x86/Target.cpp
    dragonegg/trunk/src/x86/x86_builtins

Modified: dragonegg/trunk/src/x86/Target.cpp
URL: http://llvm.org/viewvc/llvm-project/dragonegg/trunk/src/x86/Target.cpp?rev=149688&r1=149687&r2=149688&view=diff
==============================================================================
--- dragonegg/trunk/src/x86/Target.cpp (original)
+++ dragonegg/trunk/src/x86/Target.cpp Fri Feb  3 03:23:56 2012
@@ -859,6 +859,36 @@
     Result = Builder.CreateShuffleVector(Ops[0], Ops[1], Mask);
     return true;
   }
+  case pcmpeqb:
+  case pcmpeqb128:
+  case pcmpeqb256:
+  case pcmpeqd:
+  case pcmpeqd128:
+  case pcmpeqd256:
+  case pcmpeqq:
+  case pcmpeqq256:
+  case pcmpeqw:
+  case pcmpeqw128:
+  case pcmpeqw256:
+    Result = Builder.CreateICmpEQ(Ops[0], Ops[1]);
+    // Need to sign extend since icmp returns a vector of i1.
+    Result = Builder.CreateSExt(Result, ResultType);
+    return true;
+  case pcmpgtb:
+  case pcmpgtb128:
+  case pcmpgtb256:
+  case pcmpgtd:
+  case pcmpgtd128:
+  case pcmpgtd256:
+  case pcmpgtq:
+  case pcmpgtq256:
+  case pcmpgtw:
+  case pcmpgtw128:
+  case pcmpgtw256:
+    Result = Builder.CreateICmpSGT(Ops[0], Ops[1]);
+    // Need to sign extend since icmp returns a vector of i1.
+    Result = Builder.CreateSExt(Result, ResultType);
+    return true;
   }
   DieAbjectly("Builtin not implemented!", stmt);
   return false;

Modified: dragonegg/trunk/src/x86/x86_builtins
URL: http://llvm.org/viewvc/llvm-project/dragonegg/trunk/src/x86/x86_builtins?rev=149688&r1=149687&r2=149688&view=diff
==============================================================================
--- dragonegg/trunk/src/x86/x86_builtins (original)
+++ dragonegg/trunk/src/x86/x86_builtins Fri Feb  3 03:23:56 2012
@@ -375,17 +375,17 @@
 //DEFINE_BUILTIN(pbroadcastw128),
 //DEFINE_BUILTIN(pbroadcastw256),
 //DEFINE_BUILTIN(pclmulqdq128),
-//DEFINE_BUILTIN(pcmpeqb),
-//DEFINE_BUILTIN(pcmpeqb128),
-//DEFINE_BUILTIN(pcmpeqb256),
-//DEFINE_BUILTIN(pcmpeqd),
-//DEFINE_BUILTIN(pcmpeqd128),
-//DEFINE_BUILTIN(pcmpeqd256),
-//DEFINE_BUILTIN(pcmpeqq),
-//DEFINE_BUILTIN(pcmpeqq256),
-//DEFINE_BUILTIN(pcmpeqw),
-//DEFINE_BUILTIN(pcmpeqw128),
-//DEFINE_BUILTIN(pcmpeqw256),
+DEFINE_BUILTIN(pcmpeqb),
+DEFINE_BUILTIN(pcmpeqb128),
+DEFINE_BUILTIN(pcmpeqb256),
+DEFINE_BUILTIN(pcmpeqd),
+DEFINE_BUILTIN(pcmpeqd128),
+DEFINE_BUILTIN(pcmpeqd256),
+DEFINE_BUILTIN(pcmpeqq),
+DEFINE_BUILTIN(pcmpeqq256),
+DEFINE_BUILTIN(pcmpeqw),
+DEFINE_BUILTIN(pcmpeqw128),
+DEFINE_BUILTIN(pcmpeqw256),
 //DEFINE_BUILTIN(pcmpestri128),
 //DEFINE_BUILTIN(pcmpestria128),
 //DEFINE_BUILTIN(pcmpestric128),
@@ -393,17 +393,17 @@
 //DEFINE_BUILTIN(pcmpestris128),
 //DEFINE_BUILTIN(pcmpestriz128),
 //DEFINE_BUILTIN(pcmpestrm128),
-//DEFINE_BUILTIN(pcmpgtb),
-//DEFINE_BUILTIN(pcmpgtb128),
-//DEFINE_BUILTIN(pcmpgtb256),
-//DEFINE_BUILTIN(pcmpgtd),
-//DEFINE_BUILTIN(pcmpgtd128),
-//DEFINE_BUILTIN(pcmpgtd256),
-//DEFINE_BUILTIN(pcmpgtq),
-//DEFINE_BUILTIN(pcmpgtq256),
-//DEFINE_BUILTIN(pcmpgtw),
-//DEFINE_BUILTIN(pcmpgtw128),
-//DEFINE_BUILTIN(pcmpgtw256),
+DEFINE_BUILTIN(pcmpgtb),
+DEFINE_BUILTIN(pcmpgtb128),
+DEFINE_BUILTIN(pcmpgtb256),
+DEFINE_BUILTIN(pcmpgtd),
+DEFINE_BUILTIN(pcmpgtd128),
+DEFINE_BUILTIN(pcmpgtd256),
+DEFINE_BUILTIN(pcmpgtq),
+DEFINE_BUILTIN(pcmpgtq256),
+DEFINE_BUILTIN(pcmpgtw),
+DEFINE_BUILTIN(pcmpgtw128),
+DEFINE_BUILTIN(pcmpgtw256),
 //DEFINE_BUILTIN(pcmpistri128),
 //DEFINE_BUILTIN(pcmpistria128),
 //DEFINE_BUILTIN(pcmpistric128),





More information about the llvm-commits mailing list