[test] Pre-commit llvm.experimental.memset.pattern tests prior to MemoryLocation...
[llvm-project.git] / llvm / test / CodeGen / Hexagon / autohvx / isel-expand-unaligned-loads-noindexed.ll
bloba27e50fb2931c490064456c4a49fedd8508009fa
1 ; RUN: llc -mtriple=hexagon -hexagon-initial-cfg-cleanup=0 < %s | FileCheck %s
3 ; Check for successful compilation.
4 ; CHECK: vmem
6 target triple = "hexagon"
8 ; Function Attrs: nounwind
9 define dso_local void @f0(ptr %a0, ptr %a1) local_unnamed_addr #0 {
10 b0:
11   br label %b1
13 b1:                                               ; preds = %b1, %b0
14   %v0 = phi i32 [ %v18, %b1 ], [ 0, %b0 ]
15   %v1 = getelementptr inbounds i8, ptr %a1, i32 %v0
16   %v2 = load <64 x i8>, ptr undef, align 1, !tbaa !0, !alias.scope !3
17   %v3 = add <64 x i8> zeroinitializer, %v2
18   %v4 = getelementptr inbounds i8, ptr %a0, i32 undef
19   %v5 = getelementptr inbounds i8, ptr %a0, i32 undef
20   %v6 = getelementptr inbounds i8, ptr %a0, i32 undef
21   store i8 0, ptr undef, align 1, !tbaa !0, !alias.scope !6, !noalias !8
22   %v7 = extractelement <64 x i8> %v3, i32 12
23   store i8 %v7, ptr undef, align 1, !tbaa !0, !alias.scope !6, !noalias !8
24   store i8 0, ptr undef, align 1, !tbaa !0, !alias.scope !6, !noalias !8
25   store i8 undef, ptr %v4, align 1, !tbaa !0, !alias.scope !6, !noalias !8
26   store i8 0, ptr %v5, align 1, !tbaa !0, !alias.scope !6, !noalias !8
27   store i8 0, ptr undef, align 1, !tbaa !0, !alias.scope !6, !noalias !8
28   %v8 = extractelement <64 x i8> %v3, i32 36
29   store i8 %v8, ptr undef, align 1, !tbaa !0, !alias.scope !6, !noalias !8
30   store i8 0, ptr undef, align 1, !tbaa !0, !alias.scope !6, !noalias !8
31   %v9 = extractelement <64 x i8> %v3, i32 38
32   store i8 %v9, ptr undef, align 1, !tbaa !0, !alias.scope !6, !noalias !8
33   store i8 0, ptr undef, align 1, !tbaa !0, !alias.scope !6, !noalias !8
34   %v10 = extractelement <64 x i8> %v3, i32 41
35   store i8 %v10, ptr %v6, align 1, !tbaa !0, !alias.scope !6, !noalias !8
36   store i8 0, ptr undef, align 1, !tbaa !0, !alias.scope !6, !noalias !8
37   store i8 undef, ptr undef, align 1, !tbaa !0, !alias.scope !6, !noalias !8
38   %v11 = extractelement <64 x i8> %v3, i32 55
39   store i8 %v11, ptr undef, align 1, !tbaa !0, !alias.scope !6, !noalias !8
40   store i8 0, ptr undef, align 1, !tbaa !0, !alias.scope !6, !noalias !8
41   %v12 = extractelement <64 x i8> %v3, i32 58
42   store i8 %v12, ptr undef, align 1, !tbaa !0, !alias.scope !6, !noalias !8
43   store i8 0, ptr undef, align 1, !tbaa !0, !alias.scope !6, !noalias !8
44   %v14 = load <64 x i8>, ptr %v1, align 1, !tbaa !0, !alias.scope !3
45   %v15 = add <64 x i8> zeroinitializer, %v14
46   %v16 = getelementptr inbounds i8, ptr %a0, i32 undef
47   %v17 = extractelement <64 x i8> %v15, i32 23
48   store i8 %v17, ptr %v16, align 1, !tbaa !0, !alias.scope !6, !noalias !8
49   %v18 = add i32 %v0, 64
50   br label %b1
53 attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx-length64b,+hvxv60" }
55 !0 = !{!1, !1, i64 0}
56 !1 = !{!"omnipotent char", !2, i64 0}
57 !2 = !{!"Simple C/C++ TBAA"}
58 !3 = !{!4}
59 !4 = distinct !{!4, !5}
60 !5 = distinct !{!5, !"LVerDomain"}
61 !6 = !{!7}
62 !7 = distinct !{!7, !5}
63 !8 = !{!4, !9, !10, !11}
64 !9 = distinct !{!9, !5}
65 !10 = distinct !{!10, !5}
66 !11 = distinct !{!11, !5}