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

Side by Side Diff: tests_lit/reader_tests/insertextract.ll

Issue 686913003: Fix insert/extract element vector operations to check index is literal (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Fix issues in patch set 2. Created 6 years, 1 month 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
« no previous file with comments | « src/PNaClTranslator.cpp ('k') | tests_lit/reader_tests/insertextract-err.ll » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 ; Tests insertelement and extractelement vector instructions. 1 ; Tests insertelement and extractelement vector instructions.
2 2
3 ; RUN: %p2i -i %s --insts | FileCheck %s 3 ; RUN: %p2i -i %s --insts | FileCheck %s
4 4 ; RUN: %l2i -i %s --insts | %ifl FileCheck %s
5 ; TODO(kschimpf): Change index arguments to valid constant indices once 5 ; RUN: %lc2i -i %s --insts | %iflc FileCheck %s
6 ; we can handle constants. 6
7 7 define void @ExtractV4xi1(<4 x i1> %v) {
8 define void @ExtractV4xi1(<4 x i1> %v, i32 %i) { 8 entry:
9 entry: 9 %e0 = extractelement <4 x i1> %v, i32 0
10 %e = extractelement <4 x i1> %v, i32 %i 10 %e1 = extractelement <4 x i1> %v, i32 1
11 ret void 11 %e2 = extractelement <4 x i1> %v, i32 2
12 } 12 %e3 = extractelement <4 x i1> %v, i32 3
13 13 ret void
14 ; CHECK: define void @ExtractV4xi1(<4 x i1> %v, i32 %i) { 14 }
15 ; CHECK-NEXT: entry: 15
16 ; CHECK-NEXT: %e = extractelement <4 x i1> %v, i32 %i 16 ; CHECK: define void @ExtractV4xi1(<4 x i1> %v) {
17 ; CHECK-NEXT: ret void 17 ; CHECK-NEXT: entry:
18 ; CHECK-NEXT: } 18 ; CHECK-NEXT: %e0 = extractelement <4 x i1> %v, i32 0
19 19 ; CHECK-NEXT: %e1 = extractelement <4 x i1> %v, i32 1
20 define void @ExtractV8xi1(<8 x i1> %v, i32 %i) { 20 ; CHECK-NEXT: %e2 = extractelement <4 x i1> %v, i32 2
21 entry: 21 ; CHECK-NEXT: %e3 = extractelement <4 x i1> %v, i32 3
22 %e = extractelement <8 x i1> %v, i32 %i 22 ; CHECK-NEXT: ret void
23 ret void 23 ; CHECK-NEXT: }
24 } 24
25 25 define void @ExtractV8xi1(<8 x i1> %v) {
26 ; CHECK-NEXT: define void @ExtractV8xi1(<8 x i1> %v, i32 %i) { 26 entry:
27 ; CHECK-NEXT: entry: 27 %e0 = extractelement <8 x i1> %v, i32 0
28 ; CHECK-NEXT: %e = extractelement <8 x i1> %v, i32 %i 28 %e1 = extractelement <8 x i1> %v, i32 1
29 ; CHECK-NEXT: ret void 29 %e2 = extractelement <8 x i1> %v, i32 2
30 ; CHECK-NEXT: } 30 %e3 = extractelement <8 x i1> %v, i32 3
31 31 %e4 = extractelement <8 x i1> %v, i32 4
32 define void @ExtractV16xi1(<16 x i1> %v, i32 %i) { 32 %e5 = extractelement <8 x i1> %v, i32 5
33 entry: 33 %e6 = extractelement <8 x i1> %v, i32 6
34 %e = extractelement <16 x i1> %v, i32 %i 34 %e7 = extractelement <8 x i1> %v, i32 7
35 ret void 35 ret void
36 } 36 }
37 37
38 ; CHECK-NEXT: define void @ExtractV16xi1(<16 x i1> %v, i32 %i) { 38 ; CHECK-NEXT: define void @ExtractV8xi1(<8 x i1> %v) {
39 ; CHECK-NEXT: entry: 39 ; CHECK-NEXT: entry:
40 ; CHECK-NEXT: %e = extractelement <16 x i1> %v, i32 %i 40 ; CHECK-NEXT: %e0 = extractelement <8 x i1> %v, i32 0
41 ; CHECK-NEXT: %e1 = extractelement <8 x i1> %v, i32 1
42 ; CHECK-NEXT: %e2 = extractelement <8 x i1> %v, i32 2
43 ; CHECK-NEXT: %e3 = extractelement <8 x i1> %v, i32 3
44 ; CHECK-NEXT: %e4 = extractelement <8 x i1> %v, i32 4
45 ; CHECK-NEXT: %e5 = extractelement <8 x i1> %v, i32 5
46 ; CHECK-NEXT: %e6 = extractelement <8 x i1> %v, i32 6
47 ; CHECK-NEXT: %e7 = extractelement <8 x i1> %v, i32 7
48 ; CHECK-NEXT: ret void
49 ; CHECK-NEXT: }
50
51 define void @ExtractV16xi1(<16 x i1> %v) {
52 entry:
53 %e0 = extractelement <16 x i1> %v, i32 0
54 %e1 = extractelement <16 x i1> %v, i32 1
55 %e2 = extractelement <16 x i1> %v, i32 2
56 %e3 = extractelement <16 x i1> %v, i32 3
57 %e4 = extractelement <16 x i1> %v, i32 4
58 %e5 = extractelement <16 x i1> %v, i32 5
59 %e6 = extractelement <16 x i1> %v, i32 6
60 %e7 = extractelement <16 x i1> %v, i32 7
61 %e8 = extractelement <16 x i1> %v, i32 8
62 %e9 = extractelement <16 x i1> %v, i32 9
63 %e10 = extractelement <16 x i1> %v, i32 10
64 %e11 = extractelement <16 x i1> %v, i32 11
65 %e12 = extractelement <16 x i1> %v, i32 12
66 %e13 = extractelement <16 x i1> %v, i32 13
67 %e14 = extractelement <16 x i1> %v, i32 14
68 %e15 = extractelement <16 x i1> %v, i32 15
69 ret void
70 }
71
72 ; CHECK-NEXT: define void @ExtractV16xi1(<16 x i1> %v) {
73 ; CHECK-NEXT: entry:
74 ; CHECK-NEXT: %e0 = extractelement <16 x i1> %v, i32 0
75 ; CHECK-NEXT: %e1 = extractelement <16 x i1> %v, i32 1
76 ; CHECK-NEXT: %e2 = extractelement <16 x i1> %v, i32 2
77 ; CHECK-NEXT: %e3 = extractelement <16 x i1> %v, i32 3
78 ; CHECK-NEXT: %e4 = extractelement <16 x i1> %v, i32 4
79 ; CHECK-NEXT: %e5 = extractelement <16 x i1> %v, i32 5
80 ; CHECK-NEXT: %e6 = extractelement <16 x i1> %v, i32 6
81 ; CHECK-NEXT: %e7 = extractelement <16 x i1> %v, i32 7
82 ; CHECK-NEXT: %e8 = extractelement <16 x i1> %v, i32 8
83 ; CHECK-NEXT: %e9 = extractelement <16 x i1> %v, i32 9
84 ; CHECK-NEXT: %e10 = extractelement <16 x i1> %v, i32 10
85 ; CHECK-NEXT: %e11 = extractelement <16 x i1> %v, i32 11
86 ; CHECK-NEXT: %e12 = extractelement <16 x i1> %v, i32 12
87 ; CHECK-NEXT: %e13 = extractelement <16 x i1> %v, i32 13
88 ; CHECK-NEXT: %e14 = extractelement <16 x i1> %v, i32 14
89 ; CHECK-NEXT: %e15 = extractelement <16 x i1> %v, i32 15
41 ; CHECK-NEXT: ret void 90 ; CHECK-NEXT: ret void
42 ; CHECK-NEXT: } 91 ; CHECK-NEXT: }
43 92
44 define void @ExtractV16xi8(<16 x i8> %v, i32 %i) { 93 define void @ExtractV16xi8(<16 x i8> %v, i32 %i) {
45 entry: 94 entry:
46 %e = extractelement <16 x i8> %v, i32 %i 95 %e0 = extractelement <16 x i8> %v, i32 0
96 %e1 = extractelement <16 x i8> %v, i32 1
97 %e2 = extractelement <16 x i8> %v, i32 2
98 %e3 = extractelement <16 x i8> %v, i32 3
99 %e4 = extractelement <16 x i8> %v, i32 4
100 %e5 = extractelement <16 x i8> %v, i32 5
101 %e6 = extractelement <16 x i8> %v, i32 6
102 %e7 = extractelement <16 x i8> %v, i32 7
103 %e8 = extractelement <16 x i8> %v, i32 8
104 %e9 = extractelement <16 x i8> %v, i32 9
105 %e10 = extractelement <16 x i8> %v, i32 10
106 %e11 = extractelement <16 x i8> %v, i32 11
107 %e12 = extractelement <16 x i8> %v, i32 12
108 %e13 = extractelement <16 x i8> %v, i32 13
109 %e14 = extractelement <16 x i8> %v, i32 14
110 %e15 = extractelement <16 x i8> %v, i32 15
47 ret void 111 ret void
48 } 112 }
49 113
50 ; CHECK-NEXT: define void @ExtractV16xi8(<16 x i8> %v, i32 %i) { 114 ; CHECK-NEXT: define void @ExtractV16xi8(<16 x i8> %v, i32 %i) {
51 ; CHECK-NEXT: entry: 115 ; CHECK-NEXT: entry:
52 ; CHECK-NEXT: %e = extractelement <16 x i8> %v, i32 %i 116 ; CHECK-NEXT: %e0 = extractelement <16 x i8> %v, i32 0
53 ; CHECK-NEXT: ret void 117 ; CHECK-NEXT: %e1 = extractelement <16 x i8> %v, i32 1
54 ; CHECK-NEXT: } 118 ; CHECK-NEXT: %e2 = extractelement <16 x i8> %v, i32 2
55 119 ; CHECK-NEXT: %e3 = extractelement <16 x i8> %v, i32 3
56 define void @ExtractV8xi16(<8 x i16> %v, i32 %i) { 120 ; CHECK-NEXT: %e4 = extractelement <16 x i8> %v, i32 4
57 entry: 121 ; CHECK-NEXT: %e5 = extractelement <16 x i8> %v, i32 5
58 %e = extractelement <8 x i16> %v, i32 %i 122 ; CHECK-NEXT: %e6 = extractelement <16 x i8> %v, i32 6
59 ret void 123 ; CHECK-NEXT: %e7 = extractelement <16 x i8> %v, i32 7
60 } 124 ; CHECK-NEXT: %e8 = extractelement <16 x i8> %v, i32 8
61 125 ; CHECK-NEXT: %e9 = extractelement <16 x i8> %v, i32 9
62 ; CHECK-NEXT: define void @ExtractV8xi16(<8 x i16> %v, i32 %i) { 126 ; CHECK-NEXT: %e10 = extractelement <16 x i8> %v, i32 10
63 ; CHECK-NEXT: entry: 127 ; CHECK-NEXT: %e11 = extractelement <16 x i8> %v, i32 11
64 ; CHECK-NEXT: %e = extractelement <8 x i16> %v, i32 %i 128 ; CHECK-NEXT: %e12 = extractelement <16 x i8> %v, i32 12
65 ; CHECK-NEXT: ret void 129 ; CHECK-NEXT: %e13 = extractelement <16 x i8> %v, i32 13
66 ; CHECK-NEXT: } 130 ; CHECK-NEXT: %e14 = extractelement <16 x i8> %v, i32 14
67 131 ; CHECK-NEXT: %e15 = extractelement <16 x i8> %v, i32 15
68 define i32 @ExtractV4xi32(<4 x i32> %v, i32 %i) { 132 ; CHECK-NEXT: ret void
69 entry: 133 ; CHECK-NEXT: }
70 %e = extractelement <4 x i32> %v, i32 %i 134
71 ret i32 %e 135 define void @ExtractV8xi16(<8 x i16> %v) {
72 } 136 entry:
73 137 %e0 = extractelement <8 x i16> %v, i32 0
74 ; CHECK-NEXT: define i32 @ExtractV4xi32(<4 x i32> %v, i32 %i) { 138 %e1 = extractelement <8 x i16> %v, i32 1
75 ; CHECK-NEXT: entry: 139 %e2 = extractelement <8 x i16> %v, i32 2
76 ; CHECK-NEXT: %e = extractelement <4 x i32> %v, i32 %i 140 %e3 = extractelement <8 x i16> %v, i32 3
77 ; CHECK-NEXT: ret i32 %e 141 %e4 = extractelement <8 x i16> %v, i32 4
78 ; CHECK-NEXT: } 142 %e5 = extractelement <8 x i16> %v, i32 5
79 143 %e6 = extractelement <8 x i16> %v, i32 6
80 define float @ExtractV4xfloat(<4 x float> %v, i32 %i) { 144 %e7 = extractelement <8 x i16> %v, i32 7
81 entry: 145 ret void
82 %e = extractelement <4 x float> %v, i32 %i 146 }
83 ret float %e 147
84 } 148 ; CHECK-NEXT: define void @ExtractV8xi16(<8 x i16> %v) {
85 149 ; CHECK-NEXT: entry:
86 ; CHECK-NEXT: define float @ExtractV4xfloat(<4 x float> %v, i32 %i) { 150 ; CHECK-NEXT: %e0 = extractelement <8 x i16> %v, i32 0
87 ; CHECK-NEXT: entry: 151 ; CHECK-NEXT: %e1 = extractelement <8 x i16> %v, i32 1
88 ; CHECK-NEXT: %e = extractelement <4 x float> %v, i32 %i 152 ; CHECK-NEXT: %e2 = extractelement <8 x i16> %v, i32 2
89 ; CHECK-NEXT: ret float %e 153 ; CHECK-NEXT: %e3 = extractelement <8 x i16> %v, i32 3
90 ; CHECK-NEXT: } 154 ; CHECK-NEXT: %e4 = extractelement <8 x i16> %v, i32 4
91 155 ; CHECK-NEXT: %e5 = extractelement <8 x i16> %v, i32 5
92 define <4 x i1> @InsertV4xi1(<4 x i1> %v, i32 %pe, i32 %i) { 156 ; CHECK-NEXT: %e6 = extractelement <8 x i16> %v, i32 6
157 ; CHECK-NEXT: %e7 = extractelement <8 x i16> %v, i32 7
158 ; CHECK-NEXT: ret void
159 ; CHECK-NEXT: }
160
161 define i32 @ExtractV4xi32(<4 x i32> %v) {
162 entry:
163 %e0 = extractelement <4 x i32> %v, i32 0
164 %e1 = extractelement <4 x i32> %v, i32 1
165 %e2 = extractelement <4 x i32> %v, i32 2
166 %e3 = extractelement <4 x i32> %v, i32 3
167 ret i32 %e0
168 }
169
170 ; CHECK-NEXT: define i32 @ExtractV4xi32(<4 x i32> %v) {
171 ; CHECK-NEXT: entry:
172 ; CHECK-NEXT: %e0 = extractelement <4 x i32> %v, i32 0
173 ; CHECK-NEXT: %e1 = extractelement <4 x i32> %v, i32 1
174 ; CHECK-NEXT: %e2 = extractelement <4 x i32> %v, i32 2
175 ; CHECK-NEXT: %e3 = extractelement <4 x i32> %v, i32 3
176 ; CHECK-NEXT: ret i32 %e0
177 ; CHECK-NEXT: }
178
179 define float @ExtractV4xfloat(<4 x float> %v) {
180 entry:
181 %e0 = extractelement <4 x float> %v, i32 0
182 %e1 = extractelement <4 x float> %v, i32 1
183 %e2 = extractelement <4 x float> %v, i32 2
184 %e3 = extractelement <4 x float> %v, i32 3
185 ret float %e0
186 }
187
188 ; CHECK-NEXT: define float @ExtractV4xfloat(<4 x float> %v) {
189 ; CHECK-NEXT: entry:
190 ; CHECK-NEXT: %e0 = extractelement <4 x float> %v, i32 0
191 ; CHECK-NEXT: %e1 = extractelement <4 x float> %v, i32 1
192 ; CHECK-NEXT: %e2 = extractelement <4 x float> %v, i32 2
193 ; CHECK-NEXT: %e3 = extractelement <4 x float> %v, i32 3
194 ; CHECK-NEXT: ret float %e0
195 ; CHECK-NEXT: }
196
197 define <4 x i1> @InsertV4xi1(<4 x i1> %v, i32 %pe) {
93 entry: 198 entry:
94 %e = trunc i32 %pe to i1 199 %e = trunc i32 %pe to i1
95 %r = insertelement <4 x i1> %v, i1 %e, i32 %i 200 %r0 = insertelement <4 x i1> %v, i1 %e, i32 0
96 ret <4 x i1> %r 201 %r1 = insertelement <4 x i1> %v, i1 %e, i32 1
97 } 202 %r2 = insertelement <4 x i1> %v, i1 %e, i32 2
98 203 %r3 = insertelement <4 x i1> %v, i1 %e, i32 3
99 ; CHECK-NEXT: define <4 x i1> @InsertV4xi1(<4 x i1> %v, i32 %pe, i32 %i) { 204 ret <4 x i1> %r3
205 }
206
207 ; CHECK-NEXT: define <4 x i1> @InsertV4xi1(<4 x i1> %v, i32 %pe) {
100 ; CHECK-NEXT: entry: 208 ; CHECK-NEXT: entry:
101 ; CHECK-NEXT: %e = trunc i32 %pe to i1 209 ; CHECK-NEXT: %e = trunc i32 %pe to i1
102 ; CHECK-NEXT: %r = insertelement <4 x i1> %v, i1 %e, i32 %i 210 ; CHECK-NEXT: %r0 = insertelement <4 x i1> %v, i1 %e, i32 0
103 ; CHECK-NEXT: ret <4 x i1> %r 211 ; CHECK-NEXT: %r1 = insertelement <4 x i1> %v, i1 %e, i32 1
104 ; CHECK-NEXT: } 212 ; CHECK-NEXT: %r2 = insertelement <4 x i1> %v, i1 %e, i32 2
105 213 ; CHECK-NEXT: %r3 = insertelement <4 x i1> %v, i1 %e, i32 3
106 define <8 x i1> @InsertV8xi1(<8 x i1> %v, i32 %pe, i32 %i) { 214 ; CHECK-NEXT: ret <4 x i1> %r3
215 ; CHECK-NEXT: }
216
217 define <8 x i1> @InsertV8xi1(<8 x i1> %v, i32 %pe) {
107 entry: 218 entry:
108 %e = trunc i32 %pe to i1 219 %e = trunc i32 %pe to i1
109 %r = insertelement <8 x i1> %v, i1 %e, i32 %i 220 %r0 = insertelement <8 x i1> %v, i1 %e, i32 0
110 ret <8 x i1> %r 221 %r1 = insertelement <8 x i1> %v, i1 %e, i32 1
111 } 222 %r2 = insertelement <8 x i1> %v, i1 %e, i32 2
112 223 %r3 = insertelement <8 x i1> %v, i1 %e, i32 3
113 ; CHECK-NEXT: define <8 x i1> @InsertV8xi1(<8 x i1> %v, i32 %pe, i32 %i) { 224 %r4 = insertelement <8 x i1> %v, i1 %e, i32 4
225 %r5 = insertelement <8 x i1> %v, i1 %e, i32 5
226 %r6 = insertelement <8 x i1> %v, i1 %e, i32 6
227 %r7 = insertelement <8 x i1> %v, i1 %e, i32 7
228 ret <8 x i1> %r7
229 }
230
231 ; CHECK-NEXT: define <8 x i1> @InsertV8xi1(<8 x i1> %v, i32 %pe) {
114 ; CHECK-NEXT: entry: 232 ; CHECK-NEXT: entry:
115 ; CHECK-NEXT: %e = trunc i32 %pe to i1 233 ; CHECK-NEXT: %e = trunc i32 %pe to i1
116 ; CHECK-NEXT: %r = insertelement <8 x i1> %v, i1 %e, i32 %i 234 ; CHECK-NEXT: %r0 = insertelement <8 x i1> %v, i1 %e, i32 0
117 ; CHECK-NEXT: ret <8 x i1> %r 235 ; CHECK-NEXT: %r1 = insertelement <8 x i1> %v, i1 %e, i32 1
118 ; CHECK-NEXT: } 236 ; CHECK-NEXT: %r2 = insertelement <8 x i1> %v, i1 %e, i32 2
119 237 ; CHECK-NEXT: %r3 = insertelement <8 x i1> %v, i1 %e, i32 3
120 define <16 x i1> @InsertV16xi1(<16 x i1> %v, i32 %pe, i32 %i) { 238 ; CHECK-NEXT: %r4 = insertelement <8 x i1> %v, i1 %e, i32 4
239 ; CHECK-NEXT: %r5 = insertelement <8 x i1> %v, i1 %e, i32 5
240 ; CHECK-NEXT: %r6 = insertelement <8 x i1> %v, i1 %e, i32 6
241 ; CHECK-NEXT: %r7 = insertelement <8 x i1> %v, i1 %e, i32 7
242 ; CHECK-NEXT: ret <8 x i1> %r7
243 ; CHECK-NEXT: }
244
245 define <16 x i1> @InsertV16xi1(<16 x i1> %v, i32 %pe) {
121 entry: 246 entry:
122 %e = trunc i32 %pe to i1 247 %e = trunc i32 %pe to i1
123 %r = insertelement <16 x i1> %v, i1 %e, i32 %i 248 %r0 = insertelement <16 x i1> %v, i1 %e, i32 0
124 ret <16 x i1> %r 249 %r1 = insertelement <16 x i1> %v, i1 %e, i32 1
125 } 250 %r2 = insertelement <16 x i1> %v, i1 %e, i32 2
126 251 %r3 = insertelement <16 x i1> %v, i1 %e, i32 3
127 ; CHECK-NEXT: define <16 x i1> @InsertV16xi1(<16 x i1> %v, i32 %pe, i32 %i) { 252 %r4 = insertelement <16 x i1> %v, i1 %e, i32 4
253 %r5 = insertelement <16 x i1> %v, i1 %e, i32 5
254 %r6 = insertelement <16 x i1> %v, i1 %e, i32 6
255 %r7 = insertelement <16 x i1> %v, i1 %e, i32 7
256 %r8 = insertelement <16 x i1> %v, i1 %e, i32 8
257 %r9 = insertelement <16 x i1> %v, i1 %e, i32 9
258 %r10 = insertelement <16 x i1> %v, i1 %e, i32 10
259 %r11 = insertelement <16 x i1> %v, i1 %e, i32 11
260 %r12 = insertelement <16 x i1> %v, i1 %e, i32 12
261 %r13 = insertelement <16 x i1> %v, i1 %e, i32 13
262 %r14 = insertelement <16 x i1> %v, i1 %e, i32 14
263 %r15 = insertelement <16 x i1> %v, i1 %e, i32 15
264 ret <16 x i1> %r15
265 }
266
267 ; CHECK-NEXT: define <16 x i1> @InsertV16xi1(<16 x i1> %v, i32 %pe) {
128 ; CHECK-NEXT: entry: 268 ; CHECK-NEXT: entry:
129 ; CHECK-NEXT: %e = trunc i32 %pe to i1 269 ; CHECK-NEXT: %e = trunc i32 %pe to i1
130 ; CHECK-NEXT: %r = insertelement <16 x i1> %v, i1 %e, i32 %i 270 ; CHECK-NEXT: %r0 = insertelement <16 x i1> %v, i1 %e, i32 0
131 ; CHECK-NEXT: ret <16 x i1> %r 271 ; CHECK-NEXT: %r1 = insertelement <16 x i1> %v, i1 %e, i32 1
132 ; CHECK-NEXT: } 272 ; CHECK-NEXT: %r2 = insertelement <16 x i1> %v, i1 %e, i32 2
133 273 ; CHECK-NEXT: %r3 = insertelement <16 x i1> %v, i1 %e, i32 3
134 define <16 x i8> @InsertV16xi8(<16 x i8> %v, i32 %pe, i32 %i) { 274 ; CHECK-NEXT: %r4 = insertelement <16 x i1> %v, i1 %e, i32 4
275 ; CHECK-NEXT: %r5 = insertelement <16 x i1> %v, i1 %e, i32 5
276 ; CHECK-NEXT: %r6 = insertelement <16 x i1> %v, i1 %e, i32 6
277 ; CHECK-NEXT: %r7 = insertelement <16 x i1> %v, i1 %e, i32 7
278 ; CHECK-NEXT: %r8 = insertelement <16 x i1> %v, i1 %e, i32 8
279 ; CHECK-NEXT: %r9 = insertelement <16 x i1> %v, i1 %e, i32 9
280 ; CHECK-NEXT: %r10 = insertelement <16 x i1> %v, i1 %e, i32 10
281 ; CHECK-NEXT: %r11 = insertelement <16 x i1> %v, i1 %e, i32 11
282 ; CHECK-NEXT: %r12 = insertelement <16 x i1> %v, i1 %e, i32 12
283 ; CHECK-NEXT: %r13 = insertelement <16 x i1> %v, i1 %e, i32 13
284 ; CHECK-NEXT: %r14 = insertelement <16 x i1> %v, i1 %e, i32 14
285 ; CHECK-NEXT: %r15 = insertelement <16 x i1> %v, i1 %e, i32 15
286 ; CHECK-NEXT: ret <16 x i1> %r15
287 ; CHECK-NEXT: }
288
289 define <16 x i8> @InsertV16xi8(<16 x i8> %v, i32 %pe) {
135 entry: 290 entry:
136 %e = trunc i32 %pe to i8 291 %e = trunc i32 %pe to i8
137 %r = insertelement <16 x i8> %v, i8 %e, i32 %i 292 %r0 = insertelement <16 x i8> %v, i8 %e, i32 0
138 ret <16 x i8> %r 293 %r1 = insertelement <16 x i8> %v, i8 %e, i32 1
139 } 294 %r2 = insertelement <16 x i8> %v, i8 %e, i32 2
140 295 %r3 = insertelement <16 x i8> %v, i8 %e, i32 3
141 ; CHECK-NEXT: define <16 x i8> @InsertV16xi8(<16 x i8> %v, i32 %pe, i32 %i) { 296 %r4 = insertelement <16 x i8> %v, i8 %e, i32 4
297 %r5 = insertelement <16 x i8> %v, i8 %e, i32 5
298 %r6 = insertelement <16 x i8> %v, i8 %e, i32 6
299 %r7 = insertelement <16 x i8> %v, i8 %e, i32 7
300 ret <16 x i8> %r7
301 }
302
303 ; CHECK-NEXT: define <16 x i8> @InsertV16xi8(<16 x i8> %v, i32 %pe) {
142 ; CHECK-NEXT: entry: 304 ; CHECK-NEXT: entry:
143 ; CHECK-NEXT: %e = trunc i32 %pe to i8 305 ; CHECK-NEXT: %e = trunc i32 %pe to i8
144 ; CHECK-NEXT: %r = insertelement <16 x i8> %v, i8 %e, i32 %i 306 ; CHECK-NEXT: %r0 = insertelement <16 x i8> %v, i8 %e, i32 0
145 ; CHECK-NEXT: ret <16 x i8> %r 307 ; CHECK-NEXT: %r1 = insertelement <16 x i8> %v, i8 %e, i32 1
146 ; CHECK-NEXT: } 308 ; CHECK-NEXT: %r2 = insertelement <16 x i8> %v, i8 %e, i32 2
147 309 ; CHECK-NEXT: %r3 = insertelement <16 x i8> %v, i8 %e, i32 3
148 define <8 x i16> @InsertV8xi16(<8 x i16> %v, i32 %pe, i32 %i) { 310 ; CHECK-NEXT: %r4 = insertelement <16 x i8> %v, i8 %e, i32 4
311 ; CHECK-NEXT: %r5 = insertelement <16 x i8> %v, i8 %e, i32 5
312 ; CHECK-NEXT: %r6 = insertelement <16 x i8> %v, i8 %e, i32 6
313 ; CHECK-NEXT: %r7 = insertelement <16 x i8> %v, i8 %e, i32 7
314 ; CHECK-NEXT: ret <16 x i8> %r7
315 ; CHECK-NEXT: }
316
317 define <8 x i16> @InsertV8xi16(<8 x i16> %v, i32 %pe) {
149 entry: 318 entry:
150 %e = trunc i32 %pe to i16 319 %e = trunc i32 %pe to i16
151 %r = insertelement <8 x i16> %v, i16 %e, i32 %i 320 %r0 = insertelement <8 x i16> %v, i16 %e, i32 0
152 ret <8 x i16> %r 321 %r1 = insertelement <8 x i16> %v, i16 %e, i32 1
153 } 322 %r2 = insertelement <8 x i16> %v, i16 %e, i32 2
154 323 %r3 = insertelement <8 x i16> %v, i16 %e, i32 3
155 ; CHECK-NEXT: define <8 x i16> @InsertV8xi16(<8 x i16> %v, i32 %pe, i32 %i) { 324 %r4 = insertelement <8 x i16> %v, i16 %e, i32 4
325 %r5 = insertelement <8 x i16> %v, i16 %e, i32 5
326 %r6 = insertelement <8 x i16> %v, i16 %e, i32 6
327 %r7 = insertelement <8 x i16> %v, i16 %e, i32 7
328 ret <8 x i16> %r7
329 }
330
331 ; CHECK-NEXT: define <8 x i16> @InsertV8xi16(<8 x i16> %v, i32 %pe) {
156 ; CHECK-NEXT: entry: 332 ; CHECK-NEXT: entry:
157 ; CHECK-NEXT: %e = trunc i32 %pe to i16 333 ; CHECK-NEXT: %e = trunc i32 %pe to i16
158 ; CHECK-NEXT: %r = insertelement <8 x i16> %v, i16 %e, i32 %i 334 ; CHECK-NEXT: %r0 = insertelement <8 x i16> %v, i16 %e, i32 0
159 ; CHECK-NEXT: ret <8 x i16> %r 335 ; CHECK-NEXT: %r1 = insertelement <8 x i16> %v, i16 %e, i32 1
160 ; CHECK-NEXT: } 336 ; CHECK-NEXT: %r2 = insertelement <8 x i16> %v, i16 %e, i32 2
161 337 ; CHECK-NEXT: %r3 = insertelement <8 x i16> %v, i16 %e, i32 3
162 define <4 x i32> @InsertV4xi32(<4 x i32> %v, i32 %e, i32 %i) { 338 ; CHECK-NEXT: %r4 = insertelement <8 x i16> %v, i16 %e, i32 4
163 entry: 339 ; CHECK-NEXT: %r5 = insertelement <8 x i16> %v, i16 %e, i32 5
164 %r = insertelement <4 x i32> %v, i32 %e, i32 %i 340 ; CHECK-NEXT: %r6 = insertelement <8 x i16> %v, i16 %e, i32 6
165 ret <4 x i32> %r 341 ; CHECK-NEXT: %r7 = insertelement <8 x i16> %v, i16 %e, i32 7
166 } 342 ; CHECK-NEXT: ret <8 x i16> %r7
167 343 ; CHECK-NEXT: }
168 ; CHECK-NEXT: define <4 x i32> @InsertV4xi32(<4 x i32> %v, i32 %e, i32 %i) { 344
169 ; CHECK-NEXT: entry: 345 define <4 x i32> @InsertV4xi32(<4 x i32> %v, i32 %e) {
170 ; CHECK-NEXT: %r = insertelement <4 x i32> %v, i32 %e, i32 %i 346 entry:
171 ; CHECK-NEXT: ret <4 x i32> %r 347 %r0 = insertelement <4 x i32> %v, i32 %e, i32 0
172 ; CHECK-NEXT: } 348 %r1 = insertelement <4 x i32> %v, i32 %e, i32 1
173 349 %r2 = insertelement <4 x i32> %v, i32 %e, i32 2
174 define <4 x float> @InsertV4xfloat(<4 x float> %v, float %e, i32 %i) { 350 %r3 = insertelement <4 x i32> %v, i32 %e, i32 3
175 entry: 351 ret <4 x i32> %r3
176 %r = insertelement <4 x float> %v, float %e, i32 %i 352 }
177 ret <4 x float> %r 353
178 } 354 ; CHECK-NEXT: define <4 x i32> @InsertV4xi32(<4 x i32> %v, i32 %e) {
179 355 ; CHECK-NEXT: entry:
180 ; CHECK-NEXT: define <4 x float> @InsertV4xfloat(<4 x float> %v, float %e, i32 % i) { 356 ; CHECK-NEXT: %r0 = insertelement <4 x i32> %v, i32 %e, i32 0
181 ; CHECK-NEXT: entry: 357 ; CHECK-NEXT: %r1 = insertelement <4 x i32> %v, i32 %e, i32 1
182 ; CHECK-NEXT: %r = insertelement <4 x float> %v, float %e, i32 %i 358 ; CHECK-NEXT: %r2 = insertelement <4 x i32> %v, i32 %e, i32 2
183 ; CHECK-NEXT: ret <4 x float> %r 359 ; CHECK-NEXT: %r3 = insertelement <4 x i32> %v, i32 %e, i32 3
184 ; CHECK-NEXT: } 360 ; CHECK-NEXT: ret <4 x i32> %r3
361 ; CHECK-NEXT: }
362
363 define <4 x float> @InsertV4xfloat(<4 x float> %v, float %e) {
364 entry:
365 %r0 = insertelement <4 x float> %v, float %e, i32 0
366 %r1 = insertelement <4 x float> %v, float %e, i32 1
367 %r2 = insertelement <4 x float> %v, float %e, i32 2
368 %r3 = insertelement <4 x float> %v, float %e, i32 3
369 ret <4 x float> %r3
370 }
371
372 ; CHECK-NEXT: define <4 x float> @InsertV4xfloat(<4 x float> %v, float %e) {
373 ; CHECK-NEXT: entry:
374 ; CHECK-NEXT: %r0 = insertelement <4 x float> %v, float %e, i32 0
375 ; CHECK-NEXT: %r1 = insertelement <4 x float> %v, float %e, i32 1
376 ; CHECK-NEXT: %r2 = insertelement <4 x float> %v, float %e, i32 2
377 ; CHECK-NEXT: %r3 = insertelement <4 x float> %v, float %e, i32 3
378 ; CHECK-NEXT: ret <4 x float> %r3
379 ; CHECK-NEXT: }
OLDNEW
« no previous file with comments | « src/PNaClTranslator.cpp ('k') | tests_lit/reader_tests/insertextract-err.ll » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698