Skip to content

Commit 69115cc

Browse files
committed
[AArch64] Use SelectionDAG::getSignedConstant/getAllOnesConstant.
1 parent efa859c commit 69115cc

File tree

3 files changed

+17
-15
lines changed

3 files changed

+17
-15
lines changed

llvm/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -913,7 +913,8 @@ bool AArch64DAGToDAGISel::SelectRDVLImm(SDValue N, SDValue &Imm) {
913913
if ((MulImm % std::abs(Scale)) == 0) {
914914
int64_t RDVLImm = MulImm / Scale;
915915
if ((RDVLImm >= Low) && (RDVLImm <= High)) {
916-
Imm = CurDAG->getTargetConstant(RDVLImm, SDLoc(N), MVT::i32);
916+
Imm = CurDAG->getSignedConstant(RDVLImm, SDLoc(N), MVT::i32,
917+
/*isTarget=*/true);
917918
return true;
918919
}
919920
}
@@ -4245,7 +4246,7 @@ bool AArch64DAGToDAGISel::SelectSVESignedArithImm(SDValue N, SDValue &Imm) {
42454246
int64_t ImmVal = CNode->getSExtValue();
42464247
SDLoc DL(N);
42474248
if (ImmVal >= -128 && ImmVal < 128) {
4248-
Imm = CurDAG->getTargetConstant(ImmVal, DL, MVT::i32);
4249+
Imm = CurDAG->getSignedConstant(ImmVal, DL, MVT::i32, /*isTarget=*/true);
42494250
return true;
42504251
}
42514252
}

llvm/lib/Target/AArch64/AArch64ISelLowering.cpp

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3970,9 +3970,9 @@ static SDValue getAArch64Cmp(SDValue LHS, SDValue RHS, ISD::CondCode CC,
39703970
SDValue SExt =
39713971
DAG.getNode(ISD::SIGN_EXTEND_INREG, dl, LHS.getValueType(), LHS,
39723972
DAG.getValueType(MVT::i16));
3973-
Cmp = emitComparison(SExt, DAG.getConstant(ValueofRHS, dl,
3974-
RHS.getValueType()),
3975-
CC, dl, DAG);
3973+
Cmp = emitComparison(
3974+
SExt, DAG.getSignedConstant(ValueofRHS, dl, RHS.getValueType()), CC,
3975+
dl, DAG);
39763976
AArch64CC = changeIntCCToAArch64CC(CC);
39773977
}
39783978
}
@@ -4158,7 +4158,7 @@ SDValue AArch64TargetLowering::LowerXOR(SDValue Op, SelectionDAG &DAG) const {
41584158

41594159
FVal = Other;
41604160
TVal = DAG.getNode(ISD::XOR, dl, Other.getValueType(), Other,
4161-
DAG.getConstant(-1ULL, dl, Other.getValueType()));
4161+
DAG.getAllOnesConstant(dl, Other.getValueType()));
41624162

41634163
return DAG.getNode(AArch64ISD::CSEL, dl, Sel.getValueType(), FVal, TVal,
41644164
CCVal, Cmp);
@@ -8966,7 +8966,8 @@ AArch64TargetLowering::LowerCall(CallLoweringInfo &CLI,
89668966
// Each tail call may have to adjust the stack by a different amount, so
89678967
// this information must travel along with the operation for eventual
89688968
// consumption by emitEpilogue.
8969-
Ops.push_back(DAG.getTargetConstant(FPDiff, DL, MVT::i32));
8969+
Ops.push_back(
8970+
DAG.getSignedConstant(FPDiff, DL, MVT::i32, /*isTarget=*/true));
89708971
}
89718972

89728973
if (CLI.PAI) {
@@ -11144,7 +11145,7 @@ SDValue AArch64TargetLowering::LowerAAPCS_VASTART(SDValue Op,
1114411145

1114511146
GRTop = DAG.getFrameIndex(FuncInfo->getVarArgsGPRIndex(), PtrVT);
1114611147
GRTop = DAG.getNode(ISD::ADD, DL, PtrVT, GRTop,
11147-
DAG.getConstant(GPRSize, DL, PtrVT));
11148+
DAG.getSignedConstant(GPRSize, DL, PtrVT));
1114811149
GRTop = DAG.getZExtOrTrunc(GRTop, DL, PtrMemVT);
1114911150

1115011151
MemOps.push_back(DAG.getStore(Chain, DL, GRTop, GRTopAddr,
@@ -11162,7 +11163,7 @@ SDValue AArch64TargetLowering::LowerAAPCS_VASTART(SDValue Op,
1116211163

1116311164
VRTop = DAG.getFrameIndex(FuncInfo->getVarArgsFPRIndex(), PtrVT);
1116411165
VRTop = DAG.getNode(ISD::ADD, DL, PtrVT, VRTop,
11165-
DAG.getConstant(FPRSize, DL, PtrVT));
11166+
DAG.getSignedConstant(FPRSize, DL, PtrVT));
1116611167
VRTop = DAG.getZExtOrTrunc(VRTop, DL, PtrMemVT);
1116711168

1116811169
MemOps.push_back(DAG.getStore(Chain, DL, VRTop, VRTopAddr,
@@ -11175,15 +11176,15 @@ SDValue AArch64TargetLowering::LowerAAPCS_VASTART(SDValue Op,
1117511176
SDValue GROffsAddr = DAG.getNode(ISD::ADD, DL, PtrVT, VAList,
1117611177
DAG.getConstant(Offset, DL, PtrVT));
1117711178
MemOps.push_back(
11178-
DAG.getStore(Chain, DL, DAG.getConstant(-GPRSize, DL, MVT::i32),
11179+
DAG.getStore(Chain, DL, DAG.getSignedConstant(-GPRSize, DL, MVT::i32),
1117911180
GROffsAddr, MachinePointerInfo(SV, Offset), Align(4)));
1118011181

1118111182
// int __vr_offs at offset 28 (16 on ILP32)
1118211183
Offset += 4;
1118311184
SDValue VROffsAddr = DAG.getNode(ISD::ADD, DL, PtrVT, VAList,
1118411185
DAG.getConstant(Offset, DL, PtrVT));
1118511186
MemOps.push_back(
11186-
DAG.getStore(Chain, DL, DAG.getConstant(-FPRSize, DL, MVT::i32),
11187+
DAG.getStore(Chain, DL, DAG.getSignedConstant(-FPRSize, DL, MVT::i32),
1118711188
VROffsAddr, MachinePointerInfo(SV, Offset), Align(4)));
1118811189

1118911190
return DAG.getNode(ISD::TokenFactor, DL, MVT::Other, MemOps);
@@ -15620,7 +15621,7 @@ SDValue AArch64TargetLowering::LowerATOMIC_LOAD_AND(SDValue Op,
1562015621
assert(VT != MVT::i128 && "Handled elsewhere, code replicated.");
1562115622
SDValue RHS = Op.getOperand(2);
1562215623
AtomicSDNode *AN = cast<AtomicSDNode>(Op.getNode());
15623-
RHS = DAG.getNode(ISD::XOR, dl, VT, DAG.getConstant(-1ULL, dl, VT), RHS);
15624+
RHS = DAG.getNode(ISD::XOR, dl, VT, DAG.getAllOnesConstant(dl, VT), RHS);
1562415625
return DAG.getAtomic(ISD::ATOMIC_LOAD_CLR, dl, AN->getMemoryVT(),
1562515626
Op.getOperand(0), Op.getOperand(1), RHS,
1562615627
AN->getMemOperand());
@@ -21506,7 +21507,7 @@ static SDValue tryConvertSVEWideCompare(SDNode *N, ISD::CondCode CC,
2150621507
if (auto *CN = dyn_cast<ConstantSDNode>(Comparator.getOperand(0))) {
2150721508
int64_t ImmVal = CN->getSExtValue();
2150821509
if (ImmVal >= -16 && ImmVal <= 15)
21509-
Imm = DAG.getConstant(ImmVal, DL, MVT::i32);
21510+
Imm = DAG.getSignedConstant(ImmVal, DL, MVT::i32);
2151021511
else
2151121512
return SDValue();
2151221513
}
@@ -24400,7 +24401,7 @@ static SDValue performSETCCCombine(SDNode *N,
2440024401
// this pattern will get better opt in emitComparison
2440124402
uint64_t TstImm = -1ULL << LHS->getConstantOperandVal(1);
2440224403
SDValue TST = DAG.getNode(ISD::AND, DL, TstVT, LHS->getOperand(0),
24403-
DAG.getConstant(TstImm, DL, TstVT));
24404+
DAG.getSignedConstant(TstImm, DL, TstVT));
2440424405
return DAG.getNode(ISD::SETCC, DL, VT, TST, RHS, N->getOperand(2));
2440524406
}
2440624407
}

llvm/lib/Target/AArch64/AArch64InstrInfo.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2214,7 +2214,7 @@ def s64imm_32bit : ImmLeaf<i64, [{
22142214
}]>;
22152215

22162216
def trunc_imm : SDNodeXForm<imm, [{
2217-
return CurDAG->getTargetConstant(N->getZExtValue(), SDLoc(N), MVT::i32);
2217+
return CurDAG->getTargetConstant((uint32_t)N->getZExtValue(), SDLoc(N), MVT::i32);
22182218
}]>;
22192219

22202220
def gi_trunc_imm : GICustomOperandRenderer<"renderTruncImm">,

0 commit comments

Comments
 (0)