[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