Author: ctopper
Date: Tue Jun  5 15:40:03 2018
New Revision: 334054

URL: http://llvm.org/viewvc/llvm-project?rev=334054&view=rev
Log:
[X86] Implement __builtin_ia32_vec_ext_v2si correctly even though we only use 
it with an index of 0.

This builtin takes an index as its second operand, but the codegen hardcodes an 
index of 0 and doesn't use the operand. The only use of the builtin in the 
header file passes 0 to the operand so this works for that usage. But its more 
correct to use the real operand.

Modified:
    cfe/trunk/lib/CodeGen/CGBuiltin.cpp

Modified: cfe/trunk/lib/CodeGen/CGBuiltin.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGBuiltin.cpp?rev=334054&r1=334053&r2=334054&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGBuiltin.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGBuiltin.cpp Tue Jun  5 15:40:03 2018
@@ -8779,7 +8779,7 @@ Value *CodeGenFunction::EmitX86BuiltinEx
                                  llvm::Type::getX86_MMXTy(getLLVMContext()));
   case X86::BI__builtin_ia32_vec_ext_v2si:
     return Builder.CreateExtractElement(Ops[0],
-                                  llvm::ConstantInt::get(Ops[1]->getType(), 
0));
+                                        
cast<ConstantInt>(Ops[1])->getZExtValue());
   case X86::BI_mm_setcsr:
   case X86::BI__builtin_ia32_ldmxcsr: {
     Address Tmp = CreateMemTemp(E->getArg(0)->getType());


_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to