From a7566ef3efff939ff93603d4fe9fabd3306b6d87 Mon Sep 17 00:00:00 2001 From: Craig Topper Date: Wed, 6 Dec 2017 17:54:07 +0000 Subject: [PATCH] [X86] Attempt to fix a ubsan failure in the autoupgrade of kunpck intrinsics. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319911 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/IR/AutoUpgrade.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/IR/AutoUpgrade.cpp b/lib/IR/AutoUpgrade.cpp index 76af9a16f0c..3a364211a50 100644 --- a/lib/IR/AutoUpgrade.cpp +++ b/lib/IR/AutoUpgrade.cpp @@ -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); -- 2.50.1