[llvm-commits] [dragonegg] r152561 - in /dragonegg/trunk: src/x86/Target.cpp test/compilator/dragonegg-lit.cfg

Duncan Sands baldrick at free.fr
Mon Mar 12 08:47:15 PDT 2012


Author: baldrick
Date: Mon Mar 12 10:47:15 2012
New Revision: 152561

URL: http://llvm.org/viewvc/llvm-project?rev=152561&view=rev
Log:
The palignr test was failing because the result type was wrong, and
in some cases because it was expecting MMX input types.

Modified:
    dragonegg/trunk/src/x86/Target.cpp
    dragonegg/trunk/test/compilator/dragonegg-lit.cfg

Modified: dragonegg/trunk/src/x86/Target.cpp
URL: http://llvm.org/viewvc/llvm-project/dragonegg/trunk/src/x86/Target.cpp?rev=152561&r1=152560&r2=152561&view=diff
==============================================================================
--- dragonegg/trunk/src/x86/Target.cpp (original)
+++ dragonegg/trunk/src/x86/Target.cpp Mon Mar 12 10:47:15 2012
@@ -680,6 +680,7 @@
 
         Value* SV = ConstantVector::get(Indices);
         Result = Builder.CreateShuffleVector(Ops[1], Ops[0], SV, "palignr");
+        Result = Builder.CreateBitCast(Result, ResultType);
         return true;
       }
 
@@ -689,15 +690,18 @@
         // MMX has these as 1 x i64 vectors for some odd optimization reasons.
         Type *EltTy = Type::getInt64Ty(Context);
         Type *VecTy = VectorType::get(EltTy, 1);
+        Type *MMXTy = Type::getX86_MMXTy(Context);
 
-        Ops[0] = Builder.CreateBitCast(Ops[0], VecTy, "cast");
+        Ops[0] = Builder.CreateBitCast(Ops[0], MMXTy);
         Ops[1] = ConstantInt::get(VecTy, (shiftVal-8) * 8);
+        Ops[1] = Builder.CreateBitCast(Ops[1], MMXTy);
 
         // create i32 constant
         Function *F = Intrinsic::getDeclaration(TheModule,
                                                 Intrinsic::x86_mmx_psrl_q);
         Result = Builder.CreateCall(F, ArrayRef<Value *>(&Ops[0], 2),
                                     "palignr");
+        Result = Builder.CreateBitCast(Result, ResultType);
         return true;
       }
 
@@ -733,6 +737,7 @@
 
         Value* SV = ConstantVector::get(Indices);
         Result = Builder.CreateShuffleVector(Ops[1], Ops[0], SV, "palignr");
+        Result = Builder.CreateBitCast(Result, ResultType);
         return true;
       }
 
@@ -751,6 +756,7 @@
                                                 Intrinsic::x86_sse2_psrl_dq);
         Result = Builder.CreateCall(F, ArrayRef<Value *>(&Ops[0], 2),
                                     "palignr");
+        Result = Builder.CreateBitCast(Result, ResultType);
         return true;
       }
 

Modified: dragonegg/trunk/test/compilator/dragonegg-lit.cfg
URL: http://llvm.org/viewvc/llvm-project/dragonegg/trunk/test/compilator/dragonegg-lit.cfg?rev=152561&r1=152560&r2=152561&view=diff
==============================================================================
--- dragonegg/trunk/test/compilator/dragonegg-lit.cfg (original)
+++ dragonegg/trunk/test/compilator/dragonegg-lit.cfg Mon Mar 12 10:47:15 2012
@@ -442,7 +442,6 @@
     'gcc-testsuite/gcc.target/i386/sse-23.c', # Missing support for builtin_ia32_bsrsi
     'gcc-testsuite/gcc.target/i386/sse-24.c', # Missing support for builtin_ia32_bsrsi
     'gcc-testsuite/gcc.target/i386/sse-22.c', # Assertion "Not of memory type!" failed
-    'gcc-testsuite/gcc.target/i386/ssse3-palignr.c', # Assertion "Not of memory type!" failed
     'gcc-testsuite/gcc.target/i386/vperm-v2df.c', # GCC rejects shuffle at -O0 due to non constant operands
     'gcc-testsuite/gcc.target/i386/vperm-v2di.c', # GCC rejects shuffle at -O0 due to non constant operands
     'gcc-testsuite/gcc.target/i386/vperm-v4sf-1.c', # GCC rejects shuffle at -O0 due to non constant operands





More information about the llvm-commits mailing list