[llvm] a6fb1bb - [ARM] Remove unused lowerABS function. NFC
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Sun Feb 20 22:48:52 PST 2022
Author: Craig Topper
Date: 2022-02-20T22:43:23-08:00
New Revision: a6fb1bb3061b4f6e01b9402bde1bef280bb90811
URL: https://github.com/llvm/llvm-project/commit/a6fb1bb3061b4f6e01b9402bde1bef280bb90811
DIFF: https://github.com/llvm/llvm-project/commit/a6fb1bb3061b4f6e01b9402bde1bef280bb90811.diff
LOG: [ARM] Remove unused lowerABS function. NFC
This function was added in D49837, but no setOperationAction call
was added with it. The code is equivalent to what is done by the
default ExpandIntRes_ABS implementation when ADDCARRY is supported.
Test case added to verify this. There was some existing coverage
from Thumb2 MVE tests, but they started from vectors.
Added:
Modified:
llvm/lib/Target/ARM/ARMISelLowering.cpp
llvm/lib/Target/ARM/ARMISelLowering.h
llvm/test/CodeGen/ARM/iabs.ll
Removed:
################################################################################
diff --git a/llvm/lib/Target/ARM/ARMISelLowering.cpp b/llvm/lib/Target/ARM/ARMISelLowering.cpp
index 34add2c7a811b..93193e97820d8 100644
--- a/llvm/lib/Target/ARM/ARMISelLowering.cpp
+++ b/llvm/lib/Target/ARM/ARMISelLowering.cpp
@@ -10514,9 +10514,6 @@ void ARMTargetLowering::ReplaceNodeResults(SDNode *N,
return;
case ISD::INTRINSIC_WO_CHAIN:
return ReplaceLongIntrinsic(N, Results, DAG);
- case ISD::ABS:
- lowerABS(N, Results, DAG);
- return ;
case ISD::LOAD:
LowerLOAD(N, Results, DAG);
break;
@@ -20541,38 +20538,6 @@ SDValue ARMTargetLowering::LowerFP_ROUND(SDValue Op, SelectionDAG &DAG) const {
return IsStrict ? DAG.getMergeValues({Result, Chain}, Loc) : Result;
}
-void ARMTargetLowering::lowerABS(SDNode *N, SmallVectorImpl<SDValue> &Results,
- SelectionDAG &DAG) const {
- assert(N->getValueType(0) == MVT::i64 && "Unexpected type (!= i64) on ABS.");
- MVT HalfT = MVT::i32;
- SDLoc dl(N);
- SDValue Hi, Lo, Tmp;
-
- if (!isOperationLegalOrCustom(ISD::ADDCARRY, HalfT) ||
- !isOperationLegalOrCustom(ISD::UADDO, HalfT))
- return ;
-
- unsigned OpTypeBits = HalfT.getScalarSizeInBits();
- SDVTList VTList = DAG.getVTList(HalfT, MVT::i1);
-
- Lo = DAG.getNode(ISD::EXTRACT_ELEMENT, dl, HalfT, N->getOperand(0),
- DAG.getConstant(0, dl, HalfT));
- Hi = DAG.getNode(ISD::EXTRACT_ELEMENT, dl, HalfT, N->getOperand(0),
- DAG.getConstant(1, dl, HalfT));
-
- Tmp = DAG.getNode(ISD::SRA, dl, HalfT, Hi,
- DAG.getConstant(OpTypeBits - 1, dl,
- getShiftAmountTy(HalfT, DAG.getDataLayout())));
- Lo = DAG.getNode(ISD::UADDO, dl, VTList, Tmp, Lo);
- Hi = DAG.getNode(ISD::ADDCARRY, dl, VTList, Tmp, Hi,
- SDValue(Lo.getNode(), 1));
- Hi = DAG.getNode(ISD::XOR, dl, HalfT, Tmp, Hi);
- Lo = DAG.getNode(ISD::XOR, dl, HalfT, Tmp, Lo);
-
- Results.push_back(Lo);
- Results.push_back(Hi);
-}
-
bool
ARMTargetLowering::isOffsetFoldingLegal(const GlobalAddressSDNode *GA) const {
// The ARM target isn't yet aware of offsets.
diff --git a/llvm/lib/Target/ARM/ARMISelLowering.h b/llvm/lib/Target/ARM/ARMISelLowering.h
index 1c5f8389f57cd..08ccd9db1bb01 100644
--- a/llvm/lib/Target/ARM/ARMISelLowering.h
+++ b/llvm/lib/Target/ARM/ARMISelLowering.h
@@ -845,8 +845,6 @@ class VectorType;
SDValue LowerFP_TO_INT(SDValue Op, SelectionDAG &DAG) const;
SDValue LowerINT_TO_FP(SDValue Op, SelectionDAG &DAG) const;
SDValue LowerFSETCC(SDValue Op, SelectionDAG &DAG) const;
- void lowerABS(SDNode *N, SmallVectorImpl<SDValue> &Results,
- SelectionDAG &DAG) const;
void LowerLOAD(SDNode *N, SmallVectorImpl<SDValue> &Results,
SelectionDAG &DAG) const;
diff --git a/llvm/test/CodeGen/ARM/iabs.ll b/llvm/test/CodeGen/ARM/iabs.ll
index c52caf605dd1a..00ad2be2edeb9 100644
--- a/llvm/test/CodeGen/ARM/iabs.ll
+++ b/llvm/test/CodeGen/ARM/iabs.ll
@@ -32,3 +32,17 @@ entry:
%cond = select i1 %cmp, i32 %sub, i32 %sub1
ret i32 %cond
}
+
+define i64 @test3(i64 %a) {
+; CHECK-LABEL: test3:
+; CHECK: @ %bb.0:
+; CHECK-NEXT: adds r0, r0, r1, asr #31
+; CHECK-NEXT: adc r2, r1, r1, asr #31
+; CHECK-NEXT: eor r0, r0, r1, asr #31
+; CHECK-NEXT: eor r1, r2, r1, asr #31
+; CHECK-NEXT: bx lr
+ %tmp1neg = sub i64 0, %a
+ %b = icmp sgt i64 %a, -1
+ %abs = select i1 %b, i64 %a, i64 %tmp1neg
+ ret i64 %abs
+}
More information about the llvm-commits
mailing list