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

Side by Side Diff: tests_lit/llvm2ice_tests/vector-ops.ll

Issue 1387963002: Make sure that all globals are internal, except for "start" functions. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Fix new tests. Created 5 years, 2 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
« no previous file with comments | « tests_lit/llvm2ice_tests/vector-icmp.ll ('k') | tests_lit/llvm2ice_tests/vector-select.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 ; This checks support for insertelement and extractelement. 1 ; This checks support for insertelement and extractelement.
2 2
3 ; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 \ 3 ; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 \
4 ; RUN: | FileCheck %s 4 ; RUN: | FileCheck %s
5 ; RUN: %p2i -i %s --filetype=obj --disassemble --args -Om1 \ 5 ; RUN: %p2i -i %s --filetype=obj --disassemble --args -Om1 \
6 ; RUN: | FileCheck %s 6 ; RUN: | FileCheck %s
7 ; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 -mattr=sse4.1 \ 7 ; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 -mattr=sse4.1 \
8 ; RUN: | FileCheck --check-prefix=SSE41 %s 8 ; RUN: | FileCheck --check-prefix=SSE41 %s
9 ; RUN: %p2i -i %s --filetype=obj --disassemble --args -Om1 -mattr=sse4.1 \ 9 ; RUN: %p2i -i %s --filetype=obj --disassemble --args -Om1 -mattr=sse4.1 \
10 ; RUN: | FileCheck --check-prefix=SSE41 %s 10 ; RUN: | FileCheck --check-prefix=SSE41 %s
11 11
12 ; insertelement operations 12 ; insertelement operations
13 13
14 define <4 x float> @insertelement_v4f32_0(<4 x float> %vec, float %elt) { 14 define internal <4 x float> @insertelement_v4f32_0(<4 x float> %vec,
15 float %elt) {
15 entry: 16 entry:
16 %res = insertelement <4 x float> %vec, float %elt, i32 0 17 %res = insertelement <4 x float> %vec, float %elt, i32 0
17 ret <4 x float> %res 18 ret <4 x float> %res
18 ; CHECK-LABEL: insertelement_v4f32_0 19 ; CHECK-LABEL: insertelement_v4f32_0
19 ; CHECK: movss 20 ; CHECK: movss
20 21
21 ; SSE41-LABEL: insertelement_v4f32_0 22 ; SSE41-LABEL: insertelement_v4f32_0
22 ; SSE41: insertps {{.*}},{{.*}},0x0 23 ; SSE41: insertps {{.*}},{{.*}},0x0
23 } 24 }
24 25
25 define <4 x i32> @insertelement_v4i32_0(<4 x i32> %vec, i32 %elt) { 26 define internal <4 x i32> @insertelement_v4i32_0(<4 x i32> %vec, i32 %elt) {
26 entry: 27 entry:
27 %res = insertelement <4 x i32> %vec, i32 %elt, i32 0 28 %res = insertelement <4 x i32> %vec, i32 %elt, i32 0
28 ret <4 x i32> %res 29 ret <4 x i32> %res
29 ; CHECK-LABEL: insertelement_v4i32_0 30 ; CHECK-LABEL: insertelement_v4i32_0
30 ; CHECK: movd xmm{{.*}}, 31 ; CHECK: movd xmm{{.*}},
31 ; CHECK: movss 32 ; CHECK: movss
32 33
33 ; SSE41-LABEL: insertelement_v4i32_0 34 ; SSE41-LABEL: insertelement_v4i32_0
34 ; SSE41: pinsrd {{.*}},{{.*}},0x0 35 ; SSE41: pinsrd {{.*}},{{.*}},0x0
35 } 36 }
36 37
37 38
38 define <4 x float> @insertelement_v4f32_1(<4 x float> %vec, float %elt) { 39 define internal <4 x float> @insertelement_v4f32_1(<4 x float> %vec,
40 float %elt) {
39 entry: 41 entry:
40 %res = insertelement <4 x float> %vec, float %elt, i32 1 42 %res = insertelement <4 x float> %vec, float %elt, i32 1
41 ret <4 x float> %res 43 ret <4 x float> %res
42 ; CHECK-LABEL: insertelement_v4f32_1 44 ; CHECK-LABEL: insertelement_v4f32_1
43 ; CHECK: shufps 45 ; CHECK: shufps
44 ; CHECK: shufps 46 ; CHECK: shufps
45 47
46 ; SSE41-LABEL: insertelement_v4f32_1 48 ; SSE41-LABEL: insertelement_v4f32_1
47 ; SSE41: insertps {{.*}},{{.*}},0x10 49 ; SSE41: insertps {{.*}},{{.*}},0x10
48 } 50 }
49 51
50 define <4 x i32> @insertelement_v4i32_1(<4 x i32> %vec, i32 %elt) { 52 define internal <4 x i32> @insertelement_v4i32_1(<4 x i32> %vec, i32 %elt) {
51 entry: 53 entry:
52 %res = insertelement <4 x i32> %vec, i32 %elt, i32 1 54 %res = insertelement <4 x i32> %vec, i32 %elt, i32 1
53 ret <4 x i32> %res 55 ret <4 x i32> %res
54 ; CHECK-LABEL: insertelement_v4i32_1 56 ; CHECK-LABEL: insertelement_v4i32_1
55 ; CHECK: shufps 57 ; CHECK: shufps
56 ; CHECK: shufps 58 ; CHECK: shufps
57 59
58 ; SSE41-LABEL: insertelement_v4i32_1 60 ; SSE41-LABEL: insertelement_v4i32_1
59 ; SSE41: pinsrd {{.*}},{{.*}},0x1 61 ; SSE41: pinsrd {{.*}},{{.*}},0x1
60 } 62 }
61 63
62 define <8 x i16> @insertelement_v8i16(<8 x i16> %vec, i32 %elt.arg) { 64 define internal <8 x i16> @insertelement_v8i16(<8 x i16> %vec, i32 %elt.arg) {
63 entry: 65 entry:
64 %elt = trunc i32 %elt.arg to i16 66 %elt = trunc i32 %elt.arg to i16
65 %res = insertelement <8 x i16> %vec, i16 %elt, i32 1 67 %res = insertelement <8 x i16> %vec, i16 %elt, i32 1
66 ret <8 x i16> %res 68 ret <8 x i16> %res
67 ; CHECK-LABEL: insertelement_v8i16 69 ; CHECK-LABEL: insertelement_v8i16
68 ; CHECK: pinsrw 70 ; CHECK: pinsrw
69 71
70 ; SSE41-LABEL: insertelement_v8i16 72 ; SSE41-LABEL: insertelement_v8i16
71 ; SSE41: pinsrw 73 ; SSE41: pinsrw
72 } 74 }
73 75
74 define <16 x i8> @insertelement_v16i8(<16 x i8> %vec, i32 %elt.arg) { 76 define internal <16 x i8> @insertelement_v16i8(<16 x i8> %vec, i32 %elt.arg) {
75 entry: 77 entry:
76 %elt = trunc i32 %elt.arg to i8 78 %elt = trunc i32 %elt.arg to i8
77 %res = insertelement <16 x i8> %vec, i8 %elt, i32 1 79 %res = insertelement <16 x i8> %vec, i8 %elt, i32 1
78 ret <16 x i8> %res 80 ret <16 x i8> %res
79 ; CHECK-LABEL: insertelement_v16i8 81 ; CHECK-LABEL: insertelement_v16i8
80 ; CHECK: movups 82 ; CHECK: movups
81 ; CHECK: lea 83 ; CHECK: lea
82 ; CHECK: mov 84 ; CHECK: mov
83 85
84 ; SSE41-LABEL: insertelement_v16i8 86 ; SSE41-LABEL: insertelement_v16i8
85 ; SSE41: pinsrb 87 ; SSE41: pinsrb
86 } 88 }
87 89
88 define <4 x i1> @insertelement_v4i1_0(<4 x i1> %vec, i32 %elt.arg) { 90 define internal <4 x i1> @insertelement_v4i1_0(<4 x i1> %vec, i32 %elt.arg) {
89 entry: 91 entry:
90 %elt = trunc i32 %elt.arg to i1 92 %elt = trunc i32 %elt.arg to i1
91 %res = insertelement <4 x i1> %vec, i1 %elt, i32 0 93 %res = insertelement <4 x i1> %vec, i1 %elt, i32 0
92 ret <4 x i1> %res 94 ret <4 x i1> %res
93 ; CHECK-LABEL: insertelement_v4i1_0 95 ; CHECK-LABEL: insertelement_v4i1_0
94 ; CHECK: movss 96 ; CHECK: movss
95 97
96 ; SSE41-LABEL: insertelement_v4i1_0 98 ; SSE41-LABEL: insertelement_v4i1_0
97 ; SSE41: pinsrd {{.*}},{{.*}},0x0 99 ; SSE41: pinsrd {{.*}},{{.*}},0x0
98 } 100 }
99 101
100 define <4 x i1> @insertelement_v4i1_1(<4 x i1> %vec, i32 %elt.arg) { 102 define internal <4 x i1> @insertelement_v4i1_1(<4 x i1> %vec, i32 %elt.arg) {
101 entry: 103 entry:
102 %elt = trunc i32 %elt.arg to i1 104 %elt = trunc i32 %elt.arg to i1
103 %res = insertelement <4 x i1> %vec, i1 %elt, i32 1 105 %res = insertelement <4 x i1> %vec, i1 %elt, i32 1
104 ret <4 x i1> %res 106 ret <4 x i1> %res
105 ; CHECK-LABEL: insertelement_v4i1_1 107 ; CHECK-LABEL: insertelement_v4i1_1
106 ; CHECK: shufps 108 ; CHECK: shufps
107 ; CHECK: shufps 109 ; CHECK: shufps
108 110
109 ; SSE41-LABEL: insertelement_v4i1_1 111 ; SSE41-LABEL: insertelement_v4i1_1
110 ; SSE41: pinsrd {{.*}},{{.*}},0x1 112 ; SSE41: pinsrd {{.*}},{{.*}},0x1
111 } 113 }
112 114
113 define <8 x i1> @insertelement_v8i1(<8 x i1> %vec, i32 %elt.arg) { 115 define internal <8 x i1> @insertelement_v8i1(<8 x i1> %vec, i32 %elt.arg) {
114 entry: 116 entry:
115 %elt = trunc i32 %elt.arg to i1 117 %elt = trunc i32 %elt.arg to i1
116 %res = insertelement <8 x i1> %vec, i1 %elt, i32 1 118 %res = insertelement <8 x i1> %vec, i1 %elt, i32 1
117 ret <8 x i1> %res 119 ret <8 x i1> %res
118 ; CHECK-LABEL: insertelement_v8i1 120 ; CHECK-LABEL: insertelement_v8i1
119 ; CHECK: pinsrw 121 ; CHECK: pinsrw
120 122
121 ; SSE41-LABEL: insertelement_v8i1 123 ; SSE41-LABEL: insertelement_v8i1
122 ; SSE41: pinsrw 124 ; SSE41: pinsrw
123 } 125 }
124 126
125 define <16 x i1> @insertelement_v16i1(<16 x i1> %vec, i32 %elt.arg) { 127 define internal <16 x i1> @insertelement_v16i1(<16 x i1> %vec, i32 %elt.arg) {
126 entry: 128 entry:
127 %elt = trunc i32 %elt.arg to i1 129 %elt = trunc i32 %elt.arg to i1
128 %res = insertelement <16 x i1> %vec, i1 %elt, i32 1 130 %res = insertelement <16 x i1> %vec, i1 %elt, i32 1
129 ret <16 x i1> %res 131 ret <16 x i1> %res
130 ; CHECK-LABEL: insertelement_v16i1 132 ; CHECK-LABEL: insertelement_v16i1
131 ; CHECK: movups 133 ; CHECK: movups
132 ; CHECK: lea 134 ; CHECK: lea
133 ; CHECK: mov 135 ; CHECK: mov
134 136
135 ; SSE41-LABEL: insertelement_v16i1 137 ; SSE41-LABEL: insertelement_v16i1
136 ; SSE41: pinsrb 138 ; SSE41: pinsrb
137 } 139 }
138 140
139 ; extractelement operations 141 ; extractelement operations
140 142
141 define float @extractelement_v4f32(<4 x float> %vec) { 143 define internal float @extractelement_v4f32(<4 x float> %vec) {
142 entry: 144 entry:
143 %res = extractelement <4 x float> %vec, i32 1 145 %res = extractelement <4 x float> %vec, i32 1
144 ret float %res 146 ret float %res
145 ; CHECK-LABEL: extractelement_v4f32 147 ; CHECK-LABEL: extractelement_v4f32
146 ; CHECK: pshufd 148 ; CHECK: pshufd
147 149
148 ; SSE41-LABEL: extractelement_v4f32 150 ; SSE41-LABEL: extractelement_v4f32
149 ; SSE41: pshufd 151 ; SSE41: pshufd
150 } 152 }
151 153
152 define i32 @extractelement_v4i32(<4 x i32> %vec) { 154 define internal i32 @extractelement_v4i32(<4 x i32> %vec) {
153 entry: 155 entry:
154 %res = extractelement <4 x i32> %vec, i32 1 156 %res = extractelement <4 x i32> %vec, i32 1
155 ret i32 %res 157 ret i32 %res
156 ; CHECK-LABEL: extractelement_v4i32 158 ; CHECK-LABEL: extractelement_v4i32
157 ; CHECK: pshufd 159 ; CHECK: pshufd
158 ; CHECK: movd {{.*}},xmm 160 ; CHECK: movd {{.*}},xmm
159 161
160 ; SSE41-LABEL: extractelement_v4i32 162 ; SSE41-LABEL: extractelement_v4i32
161 ; SSE41: pextrd 163 ; SSE41: pextrd
162 } 164 }
163 165
164 define i32 @extractelement_v8i16(<8 x i16> %vec) { 166 define internal i32 @extractelement_v8i16(<8 x i16> %vec) {
165 entry: 167 entry:
166 %res = extractelement <8 x i16> %vec, i32 1 168 %res = extractelement <8 x i16> %vec, i32 1
167 %res.ext = zext i16 %res to i32 169 %res.ext = zext i16 %res to i32
168 ret i32 %res.ext 170 ret i32 %res.ext
169 ; CHECK-LABEL: extractelement_v8i16 171 ; CHECK-LABEL: extractelement_v8i16
170 ; CHECK: pextrw 172 ; CHECK: pextrw
171 173
172 ; SSE41-LABEL: extractelement_v8i16 174 ; SSE41-LABEL: extractelement_v8i16
173 ; SSE41: pextrw 175 ; SSE41: pextrw
174 } 176 }
175 177
176 define i32 @extractelement_v16i8(<16 x i8> %vec) { 178 define internal i32 @extractelement_v16i8(<16 x i8> %vec) {
177 entry: 179 entry:
178 %res = extractelement <16 x i8> %vec, i32 1 180 %res = extractelement <16 x i8> %vec, i32 1
179 %res.ext = zext i8 %res to i32 181 %res.ext = zext i8 %res to i32
180 ret i32 %res.ext 182 ret i32 %res.ext
181 ; CHECK-LABEL: extractelement_v16i8 183 ; CHECK-LABEL: extractelement_v16i8
182 ; CHECK: movups 184 ; CHECK: movups
183 ; CHECK: lea 185 ; CHECK: lea
184 ; CHECK: mov 186 ; CHECK: mov
185 187
186 ; SSE41-LABEL: extractelement_v16i8 188 ; SSE41-LABEL: extractelement_v16i8
187 ; SSE41: pextrb 189 ; SSE41: pextrb
188 } 190 }
189 191
190 define i32 @extractelement_v4i1(<4 x i1> %vec) { 192 define internal i32 @extractelement_v4i1(<4 x i1> %vec) {
191 entry: 193 entry:
192 %res = extractelement <4 x i1> %vec, i32 1 194 %res = extractelement <4 x i1> %vec, i32 1
193 %res.ext = zext i1 %res to i32 195 %res.ext = zext i1 %res to i32
194 ret i32 %res.ext 196 ret i32 %res.ext
195 ; CHECK-LABEL: extractelement_v4i1 197 ; CHECK-LABEL: extractelement_v4i1
196 ; CHECK: pshufd 198 ; CHECK: pshufd
197 199
198 ; SSE41-LABEL: extractelement_v4i1 200 ; SSE41-LABEL: extractelement_v4i1
199 ; SSE41: pextrd 201 ; SSE41: pextrd
200 } 202 }
201 203
202 define i32 @extractelement_v8i1(<8 x i1> %vec) { 204 define internal i32 @extractelement_v8i1(<8 x i1> %vec) {
203 entry: 205 entry:
204 %res = extractelement <8 x i1> %vec, i32 1 206 %res = extractelement <8 x i1> %vec, i32 1
205 %res.ext = zext i1 %res to i32 207 %res.ext = zext i1 %res to i32
206 ret i32 %res.ext 208 ret i32 %res.ext
207 ; CHECK-LABEL: extractelement_v8i1 209 ; CHECK-LABEL: extractelement_v8i1
208 ; CHECK: pextrw 210 ; CHECK: pextrw
209 211
210 ; SSE41-LABEL: extractelement_v8i1 212 ; SSE41-LABEL: extractelement_v8i1
211 ; SSE41: pextrw 213 ; SSE41: pextrw
212 } 214 }
213 215
214 define i32 @extractelement_v16i1(<16 x i1> %vec) { 216 define internal i32 @extractelement_v16i1(<16 x i1> %vec) {
215 entry: 217 entry:
216 %res = extractelement <16 x i1> %vec, i32 1 218 %res = extractelement <16 x i1> %vec, i32 1
217 %res.ext = zext i1 %res to i32 219 %res.ext = zext i1 %res to i32
218 ret i32 %res.ext 220 ret i32 %res.ext
219 ; CHECK-LABEL: extractelement_v16i1 221 ; CHECK-LABEL: extractelement_v16i1
220 ; CHECK: movups 222 ; CHECK: movups
221 ; CHECK: lea 223 ; CHECK: lea
222 ; CHECK: mov 224 ; CHECK: mov
223 225
224 ; SSE41-LABEL: extractelement_v16i1 226 ; SSE41-LABEL: extractelement_v16i1
225 ; SSE41: pextrb 227 ; SSE41: pextrb
226 } 228 }
OLDNEW
« no previous file with comments | « tests_lit/llvm2ice_tests/vector-icmp.ll ('k') | tests_lit/llvm2ice_tests/vector-select.ll » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698