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

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

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

Powered by Google App Engine
This is Rietveld 408576698