Patch to fix a crash in the PowerPC back end due to ISD::ROTL and ISD::ROTR

not being expanded. Test case included.

llvm-svn: 254501
This commit is contained in:
Nemanja Ivanovic
2015-12-02 10:36:24 +00:00
parent 9db204af65
commit 74e31bc929
2 changed files with 14 additions and 0 deletions

View File

@@ -479,6 +479,8 @@ PPCTargetLowering::PPCTargetLowering(const PPCTargetMachine &TM,
setOperationAction(ISD::CTTZ_ZERO_UNDEF, VT, Expand);
setOperationAction(ISD::VSELECT, VT, Expand);
setOperationAction(ISD::SIGN_EXTEND_INREG, VT, Expand);
setOperationAction(ISD::ROTL, VT, Expand);
setOperationAction(ISD::ROTR, VT, Expand);
for (MVT InnerVT : MVT::vector_valuetypes()) {
setTruncStoreAction(VT, InnerVT, Expand);

View File

@@ -0,0 +1,12 @@
; RUN: llc < %s -mtriple=powerpc64le-unknown-unknown -mcpu=pwr8
; Ensure this does not crash
; Function Attrs: norecurse nounwind
define <4 x i32> @func1 (<4 x i32> %a) {
entry:
%0 = lshr <4 x i32> %a, <i32 16, i32 16, i32 16, i32 16>
%1 = shl <4 x i32> %a, <i32 16, i32 16, i32 16, i32 16>
%2 = or <4 x i32> %1, %0
ret <4 x i32> %2
}