[cfe-commits] r69428 - in /cfe/trunk: lib/CodeGen/CGBuiltin.cpp test/CodeGen/x86.c

Chris Lattner sabre at nondot.org
Sat Apr 18 00:01:54 PDT 2009


Author: lattner
Date: Sat Apr 18 02:01:54 2009
New Revision: 69428

URL: http://llvm.org/viewvc/llvm-project?rev=69428&view=rev
Log:
fix incorrect lowering of __builtin_ia32_shufpd, rdar://6803924

Modified:
    cfe/trunk/lib/CodeGen/CGBuiltin.cpp
    cfe/trunk/test/CodeGen/x86.c

Modified: cfe/trunk/lib/CodeGen/CGBuiltin.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGBuiltin.cpp?rev=69428&r1=69427&r2=69428&view=diff

==============================================================================
--- cfe/trunk/lib/CodeGen/CGBuiltin.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGBuiltin.cpp Sat Apr 18 02:01:54 2009
@@ -891,7 +891,8 @@
   }
   case X86::BI__builtin_ia32_shufpd: {
     unsigned i = cast<ConstantInt>(Ops[2])->getZExtValue();
-    return EmitShuffleVector(Ops[0], Ops[1], i & 1, (i & 2) + 2, "shufpd");
+    return EmitShuffleVector(Ops[0], Ops[1], i & 1,
+                             ((i & 2) >> 1)+2, "shufpd");
   }
   case X86::BI__builtin_ia32_punpcklbw128:
     return EmitShuffleVector(Ops[0], Ops[1], 0, 16, 1, 17, 2, 18, 3, 19,

Modified: cfe/trunk/test/CodeGen/x86.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/x86.c?rev=69428&r1=69427&r2=69428&view=diff

==============================================================================
--- cfe/trunk/test/CodeGen/x86.c (original)
+++ cfe/trunk/test/CodeGen/x86.c Sat Apr 18 02:01:54 2009
@@ -8,8 +8,16 @@
 // RUN: grep "st" %t1 &&
 // RUN: grep "st(1)" %t1
 
-void f() {
+void test1() {
   int d1, d2;
   asm ("" : "=a" (d1), "=b" (d2) :
        "c" (0), "d" (0), "S" (0), "D" (0), "t" (0), "u" (0));
 }
+
+
+// rdar://6803924
+typedef double T __attribute__ ((__vector_size__ (16)));
+T test2(T va) {
+  return __builtin_ia32_shufpd(va, va, 3);
+}
+





More information about the cfe-commits mailing list