Skip to content

Commit c61d198

Browse files
committed
[X86] matchIndexRecursively - pull out repeated getOpcode() calls. NFCI.
1 parent 24f8822 commit c61d198

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

llvm/lib/Target/X86/X86ISelDAGToDAG.cpp

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2226,6 +2226,7 @@ SDValue X86DAGToDAGISel::matchIndexRecursively(SDValue N,
22262226
return N;
22272227

22282228
EVT VT = N.getValueType();
2229+
unsigned Opc = N.getOpcode();
22292230

22302231
// index: add(x,c) -> index: x, disp + c
22312232
if (CurDAG->isBaseWithConstantOffset(N)) {
@@ -2236,15 +2237,15 @@ SDValue X86DAGToDAGISel::matchIndexRecursively(SDValue N,
22362237
}
22372238

22382239
// index: add(x,x) -> index: x, scale * 2
2239-
if (N.getOpcode() == ISD::ADD && N.getOperand(0) == N.getOperand(1)) {
2240+
if (Opc == ISD::ADD && N.getOperand(0) == N.getOperand(1)) {
22402241
if (AM.Scale <= 4) {
22412242
AM.Scale *= 2;
22422243
return matchIndexRecursively(N.getOperand(0), AM, Depth + 1);
22432244
}
22442245
}
22452246

22462247
// index: shl(x,i) -> index: x, scale * (1 << i)
2247-
if (N.getOpcode() == X86ISD::VSHLI) {
2248+
if (Opc == X86ISD::VSHLI) {
22482249
uint64_t ShiftAmt = N.getConstantOperandVal(1);
22492250
uint64_t ScaleAmt = 1ULL << ShiftAmt;
22502251
if ((AM.Scale * ScaleAmt) <= 8) {
@@ -2255,17 +2256,17 @@ SDValue X86DAGToDAGISel::matchIndexRecursively(SDValue N,
22552256

22562257
// index: sext(add_nsw(x,c)) -> index: sext(x), disp + sext(c)
22572258
// TODO: call matchIndexRecursively(AddSrc) if we won't corrupt sext?
2258-
if (N.getOpcode() == ISD::SIGN_EXTEND && !VT.isVector()) {
2259+
if (Opc == ISD::SIGN_EXTEND && !VT.isVector()) {
22592260
SDValue Src = N.getOperand(0);
22602261
if (Src.getOpcode() == ISD::ADD && Src->getFlags().hasNoSignedWrap()) {
22612262
if (CurDAG->isBaseWithConstantOffset(Src)) {
22622263
SDValue AddSrc = Src.getOperand(0);
22632264
auto *AddVal = cast<ConstantSDNode>(Src.getOperand(1));
2264-
uint64_t Offset = (uint64_t)AddVal->getSExtValue() * AM.Scale;
2265-
if (!foldOffsetIntoAddress(Offset, AM)) {
2265+
uint64_t Offset = (uint64_t)AddVal->getSExtValue();
2266+
if (!foldOffsetIntoAddress(Offset * AM.Scale, AM)) {
22662267
SDLoc DL(N);
2267-
SDValue ExtSrc = CurDAG->getNode(ISD::SIGN_EXTEND, DL, VT, AddSrc);
2268-
SDValue ExtVal = CurDAG->getConstant(AddVal->getSExtValue(), DL, VT);
2268+
SDValue ExtSrc = CurDAG->getNode(Opc, DL, VT, AddSrc);
2269+
SDValue ExtVal = CurDAG->getConstant(Offset, DL, VT);
22692270
SDValue ExtAdd = CurDAG->getNode(ISD::ADD, DL, VT, ExtSrc, ExtVal);
22702271
insertDAGNode(*CurDAG, N, ExtSrc);
22712272
insertDAGNode(*CurDAG, N, ExtVal);

0 commit comments

Comments
 (0)