[llvm] r255928 - Revert "[AArch64] Add DAG combine for extract extend pattern"
Matthew Simpson via llvm-commits
llvm-commits at lists.llvm.org
Thu Dec 17 13:29:47 PST 2015
Author: mssimpso
Date: Thu Dec 17 15:29:47 2015
New Revision: 255928
URL: http://llvm.org/viewvc/llvm-project?rev=255928&view=rev
Log:
Revert "[AArch64] Add DAG combine for extract extend pattern"
This reverts commit r255895. The patch breaks internal tests. Reverting until a
fix is ready.
Modified:
llvm/trunk/lib/Target/AArch64/AArch64ISelLowering.cpp
llvm/trunk/test/CodeGen/AArch64/arm64-neon-copy.ll
Modified: llvm/trunk/lib/Target/AArch64/AArch64ISelLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AArch64ISelLowering.cpp?rev=255928&r1=255927&r2=255928&view=diff
==============================================================================
--- llvm/trunk/lib/Target/AArch64/AArch64ISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/AArch64/AArch64ISelLowering.cpp Thu Dec 17 15:29:47 2015
@@ -8450,25 +8450,6 @@ static SDValue performExtendCombine(SDNo
}
}
- const TargetLowering &TLI = DAG.getTargetLoweringInfo();
-
- // If we see (any_extend (extract_vector_element v, i)), we can potentially
- // remove the extend and promote the extract. We can do this if the vector
- // type is legal and if the result is sign extended from the element type.
- if (DCI.isAfterLegalizeVectorOps() && N->getOpcode() == ISD::ANY_EXTEND &&
- N->hasOneUse() && N->use_begin()->getOpcode() == ISD::SIGN_EXTEND_INREG) {
- const SDValue &M = N->getOperand(0);
- if (M.getNode()->hasOneUse() && M.getOpcode() == ISD::EXTRACT_VECTOR_ELT) {
- EVT DstTy = N->getValueType(0);
- EVT SrcTy = cast<VTSDNode>(N->use_begin()->getOperand(1))->getVT();
- EVT VecTy = M.getOperand(0).getValueType();
- EVT ElmTy = VecTy.getScalarType();
- if (TLI.isTypeLegal(VecTy) && SrcTy == ElmTy)
- return DAG.getNode(ISD::EXTRACT_VECTOR_ELT, SDLoc(N), DstTy,
- M.getOperand(0), M.getOperand(1));
- }
- }
-
// This is effectively a custom type legalization for AArch64.
//
// Type legalization will split an extend of a small, legal, type to a larger
@@ -8499,6 +8480,7 @@ static SDValue performExtendCombine(SDNo
// We're only interested in cleaning things up for non-legal vector types
// here. If both the source and destination are legal, things will just
// work naturally without any fiddling.
+ const TargetLowering &TLI = DAG.getTargetLoweringInfo();
EVT ResVT = N->getValueType(0);
if (!ResVT.isVector() || TLI.isTypeLegal(ResVT))
return SDValue();
Modified: llvm/trunk/test/CodeGen/AArch64/arm64-neon-copy.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AArch64/arm64-neon-copy.ll?rev=255928&r1=255927&r2=255928&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/AArch64/arm64-neon-copy.ll (original)
+++ llvm/trunk/test/CodeGen/AArch64/arm64-neon-copy.ll Thu Dec 17 15:29:47 2015
@@ -320,20 +320,21 @@ define i32 @smovw8h(<8 x i16> %tmp1) {
ret i32 %tmp5
}
-define i64 @smovx16b(<16 x i8> %tmp1) {
+define i32 @smovx16b(<16 x i8> %tmp1) {
; CHECK-LABEL: smovx16b:
-; CHECK: smov {{x[0-9]+}}, {{v[0-9]+}}.b[8]
+; CHECK: smov {{[xw][0-9]+}}, {{v[0-9]+}}.b[8]
%tmp3 = extractelement <16 x i8> %tmp1, i32 8
- %tmp4 = sext i8 %tmp3 to i64
- ret i64 %tmp4
+ %tmp4 = sext i8 %tmp3 to i32
+ %tmp5 = add i32 %tmp4, %tmp4
+ ret i32 %tmp5
}
-define i64 @smovx8h(<8 x i16> %tmp1) {
+define i32 @smovx8h(<8 x i16> %tmp1) {
; CHECK-LABEL: smovx8h:
-; CHECK: smov {{x[0-9]+}}, {{v[0-9]+}}.h[2]
+; CHECK: smov {{[xw][0-9]+}}, {{v[0-9]+}}.h[2]
%tmp3 = extractelement <8 x i16> %tmp1, i32 2
- %tmp4 = sext i16 %tmp3 to i64
- ret i64 %tmp4
+ %tmp4 = sext i16 %tmp3 to i32
+ ret i32 %tmp4
}
define i64 @smovx4s(<4 x i32> %tmp1) {
More information about the llvm-commits
mailing list