AArch64: Avoid shifts by 64, that's undefined behavior.

No functionality change.

llvm-svn: 175400
This commit is contained in:
Benjamin Kramer 2013-02-17 17:55:32 +00:00
parent 4ad00b46fb
commit a5dce35cba
1 changed files with 3 additions and 3 deletions

View File

@ -2512,7 +2512,7 @@ static bool findMaskedBFI(SDValue N, SDValue &BFI, uint64_t &Mask,
N = N.getOperand(0); N = N.getOperand(0);
} else { } else {
// Mask is the whole width. // Mask is the whole width.
Mask = (1ULL << N.getValueType().getSizeInBits()) - 1; Mask = -1ULL >> (64 - N.getValueType().getSizeInBits());
} }
if (N.getOpcode() == AArch64ISD::BFI) { if (N.getOpcode() == AArch64ISD::BFI) {
@ -2590,7 +2590,7 @@ static SDValue tryCombineToBFI(SDNode *N,
DAG.getConstant(Width, MVT::i64)); DAG.getConstant(Width, MVT::i64));
// Mask is trivial // Mask is trivial
if ((LHSMask | RHSMask) == (1ULL << VT.getSizeInBits()) - 1) if ((LHSMask | RHSMask) == (-1ULL >> (64 - VT.getSizeInBits())))
return BFI; return BFI;
return DAG.getNode(ISD::AND, DL, VT, BFI, return DAG.getNode(ISD::AND, DL, VT, BFI,
@ -2660,7 +2660,7 @@ static SDValue tryCombineToLargerBFI(SDNode *N,
BFI.getOperand(2), BFI.getOperand(3)); BFI.getOperand(2), BFI.getOperand(3));
// If the masking is trivial, we don't need to create it. // If the masking is trivial, we don't need to create it.
if ((ExtraMask | ExistingMask) == (1ULL << VT.getSizeInBits()) - 1) if ((ExtraMask | ExistingMask) == (-1ULL >> (64 - VT.getSizeInBits())))
return BFI; return BFI;
return DAG.getNode(ISD::AND, DL, VT, BFI, return DAG.getNode(ISD::AND, DL, VT, BFI,