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

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