From 57f162d4499441131947224684208d8eeac8acba Mon Sep 17 00:00:00 2001 From: Krzysztof Parzyszek Date: Thu, 5 Sep 2019 16:19:47 +0000 Subject: [PATCH] [Hexagon] Fix type in HexagonTargetLowering::ReplaceNodeResults git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@371083 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/Hexagon/HexagonISelLowering.cpp | 3 ++- test/CodeGen/Hexagon/isel-bitcast-v8i1-i8.ll | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 test/CodeGen/Hexagon/isel-bitcast-v8i1-i8.ll diff --git a/lib/Target/Hexagon/HexagonISelLowering.cpp b/lib/Target/Hexagon/HexagonISelLowering.cpp index 8cdf06252ad..9fa7cead193 100644 --- a/lib/Target/Hexagon/HexagonISelLowering.cpp +++ b/lib/Target/Hexagon/HexagonISelLowering.cpp @@ -2902,7 +2902,8 @@ HexagonTargetLowering::ReplaceNodeResults(SDNode *N, if (N->getValueType(0) == MVT::i8) { SDValue P = getInstr(Hexagon::C2_tfrpr, dl, MVT::i32, N->getOperand(0), DAG); - Results.push_back(P); + SDValue T = DAG.getAnyExtOrTrunc(P, dl, MVT::i8); + Results.push_back(T); } break; } diff --git a/test/CodeGen/Hexagon/isel-bitcast-v8i1-i8.ll b/test/CodeGen/Hexagon/isel-bitcast-v8i1-i8.ll new file mode 100644 index 00000000000..37b82433dd7 --- /dev/null +++ b/test/CodeGen/Hexagon/isel-bitcast-v8i1-i8.ll @@ -0,0 +1,18 @@ +; RUN: llc -march=hexagon < %s | FileCheck %s +; REQUIRES: asserts + +; Check that this doesn't crash. +; CHECK-LABEL: foo: +; CHECK: p[[P:[0-3]]] = vcmpb.eq +; CHECK: r[[R:[0-9]+]] = p[[P]] +; CHECK: and(r[[R]],#32) + +define i32 @foo(<8 x i8> %a0, <8 x i8> %a1) #0 { + %v0 = icmp eq <8 x i8> %a0, %a1 + %v1 = bitcast <8 x i1> %v0 to i8 + %v2 = and i8 %v1, 32 + %v3 = zext i8 %v2 to i32 + ret i32 %v3 +} + +attributes #0 = { readnone nounwind } -- 2.40.0