[llvm] r323912 - [Hexagon] Handle ANY_EXTEND_VECTOR_INREG in lowering

Krzysztof Parzyszek via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 31 12:48:11 PST 2018


Author: kparzysz
Date: Wed Jan 31 12:48:11 2018
New Revision: 323912

URL: http://llvm.org/viewvc/llvm-project?rev=323912&view=rev
Log:
[Hexagon] Handle ANY_EXTEND_VECTOR_INREG in lowering

Added:
    llvm/trunk/test/CodeGen/Hexagon/autohvx/isel-anyext-inreg.ll
Modified:
    llvm/trunk/lib/Target/Hexagon/HexagonISelLowering.cpp

Modified: llvm/trunk/lib/Target/Hexagon/HexagonISelLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Hexagon/HexagonISelLowering.cpp?rev=323912&r1=323911&r2=323912&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Hexagon/HexagonISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/Hexagon/HexagonISelLowering.cpp Wed Jan 31 12:48:11 2018
@@ -3261,6 +3261,10 @@ HexagonTargetLowering::LowerOperation(SD
       if (Subtarget.useHVXOps())
         return LowerHvxMulh(Op, DAG);
       break;
+    case ISD::ANY_EXTEND_VECTOR_INREG:
+      if (Subtarget.useHVXOps())
+        return LowerHvxExtend(Op, DAG);
+      break;
   }
   return SDValue();
 }

Added: llvm/trunk/test/CodeGen/Hexagon/autohvx/isel-anyext-inreg.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Hexagon/autohvx/isel-anyext-inreg.ll?rev=323912&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/Hexagon/autohvx/isel-anyext-inreg.ll (added)
+++ llvm/trunk/test/CodeGen/Hexagon/autohvx/isel-anyext-inreg.ll Wed Jan 31 12:48:11 2018
@@ -0,0 +1,20 @@
+; RUN: llc -march=hexagon < %s | FileCheck %s
+
+; This code causes any_extend_vector_inreg to appear in the selection DAG.
+; Make sure that it is handled instead of crashing.
+; CHECK: vmem
+
+target datalayout = "e-m:e-p:32:32:32-a:0-n16:32-i64:64:64-i32:32:32-i16:16:16-i1:8:8-f32:32:32-f64:64:64-v32:32:32-v64:64:64-v512:512:512-v1024:1024:1024-v2048:2048:2048"
+target triple = "hexagon"
+
+define hidden fastcc void @fred() #0 {
+b0:
+  %v1 = load i16, i16* undef, align 2
+  %v2 = insertelement <16 x i16> undef, i16 %v1, i32 15
+  %v3 = zext <16 x i16> %v2 to <16 x i32>
+  %v4 = shl nuw <16 x i32> %v3, <i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16>
+  store <16 x i32> %v4, <16 x i32>* undef, align 4
+  unreachable
+}
+
+attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-length64b" }




More information about the llvm-commits mailing list