diff --git a/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp b/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp index a69e303128b3..cb106c83ec12 100644 --- a/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp +++ b/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp @@ -3173,6 +3173,7 @@ bool HexagonTargetLowering::allowsMisalignedMemoryAccesses(EVT VT, return false; } + std::pair HexagonTargetLowering::findRepresentativeClass(const TargetRegisterInfo *TRI, MVT VT) const { diff --git a/llvm/test/CodeGen/Hexagon/misaligned_double_vector_store_not_fast.ll b/llvm/test/CodeGen/Hexagon/misaligned_double_vector_store_not_fast.ll deleted file mode 100644 index 451feef8a367..000000000000 --- a/llvm/test/CodeGen/Hexagon/misaligned_double_vector_store_not_fast.ll +++ /dev/null @@ -1,46 +0,0 @@ -; RUN: llc -march=hexagon -O3 -debug-only=isel 2>&1 < %s | FileCheck %s - -; DAGCombiner converts the two vector stores to a double vector store, -; even if the double vector store is unaligned. This is not good. If it -; is unaligned, we should let the DAGCombiner know that it is slow via -; the allowsMisalignedAccess function in HexagonISelLowering. - -; CHECK-NOT: store - -target triple = "hexagon-unknown--elf" - -; Function Attrs: nounwind -define void @__processed() #0 { -entry: - br label %"for demosaiced.s0.y.y" - -"for demosaiced.s0.y.y": ; preds = %"for demosaiced.s0.y.y", %entry - %demosaiced.s0.y.y = phi i32 [ 0, %entry ], [ %0, %"for demosaiced.s0.y.y" ] - %0 = add nuw nsw i32 %demosaiced.s0.y.y, 1 - %1 = mul nuw nsw i32 %demosaiced.s0.y.y, 256 - %2 = tail call <64 x i32> @llvm.hexagon.V6.vshuffvdd.128B(<32 x i32> undef, <32 x i32> undef, i32 -2) - %3 = bitcast <64 x i32> %2 to <128 x i16> - %4 = shufflevector <128 x i16> %3, <128 x i16> undef, <64 x i32> - %5 = add nuw nsw i32 %1, 32896 - %6 = getelementptr inbounds i16, i16* undef, i32 %5 - %7 = bitcast i16* %6 to <64 x i16>* - store <64 x i16> %4, <64 x i16>* %7, align 128 - %8 = shufflevector <128 x i16> %3, <128 x i16> undef, <64 x i32> - %9 = add nuw nsw i32 %1, 32960 - %10 = getelementptr inbounds i16, i16* undef, i32 %9 - %11 = bitcast i16* %10 to <64 x i16>* - store <64 x i16> %8, <64 x i16>* %11, align 128 - br i1 false, label %"consume demosaiced", label %"for demosaiced.s0.y.y" - -"consume demosaiced": ; preds = %"for demosaiced.s0.y.y" - unreachable - -"consume processed": ; preds = %"produce processed" - ret void -} - -declare <64 x i32> @llvm.hexagon.V6.vshuffvdd.128B(<32 x i32>, <32 x i32>, i32) #1 - -attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-double" } -attributes #1 = { nounwind readnone "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-double" } -