Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(123)

Side by Side Diff: test/NaCl/ARM/neon-vldlane-sandboxing.ll

Issue 1151093004: Changes from 3.7 merge to files not in upstream (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-llvm.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 ; RUN: pnacl-llc -mtriple=armv7-unknown-nacl -mattr=+neon -filetype=obj %s -o - \ 1 ; RUN: pnacl-llc -mtriple=armv7-unknown-nacl -mattr=+neon -filetype=obj %s -o - \
2 ; RUN: | llvm-objdump -disassemble -triple armv7 - | FileCheck %s 2 ; RUN: | llvm-objdump -disassemble -triple armv7 - | FileCheck %s
3 3
4 %struct.__neon_int8x8x2_t = type { <8 x i8>, <8 x i8> } 4 %struct.__neon_int8x8x2_t = type { <8 x i8>, <8 x i8> }
5 %struct.__neon_int16x4x2_t = type { <4 x i16>, <4 x i16> } 5 %struct.__neon_int16x4x2_t = type { <4 x i16>, <4 x i16> }
6 %struct.__neon_int32x2x2_t = type { <2 x i32>, <2 x i32> } 6 %struct.__neon_int32x2x2_t = type { <2 x i32>, <2 x i32> }
7 %struct.__neon_float32x2x2_t = type { <2 x float>, <2 x float> } 7 %struct.__neon_float32x2x2_t = type { <2 x float>, <2 x float> }
8 8
9 %struct.__neon_int16x8x2_t = type { <8 x i16>, <8 x i16> } 9 %struct.__neon_int16x8x2_t = type { <8 x i16>, <8 x i16> }
10 %struct.__neon_int32x4x2_t = type { <4 x i32>, <4 x i32> } 10 %struct.__neon_int32x4x2_t = type { <4 x i32>, <4 x i32> }
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 declare %struct.__neon_int8x8x4_t @llvm.arm.neon.vld4lane.v8i8(i8*, <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8>, i32, i32) nounwind readonly 49 declare %struct.__neon_int8x8x4_t @llvm.arm.neon.vld4lane.v8i8(i8*, <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8>, i32, i32) nounwind readonly
50 declare %struct.__neon_int16x4x4_t @llvm.arm.neon.vld4lane.v4i16(i8*, <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16>, i32, i32) nounwind readonly 50 declare %struct.__neon_int16x4x4_t @llvm.arm.neon.vld4lane.v4i16(i8*, <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16>, i32, i32) nounwind readonly
51 declare %struct.__neon_int32x2x4_t @llvm.arm.neon.vld4lane.v2i32(i8*, <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, i32, i32) nounwind readonly 51 declare %struct.__neon_int32x2x4_t @llvm.arm.neon.vld4lane.v2i32(i8*, <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32>, i32, i32) nounwind readonly
52 declare %struct.__neon_float32x2x4_t @llvm.arm.neon.vld4lane.v2f32(i8*, <2 x flo at>, <2 x float>, <2 x float>, <2 x float>, i32, i32) nounwind readonly 52 declare %struct.__neon_float32x2x4_t @llvm.arm.neon.vld4lane.v2f32(i8*, <2 x flo at>, <2 x float>, <2 x float>, <2 x float>, i32, i32) nounwind readonly
53 53
54 declare %struct.__neon_int16x8x4_t @llvm.arm.neon.vld4lane.v8i16(i8*, <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16>, i32, i32) nounwind readonly 54 declare %struct.__neon_int16x8x4_t @llvm.arm.neon.vld4lane.v8i16(i8*, <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16>, i32, i32) nounwind readonly
55 declare %struct.__neon_int32x4x4_t @llvm.arm.neon.vld4lane.v4i32(i8*, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32, i32) nounwind readonly 55 declare %struct.__neon_int32x4x4_t @llvm.arm.neon.vld4lane.v4i32(i8*, <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32>, i32, i32) nounwind readonly
56 declare %struct.__neon_float32x4x4_t @llvm.arm.neon.vld4lane.v4f32(i8*, <4 x flo at>, <4 x float>, <4 x float>, <4 x float>, i32, i32) nounwind readonly 56 declare %struct.__neon_float32x4x4_t @llvm.arm.neon.vld4lane.v4f32(i8*, <4 x flo at>, <4 x float>, <4 x float>, <4 x float>, i32, i32) nounwind readonly
57 57
58 define <8 x i8> @vld1lanei8(i8* %A, <8 x i8>* %B) nounwind { 58 define <8 x i8> @vld1lanei8(i8* %A, <8 x i8>* %B) nounwind {
59 %tmp1 = load <8 x i8>* %B 59 %tmp1 = load <8 x i8>, <8 x i8>* %B
60 %tmp2 = load i8* %A, align 8 60 %tmp2 = load i8, i8* %A, align 8
61 %tmp3 = insertelement <8 x i8> %tmp1, i8 %tmp2, i32 3 61 %tmp3 = insertelement <8 x i8> %tmp1, i8 %tmp2, i32 3
62 ; CHECK: bic r0, r0, #3221225472 62 ; CHECK: bic r0, r0, #-1073741824
63 ; CHECK-NEXT: vld1.8 {{{d[0-9]+\[[0-9]\]}}}, [r0] 63 ; CHECK-NEXT: vld1.8 {{{d[0-9]+\[[0-9]\]}}}, [r0]
64 ret <8 x i8> %tmp3 64 ret <8 x i8> %tmp3
65 } 65 }
66 66
67 define <4 x i16> @vld1lanei16(i16* %A, <4 x i16>* %B) nounwind { 67 define <4 x i16> @vld1lanei16(i16* %A, <4 x i16>* %B) nounwind {
68 %tmp1 = load <4 x i16>* %B 68 %tmp1 = load <4 x i16>, <4 x i16>* %B
69 %tmp2 = load i16* %A, align 8 69 %tmp2 = load i16, i16* %A, align 8
70 %tmp3 = insertelement <4 x i16> %tmp1, i16 %tmp2, i32 2 70 %tmp3 = insertelement <4 x i16> %tmp1, i16 %tmp2, i32 2
71 ; CHECK: bic r0, r0, #3221225472 71 ; CHECK: bic r0, r0, #-1073741824
72 ; CHECK-NEXT: vld1.16 {{{d[0-9]+\[[0-9]\]}}}, [r0:16] 72 ; CHECK-NEXT: vld1.16 {{{d[0-9]+\[[0-9]\]}}}, [r0:16]
73 ret <4 x i16> %tmp3 73 ret <4 x i16> %tmp3
74 } 74 }
75 75
76 define <2 x i32> @vld1lanei32(i32* %A, <2 x i32>* %B) nounwind { 76 define <2 x i32> @vld1lanei32(i32* %A, <2 x i32>* %B) nounwind {
77 %tmp1 = load <2 x i32>* %B 77 %tmp1 = load <2 x i32>, <2 x i32>* %B
78 %tmp2 = load i32* %A, align 8 78 %tmp2 = load i32, i32* %A, align 8
79 %tmp3 = insertelement <2 x i32> %tmp1, i32 %tmp2, i32 1 79 %tmp3 = insertelement <2 x i32> %tmp1, i32 %tmp2, i32 1
80 ; CHECK: bic r0, r0, #3221225472 80 ; CHECK: bic r0, r0, #-1073741824
81 ; CHECK-NEXT: vld1.32 {{{d[0-9]+\[[0-9]\]}}}, [r0:32] 81 ; CHECK-NEXT: vld1.32 {{{d[0-9]+\[[0-9]\]}}}, [r0:32]
82 ret <2 x i32> %tmp3 82 ret <2 x i32> %tmp3
83 } 83 }
84 84
85 define <16 x i8> @vld1laneQi8(i8* %A, <16 x i8>* %B) nounwind { 85 define <16 x i8> @vld1laneQi8(i8* %A, <16 x i8>* %B) nounwind {
86 %tmp1 = load <16 x i8>* %B 86 %tmp1 = load <16 x i8>, <16 x i8>* %B
87 %tmp2 = load i8* %A, align 8 87 %tmp2 = load i8, i8* %A, align 8
88 %tmp3 = insertelement <16 x i8> %tmp1, i8 %tmp2, i32 9 88 %tmp3 = insertelement <16 x i8> %tmp1, i8 %tmp2, i32 9
89 ; CHECK: bic r0, r0, #3221225472 89 ; CHECK: bic r0, r0, #-1073741824
90 ; CHECK-NEXT: vld1.8 {{{d[0-9]+\[[0-9]\]}}}, [r0] 90 ; CHECK-NEXT: vld1.8 {{{d[0-9]+\[[0-9]\]}}}, [r0]
91 ret <16 x i8> %tmp3 91 ret <16 x i8> %tmp3
92 } 92 }
93 93
94 define <8 x i16> @vld1laneQi16(i16* %A, <8 x i16>* %B) nounwind { 94 define <8 x i16> @vld1laneQi16(i16* %A, <8 x i16>* %B) nounwind {
95 %tmp1 = load <8 x i16>* %B 95 %tmp1 = load <8 x i16>, <8 x i16>* %B
96 %tmp2 = load i16* %A, align 8 96 %tmp2 = load i16, i16* %A, align 8
97 %tmp3 = insertelement <8 x i16> %tmp1, i16 %tmp2, i32 5 97 %tmp3 = insertelement <8 x i16> %tmp1, i16 %tmp2, i32 5
98 ; CHECK: bic r0, r0, #3221225472 98 ; CHECK: bic r0, r0, #-1073741824
99 ; CHECK-NEXT: vld1.16 {{{d[0-9]+\[[0-9]\]}}}, [r0:16] 99 ; CHECK-NEXT: vld1.16 {{{d[0-9]+\[[0-9]\]}}}, [r0:16]
100 ret <8 x i16> %tmp3 100 ret <8 x i16> %tmp3
101 } 101 }
102 102
103 define <4 x i32> @vld1laneQi32(i32* %A, <4 x i32>* %B) nounwind { 103 define <4 x i32> @vld1laneQi32(i32* %A, <4 x i32>* %B) nounwind {
104 %tmp1 = load <4 x i32>* %B 104 %tmp1 = load <4 x i32>, <4 x i32>* %B
105 %tmp2 = load i32* %A, align 8 105 %tmp2 = load i32, i32* %A, align 8
106 %tmp3 = insertelement <4 x i32> %tmp1, i32 %tmp2, i32 3 106 %tmp3 = insertelement <4 x i32> %tmp1, i32 %tmp2, i32 3
107 ; CHECK: bic r0, r0, #3221225472 107 ; CHECK: bic r0, r0, #-1073741824
108 ; CHECK-NEXT: vld1.32 {{{d[0-9]+\[[0-9]\]}}}, [r0:32] 108 ; CHECK-NEXT: vld1.32 {{{d[0-9]+\[[0-9]\]}}}, [r0:32]
109 ret <4 x i32> %tmp3 109 ret <4 x i32> %tmp3
110 } 110 }
111 111
112 define <8 x i8> @vld2lanei8(i8* %A, <8 x i8>* %B) nounwind { 112 define <8 x i8> @vld2lanei8(i8* %A, <8 x i8>* %B) nounwind {
113 %tmp1 = load <8 x i8>* %B 113 %tmp1 = load <8 x i8>, <8 x i8>* %B
114 %tmp2 = call %struct.__neon_int8x8x2_t @llvm.arm.neon.vld2lane.v8i8(i8* %A, <8 x i8> %tmp1, <8 x i8> %tmp1, i32 1, i32 4) 114 %tmp2 = call %struct.__neon_int8x8x2_t @llvm.arm.neon.vld2lane.v8i8(i8* %A, <8 x i8> %tmp1, <8 x i8> %tmp1, i32 1, i32 4)
115 %tmp3 = extractvalue %struct.__neon_int8x8x2_t %tmp2, 0 115 %tmp3 = extractvalue %struct.__neon_int8x8x2_t %tmp2, 0
116 %tmp4 = extractvalue %struct.__neon_int8x8x2_t %tmp2, 1 116 %tmp4 = extractvalue %struct.__neon_int8x8x2_t %tmp2, 1
117 %tmp5 = add <8 x i8> %tmp3, %tmp4 117 %tmp5 = add <8 x i8> %tmp3, %tmp4
118 ; CHECK: bic r0, r0, #3221225472 118 ; CHECK: bic r0, r0, #-1073741824
119 ; CHECK-NEXT: vld2.8 {{{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}}, [r0:16] 119 ; CHECK-NEXT: vld2.8 {{{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}}, [r0:16]
120 ret <8 x i8> %tmp5 120 ret <8 x i8> %tmp5
121 } 121 }
122 122
123 define <4 x i16> @vld2lanei16(i16* %A, <4 x i16>* %B) nounwind { 123 define <4 x i16> @vld2lanei16(i16* %A, <4 x i16>* %B) nounwind {
124 %tmp0 = bitcast i16* %A to i8* 124 %tmp0 = bitcast i16* %A to i8*
125 %tmp1 = load <4 x i16>* %B 125 %tmp1 = load <4 x i16>, <4 x i16>* %B
126 %tmp2 = call %struct.__neon_int16x4x2_t @llvm.arm.neon.vld2lane.v4i16(i8* %tmp 0, <4 x i16> %tmp1, <4 x i16> %tmp1, i32 1, i32 8) 126 %tmp2 = call %struct.__neon_int16x4x2_t @llvm.arm.neon.vld2lane.v4i16(i8* %tmp 0, <4 x i16> %tmp1, <4 x i16> %tmp1, i32 1, i32 8)
127 %tmp3 = extractvalue %struct.__neon_int16x4x2_t %tmp2, 0 127 %tmp3 = extractvalue %struct.__neon_int16x4x2_t %tmp2, 0
128 %tmp4 = extractvalue %struct.__neon_int16x4x2_t %tmp2, 1 128 %tmp4 = extractvalue %struct.__neon_int16x4x2_t %tmp2, 1
129 %tmp5 = add <4 x i16> %tmp3, %tmp4 129 %tmp5 = add <4 x i16> %tmp3, %tmp4
130 ; CHECK: bic r0, r0, #3221225472 130 ; CHECK: bic r0, r0, #-1073741824
131 ; CHECK-NEXT: vld2.16 {{{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}}, [r0:32] 131 ; CHECK-NEXT: vld2.16 {{{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}}, [r0:32]
132 ret <4 x i16> %tmp5 132 ret <4 x i16> %tmp5
133 } 133 }
134 134
135 define <2 x i32> @vld2lanei32(i32 %foo, i32 %bar, i32 %baz, 135 define <2 x i32> @vld2lanei32(i32 %foo, i32 %bar, i32 %baz,
136 i32* %A, <2 x i32>* %B) nounwind { 136 i32* %A, <2 x i32>* %B) nounwind {
137 %tmp0 = bitcast i32* %A to i8* 137 %tmp0 = bitcast i32* %A to i8*
138 %tmp1 = load <2 x i32>* %B 138 %tmp1 = load <2 x i32>, <2 x i32>* %B
139 %tmp2 = call %struct.__neon_int32x2x2_t @llvm.arm.neon.vld2lane.v2i32(i8* %tmp 0, <2 x i32> %tmp1, <2 x i32> %tmp1, i32 1, i32 1) 139 %tmp2 = call %struct.__neon_int32x2x2_t @llvm.arm.neon.vld2lane.v2i32(i8* %tmp 0, <2 x i32> %tmp1, <2 x i32> %tmp1, i32 1, i32 1)
140 %tmp3 = extractvalue %struct.__neon_int32x2x2_t %tmp2, 0 140 %tmp3 = extractvalue %struct.__neon_int32x2x2_t %tmp2, 0
141 %tmp4 = extractvalue %struct.__neon_int32x2x2_t %tmp2, 1 141 %tmp4 = extractvalue %struct.__neon_int32x2x2_t %tmp2, 1
142 %tmp5 = add <2 x i32> %tmp3, %tmp4 142 %tmp5 = add <2 x i32> %tmp3, %tmp4
143 ; CHECK: bic r3, r3, #3221225472 143 ; CHECK: bic r3, r3, #-1073741824
144 ; CHECK-NEXT: vld2.32 {{{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}}, [r3] 144 ; CHECK-NEXT: vld2.32 {{{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}}, [r3]
145 ret <2 x i32> %tmp5 145 ret <2 x i32> %tmp5
146 } 146 }
147 147
148 define <8 x i16> @vld2laneQi16(i16* %A, <8 x i16>* %B) nounwind { 148 define <8 x i16> @vld2laneQi16(i16* %A, <8 x i16>* %B) nounwind {
149 %tmp0 = bitcast i16* %A to i8* 149 %tmp0 = bitcast i16* %A to i8*
150 %tmp1 = load <8 x i16>* %B 150 %tmp1 = load <8 x i16>, <8 x i16>* %B
151 %tmp2 = call %struct.__neon_int16x8x2_t @llvm.arm.neon.vld2lane.v8i16(i8* %tmp 0, <8 x i16> %tmp1, <8 x i16> %tmp1, i32 5, i32 1) 151 %tmp2 = call %struct.__neon_int16x8x2_t @llvm.arm.neon.vld2lane.v8i16(i8* %tmp 0, <8 x i16> %tmp1, <8 x i16> %tmp1, i32 5, i32 1)
152 %tmp3 = extractvalue %struct.__neon_int16x8x2_t %tmp2, 0 152 %tmp3 = extractvalue %struct.__neon_int16x8x2_t %tmp2, 0
153 %tmp4 = extractvalue %struct.__neon_int16x8x2_t %tmp2, 1 153 %tmp4 = extractvalue %struct.__neon_int16x8x2_t %tmp2, 1
154 %tmp5 = add <8 x i16> %tmp3, %tmp4 154 %tmp5 = add <8 x i16> %tmp3, %tmp4
155 ; CHECK: bic r0, r0, #3221225472 155 ; CHECK: bic r0, r0, #-1073741824
156 ; CHECK-NEXT: vld2.16 {{{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}}, [r0] 156 ; CHECK-NEXT: vld2.16 {{{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}}, [r0]
157 ret <8 x i16> %tmp5 157 ret <8 x i16> %tmp5
158 } 158 }
159 159
160 define <4 x i32> @vld2laneQi32(i32* %A, <4 x i32>* %B) nounwind { 160 define <4 x i32> @vld2laneQi32(i32* %A, <4 x i32>* %B) nounwind {
161 %tmp0 = bitcast i32* %A to i8* 161 %tmp0 = bitcast i32* %A to i8*
162 %tmp1 = load <4 x i32>* %B 162 %tmp1 = load <4 x i32>, <4 x i32>* %B
163 %tmp2 = call %struct.__neon_int32x4x2_t @llvm.arm.neon.vld2lane.v4i32(i8* %tmp 0, <4 x i32> %tmp1, <4 x i32> %tmp1, i32 2, i32 16) 163 %tmp2 = call %struct.__neon_int32x4x2_t @llvm.arm.neon.vld2lane.v4i32(i8* %tmp 0, <4 x i32> %tmp1, <4 x i32> %tmp1, i32 2, i32 16)
164 %tmp3 = extractvalue %struct.__neon_int32x4x2_t %tmp2, 0 164 %tmp3 = extractvalue %struct.__neon_int32x4x2_t %tmp2, 0
165 %tmp4 = extractvalue %struct.__neon_int32x4x2_t %tmp2, 1 165 %tmp4 = extractvalue %struct.__neon_int32x4x2_t %tmp2, 1
166 %tmp5 = add <4 x i32> %tmp3, %tmp4 166 %tmp5 = add <4 x i32> %tmp3, %tmp4
167 ; CHECK: bic r0, r0, #3221225472 167 ; CHECK: bic r0, r0, #-1073741824
168 ; CHECK-NEXT: vld2.32 {{{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}}, [r0:64] 168 ; CHECK-NEXT: vld2.32 {{{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}}, [r0:64]
169 ret <4 x i32> %tmp5 169 ret <4 x i32> %tmp5
170 } 170 }
171 171
172 define <8 x i8> @vld3lanei8(i8* %A, <8 x i8>* %B) nounwind { 172 define <8 x i8> @vld3lanei8(i8* %A, <8 x i8>* %B) nounwind {
173 %tmp1 = load <8 x i8>* %B 173 %tmp1 = load <8 x i8>, <8 x i8>* %B
174 %tmp2 = call %struct.__neon_int8x8x3_t @llvm.arm.neon.vld3lane.v8i8(i8* %A, <8 x i8> %tmp1, <8 x i8> %tmp1, <8 x i8> %tmp1, i32 1, i32 1) 174 %tmp2 = call %struct.__neon_int8x8x3_t @llvm.arm.neon.vld3lane.v8i8(i8* %A, <8 x i8> %tmp1, <8 x i8> %tmp1, <8 x i8> %tmp1, i32 1, i32 1)
175 %tmp3 = extractvalue %struct.__neon_int8x8x3_t %tmp2, 0 175 %tmp3 = extractvalue %struct.__neon_int8x8x3_t %tmp2, 0
176 %tmp4 = extractvalue %struct.__neon_int8x8x3_t %tmp2, 1 176 %tmp4 = extractvalue %struct.__neon_int8x8x3_t %tmp2, 1
177 %tmp5 = extractvalue %struct.__neon_int8x8x3_t %tmp2, 2 177 %tmp5 = extractvalue %struct.__neon_int8x8x3_t %tmp2, 2
178 %tmp6 = add <8 x i8> %tmp3, %tmp4 178 %tmp6 = add <8 x i8> %tmp3, %tmp4
179 %tmp7 = add <8 x i8> %tmp5, %tmp6 179 %tmp7 = add <8 x i8> %tmp5, %tmp6
180 ; CHECK: bic r0, r0, #3221225472 180 ; CHECK: bic r0, r0, #-1073741824
181 ; CHECK-NEXT: vld3.8 {{{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\[ [0-9]\]}}}, [r0] 181 ; CHECK-NEXT: vld3.8 {{{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\[ [0-9]\]}}}, [r0]
182 ret <8 x i8> %tmp7 182 ret <8 x i8> %tmp7
183 } 183 }
184 184
185 define <4 x i16> @vld3lanei16(i16* %A, <4 x i16>* %B) nounwind { 185 define <4 x i16> @vld3lanei16(i16* %A, <4 x i16>* %B) nounwind {
186 %tmp0 = bitcast i16* %A to i8* 186 %tmp0 = bitcast i16* %A to i8*
187 %tmp1 = load <4 x i16>* %B 187 %tmp1 = load <4 x i16>, <4 x i16>* %B
188 %tmp2 = call %struct.__neon_int16x4x3_t @llvm.arm.neon.vld3lane.v4i16(i8* %tmp 0, <4 x i16> %tmp1, <4 x i16> %tmp1, <4 x i16> %tmp1, i32 1, i32 8) 188 %tmp2 = call %struct.__neon_int16x4x3_t @llvm.arm.neon.vld3lane.v4i16(i8* %tmp 0, <4 x i16> %tmp1, <4 x i16> %tmp1, <4 x i16> %tmp1, i32 1, i32 8)
189 %tmp3 = extractvalue %struct.__neon_int16x4x3_t %tmp2, 0 189 %tmp3 = extractvalue %struct.__neon_int16x4x3_t %tmp2, 0
190 %tmp4 = extractvalue %struct.__neon_int16x4x3_t %tmp2, 1 190 %tmp4 = extractvalue %struct.__neon_int16x4x3_t %tmp2, 1
191 %tmp5 = extractvalue %struct.__neon_int16x4x3_t %tmp2, 2 191 %tmp5 = extractvalue %struct.__neon_int16x4x3_t %tmp2, 2
192 %tmp6 = add <4 x i16> %tmp3, %tmp4 192 %tmp6 = add <4 x i16> %tmp3, %tmp4
193 %tmp7 = add <4 x i16> %tmp5, %tmp6 193 %tmp7 = add <4 x i16> %tmp5, %tmp6
194 ; CHECK: bic r0, r0, #3221225472 194 ; CHECK: bic r0, r0, #-1073741824
195 ; CHECK-NEXT: vld3.16 {{{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\ [[0-9]\]}}}, [r0] 195 ; CHECK-NEXT: vld3.16 {{{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\ [[0-9]\]}}}, [r0]
196 ret <4 x i16> %tmp7 196 ret <4 x i16> %tmp7
197 } 197 }
198 198
199 define <2 x i32> @vld3lanei32(i32* %A, <2 x i32>* %B) nounwind { 199 define <2 x i32> @vld3lanei32(i32* %A, <2 x i32>* %B) nounwind {
200 %tmp0 = bitcast i32* %A to i8* 200 %tmp0 = bitcast i32* %A to i8*
201 %tmp1 = load <2 x i32>* %B 201 %tmp1 = load <2 x i32>, <2 x i32>* %B
202 %tmp2 = call %struct.__neon_int32x2x3_t @llvm.arm.neon.vld3lane.v2i32(i8* %tmp 0, <2 x i32> %tmp1, <2 x i32> %tmp1, <2 x i32> %tmp1, i32 1, i32 1) 202 %tmp2 = call %struct.__neon_int32x2x3_t @llvm.arm.neon.vld3lane.v2i32(i8* %tmp 0, <2 x i32> %tmp1, <2 x i32> %tmp1, <2 x i32> %tmp1, i32 1, i32 1)
203 %tmp3 = extractvalue %struct.__neon_int32x2x3_t %tmp2, 0 203 %tmp3 = extractvalue %struct.__neon_int32x2x3_t %tmp2, 0
204 %tmp4 = extractvalue %struct.__neon_int32x2x3_t %tmp2, 1 204 %tmp4 = extractvalue %struct.__neon_int32x2x3_t %tmp2, 1
205 %tmp5 = extractvalue %struct.__neon_int32x2x3_t %tmp2, 2 205 %tmp5 = extractvalue %struct.__neon_int32x2x3_t %tmp2, 2
206 %tmp6 = add <2 x i32> %tmp3, %tmp4 206 %tmp6 = add <2 x i32> %tmp3, %tmp4
207 %tmp7 = add <2 x i32> %tmp5, %tmp6 207 %tmp7 = add <2 x i32> %tmp5, %tmp6
208 ; CHECK: bic r0, r0, #3221225472 208 ; CHECK: bic r0, r0, #-1073741824
209 ; CHECK-NEXT: vld3.32 {{{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\ [[0-9]\]}}}, [r0] 209 ; CHECK-NEXT: vld3.32 {{{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\ [[0-9]\]}}}, [r0]
210 ret <2 x i32> %tmp7 210 ret <2 x i32> %tmp7
211 } 211 }
212 212
213 define <8 x i16> @vld3laneQi16(i16* %A, <8 x i16>* %B) nounwind { 213 define <8 x i16> @vld3laneQi16(i16* %A, <8 x i16>* %B) nounwind {
214 %tmp0 = bitcast i16* %A to i8* 214 %tmp0 = bitcast i16* %A to i8*
215 %tmp1 = load <8 x i16>* %B 215 %tmp1 = load <8 x i16>, <8 x i16>* %B
216 %tmp2 = call %struct.__neon_int16x8x3_t @llvm.arm.neon.vld3lane.v8i16(i8* %tmp 0, <8 x i16> %tmp1, <8 x i16> %tmp1, <8 x i16> %tmp1, i32 1, i32 8) 216 %tmp2 = call %struct.__neon_int16x8x3_t @llvm.arm.neon.vld3lane.v8i16(i8* %tmp 0, <8 x i16> %tmp1, <8 x i16> %tmp1, <8 x i16> %tmp1, i32 1, i32 8)
217 %tmp3 = extractvalue %struct.__neon_int16x8x3_t %tmp2, 0 217 %tmp3 = extractvalue %struct.__neon_int16x8x3_t %tmp2, 0
218 %tmp4 = extractvalue %struct.__neon_int16x8x3_t %tmp2, 1 218 %tmp4 = extractvalue %struct.__neon_int16x8x3_t %tmp2, 1
219 %tmp5 = extractvalue %struct.__neon_int16x8x3_t %tmp2, 2 219 %tmp5 = extractvalue %struct.__neon_int16x8x3_t %tmp2, 2
220 %tmp6 = add <8 x i16> %tmp3, %tmp4 220 %tmp6 = add <8 x i16> %tmp3, %tmp4
221 %tmp7 = add <8 x i16> %tmp5, %tmp6 221 %tmp7 = add <8 x i16> %tmp5, %tmp6
222 ; CHECK: bic r0, r0, #3221225472 222 ; CHECK: bic r0, r0, #-1073741824
223 ; CHECK-NEXT: vld3.16 {{{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\ [[0-9]\]}}}, [r0] 223 ; CHECK-NEXT: vld3.16 {{{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\ [[0-9]\]}}}, [r0]
224 ret <8 x i16> %tmp7 224 ret <8 x i16> %tmp7
225 } 225 }
226 226
227 define <4 x i32> @vld3laneQi32(i32* %A, <4 x i32>* %B) nounwind { 227 define <4 x i32> @vld3laneQi32(i32* %A, <4 x i32>* %B) nounwind {
228 %tmp0 = bitcast i32* %A to i8* 228 %tmp0 = bitcast i32* %A to i8*
229 %tmp1 = load <4 x i32>* %B 229 %tmp1 = load <4 x i32>, <4 x i32>* %B
230 %tmp2 = call %struct.__neon_int32x4x3_t @llvm.arm.neon.vld3lane.v4i32(i8* %tmp 0, <4 x i32> %tmp1, <4 x i32> %tmp1, <4 x i32> %tmp1, i32 3, i32 1) 230 %tmp2 = call %struct.__neon_int32x4x3_t @llvm.arm.neon.vld3lane.v4i32(i8* %tmp 0, <4 x i32> %tmp1, <4 x i32> %tmp1, <4 x i32> %tmp1, i32 3, i32 1)
231 %tmp3 = extractvalue %struct.__neon_int32x4x3_t %tmp2, 0 231 %tmp3 = extractvalue %struct.__neon_int32x4x3_t %tmp2, 0
232 %tmp4 = extractvalue %struct.__neon_int32x4x3_t %tmp2, 1 232 %tmp4 = extractvalue %struct.__neon_int32x4x3_t %tmp2, 1
233 %tmp5 = extractvalue %struct.__neon_int32x4x3_t %tmp2, 2 233 %tmp5 = extractvalue %struct.__neon_int32x4x3_t %tmp2, 2
234 %tmp6 = add <4 x i32> %tmp3, %tmp4 234 %tmp6 = add <4 x i32> %tmp3, %tmp4
235 %tmp7 = add <4 x i32> %tmp5, %tmp6 235 %tmp7 = add <4 x i32> %tmp5, %tmp6
236 ; CHECK: bic r0, r0, #3221225472 236 ; CHECK: bic r0, r0, #-1073741824
237 ; CHECK-NEXT: vld3.32 {{{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\ [[0-9]\]}}}, [r0] 237 ; CHECK-NEXT: vld3.32 {{{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\ [[0-9]\]}}}, [r0]
238 ret <4 x i32> %tmp7 238 ret <4 x i32> %tmp7
239 } 239 }
240 240
241 define <8 x i8> @vld4lanei8(i8* %A, <8 x i8>* %B) nounwind { 241 define <8 x i8> @vld4lanei8(i8* %A, <8 x i8>* %B) nounwind {
242 %tmp1 = load <8 x i8>* %B 242 %tmp1 = load <8 x i8>, <8 x i8>* %B
243 %tmp2 = call %struct.__neon_int8x8x4_t @llvm.arm.neon.vld4lane.v8i8(i8* %A, <8 x i8> %tmp1, <8 x i8> %tmp1, <8 x i8> %tmp1, <8 x i8> %tmp1, i32 1, i32 8) 243 %tmp2 = call %struct.__neon_int8x8x4_t @llvm.arm.neon.vld4lane.v8i8(i8* %A, <8 x i8> %tmp1, <8 x i8> %tmp1, <8 x i8> %tmp1, <8 x i8> %tmp1, i32 1, i32 8)
244 %tmp3 = extractvalue %struct.__neon_int8x8x4_t %tmp2, 0 244 %tmp3 = extractvalue %struct.__neon_int8x8x4_t %tmp2, 0
245 %tmp4 = extractvalue %struct.__neon_int8x8x4_t %tmp2, 1 245 %tmp4 = extractvalue %struct.__neon_int8x8x4_t %tmp2, 1
246 %tmp5 = extractvalue %struct.__neon_int8x8x4_t %tmp2, 2 246 %tmp5 = extractvalue %struct.__neon_int8x8x4_t %tmp2, 2
247 %tmp6 = extractvalue %struct.__neon_int8x8x4_t %tmp2, 3 247 %tmp6 = extractvalue %struct.__neon_int8x8x4_t %tmp2, 3
248 %tmp7 = add <8 x i8> %tmp3, %tmp4 248 %tmp7 = add <8 x i8> %tmp3, %tmp4
249 %tmp8 = add <8 x i8> %tmp5, %tmp6 249 %tmp8 = add <8 x i8> %tmp5, %tmp6
250 %tmp9 = add <8 x i8> %tmp7, %tmp8 250 %tmp9 = add <8 x i8> %tmp7, %tmp8
251 ; CHECK: bic r0, r0, #3221225472 251 ; CHECK: bic r0, r0, #-1073741824
252 ; CHECK-NEXT: vld4.8 {{{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\[ [0-9]\]}}, {{d[0-9]+\[[0-9]\]}}}, [r0:32] 252 ; CHECK-NEXT: vld4.8 {{{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\[ [0-9]\]}}, {{d[0-9]+\[[0-9]\]}}}, [r0:32]
253 ret <8 x i8> %tmp9 253 ret <8 x i8> %tmp9
254 } 254 }
255 255
256 define <4 x i16> @vld4lanei16(i16* %A, <4 x i16>* %B) nounwind { 256 define <4 x i16> @vld4lanei16(i16* %A, <4 x i16>* %B) nounwind {
257 %tmp0 = bitcast i16* %A to i8* 257 %tmp0 = bitcast i16* %A to i8*
258 %tmp1 = load <4 x i16>* %B 258 %tmp1 = load <4 x i16>, <4 x i16>* %B
259 %tmp2 = call %struct.__neon_int16x4x4_t @llvm.arm.neon.vld4lane.v4i16(i8* %tmp 0, <4 x i16> %tmp1, <4 x i16> %tmp1, <4 x i16> %tmp1, <4 x i16> %tmp1, i32 1, i3 2 4) 259 %tmp2 = call %struct.__neon_int16x4x4_t @llvm.arm.neon.vld4lane.v4i16(i8* %tmp 0, <4 x i16> %tmp1, <4 x i16> %tmp1, <4 x i16> %tmp1, <4 x i16> %tmp1, i32 1, i3 2 4)
260 %tmp3 = extractvalue %struct.__neon_int16x4x4_t %tmp2, 0 260 %tmp3 = extractvalue %struct.__neon_int16x4x4_t %tmp2, 0
261 %tmp4 = extractvalue %struct.__neon_int16x4x4_t %tmp2, 1 261 %tmp4 = extractvalue %struct.__neon_int16x4x4_t %tmp2, 1
262 %tmp5 = extractvalue %struct.__neon_int16x4x4_t %tmp2, 2 262 %tmp5 = extractvalue %struct.__neon_int16x4x4_t %tmp2, 2
263 %tmp6 = extractvalue %struct.__neon_int16x4x4_t %tmp2, 3 263 %tmp6 = extractvalue %struct.__neon_int16x4x4_t %tmp2, 3
264 %tmp7 = add <4 x i16> %tmp3, %tmp4 264 %tmp7 = add <4 x i16> %tmp3, %tmp4
265 %tmp8 = add <4 x i16> %tmp5, %tmp6 265 %tmp8 = add <4 x i16> %tmp5, %tmp6
266 %tmp9 = add <4 x i16> %tmp7, %tmp8 266 %tmp9 = add <4 x i16> %tmp7, %tmp8
267 ; CHECK: bic r0, r0, #3221225472 267 ; CHECK: bic r0, r0, #-1073741824
268 ; CHECK-NEXT: vld4.16 {{{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\ [[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}}, [r0] 268 ; CHECK-NEXT: vld4.16 {{{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\ [[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}}, [r0]
269 ret <4 x i16> %tmp9 269 ret <4 x i16> %tmp9
270 } 270 }
271 271
272 define <2 x i32> @vld4lanei32(i32* %A, <2 x i32>* %B) nounwind { 272 define <2 x i32> @vld4lanei32(i32* %A, <2 x i32>* %B) nounwind {
273 %tmp0 = bitcast i32* %A to i8* 273 %tmp0 = bitcast i32* %A to i8*
274 %tmp1 = load <2 x i32>* %B 274 %tmp1 = load <2 x i32>, <2 x i32>* %B
275 %tmp2 = call %struct.__neon_int32x2x4_t @llvm.arm.neon.vld4lane.v2i32(i8* %tmp 0, <2 x i32> %tmp1, <2 x i32> %tmp1, <2 x i32> %tmp1, <2 x i32> %tmp1, i32 1, i3 2 8) 275 %tmp2 = call %struct.__neon_int32x2x4_t @llvm.arm.neon.vld4lane.v2i32(i8* %tmp 0, <2 x i32> %tmp1, <2 x i32> %tmp1, <2 x i32> %tmp1, <2 x i32> %tmp1, i32 1, i3 2 8)
276 %tmp3 = extractvalue %struct.__neon_int32x2x4_t %tmp2, 0 276 %tmp3 = extractvalue %struct.__neon_int32x2x4_t %tmp2, 0
277 %tmp4 = extractvalue %struct.__neon_int32x2x4_t %tmp2, 1 277 %tmp4 = extractvalue %struct.__neon_int32x2x4_t %tmp2, 1
278 %tmp5 = extractvalue %struct.__neon_int32x2x4_t %tmp2, 2 278 %tmp5 = extractvalue %struct.__neon_int32x2x4_t %tmp2, 2
279 %tmp6 = extractvalue %struct.__neon_int32x2x4_t %tmp2, 3 279 %tmp6 = extractvalue %struct.__neon_int32x2x4_t %tmp2, 3
280 %tmp7 = add <2 x i32> %tmp3, %tmp4 280 %tmp7 = add <2 x i32> %tmp3, %tmp4
281 %tmp8 = add <2 x i32> %tmp5, %tmp6 281 %tmp8 = add <2 x i32> %tmp5, %tmp6
282 %tmp9 = add <2 x i32> %tmp7, %tmp8 282 %tmp9 = add <2 x i32> %tmp7, %tmp8
283 ; CHECK: bic r0, r0, #3221225472 283 ; CHECK: bic r0, r0, #-1073741824
284 ; CHECK-NEXT: vld4.32 {{{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\ [[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}}, [r0:64] 284 ; CHECK-NEXT: vld4.32 {{{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\ [[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}}, [r0:64]
285 ret <2 x i32> %tmp9 285 ret <2 x i32> %tmp9
286 } 286 }
287 287
288 define <8 x i16> @vld4laneQi16(i16* %A, <8 x i16>* %B) nounwind { 288 define <8 x i16> @vld4laneQi16(i16* %A, <8 x i16>* %B) nounwind {
289 %tmp0 = bitcast i16* %A to i8* 289 %tmp0 = bitcast i16* %A to i8*
290 %tmp1 = load <8 x i16>* %B 290 %tmp1 = load <8 x i16>, <8 x i16>* %B
291 %tmp2 = call %struct.__neon_int16x8x4_t @llvm.arm.neon.vld4lane.v8i16(i8* %tmp 0, <8 x i16> %tmp1, <8 x i16> %tmp1, <8 x i16> %tmp1, <8 x i16> %tmp1, i32 1, i3 2 16) 291 %tmp2 = call %struct.__neon_int16x8x4_t @llvm.arm.neon.vld4lane.v8i16(i8* %tmp 0, <8 x i16> %tmp1, <8 x i16> %tmp1, <8 x i16> %tmp1, <8 x i16> %tmp1, i32 1, i3 2 16)
292 %tmp3 = extractvalue %struct.__neon_int16x8x4_t %tmp2, 0 292 %tmp3 = extractvalue %struct.__neon_int16x8x4_t %tmp2, 0
293 %tmp4 = extractvalue %struct.__neon_int16x8x4_t %tmp2, 1 293 %tmp4 = extractvalue %struct.__neon_int16x8x4_t %tmp2, 1
294 %tmp5 = extractvalue %struct.__neon_int16x8x4_t %tmp2, 2 294 %tmp5 = extractvalue %struct.__neon_int16x8x4_t %tmp2, 2
295 %tmp6 = extractvalue %struct.__neon_int16x8x4_t %tmp2, 3 295 %tmp6 = extractvalue %struct.__neon_int16x8x4_t %tmp2, 3
296 %tmp7 = add <8 x i16> %tmp3, %tmp4 296 %tmp7 = add <8 x i16> %tmp3, %tmp4
297 %tmp8 = add <8 x i16> %tmp5, %tmp6 297 %tmp8 = add <8 x i16> %tmp5, %tmp6
298 %tmp9 = add <8 x i16> %tmp7, %tmp8 298 %tmp9 = add <8 x i16> %tmp7, %tmp8
299 ; CHECK: bic r0, r0, #3221225472 299 ; CHECK: bic r0, r0, #-1073741824
300 ; CHECK-NEXT: vld4.16 {{{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\ [[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}}, [r0:64] 300 ; CHECK-NEXT: vld4.16 {{{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\ [[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}}, [r0:64]
301 ret <8 x i16> %tmp9 301 ret <8 x i16> %tmp9
302 } 302 }
303 303
304 define <4 x i32> @vld4laneQi32(i32* %A, <4 x i32>* %B) nounwind { 304 define <4 x i32> @vld4laneQi32(i32* %A, <4 x i32>* %B) nounwind {
305 %tmp0 = bitcast i32* %A to i8* 305 %tmp0 = bitcast i32* %A to i8*
306 %tmp1 = load <4 x i32>* %B 306 %tmp1 = load <4 x i32>, <4 x i32>* %B
307 %tmp2 = call %struct.__neon_int32x4x4_t @llvm.arm.neon.vld4lane.v4i32(i8* %tmp 0, <4 x i32> %tmp1, <4 x i32> %tmp1, <4 x i32> %tmp1, <4 x i32> %tmp1, i32 2, i3 2 1) 307 %tmp2 = call %struct.__neon_int32x4x4_t @llvm.arm.neon.vld4lane.v4i32(i8* %tmp 0, <4 x i32> %tmp1, <4 x i32> %tmp1, <4 x i32> %tmp1, <4 x i32> %tmp1, i32 2, i3 2 1)
308 %tmp3 = extractvalue %struct.__neon_int32x4x4_t %tmp2, 0 308 %tmp3 = extractvalue %struct.__neon_int32x4x4_t %tmp2, 0
309 %tmp4 = extractvalue %struct.__neon_int32x4x4_t %tmp2, 1 309 %tmp4 = extractvalue %struct.__neon_int32x4x4_t %tmp2, 1
310 %tmp5 = extractvalue %struct.__neon_int32x4x4_t %tmp2, 2 310 %tmp5 = extractvalue %struct.__neon_int32x4x4_t %tmp2, 2
311 %tmp6 = extractvalue %struct.__neon_int32x4x4_t %tmp2, 3 311 %tmp6 = extractvalue %struct.__neon_int32x4x4_t %tmp2, 3
312 %tmp7 = add <4 x i32> %tmp3, %tmp4 312 %tmp7 = add <4 x i32> %tmp3, %tmp4
313 %tmp8 = add <4 x i32> %tmp5, %tmp6 313 %tmp8 = add <4 x i32> %tmp5, %tmp6
314 %tmp9 = add <4 x i32> %tmp7, %tmp8 314 %tmp9 = add <4 x i32> %tmp7, %tmp8
315 ; CHECK: bic r0, r0, #3221225472 315 ; CHECK: bic r0, r0, #-1073741824
316 ; CHECK-NEXT: vld4.32 {{{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\ [[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}}, [r0] 316 ; CHECK-NEXT: vld4.32 {{{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}, {{d[0-9]+\ [[0-9]\]}}, {{d[0-9]+\[[0-9]\]}}}, [r0]
317 ret <4 x i32> %tmp9 317 ret <4 x i32> %tmp9
318 } 318 }
319 319
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698