Skip to content

Commit d813414

Browse files
committed
Move restriction to the default implementation of isDesirableToCommuteWithShift for targets
1 parent c06290f commit d813414

File tree

7 files changed

+16
-51
lines changed

7 files changed

+16
-51
lines changed

llvm/include/llvm/CodeGen/TargetLowering.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4305,6 +4305,12 @@ class TargetLowering : public TargetLoweringBase {
43054305
/// @param Level the current DAGCombine legalization level.
43064306
virtual bool isDesirableToCommuteWithShift(const SDNode *N,
43074307
CombineLevel Level) const {
4308+
SDValue ShiftLHS = N->getOperand(0);
4309+
if (!ShiftLHS->hasOneUse())
4310+
return false;
4311+
if (ShiftLHS.getOpcode() == ISD::SIGN_EXTEND &&
4312+
!ShiftLHS.getOperand(0)->hasOneUse())
4313+
return false;
43084314
return true;
43094315
}
43104316

llvm/lib/Target/Hexagon/HexagonISelLowering.cpp

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2152,24 +2152,6 @@ bool HexagonTargetLowering::hasBitTest(SDValue X, SDValue Y) const {
21522152
return X.getValueType().isScalarInteger(); // 'tstbit'
21532153
}
21542154

2155-
bool HexagonTargetLowering::isDesirableToCommuteWithShift(
2156-
const SDNode *N, CombineLevel Level) const {
2157-
assert((N->getOpcode() == ISD::SHL || N->getOpcode() == ISD::SRA ||
2158-
N->getOpcode() == ISD::SRL) &&
2159-
"Expected shift op");
2160-
2161-
SDValue ShiftLHS = N->getOperand(0);
2162-
2163-
if (!ShiftLHS->hasOneUse())
2164-
return false;
2165-
2166-
if (ShiftLHS.getOpcode() == ISD::SIGN_EXTEND &&
2167-
!ShiftLHS.getOperand(0)->hasOneUse())
2168-
return false;
2169-
2170-
return true;
2171-
}
2172-
21732155
bool HexagonTargetLowering::isTruncateFree(Type *Ty1, Type *Ty2) const {
21742156
return isTruncateFree(EVT::getEVT(Ty1), EVT::getEVT(Ty2));
21752157
}

llvm/lib/Target/Hexagon/HexagonISelLowering.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -155,9 +155,6 @@ class HexagonTargetLowering : public TargetLowering {
155155

156156
bool hasBitTest(SDValue X, SDValue Y) const override;
157157

158-
bool isDesirableToCommuteWithShift(const SDNode *N,
159-
CombineLevel Level) const override;
160-
161158
bool allowTruncateForTailCall(Type *Ty1, Type *Ty2) const override;
162159

163160
/// Return true if an FMA operation is faster than a pair of mul and add

llvm/lib/Target/PowerPC/PPCISelLowering.cpp

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -19166,20 +19166,3 @@ Value *PPCTargetLowering::emitMaskedAtomicCmpXchgIntrinsic(
1916619166
return Builder.CreateOr(
1916719167
Lo, Builder.CreateShl(Hi, ConstantInt::get(ValTy, 64)), "val64");
1916819168
}
19169-
19170-
bool PPCTargetLowering::isDesirableToCommuteWithShift(
19171-
const SDNode *N, CombineLevel Level) const {
19172-
assert((N->getOpcode() == ISD::SHL || N->getOpcode() == ISD::SRA ||
19173-
N->getOpcode() == ISD::SRL) &&
19174-
"Expected shift op");
19175-
19176-
SDValue ShiftLHS = N->getOperand(0);
19177-
if (!ShiftLHS->hasOneUse())
19178-
return false;
19179-
19180-
if (ShiftLHS.getOpcode() == ISD::SIGN_EXTEND &&
19181-
!ShiftLHS.getOperand(0)->hasOneUse())
19182-
return false;
19183-
19184-
return true;
19185-
}

llvm/lib/Target/PowerPC/PPCISelLowering.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1497,9 +1497,6 @@ namespace llvm {
14971497
/// through to determine the optimal load/store instruction format.
14981498
unsigned computeMOFlags(const SDNode *Parent, SDValue N,
14991499
SelectionDAG &DAG) const;
1500-
1501-
bool isDesirableToCommuteWithShift(const SDNode *N,
1502-
CombineLevel Level) const override;
15031500
}; // end class PPCTargetLowering
15041501

15051502
namespace PPC {

llvm/test/CodeGen/RISCV/add_sext_shl_constant.ll

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ define void @add_sext_shl_moreOneUse_addexceedsign12(ptr %array1, i32 %a, i32 %b
3232
; RV64-LABEL: add_sext_shl_moreOneUse_addexceedsign12:
3333
; RV64: # %bb.0: # %entry
3434
; RV64-NEXT: addi a3, a1, 2047
35-
; RV64-NEXT: addi a3, a3, 1
3635
; RV64-NEXT: lui a4, 2
3736
; RV64-NEXT: sext.w a1, a1
37+
; RV64-NEXT: addi a3, a3, 1
3838
; RV64-NEXT: slli a1, a1, 2
3939
; RV64-NEXT: add a0, a0, a4
4040
; RV64-NEXT: add a0, a0, a1
@@ -121,19 +121,19 @@ define void @add_sext_shl_moreOneUse_add_inSelect_addexceedsign12(ptr %array1, i
121121
; RV64-LABEL: add_sext_shl_moreOneUse_add_inSelect_addexceedsign12:
122122
; RV64: # %bb.0: # %entry
123123
; RV64-NEXT: addi a4, a1, 2047
124-
; RV64-NEXT: addi a4, a4, 1
125124
; RV64-NEXT: lui a5, 2
126-
; RV64-NEXT: slli a1, a1, 2
127-
; RV64-NEXT: add a0, a0, a1
125+
; RV64-NEXT: slli a6, a1, 2
126+
; RV64-NEXT: addi a1, a4, 1
127+
; RV64-NEXT: add a0, a0, a6
128128
; RV64-NEXT: add a0, a0, a5
129-
; RV64-NEXT: mv a1, a4
129+
; RV64-NEXT: mv a4, a1
130130
; RV64-NEXT: bgtz a3, .LBB4_2
131131
; RV64-NEXT: # %bb.1: # %entry
132-
; RV64-NEXT: mv a1, a2
132+
; RV64-NEXT: mv a4, a2
133133
; RV64-NEXT: .LBB4_2: # %entry
134-
; RV64-NEXT: sw a1, 0(a0)
135-
; RV64-NEXT: sw a1, 4(a0)
136-
; RV64-NEXT: sw a4, 120(a0)
134+
; RV64-NEXT: sw a4, 0(a0)
135+
; RV64-NEXT: sw a4, 4(a0)
136+
; RV64-NEXT: sw a1, 120(a0)
137137
; RV64-NEXT: ret
138138
entry:
139139
%add = add nsw i32 %a, 2048

llvm/test/CodeGen/RISCV/add_shl_constant.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ define void @add_shl_moreOneUse_inStore_addexceedsign12(ptr %array1, i32 %a, i32
4040
; RV32-LABEL: add_shl_moreOneUse_inStore_addexceedsign12:
4141
; RV32: # %bb.0: # %entry
4242
; RV32-NEXT: addi a3, a1, 2047
43-
; RV32-NEXT: addi a3, a3, 1
4443
; RV32-NEXT: lui a4, 2
4544
; RV32-NEXT: slli a1, a1, 2
45+
; RV32-NEXT: addi a3, a3, 1
4646
; RV32-NEXT: add a0, a0, a1
4747
; RV32-NEXT: add a0, a0, a4
4848
; RV32-NEXT: sw a2, 0(a0)

0 commit comments

Comments
 (0)