annotate test/CodeGen/Hexagon/vpack_eo.ll @ 128:c347d3398279 default tip

fix
author mir3636
date Wed, 06 Dec 2017 14:37:17 +0900
parents 803732b1fca8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
1 ; RUN: llc -march=hexagon < %s | FileCheck %s
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
2 target triple = "hexagon-unknown--elf"
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
4 ; CHECK-DAG: vpacke
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
5 ; CHECK-DAG: vpacko
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
6
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
7 %struct.buffer_t = type { i64, i8*, [4 x i32], [4 x i32], [4 x i32], i32, i8, i8, [6 x i8] }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
8
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
9 ; Function Attrs: norecurse nounwind
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
10 define i32 @__Strided_LoadTest(%struct.buffer_t* noalias nocapture readonly %InputOne.buffer, %struct.buffer_t* noalias nocapture readonly %InputTwo.buffer, %struct.buffer_t* noalias nocapture readonly %Strided_LoadTest.buffer) #0 {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
11 entry:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
12 %buf_host = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %InputOne.buffer, i32 0, i32 1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
13 %0 = bitcast i8** %buf_host to i16**
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
14 %InputOne.host45 = load i16*, i16** %0, align 4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
15 %buf_host10 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %InputTwo.buffer, i32 0, i32 1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
16 %1 = bitcast i8** %buf_host10 to i16**
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
17 %InputTwo.host46 = load i16*, i16** %1, align 4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
18 %buf_host27 = getelementptr inbounds %struct.buffer_t, %struct.buffer_t* %Strided_LoadTest.buffer, i32 0, i32 1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
19 %2 = bitcast i8** %buf_host27 to i16**
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
20 %Strided_LoadTest.host44 = load i16*, i16** %2, align 4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
21 %3 = bitcast i16* %InputOne.host45 to <32 x i16>*
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
22 %4 = load <32 x i16>, <32 x i16>* %3, align 2, !tbaa !4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
23 %5 = getelementptr inbounds i16, i16* %InputOne.host45, i32 32
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
24 %6 = bitcast i16* %5 to <32 x i16>*
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
25 %7 = load <32 x i16>, <32 x i16>* %6, align 2, !tbaa !4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
26 %8 = shufflevector <32 x i16> %4, <32 x i16> %7, <32 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31, i32 33, i32 35, i32 37, i32 39, i32 41, i32 43, i32 45, i32 47, i32 49, i32 51, i32 53, i32 55, i32 57, i32 59, i32 61, i32 63>
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
27 %9 = bitcast i16* %InputTwo.host46 to <32 x i16>*
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
28 %10 = load <32 x i16>, <32 x i16>* %9, align 2, !tbaa !7
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
29 %11 = getelementptr inbounds i16, i16* %InputTwo.host46, i32 32
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
30 %12 = bitcast i16* %11 to <32 x i16>*
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
31 %13 = load <32 x i16>, <32 x i16>* %12, align 2, !tbaa !7
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
32 %14 = shufflevector <32 x i16> %10, <32 x i16> %13, <32 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 16, i32 18, i32 20, i32 22, i32 24, i32 26, i32 28, i32 30, i32 32, i32 34, i32 36, i32 38, i32 40, i32 42, i32 44, i32 46, i32 48, i32 50, i32 52, i32 54, i32 56, i32 58, i32 60, i32 62>
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
33 %15 = bitcast <32 x i16> %8 to <16 x i32>
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
34 %16 = bitcast <32 x i16> %14 to <16 x i32>
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
35 %17 = tail call <16 x i32> @llvm.hexagon.V6.vaddh(<16 x i32> %15, <16 x i32> %16)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
36 %18 = bitcast i16* %Strided_LoadTest.host44 to <16 x i32>*
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
37 store <16 x i32> %17, <16 x i32>* %18, align 2, !tbaa !9
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
38 %.inc = getelementptr i16, i16* %InputOne.host45, i32 64
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
39 %.inc49 = getelementptr i16, i16* %InputTwo.host46, i32 64
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
40 %.inc52 = getelementptr i16, i16* %Strided_LoadTest.host44, i32 32
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
41 %19 = bitcast i16* %.inc to <32 x i16>*
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
42 %20 = load <32 x i16>, <32 x i16>* %19, align 2, !tbaa !4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
43 %21 = getelementptr inbounds i16, i16* %InputOne.host45, i32 96
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
44 %22 = bitcast i16* %21 to <32 x i16>*
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
45 %23 = load <32 x i16>, <32 x i16>* %22, align 2, !tbaa !4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
46 %24 = shufflevector <32 x i16> %20, <32 x i16> %23, <32 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31, i32 33, i32 35, i32 37, i32 39, i32 41, i32 43, i32 45, i32 47, i32 49, i32 51, i32 53, i32 55, i32 57, i32 59, i32 61, i32 63>
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
47 %25 = bitcast i16* %.inc49 to <32 x i16>*
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
48 %26 = load <32 x i16>, <32 x i16>* %25, align 2, !tbaa !7
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
49 %27 = getelementptr inbounds i16, i16* %InputTwo.host46, i32 96
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
50 %28 = bitcast i16* %27 to <32 x i16>*
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
51 %29 = load <32 x i16>, <32 x i16>* %28, align 2, !tbaa !7
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
52 %30 = shufflevector <32 x i16> %26, <32 x i16> %29, <32 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14, i32 16, i32 18, i32 20, i32 22, i32 24, i32 26, i32 28, i32 30, i32 32, i32 34, i32 36, i32 38, i32 40, i32 42, i32 44, i32 46, i32 48, i32 50, i32 52, i32 54, i32 56, i32 58, i32 60, i32 62>
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
53 %31 = bitcast <32 x i16> %24 to <16 x i32>
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
54 %32 = bitcast <32 x i16> %30 to <16 x i32>
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
55 %33 = tail call <16 x i32> @llvm.hexagon.V6.vaddh(<16 x i32> %31, <16 x i32> %32)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
56 %34 = bitcast i16* %.inc52 to <16 x i32>*
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
57 store <16 x i32> %33, <16 x i32>* %34, align 2, !tbaa !9
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
58 ret i32 0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
59 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
60
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
61 ; Function Attrs: nounwind readnone
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
62 declare <16 x i32> @llvm.hexagon.V6.vaddh(<16 x i32>, <16 x i32>) #1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
63
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
64 attributes #0 = { norecurse nounwind "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length64b" }
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
65 attributes #1 = { nounwind readnone "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length64b" }
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
66
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
67 !4 = !{!5, !5, i64 0}
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
68 !5 = !{!"InputOne", !6}
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
69 !6 = !{!"Halide buffer"}
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
70 !7 = !{!8, !8, i64 0}
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
71 !8 = !{!"InputTwo", !6}
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
72 !9 = !{!10, !10, i64 0}
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
73 !10 = !{!"Strided_LoadTest", !6}