[PATCH] D14082: [ARM] Expand ROTL and ROTR of vector value types
Charlie Turner via llvm-commits
llvm-commits at lists.llvm.org
Mon Oct 26 10:03:04 PDT 2015
chatur01 created this revision.
chatur01 added a reviewer: rengolin.
chatur01 added a subscriber: llvm-commits.
chatur01 set the repository for this revision to rL LLVM.
Herald added subscribers: rengolin, aemerson.
After D13851 landed, we saw backend crashes when compiling the reduced test case included in this patch. The right fix seems to be to allow these vector types for expansion in instruction selection.
Repository:
rL LLVM
http://reviews.llvm.org/D14082
Files:
lib/Target/ARM/ARMISelLowering.cpp
test/CodeGen/ARM/rotate.ll
Index: test/CodeGen/ARM/rotate.ll
===================================================================
--- /dev/null
+++ test/CodeGen/ARM/rotate.ll
@@ -0,0 +1,14 @@
+; RUN: llc < %s -mtriple=thumbv8--linux-gnueabihf | FileCheck %s
+
+;; This used to cause a backend crash about not being able to
+;; select ROTL. Make sure if generates the basic VSHL/VSHR.
+define <2 x i64> @testcase(<2 x i64>* %in) {
+; CHECK-LABEL: testcase
+; CHECK: vshl.i64
+; CHECK: vshr.u64
+ %1 = load <2 x i64>, <2 x i64>* %in
+ %2 = lshr <2 x i64> %1, <i64 8, i64 8>
+ %3 = shl <2 x i64> %1, <i64 56, i64 56>
+ %4 = or <2 x i64> %2, %3
+ ret <2 x i64> %4
+}
Index: lib/Target/ARM/ARMISelLowering.cpp
===================================================================
--- lib/Target/ARM/ARMISelLowering.cpp
+++ lib/Target/ARM/ARMISelLowering.cpp
@@ -718,7 +718,11 @@
}
// ARM does not have ROTL.
- setOperationAction(ISD::ROTL, MVT::i32, Expand);
+ setOperationAction(ISD::ROTL, MVT::i32, Expand);
+ for (MVT VT : MVT::vector_valuetypes()) {
+ setOperationAction(ISD::ROTL, VT, Expand);
+ setOperationAction(ISD::ROTR, VT, Expand);
+ }
setOperationAction(ISD::CTTZ, MVT::i32, Custom);
setOperationAction(ISD::CTPOP, MVT::i32, Expand);
if (!Subtarget->hasV5TOps() || Subtarget->isThumb1Only())
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D14082.38427.patch
Type: text/x-patch
Size: 1304 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20151026/5095401e/attachment.bin>
More information about the llvm-commits
mailing list