Lines Matching +full:x +full:- +full:mask +full:-
1 //===- CmpInstAnalysis.cpp - Utils to help fold compares ---------------===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
12 //===----------------------------------------------------------------------===//
23 // False -> 0 in getICmpCode()
34 // True -> 7 in getICmpCode()
78 Value *&X, APInt &Mask, bool LookThruTrunc) { in decomposeBitTestICmp() argument
89 // X < 0 is equivalent to (X & SignMask) != 0. in decomposeBitTestICmp()
90 if (!C->isZero()) in decomposeBitTestICmp()
92 Mask = APInt::getSignMask(C->getBitWidth()); in decomposeBitTestICmp()
96 // X <= -1 is equivalent to (X & SignMask) != 0. in decomposeBitTestICmp()
97 if (!C->isAllOnes()) in decomposeBitTestICmp()
99 Mask = APInt::getSignMask(C->getBitWidth()); in decomposeBitTestICmp()
103 // X > -1 is equivalent to (X & SignMask) == 0. in decomposeBitTestICmp()
104 if (!C->isAllOnes()) in decomposeBitTestICmp()
106 Mask = APInt::getSignMask(C->getBitWidth()); in decomposeBitTestICmp()
110 // X >= 0 is equivalent to (X & SignMask) == 0. in decomposeBitTestICmp()
111 if (!C->isZero()) in decomposeBitTestICmp()
113 Mask = APInt::getSignMask(C->getBitWidth()); in decomposeBitTestICmp()
117 // X <u 2^n is equivalent to (X & ~(2^n-1)) == 0. in decomposeBitTestICmp()
118 if (!C->isPowerOf2()) in decomposeBitTestICmp()
120 Mask = -*C; in decomposeBitTestICmp()
124 // X <=u 2^n-1 is equivalent to (X & ~(2^n-1)) == 0. in decomposeBitTestICmp()
127 Mask = ~*C; in decomposeBitTestICmp()
131 // X >u 2^n-1 is equivalent to (X & ~(2^n-1)) != 0. in decomposeBitTestICmp()
134 Mask = ~*C; in decomposeBitTestICmp()
138 // X >=u 2^n is equivalent to (X & ~(2^n-1)) != 0. in decomposeBitTestICmp()
139 if (!C->isPowerOf2()) in decomposeBitTestICmp()
141 Mask = -*C; in decomposeBitTestICmp()
146 if (LookThruTrunc && match(LHS, m_Trunc(m_Value(X)))) { in decomposeBitTestICmp()
147 Mask = Mask.zext(X->getType()->getScalarSizeInBits()); in decomposeBitTestICmp()
149 X = LHS; in decomposeBitTestICmp()