| OLD | NEW |
| 1 ; RUN: llc < %s -march=arm -mcpu=cortex-a8 | FileCheck %s | 1 ; RUN: llc < %s -march=arm -mcpu=cortex-a8 | FileCheck %s |
| 2 | 2 |
| 3 define <8 x i8> @vmuli8(<8 x i8>* %A, <8 x i8>* %B) nounwind { | 3 define <8 x i8> @vmuli8(<8 x i8>* %A, <8 x i8>* %B) nounwind { |
| 4 ;CHECK: vmuli8: | 4 ;CHECK: vmuli8: |
| 5 ;CHECK: vmul.i8 | 5 ;CHECK: vmul.i8 |
| 6 %tmp1 = load <8 x i8>* %A | 6 %tmp1 = load <8 x i8>* %A |
| 7 %tmp2 = load <8 x i8>* %B | 7 %tmp2 = load <8 x i8>* %B |
| 8 %tmp3 = mul <8 x i8> %tmp1, %tmp2 | 8 %tmp3 = mul <8 x i8> %tmp1, %tmp2 |
| 9 ret <8 x i8> %tmp3 | 9 ret <8 x i8> %tmp3 |
| 10 } | 10 } |
| (...skipping 581 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 592 %add177 = add nsw i32 undef, 16 | 592 %add177 = add nsw i32 undef, 16 |
| 593 br i1 undef, label %for.body33, label %for.cond.loopexit | 593 br i1 undef, label %for.body33, label %for.cond.loopexit |
| 594 | 594 |
| 595 for.end179: ; preds = %for.cond.loopexit,
%entry | 595 for.end179: ; preds = %for.cond.loopexit,
%entry |
| 596 ret void | 596 ret void |
| 597 } | 597 } |
| 598 | 598 |
| 599 declare <8 x i16> @llvm.arm.neon.vrshiftu.v8i16(<8 x i16>, <8 x i16>) nounwind r
eadnone | 599 declare <8 x i16> @llvm.arm.neon.vrshiftu.v8i16(<8 x i16>, <8 x i16>) nounwind r
eadnone |
| 600 declare <8 x i16> @llvm.arm.neon.vqsubu.v8i16(<8 x i16>, <8 x i16>) nounwind rea
dnone | 600 declare <8 x i16> @llvm.arm.neon.vqsubu.v8i16(<8 x i16>, <8 x i16>) nounwind rea
dnone |
| 601 declare <8 x i8> @llvm.arm.neon.vqmovnu.v8i8(<8 x i16>) nounwind readnone | 601 declare <8 x i8> @llvm.arm.neon.vqmovnu.v8i8(<8 x i16>) nounwind readnone |
| 602 | |
| 603 ; vmull lowering would create a zext(v4i8 load()) instead of a zextload(v4i8), | |
| 604 ; creating an illegal type during legalization and causing an assert. | |
| 605 ; PR15970 | |
| 606 define void @no_illegal_types_vmull_sext(<4 x i32> %a) { | |
| 607 entry: | |
| 608 %wide.load283.i = load <4 x i8>* undef, align 1 | |
| 609 %0 = sext <4 x i8> %wide.load283.i to <4 x i32> | |
| 610 %1 = sub nsw <4 x i32> %0, %a | |
| 611 %2 = mul nsw <4 x i32> %1, %1 | |
| 612 %predphi290.v.i = select <4 x i1> undef, <4 x i32> undef, <4 x i32> %2 | |
| 613 store <4 x i32> %predphi290.v.i, <4 x i32>* undef, align 4 | |
| 614 ret void | |
| 615 } | |
| 616 define void @no_illegal_types_vmull_zext(<4 x i32> %a) { | |
| 617 entry: | |
| 618 %wide.load283.i = load <4 x i8>* undef, align 1 | |
| 619 %0 = zext <4 x i8> %wide.load283.i to <4 x i32> | |
| 620 %1 = sub nsw <4 x i32> %0, %a | |
| 621 %2 = mul nsw <4 x i32> %1, %1 | |
| 622 %predphi290.v.i = select <4 x i1> undef, <4 x i32> undef, <4 x i32> %2 | |
| 623 store <4 x i32> %predphi290.v.i, <4 x i32>* undef, align 4 | |
| 624 ret void | |
| 625 } | |
| OLD | NEW |