]> granicus.if.org Git - llvm/commitdiff
[X86] Attempt to fix a ubsan failure in the autoupgrade of kunpck intrinsics.
authorCraig Topper <craig.topper@intel.com>
Wed, 6 Dec 2017 17:54:07 +0000 (17:54 +0000)
committerCraig Topper <craig.topper@intel.com>
Wed, 6 Dec 2017 17:54:07 +0000 (17:54 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319911 91177308-0d34-0410-b5e6-96231b3b80d8

lib/IR/AutoUpgrade.cpp

index 76af9a16f0cb76824f42b1afef257d40be53fd06..3a364211a5057ca09f19b72131e7004579f129fc 100644 (file)
@@ -1068,7 +1068,7 @@ void llvm::UpgradeIntrinsicCall(CallInst *CI, Function *NewFn) {
                           CI->getArgOperand(1));
     } else if (IsX86 && (Name.startswith("avx512.kunpck"))) {
       uint64_t Shift = CI->getType()->getScalarSizeInBits() / 2;
-      uint64_t And = (1 << Shift) - 1; 
+      uint64_t And = (1ULL << Shift) - 1; 
       Value* LowBits =  Builder.CreateAnd(CI->getArgOperand(0), And);
       Value* HighBits =  Builder.CreateShl(CI->getArgOperand(1), Shift);
       Rep = Builder.CreateOr(LowBits, HighBits);