mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-20 11:33:24 +02:00
[APInt] Move operator=(uint64_t) inline as its pretty simple and is often used with small constants that the compiler can optimize.
While there recognize that we only need to clearUnusedBits on the single word case. llvm-svn: 298881
This commit is contained in:
parent
675af18292
commit
6146e01ab1
@ -676,7 +676,16 @@ public:
|
||||
/// than 64, the value is zero filled in the unspecified high order bits.
|
||||
///
|
||||
/// \returns *this after assignment of RHS value.
|
||||
APInt &operator=(uint64_t RHS);
|
||||
APInt &operator=(uint64_t RHS) {
|
||||
if (isSingleWord()) {
|
||||
VAL = RHS;
|
||||
clearUnusedBits();
|
||||
} else {
|
||||
pVal[0] = RHS;
|
||||
memset(pVal+1, 0, (getNumWords() - 1) * APINT_WORD_SIZE);
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
/// \brief Bitwise AND assignment operator.
|
||||
///
|
||||
|
@ -157,16 +157,6 @@ APInt& APInt::AssignSlowCase(const APInt& RHS) {
|
||||
return clearUnusedBits();
|
||||
}
|
||||
|
||||
APInt& APInt::operator=(uint64_t RHS) {
|
||||
if (isSingleWord())
|
||||
VAL = RHS;
|
||||
else {
|
||||
pVal[0] = RHS;
|
||||
memset(pVal+1, 0, (getNumWords() - 1) * APINT_WORD_SIZE);
|
||||
}
|
||||
return clearUnusedBits();
|
||||
}
|
||||
|
||||
/// This method 'profiles' an APInt for use with FoldingSet.
|
||||
void APInt::Profile(FoldingSetNodeID& ID) const {
|
||||
ID.AddInteger(BitWidth);
|
||||
|
Loading…
Reference in New Issue
Block a user