834 changes: 455 additions & 379 deletions llvm/include/llvm/IR/IntrinsicsARM.td

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion llvm/test/CodeGen/ARM/vector-DAGCombine.ll
Original file line number Diff line number Diff line change
Expand Up @@ -104,14 +104,15 @@ define void @test_i16_constant_fold() nounwind optsize {
; CHECK: @ %bb.0: @ %entry
; CHECK-NEXT: vmov.i8 d16, #0x1
; CHECK-NEXT: vst1.8 {d16}, [r0]
; CHECK-NEXT: bx lr
entry:
%0 = sext <4 x i1> zeroinitializer to <4 x i16>
%1 = add <4 x i16> %0, zeroinitializer
%2 = shufflevector <4 x i16> %1, <4 x i16> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
%3 = add <8 x i16> %2, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
%4 = trunc <8 x i16> %3 to <8 x i8>
tail call void @llvm.arm.neon.vst1.p0i8.v8i8(i8* undef, <8 x i8> %4, i32 1)
unreachable
ret void
}

declare void @llvm.arm.neon.vst1.p0i8.v8i8(i8*, <8 x i8>, i32) nounwind
Expand Down