1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -verify-machineinstrs -disable-wasm-fallthrough-return-opt -wasm-disable-explicit-locals -wasm-keep-registers -mattr=+simd128 | FileCheck %s --check-prefix=SIMD128
3 ; RUN: llc < %s -verify-machineinstrs -disable-wasm-fallthrough-return-opt -wasm-disable-explicit-locals -wasm-keep-registers -mattr=+simd128 -fast-isel | FileCheck %s --check-prefix=SIMD128-FAST
4 ; RUN: llc < %s -verify-machineinstrs -disable-wasm-fallthrough-return-opt -wasm-disable-explicit-locals -wasm-keep-registers | FileCheck %s --check-prefix=NO-SIMD128
5 ; RUN: llc < %s -verify-machineinstrs -disable-wasm-fallthrough-return-opt -wasm-disable-explicit-locals -wasm-keep-registers -fast-isel | FileCheck %s --check-prefix=NO-SIMD128-FAST
7 ; check that a non-test run (including explicit locals pass) at least finishes
8 ; RUN: llc < %s -O0 -mattr=+simd128
9 ; RUN: llc < %s -O2 -mattr=+simd128
11 ; Test that basic SIMD128 arithmetic operations assemble as expected.
13 target triple = "wasm32-unknown-unknown"
15 ; ==============================================================================
17 ; ==============================================================================
18 define <16 x i8> @add_v16i8(<16 x i8> %x, <16 x i8> %y) {
19 ; SIMD128-LABEL: add_v16i8:
20 ; SIMD128: .functype add_v16i8 (v128, v128) -> (v128)
21 ; SIMD128-NEXT: # %bb.0:
22 ; SIMD128-NEXT: i8x16.add $push0=, $0, $1
23 ; SIMD128-NEXT: return $pop0
25 ; SIMD128-FAST-LABEL: add_v16i8:
26 ; SIMD128-FAST: .functype add_v16i8 (v128, v128) -> (v128)
27 ; SIMD128-FAST-NEXT: # %bb.0:
28 ; SIMD128-FAST-NEXT: i8x16.add $push0=, $0, $1
29 ; SIMD128-FAST-NEXT: return $pop0
31 ; NO-SIMD128-LABEL: add_v16i8:
32 ; NO-SIMD128: .functype add_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
33 ; NO-SIMD128-NEXT: # %bb.0:
34 ; NO-SIMD128-NEXT: i32.add $push0=, $9, $25
35 ; NO-SIMD128-NEXT: i32.store8 8($0), $pop0
36 ; NO-SIMD128-NEXT: i32.add $push1=, $5, $21
37 ; NO-SIMD128-NEXT: i32.store8 4($0), $pop1
38 ; NO-SIMD128-NEXT: i32.add $push2=, $3, $19
39 ; NO-SIMD128-NEXT: i32.store8 2($0), $pop2
40 ; NO-SIMD128-NEXT: i32.add $push3=, $2, $18
41 ; NO-SIMD128-NEXT: i32.store8 1($0), $pop3
42 ; NO-SIMD128-NEXT: i32.add $push4=, $1, $17
43 ; NO-SIMD128-NEXT: i32.store8 0($0), $pop4
44 ; NO-SIMD128-NEXT: i32.const $push6=, 15
45 ; NO-SIMD128-NEXT: i32.add $push7=, $0, $pop6
46 ; NO-SIMD128-NEXT: i32.add $push5=, $16, $32
47 ; NO-SIMD128-NEXT: i32.store8 0($pop7), $pop5
48 ; NO-SIMD128-NEXT: i32.const $push9=, 14
49 ; NO-SIMD128-NEXT: i32.add $push10=, $0, $pop9
50 ; NO-SIMD128-NEXT: i32.add $push8=, $15, $31
51 ; NO-SIMD128-NEXT: i32.store8 0($pop10), $pop8
52 ; NO-SIMD128-NEXT: i32.const $push12=, 13
53 ; NO-SIMD128-NEXT: i32.add $push13=, $0, $pop12
54 ; NO-SIMD128-NEXT: i32.add $push11=, $14, $30
55 ; NO-SIMD128-NEXT: i32.store8 0($pop13), $pop11
56 ; NO-SIMD128-NEXT: i32.const $push15=, 12
57 ; NO-SIMD128-NEXT: i32.add $push16=, $0, $pop15
58 ; NO-SIMD128-NEXT: i32.add $push14=, $13, $29
59 ; NO-SIMD128-NEXT: i32.store8 0($pop16), $pop14
60 ; NO-SIMD128-NEXT: i32.const $push18=, 11
61 ; NO-SIMD128-NEXT: i32.add $push19=, $0, $pop18
62 ; NO-SIMD128-NEXT: i32.add $push17=, $12, $28
63 ; NO-SIMD128-NEXT: i32.store8 0($pop19), $pop17
64 ; NO-SIMD128-NEXT: i32.const $push21=, 10
65 ; NO-SIMD128-NEXT: i32.add $push22=, $0, $pop21
66 ; NO-SIMD128-NEXT: i32.add $push20=, $11, $27
67 ; NO-SIMD128-NEXT: i32.store8 0($pop22), $pop20
68 ; NO-SIMD128-NEXT: i32.const $push24=, 9
69 ; NO-SIMD128-NEXT: i32.add $push25=, $0, $pop24
70 ; NO-SIMD128-NEXT: i32.add $push23=, $10, $26
71 ; NO-SIMD128-NEXT: i32.store8 0($pop25), $pop23
72 ; NO-SIMD128-NEXT: i32.const $push27=, 7
73 ; NO-SIMD128-NEXT: i32.add $push28=, $0, $pop27
74 ; NO-SIMD128-NEXT: i32.add $push26=, $8, $24
75 ; NO-SIMD128-NEXT: i32.store8 0($pop28), $pop26
76 ; NO-SIMD128-NEXT: i32.const $push30=, 6
77 ; NO-SIMD128-NEXT: i32.add $push31=, $0, $pop30
78 ; NO-SIMD128-NEXT: i32.add $push29=, $7, $23
79 ; NO-SIMD128-NEXT: i32.store8 0($pop31), $pop29
80 ; NO-SIMD128-NEXT: i32.const $push33=, 5
81 ; NO-SIMD128-NEXT: i32.add $push34=, $0, $pop33
82 ; NO-SIMD128-NEXT: i32.add $push32=, $6, $22
83 ; NO-SIMD128-NEXT: i32.store8 0($pop34), $pop32
84 ; NO-SIMD128-NEXT: i32.const $push36=, 3
85 ; NO-SIMD128-NEXT: i32.add $push37=, $0, $pop36
86 ; NO-SIMD128-NEXT: i32.add $push35=, $4, $20
87 ; NO-SIMD128-NEXT: i32.store8 0($pop37), $pop35
88 ; NO-SIMD128-NEXT: return
90 ; NO-SIMD128-FAST-LABEL: add_v16i8:
91 ; NO-SIMD128-FAST: .functype add_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
92 ; NO-SIMD128-FAST-NEXT: # %bb.0:
93 ; NO-SIMD128-FAST-NEXT: i32.add $push0=, $1, $17
94 ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop0
95 ; NO-SIMD128-FAST-NEXT: i32.add $push1=, $2, $18
96 ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop1
97 ; NO-SIMD128-FAST-NEXT: i32.add $push2=, $3, $19
98 ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop2
99 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 3
100 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
101 ; NO-SIMD128-FAST-NEXT: i32.add $push5=, $4, $20
102 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop4), $pop5
103 ; NO-SIMD128-FAST-NEXT: i32.add $push6=, $5, $21
104 ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop6
105 ; NO-SIMD128-FAST-NEXT: i32.const $push7=, 5
106 ; NO-SIMD128-FAST-NEXT: i32.add $push8=, $0, $pop7
107 ; NO-SIMD128-FAST-NEXT: i32.add $push9=, $6, $22
108 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop8), $pop9
109 ; NO-SIMD128-FAST-NEXT: i32.const $push10=, 6
110 ; NO-SIMD128-FAST-NEXT: i32.add $push11=, $0, $pop10
111 ; NO-SIMD128-FAST-NEXT: i32.add $push12=, $7, $23
112 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop11), $pop12
113 ; NO-SIMD128-FAST-NEXT: i32.const $push13=, 7
114 ; NO-SIMD128-FAST-NEXT: i32.add $push14=, $0, $pop13
115 ; NO-SIMD128-FAST-NEXT: i32.add $push15=, $8, $24
116 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop14), $pop15
117 ; NO-SIMD128-FAST-NEXT: i32.add $push16=, $9, $25
118 ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop16
119 ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 9
120 ; NO-SIMD128-FAST-NEXT: i32.add $push18=, $0, $pop17
121 ; NO-SIMD128-FAST-NEXT: i32.add $push19=, $10, $26
122 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop18), $pop19
123 ; NO-SIMD128-FAST-NEXT: i32.const $push20=, 10
124 ; NO-SIMD128-FAST-NEXT: i32.add $push21=, $0, $pop20
125 ; NO-SIMD128-FAST-NEXT: i32.add $push22=, $11, $27
126 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop21), $pop22
127 ; NO-SIMD128-FAST-NEXT: i32.const $push23=, 11
128 ; NO-SIMD128-FAST-NEXT: i32.add $push24=, $0, $pop23
129 ; NO-SIMD128-FAST-NEXT: i32.add $push25=, $12, $28
130 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop24), $pop25
131 ; NO-SIMD128-FAST-NEXT: i32.const $push26=, 12
132 ; NO-SIMD128-FAST-NEXT: i32.add $push27=, $0, $pop26
133 ; NO-SIMD128-FAST-NEXT: i32.add $push28=, $13, $29
134 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop27), $pop28
135 ; NO-SIMD128-FAST-NEXT: i32.const $push29=, 13
136 ; NO-SIMD128-FAST-NEXT: i32.add $push30=, $0, $pop29
137 ; NO-SIMD128-FAST-NEXT: i32.add $push31=, $14, $30
138 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop30), $pop31
139 ; NO-SIMD128-FAST-NEXT: i32.const $push32=, 14
140 ; NO-SIMD128-FAST-NEXT: i32.add $push33=, $0, $pop32
141 ; NO-SIMD128-FAST-NEXT: i32.add $push34=, $15, $31
142 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop33), $pop34
143 ; NO-SIMD128-FAST-NEXT: i32.const $push35=, 15
144 ; NO-SIMD128-FAST-NEXT: i32.add $push36=, $0, $pop35
145 ; NO-SIMD128-FAST-NEXT: i32.add $push37=, $16, $32
146 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop36), $pop37
147 ; NO-SIMD128-FAST-NEXT: return
148 %a = add <16 x i8> %x, %y
152 define <16 x i8> @sub_v16i8(<16 x i8> %x, <16 x i8> %y) {
153 ; SIMD128-LABEL: sub_v16i8:
154 ; SIMD128: .functype sub_v16i8 (v128, v128) -> (v128)
155 ; SIMD128-NEXT: # %bb.0:
156 ; SIMD128-NEXT: i8x16.sub $push0=, $0, $1
157 ; SIMD128-NEXT: return $pop0
159 ; SIMD128-FAST-LABEL: sub_v16i8:
160 ; SIMD128-FAST: .functype sub_v16i8 (v128, v128) -> (v128)
161 ; SIMD128-FAST-NEXT: # %bb.0:
162 ; SIMD128-FAST-NEXT: i8x16.sub $push0=, $0, $1
163 ; SIMD128-FAST-NEXT: return $pop0
165 ; NO-SIMD128-LABEL: sub_v16i8:
166 ; NO-SIMD128: .functype sub_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
167 ; NO-SIMD128-NEXT: # %bb.0:
168 ; NO-SIMD128-NEXT: i32.sub $push0=, $9, $25
169 ; NO-SIMD128-NEXT: i32.store8 8($0), $pop0
170 ; NO-SIMD128-NEXT: i32.sub $push1=, $5, $21
171 ; NO-SIMD128-NEXT: i32.store8 4($0), $pop1
172 ; NO-SIMD128-NEXT: i32.sub $push2=, $3, $19
173 ; NO-SIMD128-NEXT: i32.store8 2($0), $pop2
174 ; NO-SIMD128-NEXT: i32.sub $push3=, $2, $18
175 ; NO-SIMD128-NEXT: i32.store8 1($0), $pop3
176 ; NO-SIMD128-NEXT: i32.sub $push4=, $1, $17
177 ; NO-SIMD128-NEXT: i32.store8 0($0), $pop4
178 ; NO-SIMD128-NEXT: i32.const $push6=, 15
179 ; NO-SIMD128-NEXT: i32.add $push7=, $0, $pop6
180 ; NO-SIMD128-NEXT: i32.sub $push5=, $16, $32
181 ; NO-SIMD128-NEXT: i32.store8 0($pop7), $pop5
182 ; NO-SIMD128-NEXT: i32.const $push9=, 14
183 ; NO-SIMD128-NEXT: i32.add $push10=, $0, $pop9
184 ; NO-SIMD128-NEXT: i32.sub $push8=, $15, $31
185 ; NO-SIMD128-NEXT: i32.store8 0($pop10), $pop8
186 ; NO-SIMD128-NEXT: i32.const $push12=, 13
187 ; NO-SIMD128-NEXT: i32.add $push13=, $0, $pop12
188 ; NO-SIMD128-NEXT: i32.sub $push11=, $14, $30
189 ; NO-SIMD128-NEXT: i32.store8 0($pop13), $pop11
190 ; NO-SIMD128-NEXT: i32.const $push15=, 12
191 ; NO-SIMD128-NEXT: i32.add $push16=, $0, $pop15
192 ; NO-SIMD128-NEXT: i32.sub $push14=, $13, $29
193 ; NO-SIMD128-NEXT: i32.store8 0($pop16), $pop14
194 ; NO-SIMD128-NEXT: i32.const $push18=, 11
195 ; NO-SIMD128-NEXT: i32.add $push19=, $0, $pop18
196 ; NO-SIMD128-NEXT: i32.sub $push17=, $12, $28
197 ; NO-SIMD128-NEXT: i32.store8 0($pop19), $pop17
198 ; NO-SIMD128-NEXT: i32.const $push21=, 10
199 ; NO-SIMD128-NEXT: i32.add $push22=, $0, $pop21
200 ; NO-SIMD128-NEXT: i32.sub $push20=, $11, $27
201 ; NO-SIMD128-NEXT: i32.store8 0($pop22), $pop20
202 ; NO-SIMD128-NEXT: i32.const $push24=, 9
203 ; NO-SIMD128-NEXT: i32.add $push25=, $0, $pop24
204 ; NO-SIMD128-NEXT: i32.sub $push23=, $10, $26
205 ; NO-SIMD128-NEXT: i32.store8 0($pop25), $pop23
206 ; NO-SIMD128-NEXT: i32.const $push27=, 7
207 ; NO-SIMD128-NEXT: i32.add $push28=, $0, $pop27
208 ; NO-SIMD128-NEXT: i32.sub $push26=, $8, $24
209 ; NO-SIMD128-NEXT: i32.store8 0($pop28), $pop26
210 ; NO-SIMD128-NEXT: i32.const $push30=, 6
211 ; NO-SIMD128-NEXT: i32.add $push31=, $0, $pop30
212 ; NO-SIMD128-NEXT: i32.sub $push29=, $7, $23
213 ; NO-SIMD128-NEXT: i32.store8 0($pop31), $pop29
214 ; NO-SIMD128-NEXT: i32.const $push33=, 5
215 ; NO-SIMD128-NEXT: i32.add $push34=, $0, $pop33
216 ; NO-SIMD128-NEXT: i32.sub $push32=, $6, $22
217 ; NO-SIMD128-NEXT: i32.store8 0($pop34), $pop32
218 ; NO-SIMD128-NEXT: i32.const $push36=, 3
219 ; NO-SIMD128-NEXT: i32.add $push37=, $0, $pop36
220 ; NO-SIMD128-NEXT: i32.sub $push35=, $4, $20
221 ; NO-SIMD128-NEXT: i32.store8 0($pop37), $pop35
222 ; NO-SIMD128-NEXT: return
224 ; NO-SIMD128-FAST-LABEL: sub_v16i8:
225 ; NO-SIMD128-FAST: .functype sub_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
226 ; NO-SIMD128-FAST-NEXT: # %bb.0:
227 ; NO-SIMD128-FAST-NEXT: i32.sub $push0=, $1, $17
228 ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop0
229 ; NO-SIMD128-FAST-NEXT: i32.sub $push1=, $2, $18
230 ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop1
231 ; NO-SIMD128-FAST-NEXT: i32.sub $push2=, $3, $19
232 ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop2
233 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 3
234 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
235 ; NO-SIMD128-FAST-NEXT: i32.sub $push5=, $4, $20
236 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop4), $pop5
237 ; NO-SIMD128-FAST-NEXT: i32.sub $push6=, $5, $21
238 ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop6
239 ; NO-SIMD128-FAST-NEXT: i32.const $push7=, 5
240 ; NO-SIMD128-FAST-NEXT: i32.add $push8=, $0, $pop7
241 ; NO-SIMD128-FAST-NEXT: i32.sub $push9=, $6, $22
242 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop8), $pop9
243 ; NO-SIMD128-FAST-NEXT: i32.const $push10=, 6
244 ; NO-SIMD128-FAST-NEXT: i32.add $push11=, $0, $pop10
245 ; NO-SIMD128-FAST-NEXT: i32.sub $push12=, $7, $23
246 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop11), $pop12
247 ; NO-SIMD128-FAST-NEXT: i32.const $push13=, 7
248 ; NO-SIMD128-FAST-NEXT: i32.add $push14=, $0, $pop13
249 ; NO-SIMD128-FAST-NEXT: i32.sub $push15=, $8, $24
250 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop14), $pop15
251 ; NO-SIMD128-FAST-NEXT: i32.sub $push16=, $9, $25
252 ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop16
253 ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 9
254 ; NO-SIMD128-FAST-NEXT: i32.add $push18=, $0, $pop17
255 ; NO-SIMD128-FAST-NEXT: i32.sub $push19=, $10, $26
256 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop18), $pop19
257 ; NO-SIMD128-FAST-NEXT: i32.const $push20=, 10
258 ; NO-SIMD128-FAST-NEXT: i32.add $push21=, $0, $pop20
259 ; NO-SIMD128-FAST-NEXT: i32.sub $push22=, $11, $27
260 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop21), $pop22
261 ; NO-SIMD128-FAST-NEXT: i32.const $push23=, 11
262 ; NO-SIMD128-FAST-NEXT: i32.add $push24=, $0, $pop23
263 ; NO-SIMD128-FAST-NEXT: i32.sub $push25=, $12, $28
264 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop24), $pop25
265 ; NO-SIMD128-FAST-NEXT: i32.const $push26=, 12
266 ; NO-SIMD128-FAST-NEXT: i32.add $push27=, $0, $pop26
267 ; NO-SIMD128-FAST-NEXT: i32.sub $push28=, $13, $29
268 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop27), $pop28
269 ; NO-SIMD128-FAST-NEXT: i32.const $push29=, 13
270 ; NO-SIMD128-FAST-NEXT: i32.add $push30=, $0, $pop29
271 ; NO-SIMD128-FAST-NEXT: i32.sub $push31=, $14, $30
272 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop30), $pop31
273 ; NO-SIMD128-FAST-NEXT: i32.const $push32=, 14
274 ; NO-SIMD128-FAST-NEXT: i32.add $push33=, $0, $pop32
275 ; NO-SIMD128-FAST-NEXT: i32.sub $push34=, $15, $31
276 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop33), $pop34
277 ; NO-SIMD128-FAST-NEXT: i32.const $push35=, 15
278 ; NO-SIMD128-FAST-NEXT: i32.add $push36=, $0, $pop35
279 ; NO-SIMD128-FAST-NEXT: i32.sub $push37=, $16, $32
280 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop36), $pop37
281 ; NO-SIMD128-FAST-NEXT: return
282 %a = sub <16 x i8> %x, %y
286 define <16 x i8> @mul_v16i8(<16 x i8> %x, <16 x i8> %y) {
287 ; SIMD128-LABEL: mul_v16i8:
288 ; SIMD128: .functype mul_v16i8 (v128, v128) -> (v128)
289 ; SIMD128-NEXT: # %bb.0:
290 ; SIMD128-NEXT: i8x16.extract_lane_u $push4=, $0, 0
291 ; SIMD128-NEXT: i8x16.extract_lane_u $push3=, $1, 0
292 ; SIMD128-NEXT: i32.mul $push5=, $pop4, $pop3
293 ; SIMD128-NEXT: i8x16.splat $push6=, $pop5
294 ; SIMD128-NEXT: i8x16.extract_lane_u $push1=, $0, 1
295 ; SIMD128-NEXT: i8x16.extract_lane_u $push0=, $1, 1
296 ; SIMD128-NEXT: i32.mul $push2=, $pop1, $pop0
297 ; SIMD128-NEXT: i8x16.replace_lane $push7=, $pop6, 1, $pop2
298 ; SIMD128-NEXT: i8x16.extract_lane_u $push9=, $0, 2
299 ; SIMD128-NEXT: i8x16.extract_lane_u $push8=, $1, 2
300 ; SIMD128-NEXT: i32.mul $push10=, $pop9, $pop8
301 ; SIMD128-NEXT: i8x16.replace_lane $push11=, $pop7, 2, $pop10
302 ; SIMD128-NEXT: i8x16.extract_lane_u $push13=, $0, 3
303 ; SIMD128-NEXT: i8x16.extract_lane_u $push12=, $1, 3
304 ; SIMD128-NEXT: i32.mul $push14=, $pop13, $pop12
305 ; SIMD128-NEXT: i8x16.replace_lane $push15=, $pop11, 3, $pop14
306 ; SIMD128-NEXT: i8x16.extract_lane_u $push17=, $0, 4
307 ; SIMD128-NEXT: i8x16.extract_lane_u $push16=, $1, 4
308 ; SIMD128-NEXT: i32.mul $push18=, $pop17, $pop16
309 ; SIMD128-NEXT: i8x16.replace_lane $push19=, $pop15, 4, $pop18
310 ; SIMD128-NEXT: i8x16.extract_lane_u $push21=, $0, 5
311 ; SIMD128-NEXT: i8x16.extract_lane_u $push20=, $1, 5
312 ; SIMD128-NEXT: i32.mul $push22=, $pop21, $pop20
313 ; SIMD128-NEXT: i8x16.replace_lane $push23=, $pop19, 5, $pop22
314 ; SIMD128-NEXT: i8x16.extract_lane_u $push25=, $0, 6
315 ; SIMD128-NEXT: i8x16.extract_lane_u $push24=, $1, 6
316 ; SIMD128-NEXT: i32.mul $push26=, $pop25, $pop24
317 ; SIMD128-NEXT: i8x16.replace_lane $push27=, $pop23, 6, $pop26
318 ; SIMD128-NEXT: i8x16.extract_lane_u $push29=, $0, 7
319 ; SIMD128-NEXT: i8x16.extract_lane_u $push28=, $1, 7
320 ; SIMD128-NEXT: i32.mul $push30=, $pop29, $pop28
321 ; SIMD128-NEXT: i8x16.replace_lane $push31=, $pop27, 7, $pop30
322 ; SIMD128-NEXT: i8x16.extract_lane_u $push33=, $0, 8
323 ; SIMD128-NEXT: i8x16.extract_lane_u $push32=, $1, 8
324 ; SIMD128-NEXT: i32.mul $push34=, $pop33, $pop32
325 ; SIMD128-NEXT: i8x16.replace_lane $push35=, $pop31, 8, $pop34
326 ; SIMD128-NEXT: i8x16.extract_lane_u $push37=, $0, 9
327 ; SIMD128-NEXT: i8x16.extract_lane_u $push36=, $1, 9
328 ; SIMD128-NEXT: i32.mul $push38=, $pop37, $pop36
329 ; SIMD128-NEXT: i8x16.replace_lane $push39=, $pop35, 9, $pop38
330 ; SIMD128-NEXT: i8x16.extract_lane_u $push41=, $0, 10
331 ; SIMD128-NEXT: i8x16.extract_lane_u $push40=, $1, 10
332 ; SIMD128-NEXT: i32.mul $push42=, $pop41, $pop40
333 ; SIMD128-NEXT: i8x16.replace_lane $push43=, $pop39, 10, $pop42
334 ; SIMD128-NEXT: i8x16.extract_lane_u $push45=, $0, 11
335 ; SIMD128-NEXT: i8x16.extract_lane_u $push44=, $1, 11
336 ; SIMD128-NEXT: i32.mul $push46=, $pop45, $pop44
337 ; SIMD128-NEXT: i8x16.replace_lane $push47=, $pop43, 11, $pop46
338 ; SIMD128-NEXT: i8x16.extract_lane_u $push49=, $0, 12
339 ; SIMD128-NEXT: i8x16.extract_lane_u $push48=, $1, 12
340 ; SIMD128-NEXT: i32.mul $push50=, $pop49, $pop48
341 ; SIMD128-NEXT: i8x16.replace_lane $push51=, $pop47, 12, $pop50
342 ; SIMD128-NEXT: i8x16.extract_lane_u $push53=, $0, 13
343 ; SIMD128-NEXT: i8x16.extract_lane_u $push52=, $1, 13
344 ; SIMD128-NEXT: i32.mul $push54=, $pop53, $pop52
345 ; SIMD128-NEXT: i8x16.replace_lane $push55=, $pop51, 13, $pop54
346 ; SIMD128-NEXT: i8x16.extract_lane_u $push57=, $0, 14
347 ; SIMD128-NEXT: i8x16.extract_lane_u $push56=, $1, 14
348 ; SIMD128-NEXT: i32.mul $push58=, $pop57, $pop56
349 ; SIMD128-NEXT: i8x16.replace_lane $push59=, $pop55, 14, $pop58
350 ; SIMD128-NEXT: i8x16.extract_lane_u $push61=, $0, 15
351 ; SIMD128-NEXT: i8x16.extract_lane_u $push60=, $1, 15
352 ; SIMD128-NEXT: i32.mul $push62=, $pop61, $pop60
353 ; SIMD128-NEXT: i8x16.replace_lane $push63=, $pop59, 15, $pop62
354 ; SIMD128-NEXT: return $pop63
356 ; SIMD128-FAST-LABEL: mul_v16i8:
357 ; SIMD128-FAST: .functype mul_v16i8 (v128, v128) -> (v128)
358 ; SIMD128-FAST-NEXT: # %bb.0:
359 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push5=, $0, 0
360 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push4=, $1, 0
361 ; SIMD128-FAST-NEXT: i32.mul $push6=, $pop5, $pop4
362 ; SIMD128-FAST-NEXT: i8x16.splat $push7=, $pop6
363 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push2=, $0, 1
364 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push1=, $1, 1
365 ; SIMD128-FAST-NEXT: i32.mul $push3=, $pop2, $pop1
366 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push8=, $pop7, 1, $pop3
367 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push10=, $0, 2
368 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push9=, $1, 2
369 ; SIMD128-FAST-NEXT: i32.mul $push11=, $pop10, $pop9
370 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push12=, $pop8, 2, $pop11
371 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push14=, $0, 3
372 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push13=, $1, 3
373 ; SIMD128-FAST-NEXT: i32.mul $push15=, $pop14, $pop13
374 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push16=, $pop12, 3, $pop15
375 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push18=, $0, 4
376 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push17=, $1, 4
377 ; SIMD128-FAST-NEXT: i32.mul $push19=, $pop18, $pop17
378 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push20=, $pop16, 4, $pop19
379 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push22=, $0, 5
380 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push21=, $1, 5
381 ; SIMD128-FAST-NEXT: i32.mul $push23=, $pop22, $pop21
382 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push24=, $pop20, 5, $pop23
383 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push26=, $0, 6
384 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push25=, $1, 6
385 ; SIMD128-FAST-NEXT: i32.mul $push27=, $pop26, $pop25
386 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push28=, $pop24, 6, $pop27
387 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push30=, $0, 7
388 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push29=, $1, 7
389 ; SIMD128-FAST-NEXT: i32.mul $push31=, $pop30, $pop29
390 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push32=, $pop28, 7, $pop31
391 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push34=, $0, 8
392 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push33=, $1, 8
393 ; SIMD128-FAST-NEXT: i32.mul $push35=, $pop34, $pop33
394 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push36=, $pop32, 8, $pop35
395 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push38=, $0, 9
396 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push37=, $1, 9
397 ; SIMD128-FAST-NEXT: i32.mul $push39=, $pop38, $pop37
398 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push40=, $pop36, 9, $pop39
399 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push42=, $0, 10
400 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push41=, $1, 10
401 ; SIMD128-FAST-NEXT: i32.mul $push43=, $pop42, $pop41
402 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push44=, $pop40, 10, $pop43
403 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push46=, $0, 11
404 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push45=, $1, 11
405 ; SIMD128-FAST-NEXT: i32.mul $push47=, $pop46, $pop45
406 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push48=, $pop44, 11, $pop47
407 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push50=, $0, 12
408 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push49=, $1, 12
409 ; SIMD128-FAST-NEXT: i32.mul $push51=, $pop50, $pop49
410 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push52=, $pop48, 12, $pop51
411 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push54=, $0, 13
412 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push53=, $1, 13
413 ; SIMD128-FAST-NEXT: i32.mul $push55=, $pop54, $pop53
414 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push56=, $pop52, 13, $pop55
415 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push58=, $0, 14
416 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push57=, $1, 14
417 ; SIMD128-FAST-NEXT: i32.mul $push59=, $pop58, $pop57
418 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push60=, $pop56, 14, $pop59
419 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push62=, $0, 15
420 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push61=, $1, 15
421 ; SIMD128-FAST-NEXT: i32.mul $push63=, $pop62, $pop61
422 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push0=, $pop60, 15, $pop63
423 ; SIMD128-FAST-NEXT: return $pop0
425 ; NO-SIMD128-LABEL: mul_v16i8:
426 ; NO-SIMD128: .functype mul_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
427 ; NO-SIMD128-NEXT: # %bb.0:
428 ; NO-SIMD128-NEXT: i32.mul $push0=, $9, $25
429 ; NO-SIMD128-NEXT: i32.store8 8($0), $pop0
430 ; NO-SIMD128-NEXT: i32.mul $push1=, $5, $21
431 ; NO-SIMD128-NEXT: i32.store8 4($0), $pop1
432 ; NO-SIMD128-NEXT: i32.mul $push2=, $3, $19
433 ; NO-SIMD128-NEXT: i32.store8 2($0), $pop2
434 ; NO-SIMD128-NEXT: i32.mul $push3=, $2, $18
435 ; NO-SIMD128-NEXT: i32.store8 1($0), $pop3
436 ; NO-SIMD128-NEXT: i32.mul $push4=, $1, $17
437 ; NO-SIMD128-NEXT: i32.store8 0($0), $pop4
438 ; NO-SIMD128-NEXT: i32.const $push6=, 15
439 ; NO-SIMD128-NEXT: i32.add $push7=, $0, $pop6
440 ; NO-SIMD128-NEXT: i32.mul $push5=, $16, $32
441 ; NO-SIMD128-NEXT: i32.store8 0($pop7), $pop5
442 ; NO-SIMD128-NEXT: i32.const $push9=, 14
443 ; NO-SIMD128-NEXT: i32.add $push10=, $0, $pop9
444 ; NO-SIMD128-NEXT: i32.mul $push8=, $15, $31
445 ; NO-SIMD128-NEXT: i32.store8 0($pop10), $pop8
446 ; NO-SIMD128-NEXT: i32.const $push12=, 13
447 ; NO-SIMD128-NEXT: i32.add $push13=, $0, $pop12
448 ; NO-SIMD128-NEXT: i32.mul $push11=, $14, $30
449 ; NO-SIMD128-NEXT: i32.store8 0($pop13), $pop11
450 ; NO-SIMD128-NEXT: i32.const $push15=, 12
451 ; NO-SIMD128-NEXT: i32.add $push16=, $0, $pop15
452 ; NO-SIMD128-NEXT: i32.mul $push14=, $13, $29
453 ; NO-SIMD128-NEXT: i32.store8 0($pop16), $pop14
454 ; NO-SIMD128-NEXT: i32.const $push18=, 11
455 ; NO-SIMD128-NEXT: i32.add $push19=, $0, $pop18
456 ; NO-SIMD128-NEXT: i32.mul $push17=, $12, $28
457 ; NO-SIMD128-NEXT: i32.store8 0($pop19), $pop17
458 ; NO-SIMD128-NEXT: i32.const $push21=, 10
459 ; NO-SIMD128-NEXT: i32.add $push22=, $0, $pop21
460 ; NO-SIMD128-NEXT: i32.mul $push20=, $11, $27
461 ; NO-SIMD128-NEXT: i32.store8 0($pop22), $pop20
462 ; NO-SIMD128-NEXT: i32.const $push24=, 9
463 ; NO-SIMD128-NEXT: i32.add $push25=, $0, $pop24
464 ; NO-SIMD128-NEXT: i32.mul $push23=, $10, $26
465 ; NO-SIMD128-NEXT: i32.store8 0($pop25), $pop23
466 ; NO-SIMD128-NEXT: i32.const $push27=, 7
467 ; NO-SIMD128-NEXT: i32.add $push28=, $0, $pop27
468 ; NO-SIMD128-NEXT: i32.mul $push26=, $8, $24
469 ; NO-SIMD128-NEXT: i32.store8 0($pop28), $pop26
470 ; NO-SIMD128-NEXT: i32.const $push30=, 6
471 ; NO-SIMD128-NEXT: i32.add $push31=, $0, $pop30
472 ; NO-SIMD128-NEXT: i32.mul $push29=, $7, $23
473 ; NO-SIMD128-NEXT: i32.store8 0($pop31), $pop29
474 ; NO-SIMD128-NEXT: i32.const $push33=, 5
475 ; NO-SIMD128-NEXT: i32.add $push34=, $0, $pop33
476 ; NO-SIMD128-NEXT: i32.mul $push32=, $6, $22
477 ; NO-SIMD128-NEXT: i32.store8 0($pop34), $pop32
478 ; NO-SIMD128-NEXT: i32.const $push36=, 3
479 ; NO-SIMD128-NEXT: i32.add $push37=, $0, $pop36
480 ; NO-SIMD128-NEXT: i32.mul $push35=, $4, $20
481 ; NO-SIMD128-NEXT: i32.store8 0($pop37), $pop35
482 ; NO-SIMD128-NEXT: return
484 ; NO-SIMD128-FAST-LABEL: mul_v16i8:
485 ; NO-SIMD128-FAST: .functype mul_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
486 ; NO-SIMD128-FAST-NEXT: # %bb.0:
487 ; NO-SIMD128-FAST-NEXT: i32.mul $push0=, $1, $17
488 ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop0
489 ; NO-SIMD128-FAST-NEXT: i32.mul $push1=, $2, $18
490 ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop1
491 ; NO-SIMD128-FAST-NEXT: i32.mul $push2=, $3, $19
492 ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop2
493 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 3
494 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
495 ; NO-SIMD128-FAST-NEXT: i32.mul $push5=, $4, $20
496 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop4), $pop5
497 ; NO-SIMD128-FAST-NEXT: i32.mul $push6=, $5, $21
498 ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop6
499 ; NO-SIMD128-FAST-NEXT: i32.const $push7=, 5
500 ; NO-SIMD128-FAST-NEXT: i32.add $push8=, $0, $pop7
501 ; NO-SIMD128-FAST-NEXT: i32.mul $push9=, $6, $22
502 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop8), $pop9
503 ; NO-SIMD128-FAST-NEXT: i32.const $push10=, 6
504 ; NO-SIMD128-FAST-NEXT: i32.add $push11=, $0, $pop10
505 ; NO-SIMD128-FAST-NEXT: i32.mul $push12=, $7, $23
506 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop11), $pop12
507 ; NO-SIMD128-FAST-NEXT: i32.const $push13=, 7
508 ; NO-SIMD128-FAST-NEXT: i32.add $push14=, $0, $pop13
509 ; NO-SIMD128-FAST-NEXT: i32.mul $push15=, $8, $24
510 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop14), $pop15
511 ; NO-SIMD128-FAST-NEXT: i32.mul $push16=, $9, $25
512 ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop16
513 ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 9
514 ; NO-SIMD128-FAST-NEXT: i32.add $push18=, $0, $pop17
515 ; NO-SIMD128-FAST-NEXT: i32.mul $push19=, $10, $26
516 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop18), $pop19
517 ; NO-SIMD128-FAST-NEXT: i32.const $push20=, 10
518 ; NO-SIMD128-FAST-NEXT: i32.add $push21=, $0, $pop20
519 ; NO-SIMD128-FAST-NEXT: i32.mul $push22=, $11, $27
520 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop21), $pop22
521 ; NO-SIMD128-FAST-NEXT: i32.const $push23=, 11
522 ; NO-SIMD128-FAST-NEXT: i32.add $push24=, $0, $pop23
523 ; NO-SIMD128-FAST-NEXT: i32.mul $push25=, $12, $28
524 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop24), $pop25
525 ; NO-SIMD128-FAST-NEXT: i32.const $push26=, 12
526 ; NO-SIMD128-FAST-NEXT: i32.add $push27=, $0, $pop26
527 ; NO-SIMD128-FAST-NEXT: i32.mul $push28=, $13, $29
528 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop27), $pop28
529 ; NO-SIMD128-FAST-NEXT: i32.const $push29=, 13
530 ; NO-SIMD128-FAST-NEXT: i32.add $push30=, $0, $pop29
531 ; NO-SIMD128-FAST-NEXT: i32.mul $push31=, $14, $30
532 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop30), $pop31
533 ; NO-SIMD128-FAST-NEXT: i32.const $push32=, 14
534 ; NO-SIMD128-FAST-NEXT: i32.add $push33=, $0, $pop32
535 ; NO-SIMD128-FAST-NEXT: i32.mul $push34=, $15, $31
536 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop33), $pop34
537 ; NO-SIMD128-FAST-NEXT: i32.const $push35=, 15
538 ; NO-SIMD128-FAST-NEXT: i32.add $push36=, $0, $pop35
539 ; NO-SIMD128-FAST-NEXT: i32.mul $push37=, $16, $32
540 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop36), $pop37
541 ; NO-SIMD128-FAST-NEXT: return
542 %a = mul <16 x i8> %x, %y
546 define <16 x i8> @min_s_v16i8(<16 x i8> %x, <16 x i8> %y) {
547 ; SIMD128-LABEL: min_s_v16i8:
548 ; SIMD128: .functype min_s_v16i8 (v128, v128) -> (v128)
549 ; SIMD128-NEXT: # %bb.0:
550 ; SIMD128-NEXT: i8x16.min_s $push0=, $0, $1
551 ; SIMD128-NEXT: return $pop0
553 ; SIMD128-FAST-LABEL: min_s_v16i8:
554 ; SIMD128-FAST: .functype min_s_v16i8 (v128, v128) -> (v128)
555 ; SIMD128-FAST-NEXT: # %bb.0:
556 ; SIMD128-FAST-NEXT: i8x16.min_s $push0=, $0, $1
557 ; SIMD128-FAST-NEXT: return $pop0
559 ; NO-SIMD128-LABEL: min_s_v16i8:
560 ; NO-SIMD128: .functype min_s_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
561 ; NO-SIMD128-NEXT: # %bb.0:
562 ; NO-SIMD128-NEXT: i32.const $push4=, 15
563 ; NO-SIMD128-NEXT: i32.add $push5=, $0, $pop4
564 ; NO-SIMD128-NEXT: i32.extend8_s $push1=, $16
565 ; NO-SIMD128-NEXT: i32.extend8_s $push0=, $32
566 ; NO-SIMD128-NEXT: i32.lt_s $push2=, $pop1, $pop0
567 ; NO-SIMD128-NEXT: i32.select $push3=, $16, $32, $pop2
568 ; NO-SIMD128-NEXT: i32.store8 0($pop5), $pop3
569 ; NO-SIMD128-NEXT: i32.const $push10=, 14
570 ; NO-SIMD128-NEXT: i32.add $push11=, $0, $pop10
571 ; NO-SIMD128-NEXT: i32.extend8_s $push7=, $15
572 ; NO-SIMD128-NEXT: i32.extend8_s $push6=, $31
573 ; NO-SIMD128-NEXT: i32.lt_s $push8=, $pop7, $pop6
574 ; NO-SIMD128-NEXT: i32.select $push9=, $15, $31, $pop8
575 ; NO-SIMD128-NEXT: i32.store8 0($pop11), $pop9
576 ; NO-SIMD128-NEXT: i32.const $push16=, 13
577 ; NO-SIMD128-NEXT: i32.add $push17=, $0, $pop16
578 ; NO-SIMD128-NEXT: i32.extend8_s $push13=, $14
579 ; NO-SIMD128-NEXT: i32.extend8_s $push12=, $30
580 ; NO-SIMD128-NEXT: i32.lt_s $push14=, $pop13, $pop12
581 ; NO-SIMD128-NEXT: i32.select $push15=, $14, $30, $pop14
582 ; NO-SIMD128-NEXT: i32.store8 0($pop17), $pop15
583 ; NO-SIMD128-NEXT: i32.const $push22=, 12
584 ; NO-SIMD128-NEXT: i32.add $push23=, $0, $pop22
585 ; NO-SIMD128-NEXT: i32.extend8_s $push19=, $13
586 ; NO-SIMD128-NEXT: i32.extend8_s $push18=, $29
587 ; NO-SIMD128-NEXT: i32.lt_s $push20=, $pop19, $pop18
588 ; NO-SIMD128-NEXT: i32.select $push21=, $13, $29, $pop20
589 ; NO-SIMD128-NEXT: i32.store8 0($pop23), $pop21
590 ; NO-SIMD128-NEXT: i32.const $push28=, 11
591 ; NO-SIMD128-NEXT: i32.add $push29=, $0, $pop28
592 ; NO-SIMD128-NEXT: i32.extend8_s $push25=, $12
593 ; NO-SIMD128-NEXT: i32.extend8_s $push24=, $28
594 ; NO-SIMD128-NEXT: i32.lt_s $push26=, $pop25, $pop24
595 ; NO-SIMD128-NEXT: i32.select $push27=, $12, $28, $pop26
596 ; NO-SIMD128-NEXT: i32.store8 0($pop29), $pop27
597 ; NO-SIMD128-NEXT: i32.const $push34=, 10
598 ; NO-SIMD128-NEXT: i32.add $push35=, $0, $pop34
599 ; NO-SIMD128-NEXT: i32.extend8_s $push31=, $11
600 ; NO-SIMD128-NEXT: i32.extend8_s $push30=, $27
601 ; NO-SIMD128-NEXT: i32.lt_s $push32=, $pop31, $pop30
602 ; NO-SIMD128-NEXT: i32.select $push33=, $11, $27, $pop32
603 ; NO-SIMD128-NEXT: i32.store8 0($pop35), $pop33
604 ; NO-SIMD128-NEXT: i32.const $push40=, 9
605 ; NO-SIMD128-NEXT: i32.add $push41=, $0, $pop40
606 ; NO-SIMD128-NEXT: i32.extend8_s $push37=, $10
607 ; NO-SIMD128-NEXT: i32.extend8_s $push36=, $26
608 ; NO-SIMD128-NEXT: i32.lt_s $push38=, $pop37, $pop36
609 ; NO-SIMD128-NEXT: i32.select $push39=, $10, $26, $pop38
610 ; NO-SIMD128-NEXT: i32.store8 0($pop41), $pop39
611 ; NO-SIMD128-NEXT: i32.extend8_s $push43=, $9
612 ; NO-SIMD128-NEXT: i32.extend8_s $push42=, $25
613 ; NO-SIMD128-NEXT: i32.lt_s $push44=, $pop43, $pop42
614 ; NO-SIMD128-NEXT: i32.select $push45=, $9, $25, $pop44
615 ; NO-SIMD128-NEXT: i32.store8 8($0), $pop45
616 ; NO-SIMD128-NEXT: i32.const $push50=, 7
617 ; NO-SIMD128-NEXT: i32.add $push51=, $0, $pop50
618 ; NO-SIMD128-NEXT: i32.extend8_s $push47=, $8
619 ; NO-SIMD128-NEXT: i32.extend8_s $push46=, $24
620 ; NO-SIMD128-NEXT: i32.lt_s $push48=, $pop47, $pop46
621 ; NO-SIMD128-NEXT: i32.select $push49=, $8, $24, $pop48
622 ; NO-SIMD128-NEXT: i32.store8 0($pop51), $pop49
623 ; NO-SIMD128-NEXT: i32.const $push56=, 6
624 ; NO-SIMD128-NEXT: i32.add $push57=, $0, $pop56
625 ; NO-SIMD128-NEXT: i32.extend8_s $push53=, $7
626 ; NO-SIMD128-NEXT: i32.extend8_s $push52=, $23
627 ; NO-SIMD128-NEXT: i32.lt_s $push54=, $pop53, $pop52
628 ; NO-SIMD128-NEXT: i32.select $push55=, $7, $23, $pop54
629 ; NO-SIMD128-NEXT: i32.store8 0($pop57), $pop55
630 ; NO-SIMD128-NEXT: i32.const $push62=, 5
631 ; NO-SIMD128-NEXT: i32.add $push63=, $0, $pop62
632 ; NO-SIMD128-NEXT: i32.extend8_s $push59=, $6
633 ; NO-SIMD128-NEXT: i32.extend8_s $push58=, $22
634 ; NO-SIMD128-NEXT: i32.lt_s $push60=, $pop59, $pop58
635 ; NO-SIMD128-NEXT: i32.select $push61=, $6, $22, $pop60
636 ; NO-SIMD128-NEXT: i32.store8 0($pop63), $pop61
637 ; NO-SIMD128-NEXT: i32.extend8_s $push65=, $5
638 ; NO-SIMD128-NEXT: i32.extend8_s $push64=, $21
639 ; NO-SIMD128-NEXT: i32.lt_s $push66=, $pop65, $pop64
640 ; NO-SIMD128-NEXT: i32.select $push67=, $5, $21, $pop66
641 ; NO-SIMD128-NEXT: i32.store8 4($0), $pop67
642 ; NO-SIMD128-NEXT: i32.const $push72=, 3
643 ; NO-SIMD128-NEXT: i32.add $push73=, $0, $pop72
644 ; NO-SIMD128-NEXT: i32.extend8_s $push69=, $4
645 ; NO-SIMD128-NEXT: i32.extend8_s $push68=, $20
646 ; NO-SIMD128-NEXT: i32.lt_s $push70=, $pop69, $pop68
647 ; NO-SIMD128-NEXT: i32.select $push71=, $4, $20, $pop70
648 ; NO-SIMD128-NEXT: i32.store8 0($pop73), $pop71
649 ; NO-SIMD128-NEXT: i32.extend8_s $push75=, $3
650 ; NO-SIMD128-NEXT: i32.extend8_s $push74=, $19
651 ; NO-SIMD128-NEXT: i32.lt_s $push76=, $pop75, $pop74
652 ; NO-SIMD128-NEXT: i32.select $push77=, $3, $19, $pop76
653 ; NO-SIMD128-NEXT: i32.store8 2($0), $pop77
654 ; NO-SIMD128-NEXT: i32.extend8_s $push79=, $2
655 ; NO-SIMD128-NEXT: i32.extend8_s $push78=, $18
656 ; NO-SIMD128-NEXT: i32.lt_s $push80=, $pop79, $pop78
657 ; NO-SIMD128-NEXT: i32.select $push81=, $2, $18, $pop80
658 ; NO-SIMD128-NEXT: i32.store8 1($0), $pop81
659 ; NO-SIMD128-NEXT: i32.extend8_s $push83=, $1
660 ; NO-SIMD128-NEXT: i32.extend8_s $push82=, $17
661 ; NO-SIMD128-NEXT: i32.lt_s $push84=, $pop83, $pop82
662 ; NO-SIMD128-NEXT: i32.select $push85=, $1, $17, $pop84
663 ; NO-SIMD128-NEXT: i32.store8 0($0), $pop85
664 ; NO-SIMD128-NEXT: return
666 ; NO-SIMD128-FAST-LABEL: min_s_v16i8:
667 ; NO-SIMD128-FAST: .functype min_s_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
668 ; NO-SIMD128-FAST-NEXT: # %bb.0:
669 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push1=, $1
670 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push0=, $17
671 ; NO-SIMD128-FAST-NEXT: i32.lt_s $push2=, $pop1, $pop0
672 ; NO-SIMD128-FAST-NEXT: i32.select $push3=, $1, $17, $pop2
673 ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop3
674 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push5=, $2
675 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push4=, $18
676 ; NO-SIMD128-FAST-NEXT: i32.lt_s $push6=, $pop5, $pop4
677 ; NO-SIMD128-FAST-NEXT: i32.select $push7=, $2, $18, $pop6
678 ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop7
679 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push9=, $3
680 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push8=, $19
681 ; NO-SIMD128-FAST-NEXT: i32.lt_s $push10=, $pop9, $pop8
682 ; NO-SIMD128-FAST-NEXT: i32.select $push11=, $3, $19, $pop10
683 ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop11
684 ; NO-SIMD128-FAST-NEXT: i32.const $push16=, 3
685 ; NO-SIMD128-FAST-NEXT: i32.add $push17=, $0, $pop16
686 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push13=, $4
687 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push12=, $20
688 ; NO-SIMD128-FAST-NEXT: i32.lt_s $push14=, $pop13, $pop12
689 ; NO-SIMD128-FAST-NEXT: i32.select $push15=, $4, $20, $pop14
690 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop17), $pop15
691 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push19=, $5
692 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push18=, $21
693 ; NO-SIMD128-FAST-NEXT: i32.lt_s $push20=, $pop19, $pop18
694 ; NO-SIMD128-FAST-NEXT: i32.select $push21=, $5, $21, $pop20
695 ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop21
696 ; NO-SIMD128-FAST-NEXT: i32.const $push26=, 5
697 ; NO-SIMD128-FAST-NEXT: i32.add $push27=, $0, $pop26
698 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push23=, $6
699 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push22=, $22
700 ; NO-SIMD128-FAST-NEXT: i32.lt_s $push24=, $pop23, $pop22
701 ; NO-SIMD128-FAST-NEXT: i32.select $push25=, $6, $22, $pop24
702 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop27), $pop25
703 ; NO-SIMD128-FAST-NEXT: i32.const $push32=, 6
704 ; NO-SIMD128-FAST-NEXT: i32.add $push33=, $0, $pop32
705 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push29=, $7
706 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push28=, $23
707 ; NO-SIMD128-FAST-NEXT: i32.lt_s $push30=, $pop29, $pop28
708 ; NO-SIMD128-FAST-NEXT: i32.select $push31=, $7, $23, $pop30
709 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop33), $pop31
710 ; NO-SIMD128-FAST-NEXT: i32.const $push38=, 7
711 ; NO-SIMD128-FAST-NEXT: i32.add $push39=, $0, $pop38
712 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push35=, $8
713 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push34=, $24
714 ; NO-SIMD128-FAST-NEXT: i32.lt_s $push36=, $pop35, $pop34
715 ; NO-SIMD128-FAST-NEXT: i32.select $push37=, $8, $24, $pop36
716 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop39), $pop37
717 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push41=, $9
718 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push40=, $25
719 ; NO-SIMD128-FAST-NEXT: i32.lt_s $push42=, $pop41, $pop40
720 ; NO-SIMD128-FAST-NEXT: i32.select $push43=, $9, $25, $pop42
721 ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop43
722 ; NO-SIMD128-FAST-NEXT: i32.const $push48=, 9
723 ; NO-SIMD128-FAST-NEXT: i32.add $push49=, $0, $pop48
724 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push45=, $10
725 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push44=, $26
726 ; NO-SIMD128-FAST-NEXT: i32.lt_s $push46=, $pop45, $pop44
727 ; NO-SIMD128-FAST-NEXT: i32.select $push47=, $10, $26, $pop46
728 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop49), $pop47
729 ; NO-SIMD128-FAST-NEXT: i32.const $push54=, 10
730 ; NO-SIMD128-FAST-NEXT: i32.add $push55=, $0, $pop54
731 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push51=, $11
732 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push50=, $27
733 ; NO-SIMD128-FAST-NEXT: i32.lt_s $push52=, $pop51, $pop50
734 ; NO-SIMD128-FAST-NEXT: i32.select $push53=, $11, $27, $pop52
735 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop55), $pop53
736 ; NO-SIMD128-FAST-NEXT: i32.const $push60=, 11
737 ; NO-SIMD128-FAST-NEXT: i32.add $push61=, $0, $pop60
738 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push57=, $12
739 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push56=, $28
740 ; NO-SIMD128-FAST-NEXT: i32.lt_s $push58=, $pop57, $pop56
741 ; NO-SIMD128-FAST-NEXT: i32.select $push59=, $12, $28, $pop58
742 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop61), $pop59
743 ; NO-SIMD128-FAST-NEXT: i32.const $push66=, 12
744 ; NO-SIMD128-FAST-NEXT: i32.add $push67=, $0, $pop66
745 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push63=, $13
746 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push62=, $29
747 ; NO-SIMD128-FAST-NEXT: i32.lt_s $push64=, $pop63, $pop62
748 ; NO-SIMD128-FAST-NEXT: i32.select $push65=, $13, $29, $pop64
749 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop67), $pop65
750 ; NO-SIMD128-FAST-NEXT: i32.const $push72=, 13
751 ; NO-SIMD128-FAST-NEXT: i32.add $push73=, $0, $pop72
752 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push69=, $14
753 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push68=, $30
754 ; NO-SIMD128-FAST-NEXT: i32.lt_s $push70=, $pop69, $pop68
755 ; NO-SIMD128-FAST-NEXT: i32.select $push71=, $14, $30, $pop70
756 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop73), $pop71
757 ; NO-SIMD128-FAST-NEXT: i32.const $push78=, 14
758 ; NO-SIMD128-FAST-NEXT: i32.add $push79=, $0, $pop78
759 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push75=, $15
760 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push74=, $31
761 ; NO-SIMD128-FAST-NEXT: i32.lt_s $push76=, $pop75, $pop74
762 ; NO-SIMD128-FAST-NEXT: i32.select $push77=, $15, $31, $pop76
763 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop79), $pop77
764 ; NO-SIMD128-FAST-NEXT: i32.const $push84=, 15
765 ; NO-SIMD128-FAST-NEXT: i32.add $push85=, $0, $pop84
766 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push81=, $16
767 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push80=, $32
768 ; NO-SIMD128-FAST-NEXT: i32.lt_s $push82=, $pop81, $pop80
769 ; NO-SIMD128-FAST-NEXT: i32.select $push83=, $16, $32, $pop82
770 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop85), $pop83
771 ; NO-SIMD128-FAST-NEXT: return
772 %c = icmp slt <16 x i8> %x, %y
773 %a = select <16 x i1> %c, <16 x i8> %x, <16 x i8> %y
777 define <16 x i8> @min_u_v16i8(<16 x i8> %x, <16 x i8> %y) {
778 ; SIMD128-LABEL: min_u_v16i8:
779 ; SIMD128: .functype min_u_v16i8 (v128, v128) -> (v128)
780 ; SIMD128-NEXT: # %bb.0:
781 ; SIMD128-NEXT: i8x16.min_u $push0=, $0, $1
782 ; SIMD128-NEXT: return $pop0
784 ; SIMD128-FAST-LABEL: min_u_v16i8:
785 ; SIMD128-FAST: .functype min_u_v16i8 (v128, v128) -> (v128)
786 ; SIMD128-FAST-NEXT: # %bb.0:
787 ; SIMD128-FAST-NEXT: i8x16.min_u $push0=, $0, $1
788 ; SIMD128-FAST-NEXT: return $pop0
790 ; NO-SIMD128-LABEL: min_u_v16i8:
791 ; NO-SIMD128: .functype min_u_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
792 ; NO-SIMD128-NEXT: # %bb.0:
793 ; NO-SIMD128-NEXT: i32.const $push5=, 15
794 ; NO-SIMD128-NEXT: i32.add $push6=, $0, $pop5
795 ; NO-SIMD128-NEXT: i32.const $push0=, 255
796 ; NO-SIMD128-NEXT: i32.and $push2=, $16, $pop0
797 ; NO-SIMD128-NEXT: i32.const $push117=, 255
798 ; NO-SIMD128-NEXT: i32.and $push1=, $32, $pop117
799 ; NO-SIMD128-NEXT: i32.lt_u $push3=, $pop2, $pop1
800 ; NO-SIMD128-NEXT: i32.select $push4=, $16, $32, $pop3
801 ; NO-SIMD128-NEXT: i32.store8 0($pop6), $pop4
802 ; NO-SIMD128-NEXT: i32.const $push11=, 14
803 ; NO-SIMD128-NEXT: i32.add $push12=, $0, $pop11
804 ; NO-SIMD128-NEXT: i32.const $push116=, 255
805 ; NO-SIMD128-NEXT: i32.and $push8=, $15, $pop116
806 ; NO-SIMD128-NEXT: i32.const $push115=, 255
807 ; NO-SIMD128-NEXT: i32.and $push7=, $31, $pop115
808 ; NO-SIMD128-NEXT: i32.lt_u $push9=, $pop8, $pop7
809 ; NO-SIMD128-NEXT: i32.select $push10=, $15, $31, $pop9
810 ; NO-SIMD128-NEXT: i32.store8 0($pop12), $pop10
811 ; NO-SIMD128-NEXT: i32.const $push17=, 13
812 ; NO-SIMD128-NEXT: i32.add $push18=, $0, $pop17
813 ; NO-SIMD128-NEXT: i32.const $push114=, 255
814 ; NO-SIMD128-NEXT: i32.and $push14=, $14, $pop114
815 ; NO-SIMD128-NEXT: i32.const $push113=, 255
816 ; NO-SIMD128-NEXT: i32.and $push13=, $30, $pop113
817 ; NO-SIMD128-NEXT: i32.lt_u $push15=, $pop14, $pop13
818 ; NO-SIMD128-NEXT: i32.select $push16=, $14, $30, $pop15
819 ; NO-SIMD128-NEXT: i32.store8 0($pop18), $pop16
820 ; NO-SIMD128-NEXT: i32.const $push23=, 12
821 ; NO-SIMD128-NEXT: i32.add $push24=, $0, $pop23
822 ; NO-SIMD128-NEXT: i32.const $push112=, 255
823 ; NO-SIMD128-NEXT: i32.and $push20=, $13, $pop112
824 ; NO-SIMD128-NEXT: i32.const $push111=, 255
825 ; NO-SIMD128-NEXT: i32.and $push19=, $29, $pop111
826 ; NO-SIMD128-NEXT: i32.lt_u $push21=, $pop20, $pop19
827 ; NO-SIMD128-NEXT: i32.select $push22=, $13, $29, $pop21
828 ; NO-SIMD128-NEXT: i32.store8 0($pop24), $pop22
829 ; NO-SIMD128-NEXT: i32.const $push29=, 11
830 ; NO-SIMD128-NEXT: i32.add $push30=, $0, $pop29
831 ; NO-SIMD128-NEXT: i32.const $push110=, 255
832 ; NO-SIMD128-NEXT: i32.and $push26=, $12, $pop110
833 ; NO-SIMD128-NEXT: i32.const $push109=, 255
834 ; NO-SIMD128-NEXT: i32.and $push25=, $28, $pop109
835 ; NO-SIMD128-NEXT: i32.lt_u $push27=, $pop26, $pop25
836 ; NO-SIMD128-NEXT: i32.select $push28=, $12, $28, $pop27
837 ; NO-SIMD128-NEXT: i32.store8 0($pop30), $pop28
838 ; NO-SIMD128-NEXT: i32.const $push35=, 10
839 ; NO-SIMD128-NEXT: i32.add $push36=, $0, $pop35
840 ; NO-SIMD128-NEXT: i32.const $push108=, 255
841 ; NO-SIMD128-NEXT: i32.and $push32=, $11, $pop108
842 ; NO-SIMD128-NEXT: i32.const $push107=, 255
843 ; NO-SIMD128-NEXT: i32.and $push31=, $27, $pop107
844 ; NO-SIMD128-NEXT: i32.lt_u $push33=, $pop32, $pop31
845 ; NO-SIMD128-NEXT: i32.select $push34=, $11, $27, $pop33
846 ; NO-SIMD128-NEXT: i32.store8 0($pop36), $pop34
847 ; NO-SIMD128-NEXT: i32.const $push41=, 9
848 ; NO-SIMD128-NEXT: i32.add $push42=, $0, $pop41
849 ; NO-SIMD128-NEXT: i32.const $push106=, 255
850 ; NO-SIMD128-NEXT: i32.and $push38=, $10, $pop106
851 ; NO-SIMD128-NEXT: i32.const $push105=, 255
852 ; NO-SIMD128-NEXT: i32.and $push37=, $26, $pop105
853 ; NO-SIMD128-NEXT: i32.lt_u $push39=, $pop38, $pop37
854 ; NO-SIMD128-NEXT: i32.select $push40=, $10, $26, $pop39
855 ; NO-SIMD128-NEXT: i32.store8 0($pop42), $pop40
856 ; NO-SIMD128-NEXT: i32.const $push104=, 255
857 ; NO-SIMD128-NEXT: i32.and $push44=, $9, $pop104
858 ; NO-SIMD128-NEXT: i32.const $push103=, 255
859 ; NO-SIMD128-NEXT: i32.and $push43=, $25, $pop103
860 ; NO-SIMD128-NEXT: i32.lt_u $push45=, $pop44, $pop43
861 ; NO-SIMD128-NEXT: i32.select $push46=, $9, $25, $pop45
862 ; NO-SIMD128-NEXT: i32.store8 8($0), $pop46
863 ; NO-SIMD128-NEXT: i32.const $push51=, 7
864 ; NO-SIMD128-NEXT: i32.add $push52=, $0, $pop51
865 ; NO-SIMD128-NEXT: i32.const $push102=, 255
866 ; NO-SIMD128-NEXT: i32.and $push48=, $8, $pop102
867 ; NO-SIMD128-NEXT: i32.const $push101=, 255
868 ; NO-SIMD128-NEXT: i32.and $push47=, $24, $pop101
869 ; NO-SIMD128-NEXT: i32.lt_u $push49=, $pop48, $pop47
870 ; NO-SIMD128-NEXT: i32.select $push50=, $8, $24, $pop49
871 ; NO-SIMD128-NEXT: i32.store8 0($pop52), $pop50
872 ; NO-SIMD128-NEXT: i32.const $push57=, 6
873 ; NO-SIMD128-NEXT: i32.add $push58=, $0, $pop57
874 ; NO-SIMD128-NEXT: i32.const $push100=, 255
875 ; NO-SIMD128-NEXT: i32.and $push54=, $7, $pop100
876 ; NO-SIMD128-NEXT: i32.const $push99=, 255
877 ; NO-SIMD128-NEXT: i32.and $push53=, $23, $pop99
878 ; NO-SIMD128-NEXT: i32.lt_u $push55=, $pop54, $pop53
879 ; NO-SIMD128-NEXT: i32.select $push56=, $7, $23, $pop55
880 ; NO-SIMD128-NEXT: i32.store8 0($pop58), $pop56
881 ; NO-SIMD128-NEXT: i32.const $push63=, 5
882 ; NO-SIMD128-NEXT: i32.add $push64=, $0, $pop63
883 ; NO-SIMD128-NEXT: i32.const $push98=, 255
884 ; NO-SIMD128-NEXT: i32.and $push60=, $6, $pop98
885 ; NO-SIMD128-NEXT: i32.const $push97=, 255
886 ; NO-SIMD128-NEXT: i32.and $push59=, $22, $pop97
887 ; NO-SIMD128-NEXT: i32.lt_u $push61=, $pop60, $pop59
888 ; NO-SIMD128-NEXT: i32.select $push62=, $6, $22, $pop61
889 ; NO-SIMD128-NEXT: i32.store8 0($pop64), $pop62
890 ; NO-SIMD128-NEXT: i32.const $push96=, 255
891 ; NO-SIMD128-NEXT: i32.and $push66=, $5, $pop96
892 ; NO-SIMD128-NEXT: i32.const $push95=, 255
893 ; NO-SIMD128-NEXT: i32.and $push65=, $21, $pop95
894 ; NO-SIMD128-NEXT: i32.lt_u $push67=, $pop66, $pop65
895 ; NO-SIMD128-NEXT: i32.select $push68=, $5, $21, $pop67
896 ; NO-SIMD128-NEXT: i32.store8 4($0), $pop68
897 ; NO-SIMD128-NEXT: i32.const $push73=, 3
898 ; NO-SIMD128-NEXT: i32.add $push74=, $0, $pop73
899 ; NO-SIMD128-NEXT: i32.const $push94=, 255
900 ; NO-SIMD128-NEXT: i32.and $push70=, $4, $pop94
901 ; NO-SIMD128-NEXT: i32.const $push93=, 255
902 ; NO-SIMD128-NEXT: i32.and $push69=, $20, $pop93
903 ; NO-SIMD128-NEXT: i32.lt_u $push71=, $pop70, $pop69
904 ; NO-SIMD128-NEXT: i32.select $push72=, $4, $20, $pop71
905 ; NO-SIMD128-NEXT: i32.store8 0($pop74), $pop72
906 ; NO-SIMD128-NEXT: i32.const $push92=, 255
907 ; NO-SIMD128-NEXT: i32.and $push76=, $3, $pop92
908 ; NO-SIMD128-NEXT: i32.const $push91=, 255
909 ; NO-SIMD128-NEXT: i32.and $push75=, $19, $pop91
910 ; NO-SIMD128-NEXT: i32.lt_u $push77=, $pop76, $pop75
911 ; NO-SIMD128-NEXT: i32.select $push78=, $3, $19, $pop77
912 ; NO-SIMD128-NEXT: i32.store8 2($0), $pop78
913 ; NO-SIMD128-NEXT: i32.const $push90=, 255
914 ; NO-SIMD128-NEXT: i32.and $push80=, $2, $pop90
915 ; NO-SIMD128-NEXT: i32.const $push89=, 255
916 ; NO-SIMD128-NEXT: i32.and $push79=, $18, $pop89
917 ; NO-SIMD128-NEXT: i32.lt_u $push81=, $pop80, $pop79
918 ; NO-SIMD128-NEXT: i32.select $push82=, $2, $18, $pop81
919 ; NO-SIMD128-NEXT: i32.store8 1($0), $pop82
920 ; NO-SIMD128-NEXT: i32.const $push88=, 255
921 ; NO-SIMD128-NEXT: i32.and $push84=, $1, $pop88
922 ; NO-SIMD128-NEXT: i32.const $push87=, 255
923 ; NO-SIMD128-NEXT: i32.and $push83=, $17, $pop87
924 ; NO-SIMD128-NEXT: i32.lt_u $push85=, $pop84, $pop83
925 ; NO-SIMD128-NEXT: i32.select $push86=, $1, $17, $pop85
926 ; NO-SIMD128-NEXT: i32.store8 0($0), $pop86
927 ; NO-SIMD128-NEXT: return
929 ; NO-SIMD128-FAST-LABEL: min_u_v16i8:
930 ; NO-SIMD128-FAST: .functype min_u_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
931 ; NO-SIMD128-FAST-NEXT: # %bb.0:
932 ; NO-SIMD128-FAST-NEXT: i32.const $push0=, 255
933 ; NO-SIMD128-FAST-NEXT: i32.and $push2=, $1, $pop0
934 ; NO-SIMD128-FAST-NEXT: i32.const $push117=, 255
935 ; NO-SIMD128-FAST-NEXT: i32.and $push1=, $17, $pop117
936 ; NO-SIMD128-FAST-NEXT: i32.lt_u $push3=, $pop2, $pop1
937 ; NO-SIMD128-FAST-NEXT: i32.select $push4=, $1, $17, $pop3
938 ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop4
939 ; NO-SIMD128-FAST-NEXT: i32.const $push116=, 255
940 ; NO-SIMD128-FAST-NEXT: i32.and $push6=, $2, $pop116
941 ; NO-SIMD128-FAST-NEXT: i32.const $push115=, 255
942 ; NO-SIMD128-FAST-NEXT: i32.and $push5=, $18, $pop115
943 ; NO-SIMD128-FAST-NEXT: i32.lt_u $push7=, $pop6, $pop5
944 ; NO-SIMD128-FAST-NEXT: i32.select $push8=, $2, $18, $pop7
945 ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop8
946 ; NO-SIMD128-FAST-NEXT: i32.const $push114=, 255
947 ; NO-SIMD128-FAST-NEXT: i32.and $push10=, $3, $pop114
948 ; NO-SIMD128-FAST-NEXT: i32.const $push113=, 255
949 ; NO-SIMD128-FAST-NEXT: i32.and $push9=, $19, $pop113
950 ; NO-SIMD128-FAST-NEXT: i32.lt_u $push11=, $pop10, $pop9
951 ; NO-SIMD128-FAST-NEXT: i32.select $push12=, $3, $19, $pop11
952 ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop12
953 ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 3
954 ; NO-SIMD128-FAST-NEXT: i32.add $push18=, $0, $pop17
955 ; NO-SIMD128-FAST-NEXT: i32.const $push112=, 255
956 ; NO-SIMD128-FAST-NEXT: i32.and $push14=, $4, $pop112
957 ; NO-SIMD128-FAST-NEXT: i32.const $push111=, 255
958 ; NO-SIMD128-FAST-NEXT: i32.and $push13=, $20, $pop111
959 ; NO-SIMD128-FAST-NEXT: i32.lt_u $push15=, $pop14, $pop13
960 ; NO-SIMD128-FAST-NEXT: i32.select $push16=, $4, $20, $pop15
961 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop18), $pop16
962 ; NO-SIMD128-FAST-NEXT: i32.const $push110=, 255
963 ; NO-SIMD128-FAST-NEXT: i32.and $push20=, $5, $pop110
964 ; NO-SIMD128-FAST-NEXT: i32.const $push109=, 255
965 ; NO-SIMD128-FAST-NEXT: i32.and $push19=, $21, $pop109
966 ; NO-SIMD128-FAST-NEXT: i32.lt_u $push21=, $pop20, $pop19
967 ; NO-SIMD128-FAST-NEXT: i32.select $push22=, $5, $21, $pop21
968 ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop22
969 ; NO-SIMD128-FAST-NEXT: i32.const $push27=, 5
970 ; NO-SIMD128-FAST-NEXT: i32.add $push28=, $0, $pop27
971 ; NO-SIMD128-FAST-NEXT: i32.const $push108=, 255
972 ; NO-SIMD128-FAST-NEXT: i32.and $push24=, $6, $pop108
973 ; NO-SIMD128-FAST-NEXT: i32.const $push107=, 255
974 ; NO-SIMD128-FAST-NEXT: i32.and $push23=, $22, $pop107
975 ; NO-SIMD128-FAST-NEXT: i32.lt_u $push25=, $pop24, $pop23
976 ; NO-SIMD128-FAST-NEXT: i32.select $push26=, $6, $22, $pop25
977 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop28), $pop26
978 ; NO-SIMD128-FAST-NEXT: i32.const $push33=, 6
979 ; NO-SIMD128-FAST-NEXT: i32.add $push34=, $0, $pop33
980 ; NO-SIMD128-FAST-NEXT: i32.const $push106=, 255
981 ; NO-SIMD128-FAST-NEXT: i32.and $push30=, $7, $pop106
982 ; NO-SIMD128-FAST-NEXT: i32.const $push105=, 255
983 ; NO-SIMD128-FAST-NEXT: i32.and $push29=, $23, $pop105
984 ; NO-SIMD128-FAST-NEXT: i32.lt_u $push31=, $pop30, $pop29
985 ; NO-SIMD128-FAST-NEXT: i32.select $push32=, $7, $23, $pop31
986 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop34), $pop32
987 ; NO-SIMD128-FAST-NEXT: i32.const $push39=, 7
988 ; NO-SIMD128-FAST-NEXT: i32.add $push40=, $0, $pop39
989 ; NO-SIMD128-FAST-NEXT: i32.const $push104=, 255
990 ; NO-SIMD128-FAST-NEXT: i32.and $push36=, $8, $pop104
991 ; NO-SIMD128-FAST-NEXT: i32.const $push103=, 255
992 ; NO-SIMD128-FAST-NEXT: i32.and $push35=, $24, $pop103
993 ; NO-SIMD128-FAST-NEXT: i32.lt_u $push37=, $pop36, $pop35
994 ; NO-SIMD128-FAST-NEXT: i32.select $push38=, $8, $24, $pop37
995 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop40), $pop38
996 ; NO-SIMD128-FAST-NEXT: i32.const $push102=, 255
997 ; NO-SIMD128-FAST-NEXT: i32.and $push42=, $9, $pop102
998 ; NO-SIMD128-FAST-NEXT: i32.const $push101=, 255
999 ; NO-SIMD128-FAST-NEXT: i32.and $push41=, $25, $pop101
1000 ; NO-SIMD128-FAST-NEXT: i32.lt_u $push43=, $pop42, $pop41
1001 ; NO-SIMD128-FAST-NEXT: i32.select $push44=, $9, $25, $pop43
1002 ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop44
1003 ; NO-SIMD128-FAST-NEXT: i32.const $push49=, 9
1004 ; NO-SIMD128-FAST-NEXT: i32.add $push50=, $0, $pop49
1005 ; NO-SIMD128-FAST-NEXT: i32.const $push100=, 255
1006 ; NO-SIMD128-FAST-NEXT: i32.and $push46=, $10, $pop100
1007 ; NO-SIMD128-FAST-NEXT: i32.const $push99=, 255
1008 ; NO-SIMD128-FAST-NEXT: i32.and $push45=, $26, $pop99
1009 ; NO-SIMD128-FAST-NEXT: i32.lt_u $push47=, $pop46, $pop45
1010 ; NO-SIMD128-FAST-NEXT: i32.select $push48=, $10, $26, $pop47
1011 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop50), $pop48
1012 ; NO-SIMD128-FAST-NEXT: i32.const $push55=, 10
1013 ; NO-SIMD128-FAST-NEXT: i32.add $push56=, $0, $pop55
1014 ; NO-SIMD128-FAST-NEXT: i32.const $push98=, 255
1015 ; NO-SIMD128-FAST-NEXT: i32.and $push52=, $11, $pop98
1016 ; NO-SIMD128-FAST-NEXT: i32.const $push97=, 255
1017 ; NO-SIMD128-FAST-NEXT: i32.and $push51=, $27, $pop97
1018 ; NO-SIMD128-FAST-NEXT: i32.lt_u $push53=, $pop52, $pop51
1019 ; NO-SIMD128-FAST-NEXT: i32.select $push54=, $11, $27, $pop53
1020 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop56), $pop54
1021 ; NO-SIMD128-FAST-NEXT: i32.const $push61=, 11
1022 ; NO-SIMD128-FAST-NEXT: i32.add $push62=, $0, $pop61
1023 ; NO-SIMD128-FAST-NEXT: i32.const $push96=, 255
1024 ; NO-SIMD128-FAST-NEXT: i32.and $push58=, $12, $pop96
1025 ; NO-SIMD128-FAST-NEXT: i32.const $push95=, 255
1026 ; NO-SIMD128-FAST-NEXT: i32.and $push57=, $28, $pop95
1027 ; NO-SIMD128-FAST-NEXT: i32.lt_u $push59=, $pop58, $pop57
1028 ; NO-SIMD128-FAST-NEXT: i32.select $push60=, $12, $28, $pop59
1029 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop62), $pop60
1030 ; NO-SIMD128-FAST-NEXT: i32.const $push67=, 12
1031 ; NO-SIMD128-FAST-NEXT: i32.add $push68=, $0, $pop67
1032 ; NO-SIMD128-FAST-NEXT: i32.const $push94=, 255
1033 ; NO-SIMD128-FAST-NEXT: i32.and $push64=, $13, $pop94
1034 ; NO-SIMD128-FAST-NEXT: i32.const $push93=, 255
1035 ; NO-SIMD128-FAST-NEXT: i32.and $push63=, $29, $pop93
1036 ; NO-SIMD128-FAST-NEXT: i32.lt_u $push65=, $pop64, $pop63
1037 ; NO-SIMD128-FAST-NEXT: i32.select $push66=, $13, $29, $pop65
1038 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop68), $pop66
1039 ; NO-SIMD128-FAST-NEXT: i32.const $push73=, 13
1040 ; NO-SIMD128-FAST-NEXT: i32.add $push74=, $0, $pop73
1041 ; NO-SIMD128-FAST-NEXT: i32.const $push92=, 255
1042 ; NO-SIMD128-FAST-NEXT: i32.and $push70=, $14, $pop92
1043 ; NO-SIMD128-FAST-NEXT: i32.const $push91=, 255
1044 ; NO-SIMD128-FAST-NEXT: i32.and $push69=, $30, $pop91
1045 ; NO-SIMD128-FAST-NEXT: i32.lt_u $push71=, $pop70, $pop69
1046 ; NO-SIMD128-FAST-NEXT: i32.select $push72=, $14, $30, $pop71
1047 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop74), $pop72
1048 ; NO-SIMD128-FAST-NEXT: i32.const $push79=, 14
1049 ; NO-SIMD128-FAST-NEXT: i32.add $push80=, $0, $pop79
1050 ; NO-SIMD128-FAST-NEXT: i32.const $push90=, 255
1051 ; NO-SIMD128-FAST-NEXT: i32.and $push76=, $15, $pop90
1052 ; NO-SIMD128-FAST-NEXT: i32.const $push89=, 255
1053 ; NO-SIMD128-FAST-NEXT: i32.and $push75=, $31, $pop89
1054 ; NO-SIMD128-FAST-NEXT: i32.lt_u $push77=, $pop76, $pop75
1055 ; NO-SIMD128-FAST-NEXT: i32.select $push78=, $15, $31, $pop77
1056 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop80), $pop78
1057 ; NO-SIMD128-FAST-NEXT: i32.const $push85=, 15
1058 ; NO-SIMD128-FAST-NEXT: i32.add $push86=, $0, $pop85
1059 ; NO-SIMD128-FAST-NEXT: i32.const $push88=, 255
1060 ; NO-SIMD128-FAST-NEXT: i32.and $push82=, $16, $pop88
1061 ; NO-SIMD128-FAST-NEXT: i32.const $push87=, 255
1062 ; NO-SIMD128-FAST-NEXT: i32.and $push81=, $32, $pop87
1063 ; NO-SIMD128-FAST-NEXT: i32.lt_u $push83=, $pop82, $pop81
1064 ; NO-SIMD128-FAST-NEXT: i32.select $push84=, $16, $32, $pop83
1065 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop86), $pop84
1066 ; NO-SIMD128-FAST-NEXT: return
1067 %c = icmp ult <16 x i8> %x, %y
1068 %a = select <16 x i1> %c, <16 x i8> %x, <16 x i8> %y
1072 define <16 x i8> @max_s_v16i8(<16 x i8> %x, <16 x i8> %y) {
1073 ; SIMD128-LABEL: max_s_v16i8:
1074 ; SIMD128: .functype max_s_v16i8 (v128, v128) -> (v128)
1075 ; SIMD128-NEXT: # %bb.0:
1076 ; SIMD128-NEXT: i8x16.max_s $push0=, $0, $1
1077 ; SIMD128-NEXT: return $pop0
1079 ; SIMD128-FAST-LABEL: max_s_v16i8:
1080 ; SIMD128-FAST: .functype max_s_v16i8 (v128, v128) -> (v128)
1081 ; SIMD128-FAST-NEXT: # %bb.0:
1082 ; SIMD128-FAST-NEXT: i8x16.max_s $push0=, $0, $1
1083 ; SIMD128-FAST-NEXT: return $pop0
1085 ; NO-SIMD128-LABEL: max_s_v16i8:
1086 ; NO-SIMD128: .functype max_s_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
1087 ; NO-SIMD128-NEXT: # %bb.0:
1088 ; NO-SIMD128-NEXT: i32.const $push4=, 15
1089 ; NO-SIMD128-NEXT: i32.add $push5=, $0, $pop4
1090 ; NO-SIMD128-NEXT: i32.extend8_s $push1=, $16
1091 ; NO-SIMD128-NEXT: i32.extend8_s $push0=, $32
1092 ; NO-SIMD128-NEXT: i32.gt_s $push2=, $pop1, $pop0
1093 ; NO-SIMD128-NEXT: i32.select $push3=, $16, $32, $pop2
1094 ; NO-SIMD128-NEXT: i32.store8 0($pop5), $pop3
1095 ; NO-SIMD128-NEXT: i32.const $push10=, 14
1096 ; NO-SIMD128-NEXT: i32.add $push11=, $0, $pop10
1097 ; NO-SIMD128-NEXT: i32.extend8_s $push7=, $15
1098 ; NO-SIMD128-NEXT: i32.extend8_s $push6=, $31
1099 ; NO-SIMD128-NEXT: i32.gt_s $push8=, $pop7, $pop6
1100 ; NO-SIMD128-NEXT: i32.select $push9=, $15, $31, $pop8
1101 ; NO-SIMD128-NEXT: i32.store8 0($pop11), $pop9
1102 ; NO-SIMD128-NEXT: i32.const $push16=, 13
1103 ; NO-SIMD128-NEXT: i32.add $push17=, $0, $pop16
1104 ; NO-SIMD128-NEXT: i32.extend8_s $push13=, $14
1105 ; NO-SIMD128-NEXT: i32.extend8_s $push12=, $30
1106 ; NO-SIMD128-NEXT: i32.gt_s $push14=, $pop13, $pop12
1107 ; NO-SIMD128-NEXT: i32.select $push15=, $14, $30, $pop14
1108 ; NO-SIMD128-NEXT: i32.store8 0($pop17), $pop15
1109 ; NO-SIMD128-NEXT: i32.const $push22=, 12
1110 ; NO-SIMD128-NEXT: i32.add $push23=, $0, $pop22
1111 ; NO-SIMD128-NEXT: i32.extend8_s $push19=, $13
1112 ; NO-SIMD128-NEXT: i32.extend8_s $push18=, $29
1113 ; NO-SIMD128-NEXT: i32.gt_s $push20=, $pop19, $pop18
1114 ; NO-SIMD128-NEXT: i32.select $push21=, $13, $29, $pop20
1115 ; NO-SIMD128-NEXT: i32.store8 0($pop23), $pop21
1116 ; NO-SIMD128-NEXT: i32.const $push28=, 11
1117 ; NO-SIMD128-NEXT: i32.add $push29=, $0, $pop28
1118 ; NO-SIMD128-NEXT: i32.extend8_s $push25=, $12
1119 ; NO-SIMD128-NEXT: i32.extend8_s $push24=, $28
1120 ; NO-SIMD128-NEXT: i32.gt_s $push26=, $pop25, $pop24
1121 ; NO-SIMD128-NEXT: i32.select $push27=, $12, $28, $pop26
1122 ; NO-SIMD128-NEXT: i32.store8 0($pop29), $pop27
1123 ; NO-SIMD128-NEXT: i32.const $push34=, 10
1124 ; NO-SIMD128-NEXT: i32.add $push35=, $0, $pop34
1125 ; NO-SIMD128-NEXT: i32.extend8_s $push31=, $11
1126 ; NO-SIMD128-NEXT: i32.extend8_s $push30=, $27
1127 ; NO-SIMD128-NEXT: i32.gt_s $push32=, $pop31, $pop30
1128 ; NO-SIMD128-NEXT: i32.select $push33=, $11, $27, $pop32
1129 ; NO-SIMD128-NEXT: i32.store8 0($pop35), $pop33
1130 ; NO-SIMD128-NEXT: i32.const $push40=, 9
1131 ; NO-SIMD128-NEXT: i32.add $push41=, $0, $pop40
1132 ; NO-SIMD128-NEXT: i32.extend8_s $push37=, $10
1133 ; NO-SIMD128-NEXT: i32.extend8_s $push36=, $26
1134 ; NO-SIMD128-NEXT: i32.gt_s $push38=, $pop37, $pop36
1135 ; NO-SIMD128-NEXT: i32.select $push39=, $10, $26, $pop38
1136 ; NO-SIMD128-NEXT: i32.store8 0($pop41), $pop39
1137 ; NO-SIMD128-NEXT: i32.extend8_s $push43=, $9
1138 ; NO-SIMD128-NEXT: i32.extend8_s $push42=, $25
1139 ; NO-SIMD128-NEXT: i32.gt_s $push44=, $pop43, $pop42
1140 ; NO-SIMD128-NEXT: i32.select $push45=, $9, $25, $pop44
1141 ; NO-SIMD128-NEXT: i32.store8 8($0), $pop45
1142 ; NO-SIMD128-NEXT: i32.const $push50=, 7
1143 ; NO-SIMD128-NEXT: i32.add $push51=, $0, $pop50
1144 ; NO-SIMD128-NEXT: i32.extend8_s $push47=, $8
1145 ; NO-SIMD128-NEXT: i32.extend8_s $push46=, $24
1146 ; NO-SIMD128-NEXT: i32.gt_s $push48=, $pop47, $pop46
1147 ; NO-SIMD128-NEXT: i32.select $push49=, $8, $24, $pop48
1148 ; NO-SIMD128-NEXT: i32.store8 0($pop51), $pop49
1149 ; NO-SIMD128-NEXT: i32.const $push56=, 6
1150 ; NO-SIMD128-NEXT: i32.add $push57=, $0, $pop56
1151 ; NO-SIMD128-NEXT: i32.extend8_s $push53=, $7
1152 ; NO-SIMD128-NEXT: i32.extend8_s $push52=, $23
1153 ; NO-SIMD128-NEXT: i32.gt_s $push54=, $pop53, $pop52
1154 ; NO-SIMD128-NEXT: i32.select $push55=, $7, $23, $pop54
1155 ; NO-SIMD128-NEXT: i32.store8 0($pop57), $pop55
1156 ; NO-SIMD128-NEXT: i32.const $push62=, 5
1157 ; NO-SIMD128-NEXT: i32.add $push63=, $0, $pop62
1158 ; NO-SIMD128-NEXT: i32.extend8_s $push59=, $6
1159 ; NO-SIMD128-NEXT: i32.extend8_s $push58=, $22
1160 ; NO-SIMD128-NEXT: i32.gt_s $push60=, $pop59, $pop58
1161 ; NO-SIMD128-NEXT: i32.select $push61=, $6, $22, $pop60
1162 ; NO-SIMD128-NEXT: i32.store8 0($pop63), $pop61
1163 ; NO-SIMD128-NEXT: i32.extend8_s $push65=, $5
1164 ; NO-SIMD128-NEXT: i32.extend8_s $push64=, $21
1165 ; NO-SIMD128-NEXT: i32.gt_s $push66=, $pop65, $pop64
1166 ; NO-SIMD128-NEXT: i32.select $push67=, $5, $21, $pop66
1167 ; NO-SIMD128-NEXT: i32.store8 4($0), $pop67
1168 ; NO-SIMD128-NEXT: i32.const $push72=, 3
1169 ; NO-SIMD128-NEXT: i32.add $push73=, $0, $pop72
1170 ; NO-SIMD128-NEXT: i32.extend8_s $push69=, $4
1171 ; NO-SIMD128-NEXT: i32.extend8_s $push68=, $20
1172 ; NO-SIMD128-NEXT: i32.gt_s $push70=, $pop69, $pop68
1173 ; NO-SIMD128-NEXT: i32.select $push71=, $4, $20, $pop70
1174 ; NO-SIMD128-NEXT: i32.store8 0($pop73), $pop71
1175 ; NO-SIMD128-NEXT: i32.extend8_s $push75=, $3
1176 ; NO-SIMD128-NEXT: i32.extend8_s $push74=, $19
1177 ; NO-SIMD128-NEXT: i32.gt_s $push76=, $pop75, $pop74
1178 ; NO-SIMD128-NEXT: i32.select $push77=, $3, $19, $pop76
1179 ; NO-SIMD128-NEXT: i32.store8 2($0), $pop77
1180 ; NO-SIMD128-NEXT: i32.extend8_s $push79=, $2
1181 ; NO-SIMD128-NEXT: i32.extend8_s $push78=, $18
1182 ; NO-SIMD128-NEXT: i32.gt_s $push80=, $pop79, $pop78
1183 ; NO-SIMD128-NEXT: i32.select $push81=, $2, $18, $pop80
1184 ; NO-SIMD128-NEXT: i32.store8 1($0), $pop81
1185 ; NO-SIMD128-NEXT: i32.extend8_s $push83=, $1
1186 ; NO-SIMD128-NEXT: i32.extend8_s $push82=, $17
1187 ; NO-SIMD128-NEXT: i32.gt_s $push84=, $pop83, $pop82
1188 ; NO-SIMD128-NEXT: i32.select $push85=, $1, $17, $pop84
1189 ; NO-SIMD128-NEXT: i32.store8 0($0), $pop85
1190 ; NO-SIMD128-NEXT: return
1192 ; NO-SIMD128-FAST-LABEL: max_s_v16i8:
1193 ; NO-SIMD128-FAST: .functype max_s_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
1194 ; NO-SIMD128-FAST-NEXT: # %bb.0:
1195 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push1=, $1
1196 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push0=, $17
1197 ; NO-SIMD128-FAST-NEXT: i32.gt_s $push2=, $pop1, $pop0
1198 ; NO-SIMD128-FAST-NEXT: i32.select $push3=, $1, $17, $pop2
1199 ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop3
1200 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push5=, $2
1201 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push4=, $18
1202 ; NO-SIMD128-FAST-NEXT: i32.gt_s $push6=, $pop5, $pop4
1203 ; NO-SIMD128-FAST-NEXT: i32.select $push7=, $2, $18, $pop6
1204 ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop7
1205 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push9=, $3
1206 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push8=, $19
1207 ; NO-SIMD128-FAST-NEXT: i32.gt_s $push10=, $pop9, $pop8
1208 ; NO-SIMD128-FAST-NEXT: i32.select $push11=, $3, $19, $pop10
1209 ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop11
1210 ; NO-SIMD128-FAST-NEXT: i32.const $push16=, 3
1211 ; NO-SIMD128-FAST-NEXT: i32.add $push17=, $0, $pop16
1212 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push13=, $4
1213 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push12=, $20
1214 ; NO-SIMD128-FAST-NEXT: i32.gt_s $push14=, $pop13, $pop12
1215 ; NO-SIMD128-FAST-NEXT: i32.select $push15=, $4, $20, $pop14
1216 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop17), $pop15
1217 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push19=, $5
1218 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push18=, $21
1219 ; NO-SIMD128-FAST-NEXT: i32.gt_s $push20=, $pop19, $pop18
1220 ; NO-SIMD128-FAST-NEXT: i32.select $push21=, $5, $21, $pop20
1221 ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop21
1222 ; NO-SIMD128-FAST-NEXT: i32.const $push26=, 5
1223 ; NO-SIMD128-FAST-NEXT: i32.add $push27=, $0, $pop26
1224 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push23=, $6
1225 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push22=, $22
1226 ; NO-SIMD128-FAST-NEXT: i32.gt_s $push24=, $pop23, $pop22
1227 ; NO-SIMD128-FAST-NEXT: i32.select $push25=, $6, $22, $pop24
1228 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop27), $pop25
1229 ; NO-SIMD128-FAST-NEXT: i32.const $push32=, 6
1230 ; NO-SIMD128-FAST-NEXT: i32.add $push33=, $0, $pop32
1231 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push29=, $7
1232 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push28=, $23
1233 ; NO-SIMD128-FAST-NEXT: i32.gt_s $push30=, $pop29, $pop28
1234 ; NO-SIMD128-FAST-NEXT: i32.select $push31=, $7, $23, $pop30
1235 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop33), $pop31
1236 ; NO-SIMD128-FAST-NEXT: i32.const $push38=, 7
1237 ; NO-SIMD128-FAST-NEXT: i32.add $push39=, $0, $pop38
1238 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push35=, $8
1239 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push34=, $24
1240 ; NO-SIMD128-FAST-NEXT: i32.gt_s $push36=, $pop35, $pop34
1241 ; NO-SIMD128-FAST-NEXT: i32.select $push37=, $8, $24, $pop36
1242 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop39), $pop37
1243 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push41=, $9
1244 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push40=, $25
1245 ; NO-SIMD128-FAST-NEXT: i32.gt_s $push42=, $pop41, $pop40
1246 ; NO-SIMD128-FAST-NEXT: i32.select $push43=, $9, $25, $pop42
1247 ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop43
1248 ; NO-SIMD128-FAST-NEXT: i32.const $push48=, 9
1249 ; NO-SIMD128-FAST-NEXT: i32.add $push49=, $0, $pop48
1250 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push45=, $10
1251 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push44=, $26
1252 ; NO-SIMD128-FAST-NEXT: i32.gt_s $push46=, $pop45, $pop44
1253 ; NO-SIMD128-FAST-NEXT: i32.select $push47=, $10, $26, $pop46
1254 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop49), $pop47
1255 ; NO-SIMD128-FAST-NEXT: i32.const $push54=, 10
1256 ; NO-SIMD128-FAST-NEXT: i32.add $push55=, $0, $pop54
1257 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push51=, $11
1258 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push50=, $27
1259 ; NO-SIMD128-FAST-NEXT: i32.gt_s $push52=, $pop51, $pop50
1260 ; NO-SIMD128-FAST-NEXT: i32.select $push53=, $11, $27, $pop52
1261 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop55), $pop53
1262 ; NO-SIMD128-FAST-NEXT: i32.const $push60=, 11
1263 ; NO-SIMD128-FAST-NEXT: i32.add $push61=, $0, $pop60
1264 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push57=, $12
1265 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push56=, $28
1266 ; NO-SIMD128-FAST-NEXT: i32.gt_s $push58=, $pop57, $pop56
1267 ; NO-SIMD128-FAST-NEXT: i32.select $push59=, $12, $28, $pop58
1268 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop61), $pop59
1269 ; NO-SIMD128-FAST-NEXT: i32.const $push66=, 12
1270 ; NO-SIMD128-FAST-NEXT: i32.add $push67=, $0, $pop66
1271 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push63=, $13
1272 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push62=, $29
1273 ; NO-SIMD128-FAST-NEXT: i32.gt_s $push64=, $pop63, $pop62
1274 ; NO-SIMD128-FAST-NEXT: i32.select $push65=, $13, $29, $pop64
1275 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop67), $pop65
1276 ; NO-SIMD128-FAST-NEXT: i32.const $push72=, 13
1277 ; NO-SIMD128-FAST-NEXT: i32.add $push73=, $0, $pop72
1278 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push69=, $14
1279 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push68=, $30
1280 ; NO-SIMD128-FAST-NEXT: i32.gt_s $push70=, $pop69, $pop68
1281 ; NO-SIMD128-FAST-NEXT: i32.select $push71=, $14, $30, $pop70
1282 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop73), $pop71
1283 ; NO-SIMD128-FAST-NEXT: i32.const $push78=, 14
1284 ; NO-SIMD128-FAST-NEXT: i32.add $push79=, $0, $pop78
1285 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push75=, $15
1286 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push74=, $31
1287 ; NO-SIMD128-FAST-NEXT: i32.gt_s $push76=, $pop75, $pop74
1288 ; NO-SIMD128-FAST-NEXT: i32.select $push77=, $15, $31, $pop76
1289 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop79), $pop77
1290 ; NO-SIMD128-FAST-NEXT: i32.const $push84=, 15
1291 ; NO-SIMD128-FAST-NEXT: i32.add $push85=, $0, $pop84
1292 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push81=, $16
1293 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push80=, $32
1294 ; NO-SIMD128-FAST-NEXT: i32.gt_s $push82=, $pop81, $pop80
1295 ; NO-SIMD128-FAST-NEXT: i32.select $push83=, $16, $32, $pop82
1296 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop85), $pop83
1297 ; NO-SIMD128-FAST-NEXT: return
1298 %c = icmp sgt <16 x i8> %x, %y
1299 %a = select <16 x i1> %c, <16 x i8> %x, <16 x i8> %y
1303 define <16 x i8> @max_u_v16i8(<16 x i8> %x, <16 x i8> %y) {
1304 ; SIMD128-LABEL: max_u_v16i8:
1305 ; SIMD128: .functype max_u_v16i8 (v128, v128) -> (v128)
1306 ; SIMD128-NEXT: # %bb.0:
1307 ; SIMD128-NEXT: i8x16.max_u $push0=, $0, $1
1308 ; SIMD128-NEXT: return $pop0
1310 ; SIMD128-FAST-LABEL: max_u_v16i8:
1311 ; SIMD128-FAST: .functype max_u_v16i8 (v128, v128) -> (v128)
1312 ; SIMD128-FAST-NEXT: # %bb.0:
1313 ; SIMD128-FAST-NEXT: i8x16.max_u $push0=, $0, $1
1314 ; SIMD128-FAST-NEXT: return $pop0
1316 ; NO-SIMD128-LABEL: max_u_v16i8:
1317 ; NO-SIMD128: .functype max_u_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
1318 ; NO-SIMD128-NEXT: # %bb.0:
1319 ; NO-SIMD128-NEXT: i32.const $push5=, 15
1320 ; NO-SIMD128-NEXT: i32.add $push6=, $0, $pop5
1321 ; NO-SIMD128-NEXT: i32.const $push0=, 255
1322 ; NO-SIMD128-NEXT: i32.and $push2=, $16, $pop0
1323 ; NO-SIMD128-NEXT: i32.const $push117=, 255
1324 ; NO-SIMD128-NEXT: i32.and $push1=, $32, $pop117
1325 ; NO-SIMD128-NEXT: i32.gt_u $push3=, $pop2, $pop1
1326 ; NO-SIMD128-NEXT: i32.select $push4=, $16, $32, $pop3
1327 ; NO-SIMD128-NEXT: i32.store8 0($pop6), $pop4
1328 ; NO-SIMD128-NEXT: i32.const $push11=, 14
1329 ; NO-SIMD128-NEXT: i32.add $push12=, $0, $pop11
1330 ; NO-SIMD128-NEXT: i32.const $push116=, 255
1331 ; NO-SIMD128-NEXT: i32.and $push8=, $15, $pop116
1332 ; NO-SIMD128-NEXT: i32.const $push115=, 255
1333 ; NO-SIMD128-NEXT: i32.and $push7=, $31, $pop115
1334 ; NO-SIMD128-NEXT: i32.gt_u $push9=, $pop8, $pop7
1335 ; NO-SIMD128-NEXT: i32.select $push10=, $15, $31, $pop9
1336 ; NO-SIMD128-NEXT: i32.store8 0($pop12), $pop10
1337 ; NO-SIMD128-NEXT: i32.const $push17=, 13
1338 ; NO-SIMD128-NEXT: i32.add $push18=, $0, $pop17
1339 ; NO-SIMD128-NEXT: i32.const $push114=, 255
1340 ; NO-SIMD128-NEXT: i32.and $push14=, $14, $pop114
1341 ; NO-SIMD128-NEXT: i32.const $push113=, 255
1342 ; NO-SIMD128-NEXT: i32.and $push13=, $30, $pop113
1343 ; NO-SIMD128-NEXT: i32.gt_u $push15=, $pop14, $pop13
1344 ; NO-SIMD128-NEXT: i32.select $push16=, $14, $30, $pop15
1345 ; NO-SIMD128-NEXT: i32.store8 0($pop18), $pop16
1346 ; NO-SIMD128-NEXT: i32.const $push23=, 12
1347 ; NO-SIMD128-NEXT: i32.add $push24=, $0, $pop23
1348 ; NO-SIMD128-NEXT: i32.const $push112=, 255
1349 ; NO-SIMD128-NEXT: i32.and $push20=, $13, $pop112
1350 ; NO-SIMD128-NEXT: i32.const $push111=, 255
1351 ; NO-SIMD128-NEXT: i32.and $push19=, $29, $pop111
1352 ; NO-SIMD128-NEXT: i32.gt_u $push21=, $pop20, $pop19
1353 ; NO-SIMD128-NEXT: i32.select $push22=, $13, $29, $pop21
1354 ; NO-SIMD128-NEXT: i32.store8 0($pop24), $pop22
1355 ; NO-SIMD128-NEXT: i32.const $push29=, 11
1356 ; NO-SIMD128-NEXT: i32.add $push30=, $0, $pop29
1357 ; NO-SIMD128-NEXT: i32.const $push110=, 255
1358 ; NO-SIMD128-NEXT: i32.and $push26=, $12, $pop110
1359 ; NO-SIMD128-NEXT: i32.const $push109=, 255
1360 ; NO-SIMD128-NEXT: i32.and $push25=, $28, $pop109
1361 ; NO-SIMD128-NEXT: i32.gt_u $push27=, $pop26, $pop25
1362 ; NO-SIMD128-NEXT: i32.select $push28=, $12, $28, $pop27
1363 ; NO-SIMD128-NEXT: i32.store8 0($pop30), $pop28
1364 ; NO-SIMD128-NEXT: i32.const $push35=, 10
1365 ; NO-SIMD128-NEXT: i32.add $push36=, $0, $pop35
1366 ; NO-SIMD128-NEXT: i32.const $push108=, 255
1367 ; NO-SIMD128-NEXT: i32.and $push32=, $11, $pop108
1368 ; NO-SIMD128-NEXT: i32.const $push107=, 255
1369 ; NO-SIMD128-NEXT: i32.and $push31=, $27, $pop107
1370 ; NO-SIMD128-NEXT: i32.gt_u $push33=, $pop32, $pop31
1371 ; NO-SIMD128-NEXT: i32.select $push34=, $11, $27, $pop33
1372 ; NO-SIMD128-NEXT: i32.store8 0($pop36), $pop34
1373 ; NO-SIMD128-NEXT: i32.const $push41=, 9
1374 ; NO-SIMD128-NEXT: i32.add $push42=, $0, $pop41
1375 ; NO-SIMD128-NEXT: i32.const $push106=, 255
1376 ; NO-SIMD128-NEXT: i32.and $push38=, $10, $pop106
1377 ; NO-SIMD128-NEXT: i32.const $push105=, 255
1378 ; NO-SIMD128-NEXT: i32.and $push37=, $26, $pop105
1379 ; NO-SIMD128-NEXT: i32.gt_u $push39=, $pop38, $pop37
1380 ; NO-SIMD128-NEXT: i32.select $push40=, $10, $26, $pop39
1381 ; NO-SIMD128-NEXT: i32.store8 0($pop42), $pop40
1382 ; NO-SIMD128-NEXT: i32.const $push104=, 255
1383 ; NO-SIMD128-NEXT: i32.and $push44=, $9, $pop104
1384 ; NO-SIMD128-NEXT: i32.const $push103=, 255
1385 ; NO-SIMD128-NEXT: i32.and $push43=, $25, $pop103
1386 ; NO-SIMD128-NEXT: i32.gt_u $push45=, $pop44, $pop43
1387 ; NO-SIMD128-NEXT: i32.select $push46=, $9, $25, $pop45
1388 ; NO-SIMD128-NEXT: i32.store8 8($0), $pop46
1389 ; NO-SIMD128-NEXT: i32.const $push51=, 7
1390 ; NO-SIMD128-NEXT: i32.add $push52=, $0, $pop51
1391 ; NO-SIMD128-NEXT: i32.const $push102=, 255
1392 ; NO-SIMD128-NEXT: i32.and $push48=, $8, $pop102
1393 ; NO-SIMD128-NEXT: i32.const $push101=, 255
1394 ; NO-SIMD128-NEXT: i32.and $push47=, $24, $pop101
1395 ; NO-SIMD128-NEXT: i32.gt_u $push49=, $pop48, $pop47
1396 ; NO-SIMD128-NEXT: i32.select $push50=, $8, $24, $pop49
1397 ; NO-SIMD128-NEXT: i32.store8 0($pop52), $pop50
1398 ; NO-SIMD128-NEXT: i32.const $push57=, 6
1399 ; NO-SIMD128-NEXT: i32.add $push58=, $0, $pop57
1400 ; NO-SIMD128-NEXT: i32.const $push100=, 255
1401 ; NO-SIMD128-NEXT: i32.and $push54=, $7, $pop100
1402 ; NO-SIMD128-NEXT: i32.const $push99=, 255
1403 ; NO-SIMD128-NEXT: i32.and $push53=, $23, $pop99
1404 ; NO-SIMD128-NEXT: i32.gt_u $push55=, $pop54, $pop53
1405 ; NO-SIMD128-NEXT: i32.select $push56=, $7, $23, $pop55
1406 ; NO-SIMD128-NEXT: i32.store8 0($pop58), $pop56
1407 ; NO-SIMD128-NEXT: i32.const $push63=, 5
1408 ; NO-SIMD128-NEXT: i32.add $push64=, $0, $pop63
1409 ; NO-SIMD128-NEXT: i32.const $push98=, 255
1410 ; NO-SIMD128-NEXT: i32.and $push60=, $6, $pop98
1411 ; NO-SIMD128-NEXT: i32.const $push97=, 255
1412 ; NO-SIMD128-NEXT: i32.and $push59=, $22, $pop97
1413 ; NO-SIMD128-NEXT: i32.gt_u $push61=, $pop60, $pop59
1414 ; NO-SIMD128-NEXT: i32.select $push62=, $6, $22, $pop61
1415 ; NO-SIMD128-NEXT: i32.store8 0($pop64), $pop62
1416 ; NO-SIMD128-NEXT: i32.const $push96=, 255
1417 ; NO-SIMD128-NEXT: i32.and $push66=, $5, $pop96
1418 ; NO-SIMD128-NEXT: i32.const $push95=, 255
1419 ; NO-SIMD128-NEXT: i32.and $push65=, $21, $pop95
1420 ; NO-SIMD128-NEXT: i32.gt_u $push67=, $pop66, $pop65
1421 ; NO-SIMD128-NEXT: i32.select $push68=, $5, $21, $pop67
1422 ; NO-SIMD128-NEXT: i32.store8 4($0), $pop68
1423 ; NO-SIMD128-NEXT: i32.const $push73=, 3
1424 ; NO-SIMD128-NEXT: i32.add $push74=, $0, $pop73
1425 ; NO-SIMD128-NEXT: i32.const $push94=, 255
1426 ; NO-SIMD128-NEXT: i32.and $push70=, $4, $pop94
1427 ; NO-SIMD128-NEXT: i32.const $push93=, 255
1428 ; NO-SIMD128-NEXT: i32.and $push69=, $20, $pop93
1429 ; NO-SIMD128-NEXT: i32.gt_u $push71=, $pop70, $pop69
1430 ; NO-SIMD128-NEXT: i32.select $push72=, $4, $20, $pop71
1431 ; NO-SIMD128-NEXT: i32.store8 0($pop74), $pop72
1432 ; NO-SIMD128-NEXT: i32.const $push92=, 255
1433 ; NO-SIMD128-NEXT: i32.and $push76=, $3, $pop92
1434 ; NO-SIMD128-NEXT: i32.const $push91=, 255
1435 ; NO-SIMD128-NEXT: i32.and $push75=, $19, $pop91
1436 ; NO-SIMD128-NEXT: i32.gt_u $push77=, $pop76, $pop75
1437 ; NO-SIMD128-NEXT: i32.select $push78=, $3, $19, $pop77
1438 ; NO-SIMD128-NEXT: i32.store8 2($0), $pop78
1439 ; NO-SIMD128-NEXT: i32.const $push90=, 255
1440 ; NO-SIMD128-NEXT: i32.and $push80=, $2, $pop90
1441 ; NO-SIMD128-NEXT: i32.const $push89=, 255
1442 ; NO-SIMD128-NEXT: i32.and $push79=, $18, $pop89
1443 ; NO-SIMD128-NEXT: i32.gt_u $push81=, $pop80, $pop79
1444 ; NO-SIMD128-NEXT: i32.select $push82=, $2, $18, $pop81
1445 ; NO-SIMD128-NEXT: i32.store8 1($0), $pop82
1446 ; NO-SIMD128-NEXT: i32.const $push88=, 255
1447 ; NO-SIMD128-NEXT: i32.and $push84=, $1, $pop88
1448 ; NO-SIMD128-NEXT: i32.const $push87=, 255
1449 ; NO-SIMD128-NEXT: i32.and $push83=, $17, $pop87
1450 ; NO-SIMD128-NEXT: i32.gt_u $push85=, $pop84, $pop83
1451 ; NO-SIMD128-NEXT: i32.select $push86=, $1, $17, $pop85
1452 ; NO-SIMD128-NEXT: i32.store8 0($0), $pop86
1453 ; NO-SIMD128-NEXT: return
1455 ; NO-SIMD128-FAST-LABEL: max_u_v16i8:
1456 ; NO-SIMD128-FAST: .functype max_u_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
1457 ; NO-SIMD128-FAST-NEXT: # %bb.0:
1458 ; NO-SIMD128-FAST-NEXT: i32.const $push0=, 255
1459 ; NO-SIMD128-FAST-NEXT: i32.and $push2=, $1, $pop0
1460 ; NO-SIMD128-FAST-NEXT: i32.const $push117=, 255
1461 ; NO-SIMD128-FAST-NEXT: i32.and $push1=, $17, $pop117
1462 ; NO-SIMD128-FAST-NEXT: i32.gt_u $push3=, $pop2, $pop1
1463 ; NO-SIMD128-FAST-NEXT: i32.select $push4=, $1, $17, $pop3
1464 ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop4
1465 ; NO-SIMD128-FAST-NEXT: i32.const $push116=, 255
1466 ; NO-SIMD128-FAST-NEXT: i32.and $push6=, $2, $pop116
1467 ; NO-SIMD128-FAST-NEXT: i32.const $push115=, 255
1468 ; NO-SIMD128-FAST-NEXT: i32.and $push5=, $18, $pop115
1469 ; NO-SIMD128-FAST-NEXT: i32.gt_u $push7=, $pop6, $pop5
1470 ; NO-SIMD128-FAST-NEXT: i32.select $push8=, $2, $18, $pop7
1471 ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop8
1472 ; NO-SIMD128-FAST-NEXT: i32.const $push114=, 255
1473 ; NO-SIMD128-FAST-NEXT: i32.and $push10=, $3, $pop114
1474 ; NO-SIMD128-FAST-NEXT: i32.const $push113=, 255
1475 ; NO-SIMD128-FAST-NEXT: i32.and $push9=, $19, $pop113
1476 ; NO-SIMD128-FAST-NEXT: i32.gt_u $push11=, $pop10, $pop9
1477 ; NO-SIMD128-FAST-NEXT: i32.select $push12=, $3, $19, $pop11
1478 ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop12
1479 ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 3
1480 ; NO-SIMD128-FAST-NEXT: i32.add $push18=, $0, $pop17
1481 ; NO-SIMD128-FAST-NEXT: i32.const $push112=, 255
1482 ; NO-SIMD128-FAST-NEXT: i32.and $push14=, $4, $pop112
1483 ; NO-SIMD128-FAST-NEXT: i32.const $push111=, 255
1484 ; NO-SIMD128-FAST-NEXT: i32.and $push13=, $20, $pop111
1485 ; NO-SIMD128-FAST-NEXT: i32.gt_u $push15=, $pop14, $pop13
1486 ; NO-SIMD128-FAST-NEXT: i32.select $push16=, $4, $20, $pop15
1487 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop18), $pop16
1488 ; NO-SIMD128-FAST-NEXT: i32.const $push110=, 255
1489 ; NO-SIMD128-FAST-NEXT: i32.and $push20=, $5, $pop110
1490 ; NO-SIMD128-FAST-NEXT: i32.const $push109=, 255
1491 ; NO-SIMD128-FAST-NEXT: i32.and $push19=, $21, $pop109
1492 ; NO-SIMD128-FAST-NEXT: i32.gt_u $push21=, $pop20, $pop19
1493 ; NO-SIMD128-FAST-NEXT: i32.select $push22=, $5, $21, $pop21
1494 ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop22
1495 ; NO-SIMD128-FAST-NEXT: i32.const $push27=, 5
1496 ; NO-SIMD128-FAST-NEXT: i32.add $push28=, $0, $pop27
1497 ; NO-SIMD128-FAST-NEXT: i32.const $push108=, 255
1498 ; NO-SIMD128-FAST-NEXT: i32.and $push24=, $6, $pop108
1499 ; NO-SIMD128-FAST-NEXT: i32.const $push107=, 255
1500 ; NO-SIMD128-FAST-NEXT: i32.and $push23=, $22, $pop107
1501 ; NO-SIMD128-FAST-NEXT: i32.gt_u $push25=, $pop24, $pop23
1502 ; NO-SIMD128-FAST-NEXT: i32.select $push26=, $6, $22, $pop25
1503 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop28), $pop26
1504 ; NO-SIMD128-FAST-NEXT: i32.const $push33=, 6
1505 ; NO-SIMD128-FAST-NEXT: i32.add $push34=, $0, $pop33
1506 ; NO-SIMD128-FAST-NEXT: i32.const $push106=, 255
1507 ; NO-SIMD128-FAST-NEXT: i32.and $push30=, $7, $pop106
1508 ; NO-SIMD128-FAST-NEXT: i32.const $push105=, 255
1509 ; NO-SIMD128-FAST-NEXT: i32.and $push29=, $23, $pop105
1510 ; NO-SIMD128-FAST-NEXT: i32.gt_u $push31=, $pop30, $pop29
1511 ; NO-SIMD128-FAST-NEXT: i32.select $push32=, $7, $23, $pop31
1512 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop34), $pop32
1513 ; NO-SIMD128-FAST-NEXT: i32.const $push39=, 7
1514 ; NO-SIMD128-FAST-NEXT: i32.add $push40=, $0, $pop39
1515 ; NO-SIMD128-FAST-NEXT: i32.const $push104=, 255
1516 ; NO-SIMD128-FAST-NEXT: i32.and $push36=, $8, $pop104
1517 ; NO-SIMD128-FAST-NEXT: i32.const $push103=, 255
1518 ; NO-SIMD128-FAST-NEXT: i32.and $push35=, $24, $pop103
1519 ; NO-SIMD128-FAST-NEXT: i32.gt_u $push37=, $pop36, $pop35
1520 ; NO-SIMD128-FAST-NEXT: i32.select $push38=, $8, $24, $pop37
1521 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop40), $pop38
1522 ; NO-SIMD128-FAST-NEXT: i32.const $push102=, 255
1523 ; NO-SIMD128-FAST-NEXT: i32.and $push42=, $9, $pop102
1524 ; NO-SIMD128-FAST-NEXT: i32.const $push101=, 255
1525 ; NO-SIMD128-FAST-NEXT: i32.and $push41=, $25, $pop101
1526 ; NO-SIMD128-FAST-NEXT: i32.gt_u $push43=, $pop42, $pop41
1527 ; NO-SIMD128-FAST-NEXT: i32.select $push44=, $9, $25, $pop43
1528 ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop44
1529 ; NO-SIMD128-FAST-NEXT: i32.const $push49=, 9
1530 ; NO-SIMD128-FAST-NEXT: i32.add $push50=, $0, $pop49
1531 ; NO-SIMD128-FAST-NEXT: i32.const $push100=, 255
1532 ; NO-SIMD128-FAST-NEXT: i32.and $push46=, $10, $pop100
1533 ; NO-SIMD128-FAST-NEXT: i32.const $push99=, 255
1534 ; NO-SIMD128-FAST-NEXT: i32.and $push45=, $26, $pop99
1535 ; NO-SIMD128-FAST-NEXT: i32.gt_u $push47=, $pop46, $pop45
1536 ; NO-SIMD128-FAST-NEXT: i32.select $push48=, $10, $26, $pop47
1537 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop50), $pop48
1538 ; NO-SIMD128-FAST-NEXT: i32.const $push55=, 10
1539 ; NO-SIMD128-FAST-NEXT: i32.add $push56=, $0, $pop55
1540 ; NO-SIMD128-FAST-NEXT: i32.const $push98=, 255
1541 ; NO-SIMD128-FAST-NEXT: i32.and $push52=, $11, $pop98
1542 ; NO-SIMD128-FAST-NEXT: i32.const $push97=, 255
1543 ; NO-SIMD128-FAST-NEXT: i32.and $push51=, $27, $pop97
1544 ; NO-SIMD128-FAST-NEXT: i32.gt_u $push53=, $pop52, $pop51
1545 ; NO-SIMD128-FAST-NEXT: i32.select $push54=, $11, $27, $pop53
1546 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop56), $pop54
1547 ; NO-SIMD128-FAST-NEXT: i32.const $push61=, 11
1548 ; NO-SIMD128-FAST-NEXT: i32.add $push62=, $0, $pop61
1549 ; NO-SIMD128-FAST-NEXT: i32.const $push96=, 255
1550 ; NO-SIMD128-FAST-NEXT: i32.and $push58=, $12, $pop96
1551 ; NO-SIMD128-FAST-NEXT: i32.const $push95=, 255
1552 ; NO-SIMD128-FAST-NEXT: i32.and $push57=, $28, $pop95
1553 ; NO-SIMD128-FAST-NEXT: i32.gt_u $push59=, $pop58, $pop57
1554 ; NO-SIMD128-FAST-NEXT: i32.select $push60=, $12, $28, $pop59
1555 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop62), $pop60
1556 ; NO-SIMD128-FAST-NEXT: i32.const $push67=, 12
1557 ; NO-SIMD128-FAST-NEXT: i32.add $push68=, $0, $pop67
1558 ; NO-SIMD128-FAST-NEXT: i32.const $push94=, 255
1559 ; NO-SIMD128-FAST-NEXT: i32.and $push64=, $13, $pop94
1560 ; NO-SIMD128-FAST-NEXT: i32.const $push93=, 255
1561 ; NO-SIMD128-FAST-NEXT: i32.and $push63=, $29, $pop93
1562 ; NO-SIMD128-FAST-NEXT: i32.gt_u $push65=, $pop64, $pop63
1563 ; NO-SIMD128-FAST-NEXT: i32.select $push66=, $13, $29, $pop65
1564 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop68), $pop66
1565 ; NO-SIMD128-FAST-NEXT: i32.const $push73=, 13
1566 ; NO-SIMD128-FAST-NEXT: i32.add $push74=, $0, $pop73
1567 ; NO-SIMD128-FAST-NEXT: i32.const $push92=, 255
1568 ; NO-SIMD128-FAST-NEXT: i32.and $push70=, $14, $pop92
1569 ; NO-SIMD128-FAST-NEXT: i32.const $push91=, 255
1570 ; NO-SIMD128-FAST-NEXT: i32.and $push69=, $30, $pop91
1571 ; NO-SIMD128-FAST-NEXT: i32.gt_u $push71=, $pop70, $pop69
1572 ; NO-SIMD128-FAST-NEXT: i32.select $push72=, $14, $30, $pop71
1573 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop74), $pop72
1574 ; NO-SIMD128-FAST-NEXT: i32.const $push79=, 14
1575 ; NO-SIMD128-FAST-NEXT: i32.add $push80=, $0, $pop79
1576 ; NO-SIMD128-FAST-NEXT: i32.const $push90=, 255
1577 ; NO-SIMD128-FAST-NEXT: i32.and $push76=, $15, $pop90
1578 ; NO-SIMD128-FAST-NEXT: i32.const $push89=, 255
1579 ; NO-SIMD128-FAST-NEXT: i32.and $push75=, $31, $pop89
1580 ; NO-SIMD128-FAST-NEXT: i32.gt_u $push77=, $pop76, $pop75
1581 ; NO-SIMD128-FAST-NEXT: i32.select $push78=, $15, $31, $pop77
1582 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop80), $pop78
1583 ; NO-SIMD128-FAST-NEXT: i32.const $push85=, 15
1584 ; NO-SIMD128-FAST-NEXT: i32.add $push86=, $0, $pop85
1585 ; NO-SIMD128-FAST-NEXT: i32.const $push88=, 255
1586 ; NO-SIMD128-FAST-NEXT: i32.and $push82=, $16, $pop88
1587 ; NO-SIMD128-FAST-NEXT: i32.const $push87=, 255
1588 ; NO-SIMD128-FAST-NEXT: i32.and $push81=, $32, $pop87
1589 ; NO-SIMD128-FAST-NEXT: i32.gt_u $push83=, $pop82, $pop81
1590 ; NO-SIMD128-FAST-NEXT: i32.select $push84=, $16, $32, $pop83
1591 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop86), $pop84
1592 ; NO-SIMD128-FAST-NEXT: return
1593 %c = icmp ugt <16 x i8> %x, %y
1594 %a = select <16 x i1> %c, <16 x i8> %x, <16 x i8> %y
1598 define <16 x i8> @avgr_u_v16i8(<16 x i8> %x, <16 x i8> %y) {
1599 ; SIMD128-LABEL: avgr_u_v16i8:
1600 ; SIMD128: .functype avgr_u_v16i8 (v128, v128) -> (v128)
1601 ; SIMD128-NEXT: # %bb.0:
1602 ; SIMD128-NEXT: i8x16.avgr_u $push0=, $0, $1
1603 ; SIMD128-NEXT: return $pop0
1605 ; SIMD128-FAST-LABEL: avgr_u_v16i8:
1606 ; SIMD128-FAST: .functype avgr_u_v16i8 (v128, v128) -> (v128)
1607 ; SIMD128-FAST-NEXT: # %bb.0:
1608 ; SIMD128-FAST-NEXT: i8x16.avgr_u $push0=, $0, $1
1609 ; SIMD128-FAST-NEXT: return $pop0
1611 ; NO-SIMD128-LABEL: avgr_u_v16i8:
1612 ; NO-SIMD128: .functype avgr_u_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
1613 ; NO-SIMD128-NEXT: # %bb.0:
1614 ; NO-SIMD128-NEXT: i32.const $push0=, 15
1615 ; NO-SIMD128-NEXT: i32.add $push1=, $0, $pop0
1616 ; NO-SIMD128-NEXT: i32.add $push2=, $16, $32
1617 ; NO-SIMD128-NEXT: i32.const $push3=, 1
1618 ; NO-SIMD128-NEXT: i32.add $push4=, $pop2, $pop3
1619 ; NO-SIMD128-NEXT: i32.const $push5=, 254
1620 ; NO-SIMD128-NEXT: i32.and $push6=, $pop4, $pop5
1621 ; NO-SIMD128-NEXT: i32.const $push133=, 1
1622 ; NO-SIMD128-NEXT: i32.shr_u $push7=, $pop6, $pop133
1623 ; NO-SIMD128-NEXT: i32.store8 0($pop1), $pop7
1624 ; NO-SIMD128-NEXT: i32.const $push8=, 14
1625 ; NO-SIMD128-NEXT: i32.add $push9=, $0, $pop8
1626 ; NO-SIMD128-NEXT: i32.add $push10=, $15, $31
1627 ; NO-SIMD128-NEXT: i32.const $push132=, 1
1628 ; NO-SIMD128-NEXT: i32.add $push11=, $pop10, $pop132
1629 ; NO-SIMD128-NEXT: i32.const $push131=, 254
1630 ; NO-SIMD128-NEXT: i32.and $push12=, $pop11, $pop131
1631 ; NO-SIMD128-NEXT: i32.const $push130=, 1
1632 ; NO-SIMD128-NEXT: i32.shr_u $push13=, $pop12, $pop130
1633 ; NO-SIMD128-NEXT: i32.store8 0($pop9), $pop13
1634 ; NO-SIMD128-NEXT: i32.const $push14=, 13
1635 ; NO-SIMD128-NEXT: i32.add $push15=, $0, $pop14
1636 ; NO-SIMD128-NEXT: i32.add $push16=, $14, $30
1637 ; NO-SIMD128-NEXT: i32.const $push129=, 1
1638 ; NO-SIMD128-NEXT: i32.add $push17=, $pop16, $pop129
1639 ; NO-SIMD128-NEXT: i32.const $push128=, 254
1640 ; NO-SIMD128-NEXT: i32.and $push18=, $pop17, $pop128
1641 ; NO-SIMD128-NEXT: i32.const $push127=, 1
1642 ; NO-SIMD128-NEXT: i32.shr_u $push19=, $pop18, $pop127
1643 ; NO-SIMD128-NEXT: i32.store8 0($pop15), $pop19
1644 ; NO-SIMD128-NEXT: i32.const $push20=, 12
1645 ; NO-SIMD128-NEXT: i32.add $push21=, $0, $pop20
1646 ; NO-SIMD128-NEXT: i32.add $push22=, $13, $29
1647 ; NO-SIMD128-NEXT: i32.const $push126=, 1
1648 ; NO-SIMD128-NEXT: i32.add $push23=, $pop22, $pop126
1649 ; NO-SIMD128-NEXT: i32.const $push125=, 254
1650 ; NO-SIMD128-NEXT: i32.and $push24=, $pop23, $pop125
1651 ; NO-SIMD128-NEXT: i32.const $push124=, 1
1652 ; NO-SIMD128-NEXT: i32.shr_u $push25=, $pop24, $pop124
1653 ; NO-SIMD128-NEXT: i32.store8 0($pop21), $pop25
1654 ; NO-SIMD128-NEXT: i32.const $push26=, 11
1655 ; NO-SIMD128-NEXT: i32.add $push27=, $0, $pop26
1656 ; NO-SIMD128-NEXT: i32.add $push28=, $12, $28
1657 ; NO-SIMD128-NEXT: i32.const $push123=, 1
1658 ; NO-SIMD128-NEXT: i32.add $push29=, $pop28, $pop123
1659 ; NO-SIMD128-NEXT: i32.const $push122=, 254
1660 ; NO-SIMD128-NEXT: i32.and $push30=, $pop29, $pop122
1661 ; NO-SIMD128-NEXT: i32.const $push121=, 1
1662 ; NO-SIMD128-NEXT: i32.shr_u $push31=, $pop30, $pop121
1663 ; NO-SIMD128-NEXT: i32.store8 0($pop27), $pop31
1664 ; NO-SIMD128-NEXT: i32.const $push32=, 10
1665 ; NO-SIMD128-NEXT: i32.add $push33=, $0, $pop32
1666 ; NO-SIMD128-NEXT: i32.add $push34=, $11, $27
1667 ; NO-SIMD128-NEXT: i32.const $push120=, 1
1668 ; NO-SIMD128-NEXT: i32.add $push35=, $pop34, $pop120
1669 ; NO-SIMD128-NEXT: i32.const $push119=, 254
1670 ; NO-SIMD128-NEXT: i32.and $push36=, $pop35, $pop119
1671 ; NO-SIMD128-NEXT: i32.const $push118=, 1
1672 ; NO-SIMD128-NEXT: i32.shr_u $push37=, $pop36, $pop118
1673 ; NO-SIMD128-NEXT: i32.store8 0($pop33), $pop37
1674 ; NO-SIMD128-NEXT: i32.const $push38=, 9
1675 ; NO-SIMD128-NEXT: i32.add $push39=, $0, $pop38
1676 ; NO-SIMD128-NEXT: i32.add $push40=, $10, $26
1677 ; NO-SIMD128-NEXT: i32.const $push117=, 1
1678 ; NO-SIMD128-NEXT: i32.add $push41=, $pop40, $pop117
1679 ; NO-SIMD128-NEXT: i32.const $push116=, 254
1680 ; NO-SIMD128-NEXT: i32.and $push42=, $pop41, $pop116
1681 ; NO-SIMD128-NEXT: i32.const $push115=, 1
1682 ; NO-SIMD128-NEXT: i32.shr_u $push43=, $pop42, $pop115
1683 ; NO-SIMD128-NEXT: i32.store8 0($pop39), $pop43
1684 ; NO-SIMD128-NEXT: i32.add $push44=, $9, $25
1685 ; NO-SIMD128-NEXT: i32.const $push114=, 1
1686 ; NO-SIMD128-NEXT: i32.add $push45=, $pop44, $pop114
1687 ; NO-SIMD128-NEXT: i32.const $push113=, 254
1688 ; NO-SIMD128-NEXT: i32.and $push46=, $pop45, $pop113
1689 ; NO-SIMD128-NEXT: i32.const $push112=, 1
1690 ; NO-SIMD128-NEXT: i32.shr_u $push47=, $pop46, $pop112
1691 ; NO-SIMD128-NEXT: i32.store8 8($0), $pop47
1692 ; NO-SIMD128-NEXT: i32.const $push48=, 7
1693 ; NO-SIMD128-NEXT: i32.add $push49=, $0, $pop48
1694 ; NO-SIMD128-NEXT: i32.add $push50=, $8, $24
1695 ; NO-SIMD128-NEXT: i32.const $push111=, 1
1696 ; NO-SIMD128-NEXT: i32.add $push51=, $pop50, $pop111
1697 ; NO-SIMD128-NEXT: i32.const $push110=, 254
1698 ; NO-SIMD128-NEXT: i32.and $push52=, $pop51, $pop110
1699 ; NO-SIMD128-NEXT: i32.const $push109=, 1
1700 ; NO-SIMD128-NEXT: i32.shr_u $push53=, $pop52, $pop109
1701 ; NO-SIMD128-NEXT: i32.store8 0($pop49), $pop53
1702 ; NO-SIMD128-NEXT: i32.const $push54=, 6
1703 ; NO-SIMD128-NEXT: i32.add $push55=, $0, $pop54
1704 ; NO-SIMD128-NEXT: i32.add $push56=, $7, $23
1705 ; NO-SIMD128-NEXT: i32.const $push108=, 1
1706 ; NO-SIMD128-NEXT: i32.add $push57=, $pop56, $pop108
1707 ; NO-SIMD128-NEXT: i32.const $push107=, 254
1708 ; NO-SIMD128-NEXT: i32.and $push58=, $pop57, $pop107
1709 ; NO-SIMD128-NEXT: i32.const $push106=, 1
1710 ; NO-SIMD128-NEXT: i32.shr_u $push59=, $pop58, $pop106
1711 ; NO-SIMD128-NEXT: i32.store8 0($pop55), $pop59
1712 ; NO-SIMD128-NEXT: i32.const $push60=, 5
1713 ; NO-SIMD128-NEXT: i32.add $push61=, $0, $pop60
1714 ; NO-SIMD128-NEXT: i32.add $push62=, $6, $22
1715 ; NO-SIMD128-NEXT: i32.const $push105=, 1
1716 ; NO-SIMD128-NEXT: i32.add $push63=, $pop62, $pop105
1717 ; NO-SIMD128-NEXT: i32.const $push104=, 254
1718 ; NO-SIMD128-NEXT: i32.and $push64=, $pop63, $pop104
1719 ; NO-SIMD128-NEXT: i32.const $push103=, 1
1720 ; NO-SIMD128-NEXT: i32.shr_u $push65=, $pop64, $pop103
1721 ; NO-SIMD128-NEXT: i32.store8 0($pop61), $pop65
1722 ; NO-SIMD128-NEXT: i32.add $push66=, $5, $21
1723 ; NO-SIMD128-NEXT: i32.const $push102=, 1
1724 ; NO-SIMD128-NEXT: i32.add $push67=, $pop66, $pop102
1725 ; NO-SIMD128-NEXT: i32.const $push101=, 254
1726 ; NO-SIMD128-NEXT: i32.and $push68=, $pop67, $pop101
1727 ; NO-SIMD128-NEXT: i32.const $push100=, 1
1728 ; NO-SIMD128-NEXT: i32.shr_u $push69=, $pop68, $pop100
1729 ; NO-SIMD128-NEXT: i32.store8 4($0), $pop69
1730 ; NO-SIMD128-NEXT: i32.const $push70=, 3
1731 ; NO-SIMD128-NEXT: i32.add $push71=, $0, $pop70
1732 ; NO-SIMD128-NEXT: i32.add $push72=, $4, $20
1733 ; NO-SIMD128-NEXT: i32.const $push99=, 1
1734 ; NO-SIMD128-NEXT: i32.add $push73=, $pop72, $pop99
1735 ; NO-SIMD128-NEXT: i32.const $push98=, 254
1736 ; NO-SIMD128-NEXT: i32.and $push74=, $pop73, $pop98
1737 ; NO-SIMD128-NEXT: i32.const $push97=, 1
1738 ; NO-SIMD128-NEXT: i32.shr_u $push75=, $pop74, $pop97
1739 ; NO-SIMD128-NEXT: i32.store8 0($pop71), $pop75
1740 ; NO-SIMD128-NEXT: i32.add $push76=, $3, $19
1741 ; NO-SIMD128-NEXT: i32.const $push96=, 1
1742 ; NO-SIMD128-NEXT: i32.add $push77=, $pop76, $pop96
1743 ; NO-SIMD128-NEXT: i32.const $push95=, 254
1744 ; NO-SIMD128-NEXT: i32.and $push78=, $pop77, $pop95
1745 ; NO-SIMD128-NEXT: i32.const $push94=, 1
1746 ; NO-SIMD128-NEXT: i32.shr_u $push79=, $pop78, $pop94
1747 ; NO-SIMD128-NEXT: i32.store8 2($0), $pop79
1748 ; NO-SIMD128-NEXT: i32.add $push80=, $2, $18
1749 ; NO-SIMD128-NEXT: i32.const $push93=, 1
1750 ; NO-SIMD128-NEXT: i32.add $push81=, $pop80, $pop93
1751 ; NO-SIMD128-NEXT: i32.const $push92=, 254
1752 ; NO-SIMD128-NEXT: i32.and $push82=, $pop81, $pop92
1753 ; NO-SIMD128-NEXT: i32.const $push91=, 1
1754 ; NO-SIMD128-NEXT: i32.shr_u $push83=, $pop82, $pop91
1755 ; NO-SIMD128-NEXT: i32.store8 1($0), $pop83
1756 ; NO-SIMD128-NEXT: i32.add $push84=, $1, $17
1757 ; NO-SIMD128-NEXT: i32.const $push90=, 1
1758 ; NO-SIMD128-NEXT: i32.add $push85=, $pop84, $pop90
1759 ; NO-SIMD128-NEXT: i32.const $push89=, 254
1760 ; NO-SIMD128-NEXT: i32.and $push86=, $pop85, $pop89
1761 ; NO-SIMD128-NEXT: i32.const $push88=, 1
1762 ; NO-SIMD128-NEXT: i32.shr_u $push87=, $pop86, $pop88
1763 ; NO-SIMD128-NEXT: i32.store8 0($0), $pop87
1764 ; NO-SIMD128-NEXT: return
1766 ; NO-SIMD128-FAST-LABEL: avgr_u_v16i8:
1767 ; NO-SIMD128-FAST: .functype avgr_u_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
1768 ; NO-SIMD128-FAST-NEXT: # %bb.0:
1769 ; NO-SIMD128-FAST-NEXT: i32.add $push0=, $1, $17
1770 ; NO-SIMD128-FAST-NEXT: i32.const $push1=, 1
1771 ; NO-SIMD128-FAST-NEXT: i32.add $push2=, $pop0, $pop1
1772 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 254
1773 ; NO-SIMD128-FAST-NEXT: i32.and $push4=, $pop2, $pop3
1774 ; NO-SIMD128-FAST-NEXT: i32.const $push133=, 1
1775 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push5=, $pop4, $pop133
1776 ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop5
1777 ; NO-SIMD128-FAST-NEXT: i32.add $push6=, $2, $18
1778 ; NO-SIMD128-FAST-NEXT: i32.const $push132=, 1
1779 ; NO-SIMD128-FAST-NEXT: i32.add $push7=, $pop6, $pop132
1780 ; NO-SIMD128-FAST-NEXT: i32.const $push131=, 254
1781 ; NO-SIMD128-FAST-NEXT: i32.and $push8=, $pop7, $pop131
1782 ; NO-SIMD128-FAST-NEXT: i32.const $push130=, 1
1783 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push9=, $pop8, $pop130
1784 ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop9
1785 ; NO-SIMD128-FAST-NEXT: i32.add $push10=, $3, $19
1786 ; NO-SIMD128-FAST-NEXT: i32.const $push129=, 1
1787 ; NO-SIMD128-FAST-NEXT: i32.add $push11=, $pop10, $pop129
1788 ; NO-SIMD128-FAST-NEXT: i32.const $push128=, 254
1789 ; NO-SIMD128-FAST-NEXT: i32.and $push12=, $pop11, $pop128
1790 ; NO-SIMD128-FAST-NEXT: i32.const $push127=, 1
1791 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push13=, $pop12, $pop127
1792 ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop13
1793 ; NO-SIMD128-FAST-NEXT: i32.const $push14=, 3
1794 ; NO-SIMD128-FAST-NEXT: i32.add $push15=, $0, $pop14
1795 ; NO-SIMD128-FAST-NEXT: i32.add $push16=, $4, $20
1796 ; NO-SIMD128-FAST-NEXT: i32.const $push126=, 1
1797 ; NO-SIMD128-FAST-NEXT: i32.add $push17=, $pop16, $pop126
1798 ; NO-SIMD128-FAST-NEXT: i32.const $push125=, 254
1799 ; NO-SIMD128-FAST-NEXT: i32.and $push18=, $pop17, $pop125
1800 ; NO-SIMD128-FAST-NEXT: i32.const $push124=, 1
1801 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push19=, $pop18, $pop124
1802 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop15), $pop19
1803 ; NO-SIMD128-FAST-NEXT: i32.add $push20=, $5, $21
1804 ; NO-SIMD128-FAST-NEXT: i32.const $push123=, 1
1805 ; NO-SIMD128-FAST-NEXT: i32.add $push21=, $pop20, $pop123
1806 ; NO-SIMD128-FAST-NEXT: i32.const $push122=, 254
1807 ; NO-SIMD128-FAST-NEXT: i32.and $push22=, $pop21, $pop122
1808 ; NO-SIMD128-FAST-NEXT: i32.const $push121=, 1
1809 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push23=, $pop22, $pop121
1810 ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop23
1811 ; NO-SIMD128-FAST-NEXT: i32.const $push24=, 5
1812 ; NO-SIMD128-FAST-NEXT: i32.add $push25=, $0, $pop24
1813 ; NO-SIMD128-FAST-NEXT: i32.add $push26=, $6, $22
1814 ; NO-SIMD128-FAST-NEXT: i32.const $push120=, 1
1815 ; NO-SIMD128-FAST-NEXT: i32.add $push27=, $pop26, $pop120
1816 ; NO-SIMD128-FAST-NEXT: i32.const $push119=, 254
1817 ; NO-SIMD128-FAST-NEXT: i32.and $push28=, $pop27, $pop119
1818 ; NO-SIMD128-FAST-NEXT: i32.const $push118=, 1
1819 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push29=, $pop28, $pop118
1820 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop25), $pop29
1821 ; NO-SIMD128-FAST-NEXT: i32.const $push30=, 6
1822 ; NO-SIMD128-FAST-NEXT: i32.add $push31=, $0, $pop30
1823 ; NO-SIMD128-FAST-NEXT: i32.add $push32=, $7, $23
1824 ; NO-SIMD128-FAST-NEXT: i32.const $push117=, 1
1825 ; NO-SIMD128-FAST-NEXT: i32.add $push33=, $pop32, $pop117
1826 ; NO-SIMD128-FAST-NEXT: i32.const $push116=, 254
1827 ; NO-SIMD128-FAST-NEXT: i32.and $push34=, $pop33, $pop116
1828 ; NO-SIMD128-FAST-NEXT: i32.const $push115=, 1
1829 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push35=, $pop34, $pop115
1830 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop31), $pop35
1831 ; NO-SIMD128-FAST-NEXT: i32.const $push36=, 7
1832 ; NO-SIMD128-FAST-NEXT: i32.add $push37=, $0, $pop36
1833 ; NO-SIMD128-FAST-NEXT: i32.add $push38=, $8, $24
1834 ; NO-SIMD128-FAST-NEXT: i32.const $push114=, 1
1835 ; NO-SIMD128-FAST-NEXT: i32.add $push39=, $pop38, $pop114
1836 ; NO-SIMD128-FAST-NEXT: i32.const $push113=, 254
1837 ; NO-SIMD128-FAST-NEXT: i32.and $push40=, $pop39, $pop113
1838 ; NO-SIMD128-FAST-NEXT: i32.const $push112=, 1
1839 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push41=, $pop40, $pop112
1840 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop37), $pop41
1841 ; NO-SIMD128-FAST-NEXT: i32.add $push42=, $9, $25
1842 ; NO-SIMD128-FAST-NEXT: i32.const $push111=, 1
1843 ; NO-SIMD128-FAST-NEXT: i32.add $push43=, $pop42, $pop111
1844 ; NO-SIMD128-FAST-NEXT: i32.const $push110=, 254
1845 ; NO-SIMD128-FAST-NEXT: i32.and $push44=, $pop43, $pop110
1846 ; NO-SIMD128-FAST-NEXT: i32.const $push109=, 1
1847 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push45=, $pop44, $pop109
1848 ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop45
1849 ; NO-SIMD128-FAST-NEXT: i32.const $push46=, 9
1850 ; NO-SIMD128-FAST-NEXT: i32.add $push47=, $0, $pop46
1851 ; NO-SIMD128-FAST-NEXT: i32.add $push48=, $10, $26
1852 ; NO-SIMD128-FAST-NEXT: i32.const $push108=, 1
1853 ; NO-SIMD128-FAST-NEXT: i32.add $push49=, $pop48, $pop108
1854 ; NO-SIMD128-FAST-NEXT: i32.const $push107=, 254
1855 ; NO-SIMD128-FAST-NEXT: i32.and $push50=, $pop49, $pop107
1856 ; NO-SIMD128-FAST-NEXT: i32.const $push106=, 1
1857 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push51=, $pop50, $pop106
1858 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop47), $pop51
1859 ; NO-SIMD128-FAST-NEXT: i32.const $push52=, 10
1860 ; NO-SIMD128-FAST-NEXT: i32.add $push53=, $0, $pop52
1861 ; NO-SIMD128-FAST-NEXT: i32.add $push54=, $11, $27
1862 ; NO-SIMD128-FAST-NEXT: i32.const $push105=, 1
1863 ; NO-SIMD128-FAST-NEXT: i32.add $push55=, $pop54, $pop105
1864 ; NO-SIMD128-FAST-NEXT: i32.const $push104=, 254
1865 ; NO-SIMD128-FAST-NEXT: i32.and $push56=, $pop55, $pop104
1866 ; NO-SIMD128-FAST-NEXT: i32.const $push103=, 1
1867 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push57=, $pop56, $pop103
1868 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop53), $pop57
1869 ; NO-SIMD128-FAST-NEXT: i32.const $push58=, 11
1870 ; NO-SIMD128-FAST-NEXT: i32.add $push59=, $0, $pop58
1871 ; NO-SIMD128-FAST-NEXT: i32.add $push60=, $12, $28
1872 ; NO-SIMD128-FAST-NEXT: i32.const $push102=, 1
1873 ; NO-SIMD128-FAST-NEXT: i32.add $push61=, $pop60, $pop102
1874 ; NO-SIMD128-FAST-NEXT: i32.const $push101=, 254
1875 ; NO-SIMD128-FAST-NEXT: i32.and $push62=, $pop61, $pop101
1876 ; NO-SIMD128-FAST-NEXT: i32.const $push100=, 1
1877 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push63=, $pop62, $pop100
1878 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop59), $pop63
1879 ; NO-SIMD128-FAST-NEXT: i32.const $push64=, 12
1880 ; NO-SIMD128-FAST-NEXT: i32.add $push65=, $0, $pop64
1881 ; NO-SIMD128-FAST-NEXT: i32.add $push66=, $13, $29
1882 ; NO-SIMD128-FAST-NEXT: i32.const $push99=, 1
1883 ; NO-SIMD128-FAST-NEXT: i32.add $push67=, $pop66, $pop99
1884 ; NO-SIMD128-FAST-NEXT: i32.const $push98=, 254
1885 ; NO-SIMD128-FAST-NEXT: i32.and $push68=, $pop67, $pop98
1886 ; NO-SIMD128-FAST-NEXT: i32.const $push97=, 1
1887 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push69=, $pop68, $pop97
1888 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop65), $pop69
1889 ; NO-SIMD128-FAST-NEXT: i32.const $push70=, 13
1890 ; NO-SIMD128-FAST-NEXT: i32.add $push71=, $0, $pop70
1891 ; NO-SIMD128-FAST-NEXT: i32.add $push72=, $14, $30
1892 ; NO-SIMD128-FAST-NEXT: i32.const $push96=, 1
1893 ; NO-SIMD128-FAST-NEXT: i32.add $push73=, $pop72, $pop96
1894 ; NO-SIMD128-FAST-NEXT: i32.const $push95=, 254
1895 ; NO-SIMD128-FAST-NEXT: i32.and $push74=, $pop73, $pop95
1896 ; NO-SIMD128-FAST-NEXT: i32.const $push94=, 1
1897 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push75=, $pop74, $pop94
1898 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop71), $pop75
1899 ; NO-SIMD128-FAST-NEXT: i32.const $push76=, 14
1900 ; NO-SIMD128-FAST-NEXT: i32.add $push77=, $0, $pop76
1901 ; NO-SIMD128-FAST-NEXT: i32.add $push78=, $15, $31
1902 ; NO-SIMD128-FAST-NEXT: i32.const $push93=, 1
1903 ; NO-SIMD128-FAST-NEXT: i32.add $push79=, $pop78, $pop93
1904 ; NO-SIMD128-FAST-NEXT: i32.const $push92=, 254
1905 ; NO-SIMD128-FAST-NEXT: i32.and $push80=, $pop79, $pop92
1906 ; NO-SIMD128-FAST-NEXT: i32.const $push91=, 1
1907 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push81=, $pop80, $pop91
1908 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop77), $pop81
1909 ; NO-SIMD128-FAST-NEXT: i32.const $push82=, 15
1910 ; NO-SIMD128-FAST-NEXT: i32.add $push83=, $0, $pop82
1911 ; NO-SIMD128-FAST-NEXT: i32.add $push84=, $16, $32
1912 ; NO-SIMD128-FAST-NEXT: i32.const $push90=, 1
1913 ; NO-SIMD128-FAST-NEXT: i32.add $push85=, $pop84, $pop90
1914 ; NO-SIMD128-FAST-NEXT: i32.const $push89=, 254
1915 ; NO-SIMD128-FAST-NEXT: i32.and $push86=, $pop85, $pop89
1916 ; NO-SIMD128-FAST-NEXT: i32.const $push88=, 1
1917 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push87=, $pop86, $pop88
1918 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop83), $pop87
1919 ; NO-SIMD128-FAST-NEXT: return
1920 %a = add nuw <16 x i8> %x, %y
1921 %b = add nuw <16 x i8> %a, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1,
1922 i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1923 %c = udiv <16 x i8> %b, <i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2,
1924 i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2>
1928 define <16 x i8> @avgr_u_v16i8_wrap(<16 x i8> %x, <16 x i8> %y) {
1929 ; SIMD128-LABEL: avgr_u_v16i8_wrap:
1930 ; SIMD128: .functype avgr_u_v16i8_wrap (v128, v128) -> (v128)
1931 ; SIMD128-NEXT: # %bb.0:
1932 ; SIMD128-NEXT: i8x16.add $push0=, $0, $1
1933 ; SIMD128-NEXT: v128.const $push1=, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
1934 ; SIMD128-NEXT: i8x16.add $push2=, $pop0, $pop1
1935 ; SIMD128-NEXT: i32.const $push3=, 1
1936 ; SIMD128-NEXT: i8x16.shr_u $push4=, $pop2, $pop3
1937 ; SIMD128-NEXT: return $pop4
1939 ; SIMD128-FAST-LABEL: avgr_u_v16i8_wrap:
1940 ; SIMD128-FAST: .functype avgr_u_v16i8_wrap (v128, v128) -> (v128)
1941 ; SIMD128-FAST-NEXT: # %bb.0:
1942 ; SIMD128-FAST-NEXT: i8x16.add $push2=, $0, $1
1943 ; SIMD128-FAST-NEXT: v128.const $push3=, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
1944 ; SIMD128-FAST-NEXT: i8x16.add $push1=, $pop2, $pop3
1945 ; SIMD128-FAST-NEXT: i32.const $push4=, 1
1946 ; SIMD128-FAST-NEXT: i8x16.shr_u $push0=, $pop1, $pop4
1947 ; SIMD128-FAST-NEXT: return $pop0
1949 ; NO-SIMD128-LABEL: avgr_u_v16i8_wrap:
1950 ; NO-SIMD128: .functype avgr_u_v16i8_wrap (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
1951 ; NO-SIMD128-NEXT: # %bb.0:
1952 ; NO-SIMD128-NEXT: i32.const $push0=, 15
1953 ; NO-SIMD128-NEXT: i32.add $push1=, $0, $pop0
1954 ; NO-SIMD128-NEXT: i32.add $push2=, $16, $32
1955 ; NO-SIMD128-NEXT: i32.const $push3=, 1
1956 ; NO-SIMD128-NEXT: i32.add $push4=, $pop2, $pop3
1957 ; NO-SIMD128-NEXT: i32.const $push5=, 254
1958 ; NO-SIMD128-NEXT: i32.and $push6=, $pop4, $pop5
1959 ; NO-SIMD128-NEXT: i32.const $push133=, 1
1960 ; NO-SIMD128-NEXT: i32.shr_u $push7=, $pop6, $pop133
1961 ; NO-SIMD128-NEXT: i32.store8 0($pop1), $pop7
1962 ; NO-SIMD128-NEXT: i32.const $push8=, 14
1963 ; NO-SIMD128-NEXT: i32.add $push9=, $0, $pop8
1964 ; NO-SIMD128-NEXT: i32.add $push10=, $15, $31
1965 ; NO-SIMD128-NEXT: i32.const $push132=, 1
1966 ; NO-SIMD128-NEXT: i32.add $push11=, $pop10, $pop132
1967 ; NO-SIMD128-NEXT: i32.const $push131=, 254
1968 ; NO-SIMD128-NEXT: i32.and $push12=, $pop11, $pop131
1969 ; NO-SIMD128-NEXT: i32.const $push130=, 1
1970 ; NO-SIMD128-NEXT: i32.shr_u $push13=, $pop12, $pop130
1971 ; NO-SIMD128-NEXT: i32.store8 0($pop9), $pop13
1972 ; NO-SIMD128-NEXT: i32.const $push14=, 13
1973 ; NO-SIMD128-NEXT: i32.add $push15=, $0, $pop14
1974 ; NO-SIMD128-NEXT: i32.add $push16=, $14, $30
1975 ; NO-SIMD128-NEXT: i32.const $push129=, 1
1976 ; NO-SIMD128-NEXT: i32.add $push17=, $pop16, $pop129
1977 ; NO-SIMD128-NEXT: i32.const $push128=, 254
1978 ; NO-SIMD128-NEXT: i32.and $push18=, $pop17, $pop128
1979 ; NO-SIMD128-NEXT: i32.const $push127=, 1
1980 ; NO-SIMD128-NEXT: i32.shr_u $push19=, $pop18, $pop127
1981 ; NO-SIMD128-NEXT: i32.store8 0($pop15), $pop19
1982 ; NO-SIMD128-NEXT: i32.const $push20=, 12
1983 ; NO-SIMD128-NEXT: i32.add $push21=, $0, $pop20
1984 ; NO-SIMD128-NEXT: i32.add $push22=, $13, $29
1985 ; NO-SIMD128-NEXT: i32.const $push126=, 1
1986 ; NO-SIMD128-NEXT: i32.add $push23=, $pop22, $pop126
1987 ; NO-SIMD128-NEXT: i32.const $push125=, 254
1988 ; NO-SIMD128-NEXT: i32.and $push24=, $pop23, $pop125
1989 ; NO-SIMD128-NEXT: i32.const $push124=, 1
1990 ; NO-SIMD128-NEXT: i32.shr_u $push25=, $pop24, $pop124
1991 ; NO-SIMD128-NEXT: i32.store8 0($pop21), $pop25
1992 ; NO-SIMD128-NEXT: i32.const $push26=, 11
1993 ; NO-SIMD128-NEXT: i32.add $push27=, $0, $pop26
1994 ; NO-SIMD128-NEXT: i32.add $push28=, $12, $28
1995 ; NO-SIMD128-NEXT: i32.const $push123=, 1
1996 ; NO-SIMD128-NEXT: i32.add $push29=, $pop28, $pop123
1997 ; NO-SIMD128-NEXT: i32.const $push122=, 254
1998 ; NO-SIMD128-NEXT: i32.and $push30=, $pop29, $pop122
1999 ; NO-SIMD128-NEXT: i32.const $push121=, 1
2000 ; NO-SIMD128-NEXT: i32.shr_u $push31=, $pop30, $pop121
2001 ; NO-SIMD128-NEXT: i32.store8 0($pop27), $pop31
2002 ; NO-SIMD128-NEXT: i32.const $push32=, 10
2003 ; NO-SIMD128-NEXT: i32.add $push33=, $0, $pop32
2004 ; NO-SIMD128-NEXT: i32.add $push34=, $11, $27
2005 ; NO-SIMD128-NEXT: i32.const $push120=, 1
2006 ; NO-SIMD128-NEXT: i32.add $push35=, $pop34, $pop120
2007 ; NO-SIMD128-NEXT: i32.const $push119=, 254
2008 ; NO-SIMD128-NEXT: i32.and $push36=, $pop35, $pop119
2009 ; NO-SIMD128-NEXT: i32.const $push118=, 1
2010 ; NO-SIMD128-NEXT: i32.shr_u $push37=, $pop36, $pop118
2011 ; NO-SIMD128-NEXT: i32.store8 0($pop33), $pop37
2012 ; NO-SIMD128-NEXT: i32.const $push38=, 9
2013 ; NO-SIMD128-NEXT: i32.add $push39=, $0, $pop38
2014 ; NO-SIMD128-NEXT: i32.add $push40=, $10, $26
2015 ; NO-SIMD128-NEXT: i32.const $push117=, 1
2016 ; NO-SIMD128-NEXT: i32.add $push41=, $pop40, $pop117
2017 ; NO-SIMD128-NEXT: i32.const $push116=, 254
2018 ; NO-SIMD128-NEXT: i32.and $push42=, $pop41, $pop116
2019 ; NO-SIMD128-NEXT: i32.const $push115=, 1
2020 ; NO-SIMD128-NEXT: i32.shr_u $push43=, $pop42, $pop115
2021 ; NO-SIMD128-NEXT: i32.store8 0($pop39), $pop43
2022 ; NO-SIMD128-NEXT: i32.add $push44=, $9, $25
2023 ; NO-SIMD128-NEXT: i32.const $push114=, 1
2024 ; NO-SIMD128-NEXT: i32.add $push45=, $pop44, $pop114
2025 ; NO-SIMD128-NEXT: i32.const $push113=, 254
2026 ; NO-SIMD128-NEXT: i32.and $push46=, $pop45, $pop113
2027 ; NO-SIMD128-NEXT: i32.const $push112=, 1
2028 ; NO-SIMD128-NEXT: i32.shr_u $push47=, $pop46, $pop112
2029 ; NO-SIMD128-NEXT: i32.store8 8($0), $pop47
2030 ; NO-SIMD128-NEXT: i32.const $push48=, 7
2031 ; NO-SIMD128-NEXT: i32.add $push49=, $0, $pop48
2032 ; NO-SIMD128-NEXT: i32.add $push50=, $8, $24
2033 ; NO-SIMD128-NEXT: i32.const $push111=, 1
2034 ; NO-SIMD128-NEXT: i32.add $push51=, $pop50, $pop111
2035 ; NO-SIMD128-NEXT: i32.const $push110=, 254
2036 ; NO-SIMD128-NEXT: i32.and $push52=, $pop51, $pop110
2037 ; NO-SIMD128-NEXT: i32.const $push109=, 1
2038 ; NO-SIMD128-NEXT: i32.shr_u $push53=, $pop52, $pop109
2039 ; NO-SIMD128-NEXT: i32.store8 0($pop49), $pop53
2040 ; NO-SIMD128-NEXT: i32.const $push54=, 6
2041 ; NO-SIMD128-NEXT: i32.add $push55=, $0, $pop54
2042 ; NO-SIMD128-NEXT: i32.add $push56=, $7, $23
2043 ; NO-SIMD128-NEXT: i32.const $push108=, 1
2044 ; NO-SIMD128-NEXT: i32.add $push57=, $pop56, $pop108
2045 ; NO-SIMD128-NEXT: i32.const $push107=, 254
2046 ; NO-SIMD128-NEXT: i32.and $push58=, $pop57, $pop107
2047 ; NO-SIMD128-NEXT: i32.const $push106=, 1
2048 ; NO-SIMD128-NEXT: i32.shr_u $push59=, $pop58, $pop106
2049 ; NO-SIMD128-NEXT: i32.store8 0($pop55), $pop59
2050 ; NO-SIMD128-NEXT: i32.const $push60=, 5
2051 ; NO-SIMD128-NEXT: i32.add $push61=, $0, $pop60
2052 ; NO-SIMD128-NEXT: i32.add $push62=, $6, $22
2053 ; NO-SIMD128-NEXT: i32.const $push105=, 1
2054 ; NO-SIMD128-NEXT: i32.add $push63=, $pop62, $pop105
2055 ; NO-SIMD128-NEXT: i32.const $push104=, 254
2056 ; NO-SIMD128-NEXT: i32.and $push64=, $pop63, $pop104
2057 ; NO-SIMD128-NEXT: i32.const $push103=, 1
2058 ; NO-SIMD128-NEXT: i32.shr_u $push65=, $pop64, $pop103
2059 ; NO-SIMD128-NEXT: i32.store8 0($pop61), $pop65
2060 ; NO-SIMD128-NEXT: i32.add $push66=, $5, $21
2061 ; NO-SIMD128-NEXT: i32.const $push102=, 1
2062 ; NO-SIMD128-NEXT: i32.add $push67=, $pop66, $pop102
2063 ; NO-SIMD128-NEXT: i32.const $push101=, 254
2064 ; NO-SIMD128-NEXT: i32.and $push68=, $pop67, $pop101
2065 ; NO-SIMD128-NEXT: i32.const $push100=, 1
2066 ; NO-SIMD128-NEXT: i32.shr_u $push69=, $pop68, $pop100
2067 ; NO-SIMD128-NEXT: i32.store8 4($0), $pop69
2068 ; NO-SIMD128-NEXT: i32.const $push70=, 3
2069 ; NO-SIMD128-NEXT: i32.add $push71=, $0, $pop70
2070 ; NO-SIMD128-NEXT: i32.add $push72=, $4, $20
2071 ; NO-SIMD128-NEXT: i32.const $push99=, 1
2072 ; NO-SIMD128-NEXT: i32.add $push73=, $pop72, $pop99
2073 ; NO-SIMD128-NEXT: i32.const $push98=, 254
2074 ; NO-SIMD128-NEXT: i32.and $push74=, $pop73, $pop98
2075 ; NO-SIMD128-NEXT: i32.const $push97=, 1
2076 ; NO-SIMD128-NEXT: i32.shr_u $push75=, $pop74, $pop97
2077 ; NO-SIMD128-NEXT: i32.store8 0($pop71), $pop75
2078 ; NO-SIMD128-NEXT: i32.add $push76=, $3, $19
2079 ; NO-SIMD128-NEXT: i32.const $push96=, 1
2080 ; NO-SIMD128-NEXT: i32.add $push77=, $pop76, $pop96
2081 ; NO-SIMD128-NEXT: i32.const $push95=, 254
2082 ; NO-SIMD128-NEXT: i32.and $push78=, $pop77, $pop95
2083 ; NO-SIMD128-NEXT: i32.const $push94=, 1
2084 ; NO-SIMD128-NEXT: i32.shr_u $push79=, $pop78, $pop94
2085 ; NO-SIMD128-NEXT: i32.store8 2($0), $pop79
2086 ; NO-SIMD128-NEXT: i32.add $push80=, $2, $18
2087 ; NO-SIMD128-NEXT: i32.const $push93=, 1
2088 ; NO-SIMD128-NEXT: i32.add $push81=, $pop80, $pop93
2089 ; NO-SIMD128-NEXT: i32.const $push92=, 254
2090 ; NO-SIMD128-NEXT: i32.and $push82=, $pop81, $pop92
2091 ; NO-SIMD128-NEXT: i32.const $push91=, 1
2092 ; NO-SIMD128-NEXT: i32.shr_u $push83=, $pop82, $pop91
2093 ; NO-SIMD128-NEXT: i32.store8 1($0), $pop83
2094 ; NO-SIMD128-NEXT: i32.add $push84=, $1, $17
2095 ; NO-SIMD128-NEXT: i32.const $push90=, 1
2096 ; NO-SIMD128-NEXT: i32.add $push85=, $pop84, $pop90
2097 ; NO-SIMD128-NEXT: i32.const $push89=, 254
2098 ; NO-SIMD128-NEXT: i32.and $push86=, $pop85, $pop89
2099 ; NO-SIMD128-NEXT: i32.const $push88=, 1
2100 ; NO-SIMD128-NEXT: i32.shr_u $push87=, $pop86, $pop88
2101 ; NO-SIMD128-NEXT: i32.store8 0($0), $pop87
2102 ; NO-SIMD128-NEXT: return
2104 ; NO-SIMD128-FAST-LABEL: avgr_u_v16i8_wrap:
2105 ; NO-SIMD128-FAST: .functype avgr_u_v16i8_wrap (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
2106 ; NO-SIMD128-FAST-NEXT: # %bb.0:
2107 ; NO-SIMD128-FAST-NEXT: i32.add $push0=, $1, $17
2108 ; NO-SIMD128-FAST-NEXT: i32.const $push1=, 1
2109 ; NO-SIMD128-FAST-NEXT: i32.add $push2=, $pop0, $pop1
2110 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 254
2111 ; NO-SIMD128-FAST-NEXT: i32.and $push4=, $pop2, $pop3
2112 ; NO-SIMD128-FAST-NEXT: i32.const $push133=, 1
2113 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push5=, $pop4, $pop133
2114 ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop5
2115 ; NO-SIMD128-FAST-NEXT: i32.add $push6=, $2, $18
2116 ; NO-SIMD128-FAST-NEXT: i32.const $push132=, 1
2117 ; NO-SIMD128-FAST-NEXT: i32.add $push7=, $pop6, $pop132
2118 ; NO-SIMD128-FAST-NEXT: i32.const $push131=, 254
2119 ; NO-SIMD128-FAST-NEXT: i32.and $push8=, $pop7, $pop131
2120 ; NO-SIMD128-FAST-NEXT: i32.const $push130=, 1
2121 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push9=, $pop8, $pop130
2122 ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop9
2123 ; NO-SIMD128-FAST-NEXT: i32.add $push10=, $3, $19
2124 ; NO-SIMD128-FAST-NEXT: i32.const $push129=, 1
2125 ; NO-SIMD128-FAST-NEXT: i32.add $push11=, $pop10, $pop129
2126 ; NO-SIMD128-FAST-NEXT: i32.const $push128=, 254
2127 ; NO-SIMD128-FAST-NEXT: i32.and $push12=, $pop11, $pop128
2128 ; NO-SIMD128-FAST-NEXT: i32.const $push127=, 1
2129 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push13=, $pop12, $pop127
2130 ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop13
2131 ; NO-SIMD128-FAST-NEXT: i32.const $push14=, 3
2132 ; NO-SIMD128-FAST-NEXT: i32.add $push15=, $0, $pop14
2133 ; NO-SIMD128-FAST-NEXT: i32.add $push16=, $4, $20
2134 ; NO-SIMD128-FAST-NEXT: i32.const $push126=, 1
2135 ; NO-SIMD128-FAST-NEXT: i32.add $push17=, $pop16, $pop126
2136 ; NO-SIMD128-FAST-NEXT: i32.const $push125=, 254
2137 ; NO-SIMD128-FAST-NEXT: i32.and $push18=, $pop17, $pop125
2138 ; NO-SIMD128-FAST-NEXT: i32.const $push124=, 1
2139 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push19=, $pop18, $pop124
2140 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop15), $pop19
2141 ; NO-SIMD128-FAST-NEXT: i32.add $push20=, $5, $21
2142 ; NO-SIMD128-FAST-NEXT: i32.const $push123=, 1
2143 ; NO-SIMD128-FAST-NEXT: i32.add $push21=, $pop20, $pop123
2144 ; NO-SIMD128-FAST-NEXT: i32.const $push122=, 254
2145 ; NO-SIMD128-FAST-NEXT: i32.and $push22=, $pop21, $pop122
2146 ; NO-SIMD128-FAST-NEXT: i32.const $push121=, 1
2147 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push23=, $pop22, $pop121
2148 ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop23
2149 ; NO-SIMD128-FAST-NEXT: i32.const $push24=, 5
2150 ; NO-SIMD128-FAST-NEXT: i32.add $push25=, $0, $pop24
2151 ; NO-SIMD128-FAST-NEXT: i32.add $push26=, $6, $22
2152 ; NO-SIMD128-FAST-NEXT: i32.const $push120=, 1
2153 ; NO-SIMD128-FAST-NEXT: i32.add $push27=, $pop26, $pop120
2154 ; NO-SIMD128-FAST-NEXT: i32.const $push119=, 254
2155 ; NO-SIMD128-FAST-NEXT: i32.and $push28=, $pop27, $pop119
2156 ; NO-SIMD128-FAST-NEXT: i32.const $push118=, 1
2157 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push29=, $pop28, $pop118
2158 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop25), $pop29
2159 ; NO-SIMD128-FAST-NEXT: i32.const $push30=, 6
2160 ; NO-SIMD128-FAST-NEXT: i32.add $push31=, $0, $pop30
2161 ; NO-SIMD128-FAST-NEXT: i32.add $push32=, $7, $23
2162 ; NO-SIMD128-FAST-NEXT: i32.const $push117=, 1
2163 ; NO-SIMD128-FAST-NEXT: i32.add $push33=, $pop32, $pop117
2164 ; NO-SIMD128-FAST-NEXT: i32.const $push116=, 254
2165 ; NO-SIMD128-FAST-NEXT: i32.and $push34=, $pop33, $pop116
2166 ; NO-SIMD128-FAST-NEXT: i32.const $push115=, 1
2167 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push35=, $pop34, $pop115
2168 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop31), $pop35
2169 ; NO-SIMD128-FAST-NEXT: i32.const $push36=, 7
2170 ; NO-SIMD128-FAST-NEXT: i32.add $push37=, $0, $pop36
2171 ; NO-SIMD128-FAST-NEXT: i32.add $push38=, $8, $24
2172 ; NO-SIMD128-FAST-NEXT: i32.const $push114=, 1
2173 ; NO-SIMD128-FAST-NEXT: i32.add $push39=, $pop38, $pop114
2174 ; NO-SIMD128-FAST-NEXT: i32.const $push113=, 254
2175 ; NO-SIMD128-FAST-NEXT: i32.and $push40=, $pop39, $pop113
2176 ; NO-SIMD128-FAST-NEXT: i32.const $push112=, 1
2177 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push41=, $pop40, $pop112
2178 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop37), $pop41
2179 ; NO-SIMD128-FAST-NEXT: i32.add $push42=, $9, $25
2180 ; NO-SIMD128-FAST-NEXT: i32.const $push111=, 1
2181 ; NO-SIMD128-FAST-NEXT: i32.add $push43=, $pop42, $pop111
2182 ; NO-SIMD128-FAST-NEXT: i32.const $push110=, 254
2183 ; NO-SIMD128-FAST-NEXT: i32.and $push44=, $pop43, $pop110
2184 ; NO-SIMD128-FAST-NEXT: i32.const $push109=, 1
2185 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push45=, $pop44, $pop109
2186 ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop45
2187 ; NO-SIMD128-FAST-NEXT: i32.const $push46=, 9
2188 ; NO-SIMD128-FAST-NEXT: i32.add $push47=, $0, $pop46
2189 ; NO-SIMD128-FAST-NEXT: i32.add $push48=, $10, $26
2190 ; NO-SIMD128-FAST-NEXT: i32.const $push108=, 1
2191 ; NO-SIMD128-FAST-NEXT: i32.add $push49=, $pop48, $pop108
2192 ; NO-SIMD128-FAST-NEXT: i32.const $push107=, 254
2193 ; NO-SIMD128-FAST-NEXT: i32.and $push50=, $pop49, $pop107
2194 ; NO-SIMD128-FAST-NEXT: i32.const $push106=, 1
2195 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push51=, $pop50, $pop106
2196 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop47), $pop51
2197 ; NO-SIMD128-FAST-NEXT: i32.const $push52=, 10
2198 ; NO-SIMD128-FAST-NEXT: i32.add $push53=, $0, $pop52
2199 ; NO-SIMD128-FAST-NEXT: i32.add $push54=, $11, $27
2200 ; NO-SIMD128-FAST-NEXT: i32.const $push105=, 1
2201 ; NO-SIMD128-FAST-NEXT: i32.add $push55=, $pop54, $pop105
2202 ; NO-SIMD128-FAST-NEXT: i32.const $push104=, 254
2203 ; NO-SIMD128-FAST-NEXT: i32.and $push56=, $pop55, $pop104
2204 ; NO-SIMD128-FAST-NEXT: i32.const $push103=, 1
2205 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push57=, $pop56, $pop103
2206 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop53), $pop57
2207 ; NO-SIMD128-FAST-NEXT: i32.const $push58=, 11
2208 ; NO-SIMD128-FAST-NEXT: i32.add $push59=, $0, $pop58
2209 ; NO-SIMD128-FAST-NEXT: i32.add $push60=, $12, $28
2210 ; NO-SIMD128-FAST-NEXT: i32.const $push102=, 1
2211 ; NO-SIMD128-FAST-NEXT: i32.add $push61=, $pop60, $pop102
2212 ; NO-SIMD128-FAST-NEXT: i32.const $push101=, 254
2213 ; NO-SIMD128-FAST-NEXT: i32.and $push62=, $pop61, $pop101
2214 ; NO-SIMD128-FAST-NEXT: i32.const $push100=, 1
2215 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push63=, $pop62, $pop100
2216 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop59), $pop63
2217 ; NO-SIMD128-FAST-NEXT: i32.const $push64=, 12
2218 ; NO-SIMD128-FAST-NEXT: i32.add $push65=, $0, $pop64
2219 ; NO-SIMD128-FAST-NEXT: i32.add $push66=, $13, $29
2220 ; NO-SIMD128-FAST-NEXT: i32.const $push99=, 1
2221 ; NO-SIMD128-FAST-NEXT: i32.add $push67=, $pop66, $pop99
2222 ; NO-SIMD128-FAST-NEXT: i32.const $push98=, 254
2223 ; NO-SIMD128-FAST-NEXT: i32.and $push68=, $pop67, $pop98
2224 ; NO-SIMD128-FAST-NEXT: i32.const $push97=, 1
2225 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push69=, $pop68, $pop97
2226 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop65), $pop69
2227 ; NO-SIMD128-FAST-NEXT: i32.const $push70=, 13
2228 ; NO-SIMD128-FAST-NEXT: i32.add $push71=, $0, $pop70
2229 ; NO-SIMD128-FAST-NEXT: i32.add $push72=, $14, $30
2230 ; NO-SIMD128-FAST-NEXT: i32.const $push96=, 1
2231 ; NO-SIMD128-FAST-NEXT: i32.add $push73=, $pop72, $pop96
2232 ; NO-SIMD128-FAST-NEXT: i32.const $push95=, 254
2233 ; NO-SIMD128-FAST-NEXT: i32.and $push74=, $pop73, $pop95
2234 ; NO-SIMD128-FAST-NEXT: i32.const $push94=, 1
2235 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push75=, $pop74, $pop94
2236 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop71), $pop75
2237 ; NO-SIMD128-FAST-NEXT: i32.const $push76=, 14
2238 ; NO-SIMD128-FAST-NEXT: i32.add $push77=, $0, $pop76
2239 ; NO-SIMD128-FAST-NEXT: i32.add $push78=, $15, $31
2240 ; NO-SIMD128-FAST-NEXT: i32.const $push93=, 1
2241 ; NO-SIMD128-FAST-NEXT: i32.add $push79=, $pop78, $pop93
2242 ; NO-SIMD128-FAST-NEXT: i32.const $push92=, 254
2243 ; NO-SIMD128-FAST-NEXT: i32.and $push80=, $pop79, $pop92
2244 ; NO-SIMD128-FAST-NEXT: i32.const $push91=, 1
2245 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push81=, $pop80, $pop91
2246 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop77), $pop81
2247 ; NO-SIMD128-FAST-NEXT: i32.const $push82=, 15
2248 ; NO-SIMD128-FAST-NEXT: i32.add $push83=, $0, $pop82
2249 ; NO-SIMD128-FAST-NEXT: i32.add $push84=, $16, $32
2250 ; NO-SIMD128-FAST-NEXT: i32.const $push90=, 1
2251 ; NO-SIMD128-FAST-NEXT: i32.add $push85=, $pop84, $pop90
2252 ; NO-SIMD128-FAST-NEXT: i32.const $push89=, 254
2253 ; NO-SIMD128-FAST-NEXT: i32.and $push86=, $pop85, $pop89
2254 ; NO-SIMD128-FAST-NEXT: i32.const $push88=, 1
2255 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push87=, $pop86, $pop88
2256 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop83), $pop87
2257 ; NO-SIMD128-FAST-NEXT: return
2258 %a = add <16 x i8> %x, %y
2259 %b = add <16 x i8> %a, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1,
2260 i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
2261 %c = udiv <16 x i8> %b, <i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2,
2262 i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2>
2266 define <16 x i8> @abs_v16i8(<16 x i8> %x) {
2267 ; SIMD128-LABEL: abs_v16i8:
2268 ; SIMD128: .functype abs_v16i8 (v128) -> (v128)
2269 ; SIMD128-NEXT: # %bb.0:
2270 ; SIMD128-NEXT: i8x16.abs $push0=, $0
2271 ; SIMD128-NEXT: return $pop0
2273 ; SIMD128-FAST-LABEL: abs_v16i8:
2274 ; SIMD128-FAST: .functype abs_v16i8 (v128) -> (v128)
2275 ; SIMD128-FAST-NEXT: # %bb.0:
2276 ; SIMD128-FAST-NEXT: i8x16.abs $push0=, $0
2277 ; SIMD128-FAST-NEXT: return $pop0
2279 ; NO-SIMD128-LABEL: abs_v16i8:
2280 ; NO-SIMD128: .functype abs_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
2281 ; NO-SIMD128-NEXT: # %bb.0:
2282 ; NO-SIMD128-NEXT: i32.const $push4=, 15
2283 ; NO-SIMD128-NEXT: i32.add $push5=, $0, $pop4
2284 ; NO-SIMD128-NEXT: i32.extend8_s $push0=, $16
2285 ; NO-SIMD128-NEXT: i32.const $push1=, 7
2286 ; NO-SIMD128-NEXT: i32.shr_s $push117=, $pop0, $pop1
2287 ; NO-SIMD128-NEXT: local.tee $push116=, $17=, $pop117
2288 ; NO-SIMD128-NEXT: i32.xor $push2=, $16, $pop116
2289 ; NO-SIMD128-NEXT: i32.sub $push3=, $pop2, $17
2290 ; NO-SIMD128-NEXT: i32.store8 0($pop5), $pop3
2291 ; NO-SIMD128-NEXT: i32.const $push9=, 14
2292 ; NO-SIMD128-NEXT: i32.add $push10=, $0, $pop9
2293 ; NO-SIMD128-NEXT: i32.extend8_s $push6=, $15
2294 ; NO-SIMD128-NEXT: i32.const $push115=, 7
2295 ; NO-SIMD128-NEXT: i32.shr_s $push114=, $pop6, $pop115
2296 ; NO-SIMD128-NEXT: local.tee $push113=, $16=, $pop114
2297 ; NO-SIMD128-NEXT: i32.xor $push7=, $15, $pop113
2298 ; NO-SIMD128-NEXT: i32.sub $push8=, $pop7, $16
2299 ; NO-SIMD128-NEXT: i32.store8 0($pop10), $pop8
2300 ; NO-SIMD128-NEXT: i32.const $push14=, 13
2301 ; NO-SIMD128-NEXT: i32.add $push15=, $0, $pop14
2302 ; NO-SIMD128-NEXT: i32.extend8_s $push11=, $14
2303 ; NO-SIMD128-NEXT: i32.const $push112=, 7
2304 ; NO-SIMD128-NEXT: i32.shr_s $push111=, $pop11, $pop112
2305 ; NO-SIMD128-NEXT: local.tee $push110=, $16=, $pop111
2306 ; NO-SIMD128-NEXT: i32.xor $push12=, $14, $pop110
2307 ; NO-SIMD128-NEXT: i32.sub $push13=, $pop12, $16
2308 ; NO-SIMD128-NEXT: i32.store8 0($pop15), $pop13
2309 ; NO-SIMD128-NEXT: i32.const $push19=, 12
2310 ; NO-SIMD128-NEXT: i32.add $push20=, $0, $pop19
2311 ; NO-SIMD128-NEXT: i32.extend8_s $push16=, $13
2312 ; NO-SIMD128-NEXT: i32.const $push109=, 7
2313 ; NO-SIMD128-NEXT: i32.shr_s $push108=, $pop16, $pop109
2314 ; NO-SIMD128-NEXT: local.tee $push107=, $16=, $pop108
2315 ; NO-SIMD128-NEXT: i32.xor $push17=, $13, $pop107
2316 ; NO-SIMD128-NEXT: i32.sub $push18=, $pop17, $16
2317 ; NO-SIMD128-NEXT: i32.store8 0($pop20), $pop18
2318 ; NO-SIMD128-NEXT: i32.const $push24=, 11
2319 ; NO-SIMD128-NEXT: i32.add $push25=, $0, $pop24
2320 ; NO-SIMD128-NEXT: i32.extend8_s $push21=, $12
2321 ; NO-SIMD128-NEXT: i32.const $push106=, 7
2322 ; NO-SIMD128-NEXT: i32.shr_s $push105=, $pop21, $pop106
2323 ; NO-SIMD128-NEXT: local.tee $push104=, $16=, $pop105
2324 ; NO-SIMD128-NEXT: i32.xor $push22=, $12, $pop104
2325 ; NO-SIMD128-NEXT: i32.sub $push23=, $pop22, $16
2326 ; NO-SIMD128-NEXT: i32.store8 0($pop25), $pop23
2327 ; NO-SIMD128-NEXT: i32.const $push29=, 10
2328 ; NO-SIMD128-NEXT: i32.add $push30=, $0, $pop29
2329 ; NO-SIMD128-NEXT: i32.extend8_s $push26=, $11
2330 ; NO-SIMD128-NEXT: i32.const $push103=, 7
2331 ; NO-SIMD128-NEXT: i32.shr_s $push102=, $pop26, $pop103
2332 ; NO-SIMD128-NEXT: local.tee $push101=, $16=, $pop102
2333 ; NO-SIMD128-NEXT: i32.xor $push27=, $11, $pop101
2334 ; NO-SIMD128-NEXT: i32.sub $push28=, $pop27, $16
2335 ; NO-SIMD128-NEXT: i32.store8 0($pop30), $pop28
2336 ; NO-SIMD128-NEXT: i32.const $push34=, 9
2337 ; NO-SIMD128-NEXT: i32.add $push35=, $0, $pop34
2338 ; NO-SIMD128-NEXT: i32.extend8_s $push31=, $10
2339 ; NO-SIMD128-NEXT: i32.const $push100=, 7
2340 ; NO-SIMD128-NEXT: i32.shr_s $push99=, $pop31, $pop100
2341 ; NO-SIMD128-NEXT: local.tee $push98=, $16=, $pop99
2342 ; NO-SIMD128-NEXT: i32.xor $push32=, $10, $pop98
2343 ; NO-SIMD128-NEXT: i32.sub $push33=, $pop32, $16
2344 ; NO-SIMD128-NEXT: i32.store8 0($pop35), $pop33
2345 ; NO-SIMD128-NEXT: i32.extend8_s $push36=, $9
2346 ; NO-SIMD128-NEXT: i32.const $push97=, 7
2347 ; NO-SIMD128-NEXT: i32.shr_s $push96=, $pop36, $pop97
2348 ; NO-SIMD128-NEXT: local.tee $push95=, $16=, $pop96
2349 ; NO-SIMD128-NEXT: i32.xor $push37=, $9, $pop95
2350 ; NO-SIMD128-NEXT: i32.sub $push38=, $pop37, $16
2351 ; NO-SIMD128-NEXT: i32.store8 8($0), $pop38
2352 ; NO-SIMD128-NEXT: i32.const $push94=, 7
2353 ; NO-SIMD128-NEXT: i32.add $push42=, $0, $pop94
2354 ; NO-SIMD128-NEXT: i32.extend8_s $push39=, $8
2355 ; NO-SIMD128-NEXT: i32.const $push93=, 7
2356 ; NO-SIMD128-NEXT: i32.shr_s $push92=, $pop39, $pop93
2357 ; NO-SIMD128-NEXT: local.tee $push91=, $16=, $pop92
2358 ; NO-SIMD128-NEXT: i32.xor $push40=, $8, $pop91
2359 ; NO-SIMD128-NEXT: i32.sub $push41=, $pop40, $16
2360 ; NO-SIMD128-NEXT: i32.store8 0($pop42), $pop41
2361 ; NO-SIMD128-NEXT: i32.const $push46=, 6
2362 ; NO-SIMD128-NEXT: i32.add $push47=, $0, $pop46
2363 ; NO-SIMD128-NEXT: i32.extend8_s $push43=, $7
2364 ; NO-SIMD128-NEXT: i32.const $push90=, 7
2365 ; NO-SIMD128-NEXT: i32.shr_s $push89=, $pop43, $pop90
2366 ; NO-SIMD128-NEXT: local.tee $push88=, $16=, $pop89
2367 ; NO-SIMD128-NEXT: i32.xor $push44=, $7, $pop88
2368 ; NO-SIMD128-NEXT: i32.sub $push45=, $pop44, $16
2369 ; NO-SIMD128-NEXT: i32.store8 0($pop47), $pop45
2370 ; NO-SIMD128-NEXT: i32.const $push51=, 5
2371 ; NO-SIMD128-NEXT: i32.add $push52=, $0, $pop51
2372 ; NO-SIMD128-NEXT: i32.extend8_s $push48=, $6
2373 ; NO-SIMD128-NEXT: i32.const $push87=, 7
2374 ; NO-SIMD128-NEXT: i32.shr_s $push86=, $pop48, $pop87
2375 ; NO-SIMD128-NEXT: local.tee $push85=, $16=, $pop86
2376 ; NO-SIMD128-NEXT: i32.xor $push49=, $6, $pop85
2377 ; NO-SIMD128-NEXT: i32.sub $push50=, $pop49, $16
2378 ; NO-SIMD128-NEXT: i32.store8 0($pop52), $pop50
2379 ; NO-SIMD128-NEXT: i32.extend8_s $push53=, $5
2380 ; NO-SIMD128-NEXT: i32.const $push84=, 7
2381 ; NO-SIMD128-NEXT: i32.shr_s $push83=, $pop53, $pop84
2382 ; NO-SIMD128-NEXT: local.tee $push82=, $16=, $pop83
2383 ; NO-SIMD128-NEXT: i32.xor $push54=, $5, $pop82
2384 ; NO-SIMD128-NEXT: i32.sub $push55=, $pop54, $16
2385 ; NO-SIMD128-NEXT: i32.store8 4($0), $pop55
2386 ; NO-SIMD128-NEXT: i32.const $push59=, 3
2387 ; NO-SIMD128-NEXT: i32.add $push60=, $0, $pop59
2388 ; NO-SIMD128-NEXT: i32.extend8_s $push56=, $4
2389 ; NO-SIMD128-NEXT: i32.const $push81=, 7
2390 ; NO-SIMD128-NEXT: i32.shr_s $push80=, $pop56, $pop81
2391 ; NO-SIMD128-NEXT: local.tee $push79=, $16=, $pop80
2392 ; NO-SIMD128-NEXT: i32.xor $push57=, $4, $pop79
2393 ; NO-SIMD128-NEXT: i32.sub $push58=, $pop57, $16
2394 ; NO-SIMD128-NEXT: i32.store8 0($pop60), $pop58
2395 ; NO-SIMD128-NEXT: i32.extend8_s $push61=, $3
2396 ; NO-SIMD128-NEXT: i32.const $push78=, 7
2397 ; NO-SIMD128-NEXT: i32.shr_s $push77=, $pop61, $pop78
2398 ; NO-SIMD128-NEXT: local.tee $push76=, $16=, $pop77
2399 ; NO-SIMD128-NEXT: i32.xor $push62=, $3, $pop76
2400 ; NO-SIMD128-NEXT: i32.sub $push63=, $pop62, $16
2401 ; NO-SIMD128-NEXT: i32.store8 2($0), $pop63
2402 ; NO-SIMD128-NEXT: i32.extend8_s $push64=, $2
2403 ; NO-SIMD128-NEXT: i32.const $push75=, 7
2404 ; NO-SIMD128-NEXT: i32.shr_s $push74=, $pop64, $pop75
2405 ; NO-SIMD128-NEXT: local.tee $push73=, $16=, $pop74
2406 ; NO-SIMD128-NEXT: i32.xor $push65=, $2, $pop73
2407 ; NO-SIMD128-NEXT: i32.sub $push66=, $pop65, $16
2408 ; NO-SIMD128-NEXT: i32.store8 1($0), $pop66
2409 ; NO-SIMD128-NEXT: i32.extend8_s $push67=, $1
2410 ; NO-SIMD128-NEXT: i32.const $push72=, 7
2411 ; NO-SIMD128-NEXT: i32.shr_s $push71=, $pop67, $pop72
2412 ; NO-SIMD128-NEXT: local.tee $push70=, $16=, $pop71
2413 ; NO-SIMD128-NEXT: i32.xor $push68=, $1, $pop70
2414 ; NO-SIMD128-NEXT: i32.sub $push69=, $pop68, $16
2415 ; NO-SIMD128-NEXT: i32.store8 0($0), $pop69
2416 ; NO-SIMD128-NEXT: return
2418 ; NO-SIMD128-FAST-LABEL: abs_v16i8:
2419 ; NO-SIMD128-FAST: .functype abs_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
2420 ; NO-SIMD128-FAST-NEXT: # %bb.0:
2421 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push0=, $1
2422 ; NO-SIMD128-FAST-NEXT: i32.const $push1=, 7
2423 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push117=, $pop0, $pop1
2424 ; NO-SIMD128-FAST-NEXT: local.tee $push116=, $17=, $pop117
2425 ; NO-SIMD128-FAST-NEXT: i32.xor $push2=, $1, $pop116
2426 ; NO-SIMD128-FAST-NEXT: i32.sub $push3=, $pop2, $17
2427 ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop3
2428 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push4=, $2
2429 ; NO-SIMD128-FAST-NEXT: i32.const $push115=, 7
2430 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push114=, $pop4, $pop115
2431 ; NO-SIMD128-FAST-NEXT: local.tee $push113=, $1=, $pop114
2432 ; NO-SIMD128-FAST-NEXT: i32.xor $push5=, $2, $pop113
2433 ; NO-SIMD128-FAST-NEXT: i32.sub $push6=, $pop5, $1
2434 ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop6
2435 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push7=, $3
2436 ; NO-SIMD128-FAST-NEXT: i32.const $push112=, 7
2437 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push111=, $pop7, $pop112
2438 ; NO-SIMD128-FAST-NEXT: local.tee $push110=, $2=, $pop111
2439 ; NO-SIMD128-FAST-NEXT: i32.xor $push8=, $3, $pop110
2440 ; NO-SIMD128-FAST-NEXT: i32.sub $push9=, $pop8, $2
2441 ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop9
2442 ; NO-SIMD128-FAST-NEXT: i32.const $push13=, 3
2443 ; NO-SIMD128-FAST-NEXT: i32.add $push14=, $0, $pop13
2444 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push10=, $4
2445 ; NO-SIMD128-FAST-NEXT: i32.const $push109=, 7
2446 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push108=, $pop10, $pop109
2447 ; NO-SIMD128-FAST-NEXT: local.tee $push107=, $3=, $pop108
2448 ; NO-SIMD128-FAST-NEXT: i32.xor $push11=, $4, $pop107
2449 ; NO-SIMD128-FAST-NEXT: i32.sub $push12=, $pop11, $3
2450 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop14), $pop12
2451 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push15=, $5
2452 ; NO-SIMD128-FAST-NEXT: i32.const $push106=, 7
2453 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push105=, $pop15, $pop106
2454 ; NO-SIMD128-FAST-NEXT: local.tee $push104=, $4=, $pop105
2455 ; NO-SIMD128-FAST-NEXT: i32.xor $push16=, $5, $pop104
2456 ; NO-SIMD128-FAST-NEXT: i32.sub $push17=, $pop16, $4
2457 ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop17
2458 ; NO-SIMD128-FAST-NEXT: i32.const $push21=, 5
2459 ; NO-SIMD128-FAST-NEXT: i32.add $push22=, $0, $pop21
2460 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push18=, $6
2461 ; NO-SIMD128-FAST-NEXT: i32.const $push103=, 7
2462 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push102=, $pop18, $pop103
2463 ; NO-SIMD128-FAST-NEXT: local.tee $push101=, $5=, $pop102
2464 ; NO-SIMD128-FAST-NEXT: i32.xor $push19=, $6, $pop101
2465 ; NO-SIMD128-FAST-NEXT: i32.sub $push20=, $pop19, $5
2466 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop22), $pop20
2467 ; NO-SIMD128-FAST-NEXT: i32.const $push26=, 6
2468 ; NO-SIMD128-FAST-NEXT: i32.add $push27=, $0, $pop26
2469 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push23=, $7
2470 ; NO-SIMD128-FAST-NEXT: i32.const $push100=, 7
2471 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push99=, $pop23, $pop100
2472 ; NO-SIMD128-FAST-NEXT: local.tee $push98=, $6=, $pop99
2473 ; NO-SIMD128-FAST-NEXT: i32.xor $push24=, $7, $pop98
2474 ; NO-SIMD128-FAST-NEXT: i32.sub $push25=, $pop24, $6
2475 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop27), $pop25
2476 ; NO-SIMD128-FAST-NEXT: i32.const $push97=, 7
2477 ; NO-SIMD128-FAST-NEXT: i32.add $push31=, $0, $pop97
2478 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push28=, $8
2479 ; NO-SIMD128-FAST-NEXT: i32.const $push96=, 7
2480 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push95=, $pop28, $pop96
2481 ; NO-SIMD128-FAST-NEXT: local.tee $push94=, $7=, $pop95
2482 ; NO-SIMD128-FAST-NEXT: i32.xor $push29=, $8, $pop94
2483 ; NO-SIMD128-FAST-NEXT: i32.sub $push30=, $pop29, $7
2484 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop31), $pop30
2485 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push32=, $9
2486 ; NO-SIMD128-FAST-NEXT: i32.const $push93=, 7
2487 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push92=, $pop32, $pop93
2488 ; NO-SIMD128-FAST-NEXT: local.tee $push91=, $8=, $pop92
2489 ; NO-SIMD128-FAST-NEXT: i32.xor $push33=, $9, $pop91
2490 ; NO-SIMD128-FAST-NEXT: i32.sub $push34=, $pop33, $8
2491 ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop34
2492 ; NO-SIMD128-FAST-NEXT: i32.const $push38=, 9
2493 ; NO-SIMD128-FAST-NEXT: i32.add $push39=, $0, $pop38
2494 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push35=, $10
2495 ; NO-SIMD128-FAST-NEXT: i32.const $push90=, 7
2496 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push89=, $pop35, $pop90
2497 ; NO-SIMD128-FAST-NEXT: local.tee $push88=, $9=, $pop89
2498 ; NO-SIMD128-FAST-NEXT: i32.xor $push36=, $10, $pop88
2499 ; NO-SIMD128-FAST-NEXT: i32.sub $push37=, $pop36, $9
2500 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop39), $pop37
2501 ; NO-SIMD128-FAST-NEXT: i32.const $push43=, 10
2502 ; NO-SIMD128-FAST-NEXT: i32.add $push44=, $0, $pop43
2503 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push40=, $11
2504 ; NO-SIMD128-FAST-NEXT: i32.const $push87=, 7
2505 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push86=, $pop40, $pop87
2506 ; NO-SIMD128-FAST-NEXT: local.tee $push85=, $10=, $pop86
2507 ; NO-SIMD128-FAST-NEXT: i32.xor $push41=, $11, $pop85
2508 ; NO-SIMD128-FAST-NEXT: i32.sub $push42=, $pop41, $10
2509 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop44), $pop42
2510 ; NO-SIMD128-FAST-NEXT: i32.const $push48=, 11
2511 ; NO-SIMD128-FAST-NEXT: i32.add $push49=, $0, $pop48
2512 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push45=, $12
2513 ; NO-SIMD128-FAST-NEXT: i32.const $push84=, 7
2514 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push83=, $pop45, $pop84
2515 ; NO-SIMD128-FAST-NEXT: local.tee $push82=, $11=, $pop83
2516 ; NO-SIMD128-FAST-NEXT: i32.xor $push46=, $12, $pop82
2517 ; NO-SIMD128-FAST-NEXT: i32.sub $push47=, $pop46, $11
2518 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop49), $pop47
2519 ; NO-SIMD128-FAST-NEXT: i32.const $push53=, 12
2520 ; NO-SIMD128-FAST-NEXT: i32.add $push54=, $0, $pop53
2521 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push50=, $13
2522 ; NO-SIMD128-FAST-NEXT: i32.const $push81=, 7
2523 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push80=, $pop50, $pop81
2524 ; NO-SIMD128-FAST-NEXT: local.tee $push79=, $12=, $pop80
2525 ; NO-SIMD128-FAST-NEXT: i32.xor $push51=, $13, $pop79
2526 ; NO-SIMD128-FAST-NEXT: i32.sub $push52=, $pop51, $12
2527 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop54), $pop52
2528 ; NO-SIMD128-FAST-NEXT: i32.const $push58=, 13
2529 ; NO-SIMD128-FAST-NEXT: i32.add $push59=, $0, $pop58
2530 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push55=, $14
2531 ; NO-SIMD128-FAST-NEXT: i32.const $push78=, 7
2532 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push77=, $pop55, $pop78
2533 ; NO-SIMD128-FAST-NEXT: local.tee $push76=, $13=, $pop77
2534 ; NO-SIMD128-FAST-NEXT: i32.xor $push56=, $14, $pop76
2535 ; NO-SIMD128-FAST-NEXT: i32.sub $push57=, $pop56, $13
2536 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop59), $pop57
2537 ; NO-SIMD128-FAST-NEXT: i32.const $push63=, 14
2538 ; NO-SIMD128-FAST-NEXT: i32.add $push64=, $0, $pop63
2539 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push60=, $15
2540 ; NO-SIMD128-FAST-NEXT: i32.const $push75=, 7
2541 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push74=, $pop60, $pop75
2542 ; NO-SIMD128-FAST-NEXT: local.tee $push73=, $14=, $pop74
2543 ; NO-SIMD128-FAST-NEXT: i32.xor $push61=, $15, $pop73
2544 ; NO-SIMD128-FAST-NEXT: i32.sub $push62=, $pop61, $14
2545 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop64), $pop62
2546 ; NO-SIMD128-FAST-NEXT: i32.const $push68=, 15
2547 ; NO-SIMD128-FAST-NEXT: i32.add $push69=, $0, $pop68
2548 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push65=, $16
2549 ; NO-SIMD128-FAST-NEXT: i32.const $push72=, 7
2550 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push71=, $pop65, $pop72
2551 ; NO-SIMD128-FAST-NEXT: local.tee $push70=, $0=, $pop71
2552 ; NO-SIMD128-FAST-NEXT: i32.xor $push66=, $16, $pop70
2553 ; NO-SIMD128-FAST-NEXT: i32.sub $push67=, $pop66, $0
2554 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop69), $pop67
2555 ; NO-SIMD128-FAST-NEXT: return
2556 %a = sub <16 x i8> zeroinitializer, %x
2557 %b = icmp slt <16 x i8> %x, zeroinitializer
2558 %c = select <16 x i1> %b, <16 x i8> %a, <16 x i8> %x
2562 define <16 x i8> @neg_v16i8(<16 x i8> %x) {
2563 ; SIMD128-LABEL: neg_v16i8:
2564 ; SIMD128: .functype neg_v16i8 (v128) -> (v128)
2565 ; SIMD128-NEXT: # %bb.0:
2566 ; SIMD128-NEXT: i8x16.neg $push0=, $0
2567 ; SIMD128-NEXT: return $pop0
2569 ; SIMD128-FAST-LABEL: neg_v16i8:
2570 ; SIMD128-FAST: .functype neg_v16i8 (v128) -> (v128)
2571 ; SIMD128-FAST-NEXT: # %bb.0:
2572 ; SIMD128-FAST-NEXT: i8x16.neg $push0=, $0
2573 ; SIMD128-FAST-NEXT: return $pop0
2575 ; NO-SIMD128-LABEL: neg_v16i8:
2576 ; NO-SIMD128: .functype neg_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
2577 ; NO-SIMD128-NEXT: # %bb.0:
2578 ; NO-SIMD128-NEXT: i32.const $push0=, 0
2579 ; NO-SIMD128-NEXT: i32.sub $push1=, $pop0, $9
2580 ; NO-SIMD128-NEXT: i32.store8 8($0), $pop1
2581 ; NO-SIMD128-NEXT: i32.const $push53=, 0
2582 ; NO-SIMD128-NEXT: i32.sub $push2=, $pop53, $5
2583 ; NO-SIMD128-NEXT: i32.store8 4($0), $pop2
2584 ; NO-SIMD128-NEXT: i32.const $push52=, 0
2585 ; NO-SIMD128-NEXT: i32.sub $push3=, $pop52, $3
2586 ; NO-SIMD128-NEXT: i32.store8 2($0), $pop3
2587 ; NO-SIMD128-NEXT: i32.const $push51=, 0
2588 ; NO-SIMD128-NEXT: i32.sub $push4=, $pop51, $2
2589 ; NO-SIMD128-NEXT: i32.store8 1($0), $pop4
2590 ; NO-SIMD128-NEXT: i32.const $push50=, 0
2591 ; NO-SIMD128-NEXT: i32.sub $push5=, $pop50, $1
2592 ; NO-SIMD128-NEXT: i32.store8 0($0), $pop5
2593 ; NO-SIMD128-NEXT: i32.const $push7=, 15
2594 ; NO-SIMD128-NEXT: i32.add $push8=, $0, $pop7
2595 ; NO-SIMD128-NEXT: i32.const $push49=, 0
2596 ; NO-SIMD128-NEXT: i32.sub $push6=, $pop49, $16
2597 ; NO-SIMD128-NEXT: i32.store8 0($pop8), $pop6
2598 ; NO-SIMD128-NEXT: i32.const $push10=, 14
2599 ; NO-SIMD128-NEXT: i32.add $push11=, $0, $pop10
2600 ; NO-SIMD128-NEXT: i32.const $push48=, 0
2601 ; NO-SIMD128-NEXT: i32.sub $push9=, $pop48, $15
2602 ; NO-SIMD128-NEXT: i32.store8 0($pop11), $pop9
2603 ; NO-SIMD128-NEXT: i32.const $push13=, 13
2604 ; NO-SIMD128-NEXT: i32.add $push14=, $0, $pop13
2605 ; NO-SIMD128-NEXT: i32.const $push47=, 0
2606 ; NO-SIMD128-NEXT: i32.sub $push12=, $pop47, $14
2607 ; NO-SIMD128-NEXT: i32.store8 0($pop14), $pop12
2608 ; NO-SIMD128-NEXT: i32.const $push16=, 12
2609 ; NO-SIMD128-NEXT: i32.add $push17=, $0, $pop16
2610 ; NO-SIMD128-NEXT: i32.const $push46=, 0
2611 ; NO-SIMD128-NEXT: i32.sub $push15=, $pop46, $13
2612 ; NO-SIMD128-NEXT: i32.store8 0($pop17), $pop15
2613 ; NO-SIMD128-NEXT: i32.const $push19=, 11
2614 ; NO-SIMD128-NEXT: i32.add $push20=, $0, $pop19
2615 ; NO-SIMD128-NEXT: i32.const $push45=, 0
2616 ; NO-SIMD128-NEXT: i32.sub $push18=, $pop45, $12
2617 ; NO-SIMD128-NEXT: i32.store8 0($pop20), $pop18
2618 ; NO-SIMD128-NEXT: i32.const $push22=, 10
2619 ; NO-SIMD128-NEXT: i32.add $push23=, $0, $pop22
2620 ; NO-SIMD128-NEXT: i32.const $push44=, 0
2621 ; NO-SIMD128-NEXT: i32.sub $push21=, $pop44, $11
2622 ; NO-SIMD128-NEXT: i32.store8 0($pop23), $pop21
2623 ; NO-SIMD128-NEXT: i32.const $push25=, 9
2624 ; NO-SIMD128-NEXT: i32.add $push26=, $0, $pop25
2625 ; NO-SIMD128-NEXT: i32.const $push43=, 0
2626 ; NO-SIMD128-NEXT: i32.sub $push24=, $pop43, $10
2627 ; NO-SIMD128-NEXT: i32.store8 0($pop26), $pop24
2628 ; NO-SIMD128-NEXT: i32.const $push28=, 7
2629 ; NO-SIMD128-NEXT: i32.add $push29=, $0, $pop28
2630 ; NO-SIMD128-NEXT: i32.const $push42=, 0
2631 ; NO-SIMD128-NEXT: i32.sub $push27=, $pop42, $8
2632 ; NO-SIMD128-NEXT: i32.store8 0($pop29), $pop27
2633 ; NO-SIMD128-NEXT: i32.const $push31=, 6
2634 ; NO-SIMD128-NEXT: i32.add $push32=, $0, $pop31
2635 ; NO-SIMD128-NEXT: i32.const $push41=, 0
2636 ; NO-SIMD128-NEXT: i32.sub $push30=, $pop41, $7
2637 ; NO-SIMD128-NEXT: i32.store8 0($pop32), $pop30
2638 ; NO-SIMD128-NEXT: i32.const $push34=, 5
2639 ; NO-SIMD128-NEXT: i32.add $push35=, $0, $pop34
2640 ; NO-SIMD128-NEXT: i32.const $push40=, 0
2641 ; NO-SIMD128-NEXT: i32.sub $push33=, $pop40, $6
2642 ; NO-SIMD128-NEXT: i32.store8 0($pop35), $pop33
2643 ; NO-SIMD128-NEXT: i32.const $push37=, 3
2644 ; NO-SIMD128-NEXT: i32.add $push38=, $0, $pop37
2645 ; NO-SIMD128-NEXT: i32.const $push39=, 0
2646 ; NO-SIMD128-NEXT: i32.sub $push36=, $pop39, $4
2647 ; NO-SIMD128-NEXT: i32.store8 0($pop38), $pop36
2648 ; NO-SIMD128-NEXT: return
2650 ; NO-SIMD128-FAST-LABEL: neg_v16i8:
2651 ; NO-SIMD128-FAST: .functype neg_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
2652 ; NO-SIMD128-FAST-NEXT: # %bb.0:
2653 ; NO-SIMD128-FAST-NEXT: i32.const $push0=, 0
2654 ; NO-SIMD128-FAST-NEXT: i32.sub $push1=, $pop0, $1
2655 ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop1
2656 ; NO-SIMD128-FAST-NEXT: i32.const $push53=, 0
2657 ; NO-SIMD128-FAST-NEXT: i32.sub $push2=, $pop53, $2
2658 ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop2
2659 ; NO-SIMD128-FAST-NEXT: i32.const $push52=, 0
2660 ; NO-SIMD128-FAST-NEXT: i32.sub $push3=, $pop52, $3
2661 ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop3
2662 ; NO-SIMD128-FAST-NEXT: i32.const $push4=, 3
2663 ; NO-SIMD128-FAST-NEXT: i32.add $push5=, $0, $pop4
2664 ; NO-SIMD128-FAST-NEXT: i32.const $push51=, 0
2665 ; NO-SIMD128-FAST-NEXT: i32.sub $push6=, $pop51, $4
2666 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop5), $pop6
2667 ; NO-SIMD128-FAST-NEXT: i32.const $push50=, 0
2668 ; NO-SIMD128-FAST-NEXT: i32.sub $push7=, $pop50, $5
2669 ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop7
2670 ; NO-SIMD128-FAST-NEXT: i32.const $push8=, 5
2671 ; NO-SIMD128-FAST-NEXT: i32.add $push9=, $0, $pop8
2672 ; NO-SIMD128-FAST-NEXT: i32.const $push49=, 0
2673 ; NO-SIMD128-FAST-NEXT: i32.sub $push10=, $pop49, $6
2674 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop9), $pop10
2675 ; NO-SIMD128-FAST-NEXT: i32.const $push11=, 6
2676 ; NO-SIMD128-FAST-NEXT: i32.add $push12=, $0, $pop11
2677 ; NO-SIMD128-FAST-NEXT: i32.const $push48=, 0
2678 ; NO-SIMD128-FAST-NEXT: i32.sub $push13=, $pop48, $7
2679 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop12), $pop13
2680 ; NO-SIMD128-FAST-NEXT: i32.const $push14=, 7
2681 ; NO-SIMD128-FAST-NEXT: i32.add $push15=, $0, $pop14
2682 ; NO-SIMD128-FAST-NEXT: i32.const $push47=, 0
2683 ; NO-SIMD128-FAST-NEXT: i32.sub $push16=, $pop47, $8
2684 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop15), $pop16
2685 ; NO-SIMD128-FAST-NEXT: i32.const $push46=, 0
2686 ; NO-SIMD128-FAST-NEXT: i32.sub $push17=, $pop46, $9
2687 ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop17
2688 ; NO-SIMD128-FAST-NEXT: i32.const $push18=, 9
2689 ; NO-SIMD128-FAST-NEXT: i32.add $push19=, $0, $pop18
2690 ; NO-SIMD128-FAST-NEXT: i32.const $push45=, 0
2691 ; NO-SIMD128-FAST-NEXT: i32.sub $push20=, $pop45, $10
2692 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop19), $pop20
2693 ; NO-SIMD128-FAST-NEXT: i32.const $push21=, 10
2694 ; NO-SIMD128-FAST-NEXT: i32.add $push22=, $0, $pop21
2695 ; NO-SIMD128-FAST-NEXT: i32.const $push44=, 0
2696 ; NO-SIMD128-FAST-NEXT: i32.sub $push23=, $pop44, $11
2697 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop22), $pop23
2698 ; NO-SIMD128-FAST-NEXT: i32.const $push24=, 11
2699 ; NO-SIMD128-FAST-NEXT: i32.add $push25=, $0, $pop24
2700 ; NO-SIMD128-FAST-NEXT: i32.const $push43=, 0
2701 ; NO-SIMD128-FAST-NEXT: i32.sub $push26=, $pop43, $12
2702 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop25), $pop26
2703 ; NO-SIMD128-FAST-NEXT: i32.const $push27=, 12
2704 ; NO-SIMD128-FAST-NEXT: i32.add $push28=, $0, $pop27
2705 ; NO-SIMD128-FAST-NEXT: i32.const $push42=, 0
2706 ; NO-SIMD128-FAST-NEXT: i32.sub $push29=, $pop42, $13
2707 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop28), $pop29
2708 ; NO-SIMD128-FAST-NEXT: i32.const $push30=, 13
2709 ; NO-SIMD128-FAST-NEXT: i32.add $push31=, $0, $pop30
2710 ; NO-SIMD128-FAST-NEXT: i32.const $push41=, 0
2711 ; NO-SIMD128-FAST-NEXT: i32.sub $push32=, $pop41, $14
2712 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop31), $pop32
2713 ; NO-SIMD128-FAST-NEXT: i32.const $push33=, 14
2714 ; NO-SIMD128-FAST-NEXT: i32.add $push34=, $0, $pop33
2715 ; NO-SIMD128-FAST-NEXT: i32.const $push40=, 0
2716 ; NO-SIMD128-FAST-NEXT: i32.sub $push35=, $pop40, $15
2717 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop34), $pop35
2718 ; NO-SIMD128-FAST-NEXT: i32.const $push36=, 15
2719 ; NO-SIMD128-FAST-NEXT: i32.add $push37=, $0, $pop36
2720 ; NO-SIMD128-FAST-NEXT: i32.const $push39=, 0
2721 ; NO-SIMD128-FAST-NEXT: i32.sub $push38=, $pop39, $16
2722 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop37), $pop38
2723 ; NO-SIMD128-FAST-NEXT: return
2724 %a = sub <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0,
2725 i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>,
2730 define <16 x i8> @shl_v16i8(<16 x i8> %v, i8 %x) {
2731 ; SIMD128-LABEL: shl_v16i8:
2732 ; SIMD128: .functype shl_v16i8 (v128, i32) -> (v128)
2733 ; SIMD128-NEXT: # %bb.0:
2734 ; SIMD128-NEXT: i8x16.shl $push0=, $0, $1
2735 ; SIMD128-NEXT: return $pop0
2737 ; SIMD128-FAST-LABEL: shl_v16i8:
2738 ; SIMD128-FAST: .functype shl_v16i8 (v128, i32) -> (v128)
2739 ; SIMD128-FAST-NEXT: # %bb.0:
2740 ; SIMD128-FAST-NEXT: i8x16.shl $push0=, $0, $1
2741 ; SIMD128-FAST-NEXT: return $pop0
2743 ; NO-SIMD128-LABEL: shl_v16i8:
2744 ; NO-SIMD128: .functype shl_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
2745 ; NO-SIMD128-NEXT: # %bb.0:
2746 ; NO-SIMD128-NEXT: i32.const $push0=, 255
2747 ; NO-SIMD128-NEXT: i32.and $push40=, $17, $pop0
2748 ; NO-SIMD128-NEXT: local.tee $push39=, $17=, $pop40
2749 ; NO-SIMD128-NEXT: i32.shl $push1=, $9, $pop39
2750 ; NO-SIMD128-NEXT: i32.store8 8($0), $pop1
2751 ; NO-SIMD128-NEXT: i32.shl $push2=, $5, $17
2752 ; NO-SIMD128-NEXT: i32.store8 4($0), $pop2
2753 ; NO-SIMD128-NEXT: i32.shl $push3=, $3, $17
2754 ; NO-SIMD128-NEXT: i32.store8 2($0), $pop3
2755 ; NO-SIMD128-NEXT: i32.shl $push4=, $2, $17
2756 ; NO-SIMD128-NEXT: i32.store8 1($0), $pop4
2757 ; NO-SIMD128-NEXT: i32.shl $push5=, $1, $17
2758 ; NO-SIMD128-NEXT: i32.store8 0($0), $pop5
2759 ; NO-SIMD128-NEXT: i32.const $push7=, 15
2760 ; NO-SIMD128-NEXT: i32.add $push8=, $0, $pop7
2761 ; NO-SIMD128-NEXT: i32.shl $push6=, $16, $17
2762 ; NO-SIMD128-NEXT: i32.store8 0($pop8), $pop6
2763 ; NO-SIMD128-NEXT: i32.const $push10=, 14
2764 ; NO-SIMD128-NEXT: i32.add $push11=, $0, $pop10
2765 ; NO-SIMD128-NEXT: i32.shl $push9=, $15, $17
2766 ; NO-SIMD128-NEXT: i32.store8 0($pop11), $pop9
2767 ; NO-SIMD128-NEXT: i32.const $push13=, 13
2768 ; NO-SIMD128-NEXT: i32.add $push14=, $0, $pop13
2769 ; NO-SIMD128-NEXT: i32.shl $push12=, $14, $17
2770 ; NO-SIMD128-NEXT: i32.store8 0($pop14), $pop12
2771 ; NO-SIMD128-NEXT: i32.const $push16=, 12
2772 ; NO-SIMD128-NEXT: i32.add $push17=, $0, $pop16
2773 ; NO-SIMD128-NEXT: i32.shl $push15=, $13, $17
2774 ; NO-SIMD128-NEXT: i32.store8 0($pop17), $pop15
2775 ; NO-SIMD128-NEXT: i32.const $push19=, 11
2776 ; NO-SIMD128-NEXT: i32.add $push20=, $0, $pop19
2777 ; NO-SIMD128-NEXT: i32.shl $push18=, $12, $17
2778 ; NO-SIMD128-NEXT: i32.store8 0($pop20), $pop18
2779 ; NO-SIMD128-NEXT: i32.const $push22=, 10
2780 ; NO-SIMD128-NEXT: i32.add $push23=, $0, $pop22
2781 ; NO-SIMD128-NEXT: i32.shl $push21=, $11, $17
2782 ; NO-SIMD128-NEXT: i32.store8 0($pop23), $pop21
2783 ; NO-SIMD128-NEXT: i32.const $push25=, 9
2784 ; NO-SIMD128-NEXT: i32.add $push26=, $0, $pop25
2785 ; NO-SIMD128-NEXT: i32.shl $push24=, $10, $17
2786 ; NO-SIMD128-NEXT: i32.store8 0($pop26), $pop24
2787 ; NO-SIMD128-NEXT: i32.const $push28=, 7
2788 ; NO-SIMD128-NEXT: i32.add $push29=, $0, $pop28
2789 ; NO-SIMD128-NEXT: i32.shl $push27=, $8, $17
2790 ; NO-SIMD128-NEXT: i32.store8 0($pop29), $pop27
2791 ; NO-SIMD128-NEXT: i32.const $push31=, 6
2792 ; NO-SIMD128-NEXT: i32.add $push32=, $0, $pop31
2793 ; NO-SIMD128-NEXT: i32.shl $push30=, $7, $17
2794 ; NO-SIMD128-NEXT: i32.store8 0($pop32), $pop30
2795 ; NO-SIMD128-NEXT: i32.const $push34=, 5
2796 ; NO-SIMD128-NEXT: i32.add $push35=, $0, $pop34
2797 ; NO-SIMD128-NEXT: i32.shl $push33=, $6, $17
2798 ; NO-SIMD128-NEXT: i32.store8 0($pop35), $pop33
2799 ; NO-SIMD128-NEXT: i32.const $push37=, 3
2800 ; NO-SIMD128-NEXT: i32.add $push38=, $0, $pop37
2801 ; NO-SIMD128-NEXT: i32.shl $push36=, $4, $17
2802 ; NO-SIMD128-NEXT: i32.store8 0($pop38), $pop36
2803 ; NO-SIMD128-NEXT: return
2805 ; NO-SIMD128-FAST-LABEL: shl_v16i8:
2806 ; NO-SIMD128-FAST: .functype shl_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
2807 ; NO-SIMD128-FAST-NEXT: # %bb.0:
2808 ; NO-SIMD128-FAST-NEXT: i32.const $push0=, 255
2809 ; NO-SIMD128-FAST-NEXT: i32.and $push40=, $17, $pop0
2810 ; NO-SIMD128-FAST-NEXT: local.tee $push39=, $17=, $pop40
2811 ; NO-SIMD128-FAST-NEXT: i32.shl $push1=, $2, $pop39
2812 ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop1
2813 ; NO-SIMD128-FAST-NEXT: i32.shl $push2=, $1, $17
2814 ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop2
2815 ; NO-SIMD128-FAST-NEXT: i32.shl $push3=, $3, $17
2816 ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop3
2817 ; NO-SIMD128-FAST-NEXT: i32.const $push4=, 3
2818 ; NO-SIMD128-FAST-NEXT: i32.add $push5=, $0, $pop4
2819 ; NO-SIMD128-FAST-NEXT: i32.shl $push6=, $4, $17
2820 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop5), $pop6
2821 ; NO-SIMD128-FAST-NEXT: i32.shl $push7=, $5, $17
2822 ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop7
2823 ; NO-SIMD128-FAST-NEXT: i32.const $push8=, 5
2824 ; NO-SIMD128-FAST-NEXT: i32.add $push9=, $0, $pop8
2825 ; NO-SIMD128-FAST-NEXT: i32.shl $push10=, $6, $17
2826 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop9), $pop10
2827 ; NO-SIMD128-FAST-NEXT: i32.const $push11=, 6
2828 ; NO-SIMD128-FAST-NEXT: i32.add $push12=, $0, $pop11
2829 ; NO-SIMD128-FAST-NEXT: i32.shl $push13=, $7, $17
2830 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop12), $pop13
2831 ; NO-SIMD128-FAST-NEXT: i32.const $push14=, 7
2832 ; NO-SIMD128-FAST-NEXT: i32.add $push15=, $0, $pop14
2833 ; NO-SIMD128-FAST-NEXT: i32.shl $push16=, $8, $17
2834 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop15), $pop16
2835 ; NO-SIMD128-FAST-NEXT: i32.shl $push17=, $9, $17
2836 ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop17
2837 ; NO-SIMD128-FAST-NEXT: i32.const $push18=, 9
2838 ; NO-SIMD128-FAST-NEXT: i32.add $push19=, $0, $pop18
2839 ; NO-SIMD128-FAST-NEXT: i32.shl $push20=, $10, $17
2840 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop19), $pop20
2841 ; NO-SIMD128-FAST-NEXT: i32.const $push21=, 10
2842 ; NO-SIMD128-FAST-NEXT: i32.add $push22=, $0, $pop21
2843 ; NO-SIMD128-FAST-NEXT: i32.shl $push23=, $11, $17
2844 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop22), $pop23
2845 ; NO-SIMD128-FAST-NEXT: i32.const $push24=, 11
2846 ; NO-SIMD128-FAST-NEXT: i32.add $push25=, $0, $pop24
2847 ; NO-SIMD128-FAST-NEXT: i32.shl $push26=, $12, $17
2848 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop25), $pop26
2849 ; NO-SIMD128-FAST-NEXT: i32.const $push27=, 12
2850 ; NO-SIMD128-FAST-NEXT: i32.add $push28=, $0, $pop27
2851 ; NO-SIMD128-FAST-NEXT: i32.shl $push29=, $13, $17
2852 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop28), $pop29
2853 ; NO-SIMD128-FAST-NEXT: i32.const $push30=, 13
2854 ; NO-SIMD128-FAST-NEXT: i32.add $push31=, $0, $pop30
2855 ; NO-SIMD128-FAST-NEXT: i32.shl $push32=, $14, $17
2856 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop31), $pop32
2857 ; NO-SIMD128-FAST-NEXT: i32.const $push33=, 14
2858 ; NO-SIMD128-FAST-NEXT: i32.add $push34=, $0, $pop33
2859 ; NO-SIMD128-FAST-NEXT: i32.shl $push35=, $15, $17
2860 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop34), $pop35
2861 ; NO-SIMD128-FAST-NEXT: i32.const $push36=, 15
2862 ; NO-SIMD128-FAST-NEXT: i32.add $push37=, $0, $pop36
2863 ; NO-SIMD128-FAST-NEXT: i32.shl $push38=, $16, $17
2864 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop37), $pop38
2865 ; NO-SIMD128-FAST-NEXT: return
2866 %t = insertelement <16 x i8> undef, i8 %x, i32 0
2867 %s = shufflevector <16 x i8> %t, <16 x i8> undef,
2868 <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0,
2869 i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
2870 %a = shl <16 x i8> %v, %s
2874 define <16 x i8> @shl_const_v16i8(<16 x i8> %v) {
2875 ; SIMD128-LABEL: shl_const_v16i8:
2876 ; SIMD128: .functype shl_const_v16i8 (v128) -> (v128)
2877 ; SIMD128-NEXT: # %bb.0:
2878 ; SIMD128-NEXT: i32.const $push0=, 5
2879 ; SIMD128-NEXT: i8x16.shl $push1=, $0, $pop0
2880 ; SIMD128-NEXT: return $pop1
2882 ; SIMD128-FAST-LABEL: shl_const_v16i8:
2883 ; SIMD128-FAST: .functype shl_const_v16i8 (v128) -> (v128)
2884 ; SIMD128-FAST-NEXT: # %bb.0:
2885 ; SIMD128-FAST-NEXT: i32.const $push1=, 5
2886 ; SIMD128-FAST-NEXT: i8x16.shl $push0=, $0, $pop1
2887 ; SIMD128-FAST-NEXT: return $pop0
2889 ; NO-SIMD128-LABEL: shl_const_v16i8:
2890 ; NO-SIMD128: .functype shl_const_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
2891 ; NO-SIMD128-NEXT: # %bb.0:
2892 ; NO-SIMD128-NEXT: i32.const $push0=, 5
2893 ; NO-SIMD128-NEXT: i32.shl $push1=, $9, $pop0
2894 ; NO-SIMD128-NEXT: i32.store8 8($0), $pop1
2895 ; NO-SIMD128-NEXT: i32.const $push53=, 5
2896 ; NO-SIMD128-NEXT: i32.shl $push2=, $5, $pop53
2897 ; NO-SIMD128-NEXT: i32.store8 4($0), $pop2
2898 ; NO-SIMD128-NEXT: i32.const $push52=, 5
2899 ; NO-SIMD128-NEXT: i32.shl $push3=, $3, $pop52
2900 ; NO-SIMD128-NEXT: i32.store8 2($0), $pop3
2901 ; NO-SIMD128-NEXT: i32.const $push51=, 5
2902 ; NO-SIMD128-NEXT: i32.shl $push4=, $2, $pop51
2903 ; NO-SIMD128-NEXT: i32.store8 1($0), $pop4
2904 ; NO-SIMD128-NEXT: i32.const $push50=, 5
2905 ; NO-SIMD128-NEXT: i32.shl $push5=, $1, $pop50
2906 ; NO-SIMD128-NEXT: i32.store8 0($0), $pop5
2907 ; NO-SIMD128-NEXT: i32.const $push7=, 15
2908 ; NO-SIMD128-NEXT: i32.add $push8=, $0, $pop7
2909 ; NO-SIMD128-NEXT: i32.const $push49=, 5
2910 ; NO-SIMD128-NEXT: i32.shl $push6=, $16, $pop49
2911 ; NO-SIMD128-NEXT: i32.store8 0($pop8), $pop6
2912 ; NO-SIMD128-NEXT: i32.const $push10=, 14
2913 ; NO-SIMD128-NEXT: i32.add $push11=, $0, $pop10
2914 ; NO-SIMD128-NEXT: i32.const $push48=, 5
2915 ; NO-SIMD128-NEXT: i32.shl $push9=, $15, $pop48
2916 ; NO-SIMD128-NEXT: i32.store8 0($pop11), $pop9
2917 ; NO-SIMD128-NEXT: i32.const $push13=, 13
2918 ; NO-SIMD128-NEXT: i32.add $push14=, $0, $pop13
2919 ; NO-SIMD128-NEXT: i32.const $push47=, 5
2920 ; NO-SIMD128-NEXT: i32.shl $push12=, $14, $pop47
2921 ; NO-SIMD128-NEXT: i32.store8 0($pop14), $pop12
2922 ; NO-SIMD128-NEXT: i32.const $push16=, 12
2923 ; NO-SIMD128-NEXT: i32.add $push17=, $0, $pop16
2924 ; NO-SIMD128-NEXT: i32.const $push46=, 5
2925 ; NO-SIMD128-NEXT: i32.shl $push15=, $13, $pop46
2926 ; NO-SIMD128-NEXT: i32.store8 0($pop17), $pop15
2927 ; NO-SIMD128-NEXT: i32.const $push19=, 11
2928 ; NO-SIMD128-NEXT: i32.add $push20=, $0, $pop19
2929 ; NO-SIMD128-NEXT: i32.const $push45=, 5
2930 ; NO-SIMD128-NEXT: i32.shl $push18=, $12, $pop45
2931 ; NO-SIMD128-NEXT: i32.store8 0($pop20), $pop18
2932 ; NO-SIMD128-NEXT: i32.const $push22=, 10
2933 ; NO-SIMD128-NEXT: i32.add $push23=, $0, $pop22
2934 ; NO-SIMD128-NEXT: i32.const $push44=, 5
2935 ; NO-SIMD128-NEXT: i32.shl $push21=, $11, $pop44
2936 ; NO-SIMD128-NEXT: i32.store8 0($pop23), $pop21
2937 ; NO-SIMD128-NEXT: i32.const $push25=, 9
2938 ; NO-SIMD128-NEXT: i32.add $push26=, $0, $pop25
2939 ; NO-SIMD128-NEXT: i32.const $push43=, 5
2940 ; NO-SIMD128-NEXT: i32.shl $push24=, $10, $pop43
2941 ; NO-SIMD128-NEXT: i32.store8 0($pop26), $pop24
2942 ; NO-SIMD128-NEXT: i32.const $push28=, 7
2943 ; NO-SIMD128-NEXT: i32.add $push29=, $0, $pop28
2944 ; NO-SIMD128-NEXT: i32.const $push42=, 5
2945 ; NO-SIMD128-NEXT: i32.shl $push27=, $8, $pop42
2946 ; NO-SIMD128-NEXT: i32.store8 0($pop29), $pop27
2947 ; NO-SIMD128-NEXT: i32.const $push31=, 6
2948 ; NO-SIMD128-NEXT: i32.add $push32=, $0, $pop31
2949 ; NO-SIMD128-NEXT: i32.const $push41=, 5
2950 ; NO-SIMD128-NEXT: i32.shl $push30=, $7, $pop41
2951 ; NO-SIMD128-NEXT: i32.store8 0($pop32), $pop30
2952 ; NO-SIMD128-NEXT: i32.const $push40=, 5
2953 ; NO-SIMD128-NEXT: i32.add $push34=, $0, $pop40
2954 ; NO-SIMD128-NEXT: i32.const $push39=, 5
2955 ; NO-SIMD128-NEXT: i32.shl $push33=, $6, $pop39
2956 ; NO-SIMD128-NEXT: i32.store8 0($pop34), $pop33
2957 ; NO-SIMD128-NEXT: i32.const $push36=, 3
2958 ; NO-SIMD128-NEXT: i32.add $push37=, $0, $pop36
2959 ; NO-SIMD128-NEXT: i32.const $push38=, 5
2960 ; NO-SIMD128-NEXT: i32.shl $push35=, $4, $pop38
2961 ; NO-SIMD128-NEXT: i32.store8 0($pop37), $pop35
2962 ; NO-SIMD128-NEXT: return
2964 ; NO-SIMD128-FAST-LABEL: shl_const_v16i8:
2965 ; NO-SIMD128-FAST: .functype shl_const_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
2966 ; NO-SIMD128-FAST-NEXT: # %bb.0:
2967 ; NO-SIMD128-FAST-NEXT: i32.const $push0=, 5
2968 ; NO-SIMD128-FAST-NEXT: i32.shl $push1=, $1, $pop0
2969 ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop1
2970 ; NO-SIMD128-FAST-NEXT: i32.const $push53=, 5
2971 ; NO-SIMD128-FAST-NEXT: i32.shl $push2=, $2, $pop53
2972 ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop2
2973 ; NO-SIMD128-FAST-NEXT: i32.const $push52=, 5
2974 ; NO-SIMD128-FAST-NEXT: i32.shl $push3=, $3, $pop52
2975 ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop3
2976 ; NO-SIMD128-FAST-NEXT: i32.const $push4=, 3
2977 ; NO-SIMD128-FAST-NEXT: i32.add $push5=, $0, $pop4
2978 ; NO-SIMD128-FAST-NEXT: i32.const $push51=, 5
2979 ; NO-SIMD128-FAST-NEXT: i32.shl $push6=, $4, $pop51
2980 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop5), $pop6
2981 ; NO-SIMD128-FAST-NEXT: i32.const $push50=, 5
2982 ; NO-SIMD128-FAST-NEXT: i32.shl $push7=, $5, $pop50
2983 ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop7
2984 ; NO-SIMD128-FAST-NEXT: i32.const $push49=, 5
2985 ; NO-SIMD128-FAST-NEXT: i32.add $push8=, $0, $pop49
2986 ; NO-SIMD128-FAST-NEXT: i32.const $push48=, 5
2987 ; NO-SIMD128-FAST-NEXT: i32.shl $push9=, $6, $pop48
2988 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop8), $pop9
2989 ; NO-SIMD128-FAST-NEXT: i32.const $push10=, 6
2990 ; NO-SIMD128-FAST-NEXT: i32.add $push11=, $0, $pop10
2991 ; NO-SIMD128-FAST-NEXT: i32.const $push47=, 5
2992 ; NO-SIMD128-FAST-NEXT: i32.shl $push12=, $7, $pop47
2993 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop11), $pop12
2994 ; NO-SIMD128-FAST-NEXT: i32.const $push13=, 7
2995 ; NO-SIMD128-FAST-NEXT: i32.add $push14=, $0, $pop13
2996 ; NO-SIMD128-FAST-NEXT: i32.const $push46=, 5
2997 ; NO-SIMD128-FAST-NEXT: i32.shl $push15=, $8, $pop46
2998 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop14), $pop15
2999 ; NO-SIMD128-FAST-NEXT: i32.const $push45=, 5
3000 ; NO-SIMD128-FAST-NEXT: i32.shl $push16=, $9, $pop45
3001 ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop16
3002 ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 9
3003 ; NO-SIMD128-FAST-NEXT: i32.add $push18=, $0, $pop17
3004 ; NO-SIMD128-FAST-NEXT: i32.const $push44=, 5
3005 ; NO-SIMD128-FAST-NEXT: i32.shl $push19=, $10, $pop44
3006 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop18), $pop19
3007 ; NO-SIMD128-FAST-NEXT: i32.const $push20=, 10
3008 ; NO-SIMD128-FAST-NEXT: i32.add $push21=, $0, $pop20
3009 ; NO-SIMD128-FAST-NEXT: i32.const $push43=, 5
3010 ; NO-SIMD128-FAST-NEXT: i32.shl $push22=, $11, $pop43
3011 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop21), $pop22
3012 ; NO-SIMD128-FAST-NEXT: i32.const $push23=, 11
3013 ; NO-SIMD128-FAST-NEXT: i32.add $push24=, $0, $pop23
3014 ; NO-SIMD128-FAST-NEXT: i32.const $push42=, 5
3015 ; NO-SIMD128-FAST-NEXT: i32.shl $push25=, $12, $pop42
3016 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop24), $pop25
3017 ; NO-SIMD128-FAST-NEXT: i32.const $push26=, 12
3018 ; NO-SIMD128-FAST-NEXT: i32.add $push27=, $0, $pop26
3019 ; NO-SIMD128-FAST-NEXT: i32.const $push41=, 5
3020 ; NO-SIMD128-FAST-NEXT: i32.shl $push28=, $13, $pop41
3021 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop27), $pop28
3022 ; NO-SIMD128-FAST-NEXT: i32.const $push29=, 13
3023 ; NO-SIMD128-FAST-NEXT: i32.add $push30=, $0, $pop29
3024 ; NO-SIMD128-FAST-NEXT: i32.const $push40=, 5
3025 ; NO-SIMD128-FAST-NEXT: i32.shl $push31=, $14, $pop40
3026 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop30), $pop31
3027 ; NO-SIMD128-FAST-NEXT: i32.const $push32=, 14
3028 ; NO-SIMD128-FAST-NEXT: i32.add $push33=, $0, $pop32
3029 ; NO-SIMD128-FAST-NEXT: i32.const $push39=, 5
3030 ; NO-SIMD128-FAST-NEXT: i32.shl $push34=, $15, $pop39
3031 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop33), $pop34
3032 ; NO-SIMD128-FAST-NEXT: i32.const $push35=, 15
3033 ; NO-SIMD128-FAST-NEXT: i32.add $push36=, $0, $pop35
3034 ; NO-SIMD128-FAST-NEXT: i32.const $push38=, 5
3035 ; NO-SIMD128-FAST-NEXT: i32.shl $push37=, $16, $pop38
3036 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop36), $pop37
3037 ; NO-SIMD128-FAST-NEXT: return
3038 %a = shl <16 x i8> %v,
3039 <i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5,
3040 i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5>
3044 define <16 x i8> @shl_vec_v16i8(<16 x i8> %v, <16 x i8> %x) {
3045 ; SIMD128-LABEL: shl_vec_v16i8:
3046 ; SIMD128: .functype shl_vec_v16i8 (v128, v128) -> (v128)
3047 ; SIMD128-NEXT: # %bb.0:
3048 ; SIMD128-NEXT: i8x16.extract_lane_u $push7=, $0, 0
3049 ; SIMD128-NEXT: i8x16.extract_lane_u $push5=, $1, 0
3050 ; SIMD128-NEXT: i32.const $push1=, 7
3051 ; SIMD128-NEXT: i32.and $push6=, $pop5, $pop1
3052 ; SIMD128-NEXT: i32.shl $push8=, $pop7, $pop6
3053 ; SIMD128-NEXT: i8x16.splat $push9=, $pop8
3054 ; SIMD128-NEXT: i8x16.extract_lane_u $push3=, $0, 1
3055 ; SIMD128-NEXT: i8x16.extract_lane_u $push0=, $1, 1
3056 ; SIMD128-NEXT: i32.const $push95=, 7
3057 ; SIMD128-NEXT: i32.and $push2=, $pop0, $pop95
3058 ; SIMD128-NEXT: i32.shl $push4=, $pop3, $pop2
3059 ; SIMD128-NEXT: i8x16.replace_lane $push10=, $pop9, 1, $pop4
3060 ; SIMD128-NEXT: i8x16.extract_lane_u $push13=, $0, 2
3061 ; SIMD128-NEXT: i8x16.extract_lane_u $push11=, $1, 2
3062 ; SIMD128-NEXT: i32.const $push94=, 7
3063 ; SIMD128-NEXT: i32.and $push12=, $pop11, $pop94
3064 ; SIMD128-NEXT: i32.shl $push14=, $pop13, $pop12
3065 ; SIMD128-NEXT: i8x16.replace_lane $push15=, $pop10, 2, $pop14
3066 ; SIMD128-NEXT: i8x16.extract_lane_u $push18=, $0, 3
3067 ; SIMD128-NEXT: i8x16.extract_lane_u $push16=, $1, 3
3068 ; SIMD128-NEXT: i32.const $push93=, 7
3069 ; SIMD128-NEXT: i32.and $push17=, $pop16, $pop93
3070 ; SIMD128-NEXT: i32.shl $push19=, $pop18, $pop17
3071 ; SIMD128-NEXT: i8x16.replace_lane $push20=, $pop15, 3, $pop19
3072 ; SIMD128-NEXT: i8x16.extract_lane_u $push23=, $0, 4
3073 ; SIMD128-NEXT: i8x16.extract_lane_u $push21=, $1, 4
3074 ; SIMD128-NEXT: i32.const $push92=, 7
3075 ; SIMD128-NEXT: i32.and $push22=, $pop21, $pop92
3076 ; SIMD128-NEXT: i32.shl $push24=, $pop23, $pop22
3077 ; SIMD128-NEXT: i8x16.replace_lane $push25=, $pop20, 4, $pop24
3078 ; SIMD128-NEXT: i8x16.extract_lane_u $push28=, $0, 5
3079 ; SIMD128-NEXT: i8x16.extract_lane_u $push26=, $1, 5
3080 ; SIMD128-NEXT: i32.const $push91=, 7
3081 ; SIMD128-NEXT: i32.and $push27=, $pop26, $pop91
3082 ; SIMD128-NEXT: i32.shl $push29=, $pop28, $pop27
3083 ; SIMD128-NEXT: i8x16.replace_lane $push30=, $pop25, 5, $pop29
3084 ; SIMD128-NEXT: i8x16.extract_lane_u $push33=, $0, 6
3085 ; SIMD128-NEXT: i8x16.extract_lane_u $push31=, $1, 6
3086 ; SIMD128-NEXT: i32.const $push90=, 7
3087 ; SIMD128-NEXT: i32.and $push32=, $pop31, $pop90
3088 ; SIMD128-NEXT: i32.shl $push34=, $pop33, $pop32
3089 ; SIMD128-NEXT: i8x16.replace_lane $push35=, $pop30, 6, $pop34
3090 ; SIMD128-NEXT: i8x16.extract_lane_u $push38=, $0, 7
3091 ; SIMD128-NEXT: i8x16.extract_lane_u $push36=, $1, 7
3092 ; SIMD128-NEXT: i32.const $push89=, 7
3093 ; SIMD128-NEXT: i32.and $push37=, $pop36, $pop89
3094 ; SIMD128-NEXT: i32.shl $push39=, $pop38, $pop37
3095 ; SIMD128-NEXT: i8x16.replace_lane $push40=, $pop35, 7, $pop39
3096 ; SIMD128-NEXT: i8x16.extract_lane_u $push43=, $0, 8
3097 ; SIMD128-NEXT: i8x16.extract_lane_u $push41=, $1, 8
3098 ; SIMD128-NEXT: i32.const $push88=, 7
3099 ; SIMD128-NEXT: i32.and $push42=, $pop41, $pop88
3100 ; SIMD128-NEXT: i32.shl $push44=, $pop43, $pop42
3101 ; SIMD128-NEXT: i8x16.replace_lane $push45=, $pop40, 8, $pop44
3102 ; SIMD128-NEXT: i8x16.extract_lane_u $push48=, $0, 9
3103 ; SIMD128-NEXT: i8x16.extract_lane_u $push46=, $1, 9
3104 ; SIMD128-NEXT: i32.const $push87=, 7
3105 ; SIMD128-NEXT: i32.and $push47=, $pop46, $pop87
3106 ; SIMD128-NEXT: i32.shl $push49=, $pop48, $pop47
3107 ; SIMD128-NEXT: i8x16.replace_lane $push50=, $pop45, 9, $pop49
3108 ; SIMD128-NEXT: i8x16.extract_lane_u $push53=, $0, 10
3109 ; SIMD128-NEXT: i8x16.extract_lane_u $push51=, $1, 10
3110 ; SIMD128-NEXT: i32.const $push86=, 7
3111 ; SIMD128-NEXT: i32.and $push52=, $pop51, $pop86
3112 ; SIMD128-NEXT: i32.shl $push54=, $pop53, $pop52
3113 ; SIMD128-NEXT: i8x16.replace_lane $push55=, $pop50, 10, $pop54
3114 ; SIMD128-NEXT: i8x16.extract_lane_u $push58=, $0, 11
3115 ; SIMD128-NEXT: i8x16.extract_lane_u $push56=, $1, 11
3116 ; SIMD128-NEXT: i32.const $push85=, 7
3117 ; SIMD128-NEXT: i32.and $push57=, $pop56, $pop85
3118 ; SIMD128-NEXT: i32.shl $push59=, $pop58, $pop57
3119 ; SIMD128-NEXT: i8x16.replace_lane $push60=, $pop55, 11, $pop59
3120 ; SIMD128-NEXT: i8x16.extract_lane_u $push63=, $0, 12
3121 ; SIMD128-NEXT: i8x16.extract_lane_u $push61=, $1, 12
3122 ; SIMD128-NEXT: i32.const $push84=, 7
3123 ; SIMD128-NEXT: i32.and $push62=, $pop61, $pop84
3124 ; SIMD128-NEXT: i32.shl $push64=, $pop63, $pop62
3125 ; SIMD128-NEXT: i8x16.replace_lane $push65=, $pop60, 12, $pop64
3126 ; SIMD128-NEXT: i8x16.extract_lane_u $push68=, $0, 13
3127 ; SIMD128-NEXT: i8x16.extract_lane_u $push66=, $1, 13
3128 ; SIMD128-NEXT: i32.const $push83=, 7
3129 ; SIMD128-NEXT: i32.and $push67=, $pop66, $pop83
3130 ; SIMD128-NEXT: i32.shl $push69=, $pop68, $pop67
3131 ; SIMD128-NEXT: i8x16.replace_lane $push70=, $pop65, 13, $pop69
3132 ; SIMD128-NEXT: i8x16.extract_lane_u $push73=, $0, 14
3133 ; SIMD128-NEXT: i8x16.extract_lane_u $push71=, $1, 14
3134 ; SIMD128-NEXT: i32.const $push82=, 7
3135 ; SIMD128-NEXT: i32.and $push72=, $pop71, $pop82
3136 ; SIMD128-NEXT: i32.shl $push74=, $pop73, $pop72
3137 ; SIMD128-NEXT: i8x16.replace_lane $push75=, $pop70, 14, $pop74
3138 ; SIMD128-NEXT: i8x16.extract_lane_u $push78=, $0, 15
3139 ; SIMD128-NEXT: i8x16.extract_lane_u $push76=, $1, 15
3140 ; SIMD128-NEXT: i32.const $push81=, 7
3141 ; SIMD128-NEXT: i32.and $push77=, $pop76, $pop81
3142 ; SIMD128-NEXT: i32.shl $push79=, $pop78, $pop77
3143 ; SIMD128-NEXT: i8x16.replace_lane $push80=, $pop75, 15, $pop79
3144 ; SIMD128-NEXT: return $pop80
3146 ; SIMD128-FAST-LABEL: shl_vec_v16i8:
3147 ; SIMD128-FAST: .functype shl_vec_v16i8 (v128, v128) -> (v128)
3148 ; SIMD128-FAST-NEXT: # %bb.0:
3149 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push8=, $0, 0
3150 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push6=, $1, 0
3151 ; SIMD128-FAST-NEXT: i32.const $push2=, 7
3152 ; SIMD128-FAST-NEXT: i32.and $push7=, $pop6, $pop2
3153 ; SIMD128-FAST-NEXT: i32.shl $push9=, $pop8, $pop7
3154 ; SIMD128-FAST-NEXT: i8x16.splat $push10=, $pop9
3155 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push4=, $0, 1
3156 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push1=, $1, 1
3157 ; SIMD128-FAST-NEXT: i32.const $push95=, 7
3158 ; SIMD128-FAST-NEXT: i32.and $push3=, $pop1, $pop95
3159 ; SIMD128-FAST-NEXT: i32.shl $push5=, $pop4, $pop3
3160 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push11=, $pop10, 1, $pop5
3161 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push14=, $0, 2
3162 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push12=, $1, 2
3163 ; SIMD128-FAST-NEXT: i32.const $push94=, 7
3164 ; SIMD128-FAST-NEXT: i32.and $push13=, $pop12, $pop94
3165 ; SIMD128-FAST-NEXT: i32.shl $push15=, $pop14, $pop13
3166 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push16=, $pop11, 2, $pop15
3167 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push19=, $0, 3
3168 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push17=, $1, 3
3169 ; SIMD128-FAST-NEXT: i32.const $push93=, 7
3170 ; SIMD128-FAST-NEXT: i32.and $push18=, $pop17, $pop93
3171 ; SIMD128-FAST-NEXT: i32.shl $push20=, $pop19, $pop18
3172 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push21=, $pop16, 3, $pop20
3173 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push24=, $0, 4
3174 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push22=, $1, 4
3175 ; SIMD128-FAST-NEXT: i32.const $push92=, 7
3176 ; SIMD128-FAST-NEXT: i32.and $push23=, $pop22, $pop92
3177 ; SIMD128-FAST-NEXT: i32.shl $push25=, $pop24, $pop23
3178 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push26=, $pop21, 4, $pop25
3179 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push29=, $0, 5
3180 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push27=, $1, 5
3181 ; SIMD128-FAST-NEXT: i32.const $push91=, 7
3182 ; SIMD128-FAST-NEXT: i32.and $push28=, $pop27, $pop91
3183 ; SIMD128-FAST-NEXT: i32.shl $push30=, $pop29, $pop28
3184 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push31=, $pop26, 5, $pop30
3185 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push34=, $0, 6
3186 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push32=, $1, 6
3187 ; SIMD128-FAST-NEXT: i32.const $push90=, 7
3188 ; SIMD128-FAST-NEXT: i32.and $push33=, $pop32, $pop90
3189 ; SIMD128-FAST-NEXT: i32.shl $push35=, $pop34, $pop33
3190 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push36=, $pop31, 6, $pop35
3191 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push39=, $0, 7
3192 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push37=, $1, 7
3193 ; SIMD128-FAST-NEXT: i32.const $push89=, 7
3194 ; SIMD128-FAST-NEXT: i32.and $push38=, $pop37, $pop89
3195 ; SIMD128-FAST-NEXT: i32.shl $push40=, $pop39, $pop38
3196 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push41=, $pop36, 7, $pop40
3197 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push44=, $0, 8
3198 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push42=, $1, 8
3199 ; SIMD128-FAST-NEXT: i32.const $push88=, 7
3200 ; SIMD128-FAST-NEXT: i32.and $push43=, $pop42, $pop88
3201 ; SIMD128-FAST-NEXT: i32.shl $push45=, $pop44, $pop43
3202 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push46=, $pop41, 8, $pop45
3203 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push49=, $0, 9
3204 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push47=, $1, 9
3205 ; SIMD128-FAST-NEXT: i32.const $push87=, 7
3206 ; SIMD128-FAST-NEXT: i32.and $push48=, $pop47, $pop87
3207 ; SIMD128-FAST-NEXT: i32.shl $push50=, $pop49, $pop48
3208 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push51=, $pop46, 9, $pop50
3209 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push54=, $0, 10
3210 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push52=, $1, 10
3211 ; SIMD128-FAST-NEXT: i32.const $push86=, 7
3212 ; SIMD128-FAST-NEXT: i32.and $push53=, $pop52, $pop86
3213 ; SIMD128-FAST-NEXT: i32.shl $push55=, $pop54, $pop53
3214 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push56=, $pop51, 10, $pop55
3215 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push59=, $0, 11
3216 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push57=, $1, 11
3217 ; SIMD128-FAST-NEXT: i32.const $push85=, 7
3218 ; SIMD128-FAST-NEXT: i32.and $push58=, $pop57, $pop85
3219 ; SIMD128-FAST-NEXT: i32.shl $push60=, $pop59, $pop58
3220 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push61=, $pop56, 11, $pop60
3221 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push64=, $0, 12
3222 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push62=, $1, 12
3223 ; SIMD128-FAST-NEXT: i32.const $push84=, 7
3224 ; SIMD128-FAST-NEXT: i32.and $push63=, $pop62, $pop84
3225 ; SIMD128-FAST-NEXT: i32.shl $push65=, $pop64, $pop63
3226 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push66=, $pop61, 12, $pop65
3227 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push69=, $0, 13
3228 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push67=, $1, 13
3229 ; SIMD128-FAST-NEXT: i32.const $push83=, 7
3230 ; SIMD128-FAST-NEXT: i32.and $push68=, $pop67, $pop83
3231 ; SIMD128-FAST-NEXT: i32.shl $push70=, $pop69, $pop68
3232 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push71=, $pop66, 13, $pop70
3233 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push74=, $0, 14
3234 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push72=, $1, 14
3235 ; SIMD128-FAST-NEXT: i32.const $push82=, 7
3236 ; SIMD128-FAST-NEXT: i32.and $push73=, $pop72, $pop82
3237 ; SIMD128-FAST-NEXT: i32.shl $push75=, $pop74, $pop73
3238 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push76=, $pop71, 14, $pop75
3239 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push79=, $0, 15
3240 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push77=, $1, 15
3241 ; SIMD128-FAST-NEXT: i32.const $push81=, 7
3242 ; SIMD128-FAST-NEXT: i32.and $push78=, $pop77, $pop81
3243 ; SIMD128-FAST-NEXT: i32.shl $push80=, $pop79, $pop78
3244 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push0=, $pop76, 15, $pop80
3245 ; SIMD128-FAST-NEXT: return $pop0
3247 ; NO-SIMD128-LABEL: shl_vec_v16i8:
3248 ; NO-SIMD128: .functype shl_vec_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
3249 ; NO-SIMD128-NEXT: # %bb.0:
3250 ; NO-SIMD128-NEXT: i32.const $push0=, 255
3251 ; NO-SIMD128-NEXT: i32.and $push1=, $25, $pop0
3252 ; NO-SIMD128-NEXT: i32.shl $push2=, $9, $pop1
3253 ; NO-SIMD128-NEXT: i32.store8 8($0), $pop2
3254 ; NO-SIMD128-NEXT: i32.const $push69=, 255
3255 ; NO-SIMD128-NEXT: i32.and $push3=, $21, $pop69
3256 ; NO-SIMD128-NEXT: i32.shl $push4=, $5, $pop3
3257 ; NO-SIMD128-NEXT: i32.store8 4($0), $pop4
3258 ; NO-SIMD128-NEXT: i32.const $push68=, 255
3259 ; NO-SIMD128-NEXT: i32.and $push5=, $19, $pop68
3260 ; NO-SIMD128-NEXT: i32.shl $push6=, $3, $pop5
3261 ; NO-SIMD128-NEXT: i32.store8 2($0), $pop6
3262 ; NO-SIMD128-NEXT: i32.const $push67=, 255
3263 ; NO-SIMD128-NEXT: i32.and $push7=, $18, $pop67
3264 ; NO-SIMD128-NEXT: i32.shl $push8=, $2, $pop7
3265 ; NO-SIMD128-NEXT: i32.store8 1($0), $pop8
3266 ; NO-SIMD128-NEXT: i32.const $push66=, 255
3267 ; NO-SIMD128-NEXT: i32.and $push9=, $17, $pop66
3268 ; NO-SIMD128-NEXT: i32.shl $push10=, $1, $pop9
3269 ; NO-SIMD128-NEXT: i32.store8 0($0), $pop10
3270 ; NO-SIMD128-NEXT: i32.const $push13=, 15
3271 ; NO-SIMD128-NEXT: i32.add $push14=, $0, $pop13
3272 ; NO-SIMD128-NEXT: i32.const $push65=, 255
3273 ; NO-SIMD128-NEXT: i32.and $push11=, $32, $pop65
3274 ; NO-SIMD128-NEXT: i32.shl $push12=, $16, $pop11
3275 ; NO-SIMD128-NEXT: i32.store8 0($pop14), $pop12
3276 ; NO-SIMD128-NEXT: i32.const $push17=, 14
3277 ; NO-SIMD128-NEXT: i32.add $push18=, $0, $pop17
3278 ; NO-SIMD128-NEXT: i32.const $push64=, 255
3279 ; NO-SIMD128-NEXT: i32.and $push15=, $31, $pop64
3280 ; NO-SIMD128-NEXT: i32.shl $push16=, $15, $pop15
3281 ; NO-SIMD128-NEXT: i32.store8 0($pop18), $pop16
3282 ; NO-SIMD128-NEXT: i32.const $push21=, 13
3283 ; NO-SIMD128-NEXT: i32.add $push22=, $0, $pop21
3284 ; NO-SIMD128-NEXT: i32.const $push63=, 255
3285 ; NO-SIMD128-NEXT: i32.and $push19=, $30, $pop63
3286 ; NO-SIMD128-NEXT: i32.shl $push20=, $14, $pop19
3287 ; NO-SIMD128-NEXT: i32.store8 0($pop22), $pop20
3288 ; NO-SIMD128-NEXT: i32.const $push25=, 12
3289 ; NO-SIMD128-NEXT: i32.add $push26=, $0, $pop25
3290 ; NO-SIMD128-NEXT: i32.const $push62=, 255
3291 ; NO-SIMD128-NEXT: i32.and $push23=, $29, $pop62
3292 ; NO-SIMD128-NEXT: i32.shl $push24=, $13, $pop23
3293 ; NO-SIMD128-NEXT: i32.store8 0($pop26), $pop24
3294 ; NO-SIMD128-NEXT: i32.const $push29=, 11
3295 ; NO-SIMD128-NEXT: i32.add $push30=, $0, $pop29
3296 ; NO-SIMD128-NEXT: i32.const $push61=, 255
3297 ; NO-SIMD128-NEXT: i32.and $push27=, $28, $pop61
3298 ; NO-SIMD128-NEXT: i32.shl $push28=, $12, $pop27
3299 ; NO-SIMD128-NEXT: i32.store8 0($pop30), $pop28
3300 ; NO-SIMD128-NEXT: i32.const $push33=, 10
3301 ; NO-SIMD128-NEXT: i32.add $push34=, $0, $pop33
3302 ; NO-SIMD128-NEXT: i32.const $push60=, 255
3303 ; NO-SIMD128-NEXT: i32.and $push31=, $27, $pop60
3304 ; NO-SIMD128-NEXT: i32.shl $push32=, $11, $pop31
3305 ; NO-SIMD128-NEXT: i32.store8 0($pop34), $pop32
3306 ; NO-SIMD128-NEXT: i32.const $push37=, 9
3307 ; NO-SIMD128-NEXT: i32.add $push38=, $0, $pop37
3308 ; NO-SIMD128-NEXT: i32.const $push59=, 255
3309 ; NO-SIMD128-NEXT: i32.and $push35=, $26, $pop59
3310 ; NO-SIMD128-NEXT: i32.shl $push36=, $10, $pop35
3311 ; NO-SIMD128-NEXT: i32.store8 0($pop38), $pop36
3312 ; NO-SIMD128-NEXT: i32.const $push41=, 7
3313 ; NO-SIMD128-NEXT: i32.add $push42=, $0, $pop41
3314 ; NO-SIMD128-NEXT: i32.const $push58=, 255
3315 ; NO-SIMD128-NEXT: i32.and $push39=, $24, $pop58
3316 ; NO-SIMD128-NEXT: i32.shl $push40=, $8, $pop39
3317 ; NO-SIMD128-NEXT: i32.store8 0($pop42), $pop40
3318 ; NO-SIMD128-NEXT: i32.const $push45=, 6
3319 ; NO-SIMD128-NEXT: i32.add $push46=, $0, $pop45
3320 ; NO-SIMD128-NEXT: i32.const $push57=, 255
3321 ; NO-SIMD128-NEXT: i32.and $push43=, $23, $pop57
3322 ; NO-SIMD128-NEXT: i32.shl $push44=, $7, $pop43
3323 ; NO-SIMD128-NEXT: i32.store8 0($pop46), $pop44
3324 ; NO-SIMD128-NEXT: i32.const $push49=, 5
3325 ; NO-SIMD128-NEXT: i32.add $push50=, $0, $pop49
3326 ; NO-SIMD128-NEXT: i32.const $push56=, 255
3327 ; NO-SIMD128-NEXT: i32.and $push47=, $22, $pop56
3328 ; NO-SIMD128-NEXT: i32.shl $push48=, $6, $pop47
3329 ; NO-SIMD128-NEXT: i32.store8 0($pop50), $pop48
3330 ; NO-SIMD128-NEXT: i32.const $push53=, 3
3331 ; NO-SIMD128-NEXT: i32.add $push54=, $0, $pop53
3332 ; NO-SIMD128-NEXT: i32.const $push55=, 255
3333 ; NO-SIMD128-NEXT: i32.and $push51=, $20, $pop55
3334 ; NO-SIMD128-NEXT: i32.shl $push52=, $4, $pop51
3335 ; NO-SIMD128-NEXT: i32.store8 0($pop54), $pop52
3336 ; NO-SIMD128-NEXT: return
3338 ; NO-SIMD128-FAST-LABEL: shl_vec_v16i8:
3339 ; NO-SIMD128-FAST: .functype shl_vec_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
3340 ; NO-SIMD128-FAST-NEXT: # %bb.0:
3341 ; NO-SIMD128-FAST-NEXT: i32.const $push0=, 255
3342 ; NO-SIMD128-FAST-NEXT: i32.and $push1=, $17, $pop0
3343 ; NO-SIMD128-FAST-NEXT: i32.shl $push2=, $1, $pop1
3344 ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop2
3345 ; NO-SIMD128-FAST-NEXT: i32.const $push69=, 255
3346 ; NO-SIMD128-FAST-NEXT: i32.and $push3=, $18, $pop69
3347 ; NO-SIMD128-FAST-NEXT: i32.shl $push4=, $2, $pop3
3348 ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop4
3349 ; NO-SIMD128-FAST-NEXT: i32.const $push68=, 255
3350 ; NO-SIMD128-FAST-NEXT: i32.and $push5=, $19, $pop68
3351 ; NO-SIMD128-FAST-NEXT: i32.shl $push6=, $3, $pop5
3352 ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop6
3353 ; NO-SIMD128-FAST-NEXT: i32.const $push7=, 3
3354 ; NO-SIMD128-FAST-NEXT: i32.add $push8=, $0, $pop7
3355 ; NO-SIMD128-FAST-NEXT: i32.const $push67=, 255
3356 ; NO-SIMD128-FAST-NEXT: i32.and $push9=, $20, $pop67
3357 ; NO-SIMD128-FAST-NEXT: i32.shl $push10=, $4, $pop9
3358 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop8), $pop10
3359 ; NO-SIMD128-FAST-NEXT: i32.const $push66=, 255
3360 ; NO-SIMD128-FAST-NEXT: i32.and $push11=, $21, $pop66
3361 ; NO-SIMD128-FAST-NEXT: i32.shl $push12=, $5, $pop11
3362 ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop12
3363 ; NO-SIMD128-FAST-NEXT: i32.const $push13=, 5
3364 ; NO-SIMD128-FAST-NEXT: i32.add $push14=, $0, $pop13
3365 ; NO-SIMD128-FAST-NEXT: i32.const $push65=, 255
3366 ; NO-SIMD128-FAST-NEXT: i32.and $push15=, $22, $pop65
3367 ; NO-SIMD128-FAST-NEXT: i32.shl $push16=, $6, $pop15
3368 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop14), $pop16
3369 ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 6
3370 ; NO-SIMD128-FAST-NEXT: i32.add $push18=, $0, $pop17
3371 ; NO-SIMD128-FAST-NEXT: i32.const $push64=, 255
3372 ; NO-SIMD128-FAST-NEXT: i32.and $push19=, $23, $pop64
3373 ; NO-SIMD128-FAST-NEXT: i32.shl $push20=, $7, $pop19
3374 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop18), $pop20
3375 ; NO-SIMD128-FAST-NEXT: i32.const $push21=, 7
3376 ; NO-SIMD128-FAST-NEXT: i32.add $push22=, $0, $pop21
3377 ; NO-SIMD128-FAST-NEXT: i32.const $push63=, 255
3378 ; NO-SIMD128-FAST-NEXT: i32.and $push23=, $24, $pop63
3379 ; NO-SIMD128-FAST-NEXT: i32.shl $push24=, $8, $pop23
3380 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop22), $pop24
3381 ; NO-SIMD128-FAST-NEXT: i32.const $push62=, 255
3382 ; NO-SIMD128-FAST-NEXT: i32.and $push25=, $25, $pop62
3383 ; NO-SIMD128-FAST-NEXT: i32.shl $push26=, $9, $pop25
3384 ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop26
3385 ; NO-SIMD128-FAST-NEXT: i32.const $push27=, 9
3386 ; NO-SIMD128-FAST-NEXT: i32.add $push28=, $0, $pop27
3387 ; NO-SIMD128-FAST-NEXT: i32.const $push61=, 255
3388 ; NO-SIMD128-FAST-NEXT: i32.and $push29=, $26, $pop61
3389 ; NO-SIMD128-FAST-NEXT: i32.shl $push30=, $10, $pop29
3390 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop28), $pop30
3391 ; NO-SIMD128-FAST-NEXT: i32.const $push31=, 10
3392 ; NO-SIMD128-FAST-NEXT: i32.add $push32=, $0, $pop31
3393 ; NO-SIMD128-FAST-NEXT: i32.const $push60=, 255
3394 ; NO-SIMD128-FAST-NEXT: i32.and $push33=, $27, $pop60
3395 ; NO-SIMD128-FAST-NEXT: i32.shl $push34=, $11, $pop33
3396 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop32), $pop34
3397 ; NO-SIMD128-FAST-NEXT: i32.const $push35=, 11
3398 ; NO-SIMD128-FAST-NEXT: i32.add $push36=, $0, $pop35
3399 ; NO-SIMD128-FAST-NEXT: i32.const $push59=, 255
3400 ; NO-SIMD128-FAST-NEXT: i32.and $push37=, $28, $pop59
3401 ; NO-SIMD128-FAST-NEXT: i32.shl $push38=, $12, $pop37
3402 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop36), $pop38
3403 ; NO-SIMD128-FAST-NEXT: i32.const $push39=, 12
3404 ; NO-SIMD128-FAST-NEXT: i32.add $push40=, $0, $pop39
3405 ; NO-SIMD128-FAST-NEXT: i32.const $push58=, 255
3406 ; NO-SIMD128-FAST-NEXT: i32.and $push41=, $29, $pop58
3407 ; NO-SIMD128-FAST-NEXT: i32.shl $push42=, $13, $pop41
3408 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop40), $pop42
3409 ; NO-SIMD128-FAST-NEXT: i32.const $push43=, 13
3410 ; NO-SIMD128-FAST-NEXT: i32.add $push44=, $0, $pop43
3411 ; NO-SIMD128-FAST-NEXT: i32.const $push57=, 255
3412 ; NO-SIMD128-FAST-NEXT: i32.and $push45=, $30, $pop57
3413 ; NO-SIMD128-FAST-NEXT: i32.shl $push46=, $14, $pop45
3414 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop44), $pop46
3415 ; NO-SIMD128-FAST-NEXT: i32.const $push47=, 14
3416 ; NO-SIMD128-FAST-NEXT: i32.add $push48=, $0, $pop47
3417 ; NO-SIMD128-FAST-NEXT: i32.const $push56=, 255
3418 ; NO-SIMD128-FAST-NEXT: i32.and $push49=, $31, $pop56
3419 ; NO-SIMD128-FAST-NEXT: i32.shl $push50=, $15, $pop49
3420 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop48), $pop50
3421 ; NO-SIMD128-FAST-NEXT: i32.const $push51=, 15
3422 ; NO-SIMD128-FAST-NEXT: i32.add $push52=, $0, $pop51
3423 ; NO-SIMD128-FAST-NEXT: i32.const $push55=, 255
3424 ; NO-SIMD128-FAST-NEXT: i32.and $push53=, $32, $pop55
3425 ; NO-SIMD128-FAST-NEXT: i32.shl $push54=, $16, $pop53
3426 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop52), $pop54
3427 ; NO-SIMD128-FAST-NEXT: return
3428 %a = shl <16 x i8> %v, %x
3432 define <16 x i8> @shr_s_v16i8(<16 x i8> %v, i8 %x) {
3433 ; SIMD128-LABEL: shr_s_v16i8:
3434 ; SIMD128: .functype shr_s_v16i8 (v128, i32) -> (v128)
3435 ; SIMD128-NEXT: # %bb.0:
3436 ; SIMD128-NEXT: i8x16.shr_s $push0=, $0, $1
3437 ; SIMD128-NEXT: return $pop0
3439 ; SIMD128-FAST-LABEL: shr_s_v16i8:
3440 ; SIMD128-FAST: .functype shr_s_v16i8 (v128, i32) -> (v128)
3441 ; SIMD128-FAST-NEXT: # %bb.0:
3442 ; SIMD128-FAST-NEXT: i8x16.shr_s $push0=, $0, $1
3443 ; SIMD128-FAST-NEXT: return $pop0
3445 ; NO-SIMD128-LABEL: shr_s_v16i8:
3446 ; NO-SIMD128: .functype shr_s_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
3447 ; NO-SIMD128-NEXT: # %bb.0:
3448 ; NO-SIMD128-NEXT: i32.extend8_s $push1=, $9
3449 ; NO-SIMD128-NEXT: i32.const $push0=, 255
3450 ; NO-SIMD128-NEXT: i32.and $push56=, $17, $pop0
3451 ; NO-SIMD128-NEXT: local.tee $push55=, $17=, $pop56
3452 ; NO-SIMD128-NEXT: i32.shr_s $push2=, $pop1, $pop55
3453 ; NO-SIMD128-NEXT: i32.store8 8($0), $pop2
3454 ; NO-SIMD128-NEXT: i32.extend8_s $push3=, $5
3455 ; NO-SIMD128-NEXT: i32.shr_s $push4=, $pop3, $17
3456 ; NO-SIMD128-NEXT: i32.store8 4($0), $pop4
3457 ; NO-SIMD128-NEXT: i32.extend8_s $push5=, $3
3458 ; NO-SIMD128-NEXT: i32.shr_s $push6=, $pop5, $17
3459 ; NO-SIMD128-NEXT: i32.store8 2($0), $pop6
3460 ; NO-SIMD128-NEXT: i32.extend8_s $push7=, $2
3461 ; NO-SIMD128-NEXT: i32.shr_s $push8=, $pop7, $17
3462 ; NO-SIMD128-NEXT: i32.store8 1($0), $pop8
3463 ; NO-SIMD128-NEXT: i32.extend8_s $push9=, $1
3464 ; NO-SIMD128-NEXT: i32.shr_s $push10=, $pop9, $17
3465 ; NO-SIMD128-NEXT: i32.store8 0($0), $pop10
3466 ; NO-SIMD128-NEXT: i32.const $push13=, 15
3467 ; NO-SIMD128-NEXT: i32.add $push14=, $0, $pop13
3468 ; NO-SIMD128-NEXT: i32.extend8_s $push11=, $16
3469 ; NO-SIMD128-NEXT: i32.shr_s $push12=, $pop11, $17
3470 ; NO-SIMD128-NEXT: i32.store8 0($pop14), $pop12
3471 ; NO-SIMD128-NEXT: i32.const $push17=, 14
3472 ; NO-SIMD128-NEXT: i32.add $push18=, $0, $pop17
3473 ; NO-SIMD128-NEXT: i32.extend8_s $push15=, $15
3474 ; NO-SIMD128-NEXT: i32.shr_s $push16=, $pop15, $17
3475 ; NO-SIMD128-NEXT: i32.store8 0($pop18), $pop16
3476 ; NO-SIMD128-NEXT: i32.const $push21=, 13
3477 ; NO-SIMD128-NEXT: i32.add $push22=, $0, $pop21
3478 ; NO-SIMD128-NEXT: i32.extend8_s $push19=, $14
3479 ; NO-SIMD128-NEXT: i32.shr_s $push20=, $pop19, $17
3480 ; NO-SIMD128-NEXT: i32.store8 0($pop22), $pop20
3481 ; NO-SIMD128-NEXT: i32.const $push25=, 12
3482 ; NO-SIMD128-NEXT: i32.add $push26=, $0, $pop25
3483 ; NO-SIMD128-NEXT: i32.extend8_s $push23=, $13
3484 ; NO-SIMD128-NEXT: i32.shr_s $push24=, $pop23, $17
3485 ; NO-SIMD128-NEXT: i32.store8 0($pop26), $pop24
3486 ; NO-SIMD128-NEXT: i32.const $push29=, 11
3487 ; NO-SIMD128-NEXT: i32.add $push30=, $0, $pop29
3488 ; NO-SIMD128-NEXT: i32.extend8_s $push27=, $12
3489 ; NO-SIMD128-NEXT: i32.shr_s $push28=, $pop27, $17
3490 ; NO-SIMD128-NEXT: i32.store8 0($pop30), $pop28
3491 ; NO-SIMD128-NEXT: i32.const $push33=, 10
3492 ; NO-SIMD128-NEXT: i32.add $push34=, $0, $pop33
3493 ; NO-SIMD128-NEXT: i32.extend8_s $push31=, $11
3494 ; NO-SIMD128-NEXT: i32.shr_s $push32=, $pop31, $17
3495 ; NO-SIMD128-NEXT: i32.store8 0($pop34), $pop32
3496 ; NO-SIMD128-NEXT: i32.const $push37=, 9
3497 ; NO-SIMD128-NEXT: i32.add $push38=, $0, $pop37
3498 ; NO-SIMD128-NEXT: i32.extend8_s $push35=, $10
3499 ; NO-SIMD128-NEXT: i32.shr_s $push36=, $pop35, $17
3500 ; NO-SIMD128-NEXT: i32.store8 0($pop38), $pop36
3501 ; NO-SIMD128-NEXT: i32.const $push41=, 7
3502 ; NO-SIMD128-NEXT: i32.add $push42=, $0, $pop41
3503 ; NO-SIMD128-NEXT: i32.extend8_s $push39=, $8
3504 ; NO-SIMD128-NEXT: i32.shr_s $push40=, $pop39, $17
3505 ; NO-SIMD128-NEXT: i32.store8 0($pop42), $pop40
3506 ; NO-SIMD128-NEXT: i32.const $push45=, 6
3507 ; NO-SIMD128-NEXT: i32.add $push46=, $0, $pop45
3508 ; NO-SIMD128-NEXT: i32.extend8_s $push43=, $7
3509 ; NO-SIMD128-NEXT: i32.shr_s $push44=, $pop43, $17
3510 ; NO-SIMD128-NEXT: i32.store8 0($pop46), $pop44
3511 ; NO-SIMD128-NEXT: i32.const $push49=, 5
3512 ; NO-SIMD128-NEXT: i32.add $push50=, $0, $pop49
3513 ; NO-SIMD128-NEXT: i32.extend8_s $push47=, $6
3514 ; NO-SIMD128-NEXT: i32.shr_s $push48=, $pop47, $17
3515 ; NO-SIMD128-NEXT: i32.store8 0($pop50), $pop48
3516 ; NO-SIMD128-NEXT: i32.const $push53=, 3
3517 ; NO-SIMD128-NEXT: i32.add $push54=, $0, $pop53
3518 ; NO-SIMD128-NEXT: i32.extend8_s $push51=, $4
3519 ; NO-SIMD128-NEXT: i32.shr_s $push52=, $pop51, $17
3520 ; NO-SIMD128-NEXT: i32.store8 0($pop54), $pop52
3521 ; NO-SIMD128-NEXT: return
3523 ; NO-SIMD128-FAST-LABEL: shr_s_v16i8:
3524 ; NO-SIMD128-FAST: .functype shr_s_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
3525 ; NO-SIMD128-FAST-NEXT: # %bb.0:
3526 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push1=, $1
3527 ; NO-SIMD128-FAST-NEXT: i32.const $push0=, 255
3528 ; NO-SIMD128-FAST-NEXT: i32.and $push56=, $17, $pop0
3529 ; NO-SIMD128-FAST-NEXT: local.tee $push55=, $1=, $pop56
3530 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push2=, $pop1, $pop55
3531 ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop2
3532 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push3=, $2
3533 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push4=, $pop3, $1
3534 ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop4
3535 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push5=, $3
3536 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push6=, $pop5, $1
3537 ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop6
3538 ; NO-SIMD128-FAST-NEXT: i32.const $push7=, 3
3539 ; NO-SIMD128-FAST-NEXT: i32.add $push8=, $0, $pop7
3540 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push9=, $4
3541 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push10=, $pop9, $1
3542 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop8), $pop10
3543 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push11=, $5
3544 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push12=, $pop11, $1
3545 ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop12
3546 ; NO-SIMD128-FAST-NEXT: i32.const $push13=, 5
3547 ; NO-SIMD128-FAST-NEXT: i32.add $push14=, $0, $pop13
3548 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push15=, $6
3549 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push16=, $pop15, $1
3550 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop14), $pop16
3551 ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 6
3552 ; NO-SIMD128-FAST-NEXT: i32.add $push18=, $0, $pop17
3553 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push19=, $7
3554 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push20=, $pop19, $1
3555 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop18), $pop20
3556 ; NO-SIMD128-FAST-NEXT: i32.const $push21=, 7
3557 ; NO-SIMD128-FAST-NEXT: i32.add $push22=, $0, $pop21
3558 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push23=, $8
3559 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push24=, $pop23, $1
3560 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop22), $pop24
3561 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push25=, $9
3562 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push26=, $pop25, $1
3563 ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop26
3564 ; NO-SIMD128-FAST-NEXT: i32.const $push27=, 9
3565 ; NO-SIMD128-FAST-NEXT: i32.add $push28=, $0, $pop27
3566 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push29=, $10
3567 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push30=, $pop29, $1
3568 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop28), $pop30
3569 ; NO-SIMD128-FAST-NEXT: i32.const $push31=, 10
3570 ; NO-SIMD128-FAST-NEXT: i32.add $push32=, $0, $pop31
3571 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push33=, $11
3572 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push34=, $pop33, $1
3573 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop32), $pop34
3574 ; NO-SIMD128-FAST-NEXT: i32.const $push35=, 11
3575 ; NO-SIMD128-FAST-NEXT: i32.add $push36=, $0, $pop35
3576 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push37=, $12
3577 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push38=, $pop37, $1
3578 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop36), $pop38
3579 ; NO-SIMD128-FAST-NEXT: i32.const $push39=, 12
3580 ; NO-SIMD128-FAST-NEXT: i32.add $push40=, $0, $pop39
3581 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push41=, $13
3582 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push42=, $pop41, $1
3583 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop40), $pop42
3584 ; NO-SIMD128-FAST-NEXT: i32.const $push43=, 13
3585 ; NO-SIMD128-FAST-NEXT: i32.add $push44=, $0, $pop43
3586 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push45=, $14
3587 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push46=, $pop45, $1
3588 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop44), $pop46
3589 ; NO-SIMD128-FAST-NEXT: i32.const $push47=, 14
3590 ; NO-SIMD128-FAST-NEXT: i32.add $push48=, $0, $pop47
3591 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push49=, $15
3592 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push50=, $pop49, $1
3593 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop48), $pop50
3594 ; NO-SIMD128-FAST-NEXT: i32.const $push51=, 15
3595 ; NO-SIMD128-FAST-NEXT: i32.add $push52=, $0, $pop51
3596 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push53=, $16
3597 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push54=, $pop53, $1
3598 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop52), $pop54
3599 ; NO-SIMD128-FAST-NEXT: return
3600 %t = insertelement <16 x i8> undef, i8 %x, i32 0
3601 %s = shufflevector <16 x i8> %t, <16 x i8> undef,
3602 <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0,
3603 i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
3604 %a = ashr <16 x i8> %v, %s
3608 define <16 x i8> @shr_s_vec_v16i8(<16 x i8> %v, <16 x i8> %x) {
3609 ; SIMD128-LABEL: shr_s_vec_v16i8:
3610 ; SIMD128: .functype shr_s_vec_v16i8 (v128, v128) -> (v128)
3611 ; SIMD128-NEXT: # %bb.0:
3612 ; SIMD128-NEXT: i8x16.extract_lane_s $push7=, $0, 0
3613 ; SIMD128-NEXT: i8x16.extract_lane_u $push5=, $1, 0
3614 ; SIMD128-NEXT: i32.const $push1=, 7
3615 ; SIMD128-NEXT: i32.and $push6=, $pop5, $pop1
3616 ; SIMD128-NEXT: i32.shr_s $push8=, $pop7, $pop6
3617 ; SIMD128-NEXT: i8x16.splat $push9=, $pop8
3618 ; SIMD128-NEXT: i8x16.extract_lane_s $push3=, $0, 1
3619 ; SIMD128-NEXT: i8x16.extract_lane_u $push0=, $1, 1
3620 ; SIMD128-NEXT: i32.const $push95=, 7
3621 ; SIMD128-NEXT: i32.and $push2=, $pop0, $pop95
3622 ; SIMD128-NEXT: i32.shr_s $push4=, $pop3, $pop2
3623 ; SIMD128-NEXT: i8x16.replace_lane $push10=, $pop9, 1, $pop4
3624 ; SIMD128-NEXT: i8x16.extract_lane_s $push13=, $0, 2
3625 ; SIMD128-NEXT: i8x16.extract_lane_u $push11=, $1, 2
3626 ; SIMD128-NEXT: i32.const $push94=, 7
3627 ; SIMD128-NEXT: i32.and $push12=, $pop11, $pop94
3628 ; SIMD128-NEXT: i32.shr_s $push14=, $pop13, $pop12
3629 ; SIMD128-NEXT: i8x16.replace_lane $push15=, $pop10, 2, $pop14
3630 ; SIMD128-NEXT: i8x16.extract_lane_s $push18=, $0, 3
3631 ; SIMD128-NEXT: i8x16.extract_lane_u $push16=, $1, 3
3632 ; SIMD128-NEXT: i32.const $push93=, 7
3633 ; SIMD128-NEXT: i32.and $push17=, $pop16, $pop93
3634 ; SIMD128-NEXT: i32.shr_s $push19=, $pop18, $pop17
3635 ; SIMD128-NEXT: i8x16.replace_lane $push20=, $pop15, 3, $pop19
3636 ; SIMD128-NEXT: i8x16.extract_lane_s $push23=, $0, 4
3637 ; SIMD128-NEXT: i8x16.extract_lane_u $push21=, $1, 4
3638 ; SIMD128-NEXT: i32.const $push92=, 7
3639 ; SIMD128-NEXT: i32.and $push22=, $pop21, $pop92
3640 ; SIMD128-NEXT: i32.shr_s $push24=, $pop23, $pop22
3641 ; SIMD128-NEXT: i8x16.replace_lane $push25=, $pop20, 4, $pop24
3642 ; SIMD128-NEXT: i8x16.extract_lane_s $push28=, $0, 5
3643 ; SIMD128-NEXT: i8x16.extract_lane_u $push26=, $1, 5
3644 ; SIMD128-NEXT: i32.const $push91=, 7
3645 ; SIMD128-NEXT: i32.and $push27=, $pop26, $pop91
3646 ; SIMD128-NEXT: i32.shr_s $push29=, $pop28, $pop27
3647 ; SIMD128-NEXT: i8x16.replace_lane $push30=, $pop25, 5, $pop29
3648 ; SIMD128-NEXT: i8x16.extract_lane_s $push33=, $0, 6
3649 ; SIMD128-NEXT: i8x16.extract_lane_u $push31=, $1, 6
3650 ; SIMD128-NEXT: i32.const $push90=, 7
3651 ; SIMD128-NEXT: i32.and $push32=, $pop31, $pop90
3652 ; SIMD128-NEXT: i32.shr_s $push34=, $pop33, $pop32
3653 ; SIMD128-NEXT: i8x16.replace_lane $push35=, $pop30, 6, $pop34
3654 ; SIMD128-NEXT: i8x16.extract_lane_s $push38=, $0, 7
3655 ; SIMD128-NEXT: i8x16.extract_lane_u $push36=, $1, 7
3656 ; SIMD128-NEXT: i32.const $push89=, 7
3657 ; SIMD128-NEXT: i32.and $push37=, $pop36, $pop89
3658 ; SIMD128-NEXT: i32.shr_s $push39=, $pop38, $pop37
3659 ; SIMD128-NEXT: i8x16.replace_lane $push40=, $pop35, 7, $pop39
3660 ; SIMD128-NEXT: i8x16.extract_lane_s $push43=, $0, 8
3661 ; SIMD128-NEXT: i8x16.extract_lane_u $push41=, $1, 8
3662 ; SIMD128-NEXT: i32.const $push88=, 7
3663 ; SIMD128-NEXT: i32.and $push42=, $pop41, $pop88
3664 ; SIMD128-NEXT: i32.shr_s $push44=, $pop43, $pop42
3665 ; SIMD128-NEXT: i8x16.replace_lane $push45=, $pop40, 8, $pop44
3666 ; SIMD128-NEXT: i8x16.extract_lane_s $push48=, $0, 9
3667 ; SIMD128-NEXT: i8x16.extract_lane_u $push46=, $1, 9
3668 ; SIMD128-NEXT: i32.const $push87=, 7
3669 ; SIMD128-NEXT: i32.and $push47=, $pop46, $pop87
3670 ; SIMD128-NEXT: i32.shr_s $push49=, $pop48, $pop47
3671 ; SIMD128-NEXT: i8x16.replace_lane $push50=, $pop45, 9, $pop49
3672 ; SIMD128-NEXT: i8x16.extract_lane_s $push53=, $0, 10
3673 ; SIMD128-NEXT: i8x16.extract_lane_u $push51=, $1, 10
3674 ; SIMD128-NEXT: i32.const $push86=, 7
3675 ; SIMD128-NEXT: i32.and $push52=, $pop51, $pop86
3676 ; SIMD128-NEXT: i32.shr_s $push54=, $pop53, $pop52
3677 ; SIMD128-NEXT: i8x16.replace_lane $push55=, $pop50, 10, $pop54
3678 ; SIMD128-NEXT: i8x16.extract_lane_s $push58=, $0, 11
3679 ; SIMD128-NEXT: i8x16.extract_lane_u $push56=, $1, 11
3680 ; SIMD128-NEXT: i32.const $push85=, 7
3681 ; SIMD128-NEXT: i32.and $push57=, $pop56, $pop85
3682 ; SIMD128-NEXT: i32.shr_s $push59=, $pop58, $pop57
3683 ; SIMD128-NEXT: i8x16.replace_lane $push60=, $pop55, 11, $pop59
3684 ; SIMD128-NEXT: i8x16.extract_lane_s $push63=, $0, 12
3685 ; SIMD128-NEXT: i8x16.extract_lane_u $push61=, $1, 12
3686 ; SIMD128-NEXT: i32.const $push84=, 7
3687 ; SIMD128-NEXT: i32.and $push62=, $pop61, $pop84
3688 ; SIMD128-NEXT: i32.shr_s $push64=, $pop63, $pop62
3689 ; SIMD128-NEXT: i8x16.replace_lane $push65=, $pop60, 12, $pop64
3690 ; SIMD128-NEXT: i8x16.extract_lane_s $push68=, $0, 13
3691 ; SIMD128-NEXT: i8x16.extract_lane_u $push66=, $1, 13
3692 ; SIMD128-NEXT: i32.const $push83=, 7
3693 ; SIMD128-NEXT: i32.and $push67=, $pop66, $pop83
3694 ; SIMD128-NEXT: i32.shr_s $push69=, $pop68, $pop67
3695 ; SIMD128-NEXT: i8x16.replace_lane $push70=, $pop65, 13, $pop69
3696 ; SIMD128-NEXT: i8x16.extract_lane_s $push73=, $0, 14
3697 ; SIMD128-NEXT: i8x16.extract_lane_u $push71=, $1, 14
3698 ; SIMD128-NEXT: i32.const $push82=, 7
3699 ; SIMD128-NEXT: i32.and $push72=, $pop71, $pop82
3700 ; SIMD128-NEXT: i32.shr_s $push74=, $pop73, $pop72
3701 ; SIMD128-NEXT: i8x16.replace_lane $push75=, $pop70, 14, $pop74
3702 ; SIMD128-NEXT: i8x16.extract_lane_s $push78=, $0, 15
3703 ; SIMD128-NEXT: i8x16.extract_lane_u $push76=, $1, 15
3704 ; SIMD128-NEXT: i32.const $push81=, 7
3705 ; SIMD128-NEXT: i32.and $push77=, $pop76, $pop81
3706 ; SIMD128-NEXT: i32.shr_s $push79=, $pop78, $pop77
3707 ; SIMD128-NEXT: i8x16.replace_lane $push80=, $pop75, 15, $pop79
3708 ; SIMD128-NEXT: return $pop80
3710 ; SIMD128-FAST-LABEL: shr_s_vec_v16i8:
3711 ; SIMD128-FAST: .functype shr_s_vec_v16i8 (v128, v128) -> (v128)
3712 ; SIMD128-FAST-NEXT: # %bb.0:
3713 ; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push8=, $0, 0
3714 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push6=, $1, 0
3715 ; SIMD128-FAST-NEXT: i32.const $push2=, 7
3716 ; SIMD128-FAST-NEXT: i32.and $push7=, $pop6, $pop2
3717 ; SIMD128-FAST-NEXT: i32.shr_s $push9=, $pop8, $pop7
3718 ; SIMD128-FAST-NEXT: i8x16.splat $push10=, $pop9
3719 ; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push4=, $0, 1
3720 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push1=, $1, 1
3721 ; SIMD128-FAST-NEXT: i32.const $push95=, 7
3722 ; SIMD128-FAST-NEXT: i32.and $push3=, $pop1, $pop95
3723 ; SIMD128-FAST-NEXT: i32.shr_s $push5=, $pop4, $pop3
3724 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push11=, $pop10, 1, $pop5
3725 ; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push14=, $0, 2
3726 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push12=, $1, 2
3727 ; SIMD128-FAST-NEXT: i32.const $push94=, 7
3728 ; SIMD128-FAST-NEXT: i32.and $push13=, $pop12, $pop94
3729 ; SIMD128-FAST-NEXT: i32.shr_s $push15=, $pop14, $pop13
3730 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push16=, $pop11, 2, $pop15
3731 ; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push19=, $0, 3
3732 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push17=, $1, 3
3733 ; SIMD128-FAST-NEXT: i32.const $push93=, 7
3734 ; SIMD128-FAST-NEXT: i32.and $push18=, $pop17, $pop93
3735 ; SIMD128-FAST-NEXT: i32.shr_s $push20=, $pop19, $pop18
3736 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push21=, $pop16, 3, $pop20
3737 ; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push24=, $0, 4
3738 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push22=, $1, 4
3739 ; SIMD128-FAST-NEXT: i32.const $push92=, 7
3740 ; SIMD128-FAST-NEXT: i32.and $push23=, $pop22, $pop92
3741 ; SIMD128-FAST-NEXT: i32.shr_s $push25=, $pop24, $pop23
3742 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push26=, $pop21, 4, $pop25
3743 ; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push29=, $0, 5
3744 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push27=, $1, 5
3745 ; SIMD128-FAST-NEXT: i32.const $push91=, 7
3746 ; SIMD128-FAST-NEXT: i32.and $push28=, $pop27, $pop91
3747 ; SIMD128-FAST-NEXT: i32.shr_s $push30=, $pop29, $pop28
3748 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push31=, $pop26, 5, $pop30
3749 ; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push34=, $0, 6
3750 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push32=, $1, 6
3751 ; SIMD128-FAST-NEXT: i32.const $push90=, 7
3752 ; SIMD128-FAST-NEXT: i32.and $push33=, $pop32, $pop90
3753 ; SIMD128-FAST-NEXT: i32.shr_s $push35=, $pop34, $pop33
3754 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push36=, $pop31, 6, $pop35
3755 ; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push39=, $0, 7
3756 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push37=, $1, 7
3757 ; SIMD128-FAST-NEXT: i32.const $push89=, 7
3758 ; SIMD128-FAST-NEXT: i32.and $push38=, $pop37, $pop89
3759 ; SIMD128-FAST-NEXT: i32.shr_s $push40=, $pop39, $pop38
3760 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push41=, $pop36, 7, $pop40
3761 ; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push44=, $0, 8
3762 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push42=, $1, 8
3763 ; SIMD128-FAST-NEXT: i32.const $push88=, 7
3764 ; SIMD128-FAST-NEXT: i32.and $push43=, $pop42, $pop88
3765 ; SIMD128-FAST-NEXT: i32.shr_s $push45=, $pop44, $pop43
3766 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push46=, $pop41, 8, $pop45
3767 ; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push49=, $0, 9
3768 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push47=, $1, 9
3769 ; SIMD128-FAST-NEXT: i32.const $push87=, 7
3770 ; SIMD128-FAST-NEXT: i32.and $push48=, $pop47, $pop87
3771 ; SIMD128-FAST-NEXT: i32.shr_s $push50=, $pop49, $pop48
3772 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push51=, $pop46, 9, $pop50
3773 ; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push54=, $0, 10
3774 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push52=, $1, 10
3775 ; SIMD128-FAST-NEXT: i32.const $push86=, 7
3776 ; SIMD128-FAST-NEXT: i32.and $push53=, $pop52, $pop86
3777 ; SIMD128-FAST-NEXT: i32.shr_s $push55=, $pop54, $pop53
3778 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push56=, $pop51, 10, $pop55
3779 ; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push59=, $0, 11
3780 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push57=, $1, 11
3781 ; SIMD128-FAST-NEXT: i32.const $push85=, 7
3782 ; SIMD128-FAST-NEXT: i32.and $push58=, $pop57, $pop85
3783 ; SIMD128-FAST-NEXT: i32.shr_s $push60=, $pop59, $pop58
3784 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push61=, $pop56, 11, $pop60
3785 ; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push64=, $0, 12
3786 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push62=, $1, 12
3787 ; SIMD128-FAST-NEXT: i32.const $push84=, 7
3788 ; SIMD128-FAST-NEXT: i32.and $push63=, $pop62, $pop84
3789 ; SIMD128-FAST-NEXT: i32.shr_s $push65=, $pop64, $pop63
3790 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push66=, $pop61, 12, $pop65
3791 ; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push69=, $0, 13
3792 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push67=, $1, 13
3793 ; SIMD128-FAST-NEXT: i32.const $push83=, 7
3794 ; SIMD128-FAST-NEXT: i32.and $push68=, $pop67, $pop83
3795 ; SIMD128-FAST-NEXT: i32.shr_s $push70=, $pop69, $pop68
3796 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push71=, $pop66, 13, $pop70
3797 ; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push74=, $0, 14
3798 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push72=, $1, 14
3799 ; SIMD128-FAST-NEXT: i32.const $push82=, 7
3800 ; SIMD128-FAST-NEXT: i32.and $push73=, $pop72, $pop82
3801 ; SIMD128-FAST-NEXT: i32.shr_s $push75=, $pop74, $pop73
3802 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push76=, $pop71, 14, $pop75
3803 ; SIMD128-FAST-NEXT: i8x16.extract_lane_s $push79=, $0, 15
3804 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push77=, $1, 15
3805 ; SIMD128-FAST-NEXT: i32.const $push81=, 7
3806 ; SIMD128-FAST-NEXT: i32.and $push78=, $pop77, $pop81
3807 ; SIMD128-FAST-NEXT: i32.shr_s $push80=, $pop79, $pop78
3808 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push0=, $pop76, 15, $pop80
3809 ; SIMD128-FAST-NEXT: return $pop0
3811 ; NO-SIMD128-LABEL: shr_s_vec_v16i8:
3812 ; NO-SIMD128: .functype shr_s_vec_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
3813 ; NO-SIMD128-NEXT: # %bb.0:
3814 ; NO-SIMD128-NEXT: i32.extend8_s $push2=, $9
3815 ; NO-SIMD128-NEXT: i32.const $push0=, 255
3816 ; NO-SIMD128-NEXT: i32.and $push1=, $25, $pop0
3817 ; NO-SIMD128-NEXT: i32.shr_s $push3=, $pop2, $pop1
3818 ; NO-SIMD128-NEXT: i32.store8 8($0), $pop3
3819 ; NO-SIMD128-NEXT: i32.extend8_s $push5=, $5
3820 ; NO-SIMD128-NEXT: i32.const $push85=, 255
3821 ; NO-SIMD128-NEXT: i32.and $push4=, $21, $pop85
3822 ; NO-SIMD128-NEXT: i32.shr_s $push6=, $pop5, $pop4
3823 ; NO-SIMD128-NEXT: i32.store8 4($0), $pop6
3824 ; NO-SIMD128-NEXT: i32.extend8_s $push8=, $3
3825 ; NO-SIMD128-NEXT: i32.const $push84=, 255
3826 ; NO-SIMD128-NEXT: i32.and $push7=, $19, $pop84
3827 ; NO-SIMD128-NEXT: i32.shr_s $push9=, $pop8, $pop7
3828 ; NO-SIMD128-NEXT: i32.store8 2($0), $pop9
3829 ; NO-SIMD128-NEXT: i32.extend8_s $push11=, $2
3830 ; NO-SIMD128-NEXT: i32.const $push83=, 255
3831 ; NO-SIMD128-NEXT: i32.and $push10=, $18, $pop83
3832 ; NO-SIMD128-NEXT: i32.shr_s $push12=, $pop11, $pop10
3833 ; NO-SIMD128-NEXT: i32.store8 1($0), $pop12
3834 ; NO-SIMD128-NEXT: i32.extend8_s $push14=, $1
3835 ; NO-SIMD128-NEXT: i32.const $push82=, 255
3836 ; NO-SIMD128-NEXT: i32.and $push13=, $17, $pop82
3837 ; NO-SIMD128-NEXT: i32.shr_s $push15=, $pop14, $pop13
3838 ; NO-SIMD128-NEXT: i32.store8 0($0), $pop15
3839 ; NO-SIMD128-NEXT: i32.const $push19=, 15
3840 ; NO-SIMD128-NEXT: i32.add $push20=, $0, $pop19
3841 ; NO-SIMD128-NEXT: i32.extend8_s $push17=, $16
3842 ; NO-SIMD128-NEXT: i32.const $push81=, 255
3843 ; NO-SIMD128-NEXT: i32.and $push16=, $32, $pop81
3844 ; NO-SIMD128-NEXT: i32.shr_s $push18=, $pop17, $pop16
3845 ; NO-SIMD128-NEXT: i32.store8 0($pop20), $pop18
3846 ; NO-SIMD128-NEXT: i32.const $push24=, 14
3847 ; NO-SIMD128-NEXT: i32.add $push25=, $0, $pop24
3848 ; NO-SIMD128-NEXT: i32.extend8_s $push22=, $15
3849 ; NO-SIMD128-NEXT: i32.const $push80=, 255
3850 ; NO-SIMD128-NEXT: i32.and $push21=, $31, $pop80
3851 ; NO-SIMD128-NEXT: i32.shr_s $push23=, $pop22, $pop21
3852 ; NO-SIMD128-NEXT: i32.store8 0($pop25), $pop23
3853 ; NO-SIMD128-NEXT: i32.const $push29=, 13
3854 ; NO-SIMD128-NEXT: i32.add $push30=, $0, $pop29
3855 ; NO-SIMD128-NEXT: i32.extend8_s $push27=, $14
3856 ; NO-SIMD128-NEXT: i32.const $push79=, 255
3857 ; NO-SIMD128-NEXT: i32.and $push26=, $30, $pop79
3858 ; NO-SIMD128-NEXT: i32.shr_s $push28=, $pop27, $pop26
3859 ; NO-SIMD128-NEXT: i32.store8 0($pop30), $pop28
3860 ; NO-SIMD128-NEXT: i32.const $push34=, 12
3861 ; NO-SIMD128-NEXT: i32.add $push35=, $0, $pop34
3862 ; NO-SIMD128-NEXT: i32.extend8_s $push32=, $13
3863 ; NO-SIMD128-NEXT: i32.const $push78=, 255
3864 ; NO-SIMD128-NEXT: i32.and $push31=, $29, $pop78
3865 ; NO-SIMD128-NEXT: i32.shr_s $push33=, $pop32, $pop31
3866 ; NO-SIMD128-NEXT: i32.store8 0($pop35), $pop33
3867 ; NO-SIMD128-NEXT: i32.const $push39=, 11
3868 ; NO-SIMD128-NEXT: i32.add $push40=, $0, $pop39
3869 ; NO-SIMD128-NEXT: i32.extend8_s $push37=, $12
3870 ; NO-SIMD128-NEXT: i32.const $push77=, 255
3871 ; NO-SIMD128-NEXT: i32.and $push36=, $28, $pop77
3872 ; NO-SIMD128-NEXT: i32.shr_s $push38=, $pop37, $pop36
3873 ; NO-SIMD128-NEXT: i32.store8 0($pop40), $pop38
3874 ; NO-SIMD128-NEXT: i32.const $push44=, 10
3875 ; NO-SIMD128-NEXT: i32.add $push45=, $0, $pop44
3876 ; NO-SIMD128-NEXT: i32.extend8_s $push42=, $11
3877 ; NO-SIMD128-NEXT: i32.const $push76=, 255
3878 ; NO-SIMD128-NEXT: i32.and $push41=, $27, $pop76
3879 ; NO-SIMD128-NEXT: i32.shr_s $push43=, $pop42, $pop41
3880 ; NO-SIMD128-NEXT: i32.store8 0($pop45), $pop43
3881 ; NO-SIMD128-NEXT: i32.const $push49=, 9
3882 ; NO-SIMD128-NEXT: i32.add $push50=, $0, $pop49
3883 ; NO-SIMD128-NEXT: i32.extend8_s $push47=, $10
3884 ; NO-SIMD128-NEXT: i32.const $push75=, 255
3885 ; NO-SIMD128-NEXT: i32.and $push46=, $26, $pop75
3886 ; NO-SIMD128-NEXT: i32.shr_s $push48=, $pop47, $pop46
3887 ; NO-SIMD128-NEXT: i32.store8 0($pop50), $pop48
3888 ; NO-SIMD128-NEXT: i32.const $push54=, 7
3889 ; NO-SIMD128-NEXT: i32.add $push55=, $0, $pop54
3890 ; NO-SIMD128-NEXT: i32.extend8_s $push52=, $8
3891 ; NO-SIMD128-NEXT: i32.const $push74=, 255
3892 ; NO-SIMD128-NEXT: i32.and $push51=, $24, $pop74
3893 ; NO-SIMD128-NEXT: i32.shr_s $push53=, $pop52, $pop51
3894 ; NO-SIMD128-NEXT: i32.store8 0($pop55), $pop53
3895 ; NO-SIMD128-NEXT: i32.const $push59=, 6
3896 ; NO-SIMD128-NEXT: i32.add $push60=, $0, $pop59
3897 ; NO-SIMD128-NEXT: i32.extend8_s $push57=, $7
3898 ; NO-SIMD128-NEXT: i32.const $push73=, 255
3899 ; NO-SIMD128-NEXT: i32.and $push56=, $23, $pop73
3900 ; NO-SIMD128-NEXT: i32.shr_s $push58=, $pop57, $pop56
3901 ; NO-SIMD128-NEXT: i32.store8 0($pop60), $pop58
3902 ; NO-SIMD128-NEXT: i32.const $push64=, 5
3903 ; NO-SIMD128-NEXT: i32.add $push65=, $0, $pop64
3904 ; NO-SIMD128-NEXT: i32.extend8_s $push62=, $6
3905 ; NO-SIMD128-NEXT: i32.const $push72=, 255
3906 ; NO-SIMD128-NEXT: i32.and $push61=, $22, $pop72
3907 ; NO-SIMD128-NEXT: i32.shr_s $push63=, $pop62, $pop61
3908 ; NO-SIMD128-NEXT: i32.store8 0($pop65), $pop63
3909 ; NO-SIMD128-NEXT: i32.const $push69=, 3
3910 ; NO-SIMD128-NEXT: i32.add $push70=, $0, $pop69
3911 ; NO-SIMD128-NEXT: i32.extend8_s $push67=, $4
3912 ; NO-SIMD128-NEXT: i32.const $push71=, 255
3913 ; NO-SIMD128-NEXT: i32.and $push66=, $20, $pop71
3914 ; NO-SIMD128-NEXT: i32.shr_s $push68=, $pop67, $pop66
3915 ; NO-SIMD128-NEXT: i32.store8 0($pop70), $pop68
3916 ; NO-SIMD128-NEXT: return
3918 ; NO-SIMD128-FAST-LABEL: shr_s_vec_v16i8:
3919 ; NO-SIMD128-FAST: .functype shr_s_vec_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
3920 ; NO-SIMD128-FAST-NEXT: # %bb.0:
3921 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push2=, $1
3922 ; NO-SIMD128-FAST-NEXT: i32.const $push0=, 255
3923 ; NO-SIMD128-FAST-NEXT: i32.and $push1=, $17, $pop0
3924 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push3=, $pop2, $pop1
3925 ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop3
3926 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push5=, $2
3927 ; NO-SIMD128-FAST-NEXT: i32.const $push85=, 255
3928 ; NO-SIMD128-FAST-NEXT: i32.and $push4=, $18, $pop85
3929 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push6=, $pop5, $pop4
3930 ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop6
3931 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push8=, $3
3932 ; NO-SIMD128-FAST-NEXT: i32.const $push84=, 255
3933 ; NO-SIMD128-FAST-NEXT: i32.and $push7=, $19, $pop84
3934 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push9=, $pop8, $pop7
3935 ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop9
3936 ; NO-SIMD128-FAST-NEXT: i32.const $push10=, 3
3937 ; NO-SIMD128-FAST-NEXT: i32.add $push11=, $0, $pop10
3938 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push13=, $4
3939 ; NO-SIMD128-FAST-NEXT: i32.const $push83=, 255
3940 ; NO-SIMD128-FAST-NEXT: i32.and $push12=, $20, $pop83
3941 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push14=, $pop13, $pop12
3942 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop11), $pop14
3943 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push16=, $5
3944 ; NO-SIMD128-FAST-NEXT: i32.const $push82=, 255
3945 ; NO-SIMD128-FAST-NEXT: i32.and $push15=, $21, $pop82
3946 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push17=, $pop16, $pop15
3947 ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop17
3948 ; NO-SIMD128-FAST-NEXT: i32.const $push18=, 5
3949 ; NO-SIMD128-FAST-NEXT: i32.add $push19=, $0, $pop18
3950 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push21=, $6
3951 ; NO-SIMD128-FAST-NEXT: i32.const $push81=, 255
3952 ; NO-SIMD128-FAST-NEXT: i32.and $push20=, $22, $pop81
3953 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push22=, $pop21, $pop20
3954 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop19), $pop22
3955 ; NO-SIMD128-FAST-NEXT: i32.const $push23=, 6
3956 ; NO-SIMD128-FAST-NEXT: i32.add $push24=, $0, $pop23
3957 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push26=, $7
3958 ; NO-SIMD128-FAST-NEXT: i32.const $push80=, 255
3959 ; NO-SIMD128-FAST-NEXT: i32.and $push25=, $23, $pop80
3960 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push27=, $pop26, $pop25
3961 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop24), $pop27
3962 ; NO-SIMD128-FAST-NEXT: i32.const $push28=, 7
3963 ; NO-SIMD128-FAST-NEXT: i32.add $push29=, $0, $pop28
3964 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push31=, $8
3965 ; NO-SIMD128-FAST-NEXT: i32.const $push79=, 255
3966 ; NO-SIMD128-FAST-NEXT: i32.and $push30=, $24, $pop79
3967 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push32=, $pop31, $pop30
3968 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop29), $pop32
3969 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push34=, $9
3970 ; NO-SIMD128-FAST-NEXT: i32.const $push78=, 255
3971 ; NO-SIMD128-FAST-NEXT: i32.and $push33=, $25, $pop78
3972 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push35=, $pop34, $pop33
3973 ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop35
3974 ; NO-SIMD128-FAST-NEXT: i32.const $push36=, 9
3975 ; NO-SIMD128-FAST-NEXT: i32.add $push37=, $0, $pop36
3976 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push39=, $10
3977 ; NO-SIMD128-FAST-NEXT: i32.const $push77=, 255
3978 ; NO-SIMD128-FAST-NEXT: i32.and $push38=, $26, $pop77
3979 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push40=, $pop39, $pop38
3980 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop37), $pop40
3981 ; NO-SIMD128-FAST-NEXT: i32.const $push41=, 10
3982 ; NO-SIMD128-FAST-NEXT: i32.add $push42=, $0, $pop41
3983 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push44=, $11
3984 ; NO-SIMD128-FAST-NEXT: i32.const $push76=, 255
3985 ; NO-SIMD128-FAST-NEXT: i32.and $push43=, $27, $pop76
3986 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push45=, $pop44, $pop43
3987 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop42), $pop45
3988 ; NO-SIMD128-FAST-NEXT: i32.const $push46=, 11
3989 ; NO-SIMD128-FAST-NEXT: i32.add $push47=, $0, $pop46
3990 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push49=, $12
3991 ; NO-SIMD128-FAST-NEXT: i32.const $push75=, 255
3992 ; NO-SIMD128-FAST-NEXT: i32.and $push48=, $28, $pop75
3993 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push50=, $pop49, $pop48
3994 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop47), $pop50
3995 ; NO-SIMD128-FAST-NEXT: i32.const $push51=, 12
3996 ; NO-SIMD128-FAST-NEXT: i32.add $push52=, $0, $pop51
3997 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push54=, $13
3998 ; NO-SIMD128-FAST-NEXT: i32.const $push74=, 255
3999 ; NO-SIMD128-FAST-NEXT: i32.and $push53=, $29, $pop74
4000 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push55=, $pop54, $pop53
4001 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop52), $pop55
4002 ; NO-SIMD128-FAST-NEXT: i32.const $push56=, 13
4003 ; NO-SIMD128-FAST-NEXT: i32.add $push57=, $0, $pop56
4004 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push59=, $14
4005 ; NO-SIMD128-FAST-NEXT: i32.const $push73=, 255
4006 ; NO-SIMD128-FAST-NEXT: i32.and $push58=, $30, $pop73
4007 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push60=, $pop59, $pop58
4008 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop57), $pop60
4009 ; NO-SIMD128-FAST-NEXT: i32.const $push61=, 14
4010 ; NO-SIMD128-FAST-NEXT: i32.add $push62=, $0, $pop61
4011 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push64=, $15
4012 ; NO-SIMD128-FAST-NEXT: i32.const $push72=, 255
4013 ; NO-SIMD128-FAST-NEXT: i32.and $push63=, $31, $pop72
4014 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push65=, $pop64, $pop63
4015 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop62), $pop65
4016 ; NO-SIMD128-FAST-NEXT: i32.const $push66=, 15
4017 ; NO-SIMD128-FAST-NEXT: i32.add $push67=, $0, $pop66
4018 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push69=, $16
4019 ; NO-SIMD128-FAST-NEXT: i32.const $push71=, 255
4020 ; NO-SIMD128-FAST-NEXT: i32.and $push68=, $32, $pop71
4021 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push70=, $pop69, $pop68
4022 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop67), $pop70
4023 ; NO-SIMD128-FAST-NEXT: return
4024 %a = ashr <16 x i8> %v, %x
4028 define <16 x i8> @shr_u_v16i8(<16 x i8> %v, i8 %x) {
4029 ; SIMD128-LABEL: shr_u_v16i8:
4030 ; SIMD128: .functype shr_u_v16i8 (v128, i32) -> (v128)
4031 ; SIMD128-NEXT: # %bb.0:
4032 ; SIMD128-NEXT: i8x16.shr_u $push0=, $0, $1
4033 ; SIMD128-NEXT: return $pop0
4035 ; SIMD128-FAST-LABEL: shr_u_v16i8:
4036 ; SIMD128-FAST: .functype shr_u_v16i8 (v128, i32) -> (v128)
4037 ; SIMD128-FAST-NEXT: # %bb.0:
4038 ; SIMD128-FAST-NEXT: i8x16.shr_u $push0=, $0, $1
4039 ; SIMD128-FAST-NEXT: return $pop0
4041 ; NO-SIMD128-LABEL: shr_u_v16i8:
4042 ; NO-SIMD128: .functype shr_u_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
4043 ; NO-SIMD128-NEXT: # %bb.0:
4044 ; NO-SIMD128-NEXT: i32.const $push0=, 255
4045 ; NO-SIMD128-NEXT: i32.and $push1=, $9, $pop0
4046 ; NO-SIMD128-NEXT: i32.const $push72=, 255
4047 ; NO-SIMD128-NEXT: i32.and $push71=, $17, $pop72
4048 ; NO-SIMD128-NEXT: local.tee $push70=, $17=, $pop71
4049 ; NO-SIMD128-NEXT: i32.shr_u $push2=, $pop1, $pop70
4050 ; NO-SIMD128-NEXT: i32.store8 8($0), $pop2
4051 ; NO-SIMD128-NEXT: i32.const $push69=, 255
4052 ; NO-SIMD128-NEXT: i32.and $push3=, $5, $pop69
4053 ; NO-SIMD128-NEXT: i32.shr_u $push4=, $pop3, $17
4054 ; NO-SIMD128-NEXT: i32.store8 4($0), $pop4
4055 ; NO-SIMD128-NEXT: i32.const $push68=, 255
4056 ; NO-SIMD128-NEXT: i32.and $push5=, $3, $pop68
4057 ; NO-SIMD128-NEXT: i32.shr_u $push6=, $pop5, $17
4058 ; NO-SIMD128-NEXT: i32.store8 2($0), $pop6
4059 ; NO-SIMD128-NEXT: i32.const $push67=, 255
4060 ; NO-SIMD128-NEXT: i32.and $push7=, $2, $pop67
4061 ; NO-SIMD128-NEXT: i32.shr_u $push8=, $pop7, $17
4062 ; NO-SIMD128-NEXT: i32.store8 1($0), $pop8
4063 ; NO-SIMD128-NEXT: i32.const $push66=, 255
4064 ; NO-SIMD128-NEXT: i32.and $push9=, $1, $pop66
4065 ; NO-SIMD128-NEXT: i32.shr_u $push10=, $pop9, $17
4066 ; NO-SIMD128-NEXT: i32.store8 0($0), $pop10
4067 ; NO-SIMD128-NEXT: i32.const $push13=, 15
4068 ; NO-SIMD128-NEXT: i32.add $push14=, $0, $pop13
4069 ; NO-SIMD128-NEXT: i32.const $push65=, 255
4070 ; NO-SIMD128-NEXT: i32.and $push11=, $16, $pop65
4071 ; NO-SIMD128-NEXT: i32.shr_u $push12=, $pop11, $17
4072 ; NO-SIMD128-NEXT: i32.store8 0($pop14), $pop12
4073 ; NO-SIMD128-NEXT: i32.const $push17=, 14
4074 ; NO-SIMD128-NEXT: i32.add $push18=, $0, $pop17
4075 ; NO-SIMD128-NEXT: i32.const $push64=, 255
4076 ; NO-SIMD128-NEXT: i32.and $push15=, $15, $pop64
4077 ; NO-SIMD128-NEXT: i32.shr_u $push16=, $pop15, $17
4078 ; NO-SIMD128-NEXT: i32.store8 0($pop18), $pop16
4079 ; NO-SIMD128-NEXT: i32.const $push21=, 13
4080 ; NO-SIMD128-NEXT: i32.add $push22=, $0, $pop21
4081 ; NO-SIMD128-NEXT: i32.const $push63=, 255
4082 ; NO-SIMD128-NEXT: i32.and $push19=, $14, $pop63
4083 ; NO-SIMD128-NEXT: i32.shr_u $push20=, $pop19, $17
4084 ; NO-SIMD128-NEXT: i32.store8 0($pop22), $pop20
4085 ; NO-SIMD128-NEXT: i32.const $push25=, 12
4086 ; NO-SIMD128-NEXT: i32.add $push26=, $0, $pop25
4087 ; NO-SIMD128-NEXT: i32.const $push62=, 255
4088 ; NO-SIMD128-NEXT: i32.and $push23=, $13, $pop62
4089 ; NO-SIMD128-NEXT: i32.shr_u $push24=, $pop23, $17
4090 ; NO-SIMD128-NEXT: i32.store8 0($pop26), $pop24
4091 ; NO-SIMD128-NEXT: i32.const $push29=, 11
4092 ; NO-SIMD128-NEXT: i32.add $push30=, $0, $pop29
4093 ; NO-SIMD128-NEXT: i32.const $push61=, 255
4094 ; NO-SIMD128-NEXT: i32.and $push27=, $12, $pop61
4095 ; NO-SIMD128-NEXT: i32.shr_u $push28=, $pop27, $17
4096 ; NO-SIMD128-NEXT: i32.store8 0($pop30), $pop28
4097 ; NO-SIMD128-NEXT: i32.const $push33=, 10
4098 ; NO-SIMD128-NEXT: i32.add $push34=, $0, $pop33
4099 ; NO-SIMD128-NEXT: i32.const $push60=, 255
4100 ; NO-SIMD128-NEXT: i32.and $push31=, $11, $pop60
4101 ; NO-SIMD128-NEXT: i32.shr_u $push32=, $pop31, $17
4102 ; NO-SIMD128-NEXT: i32.store8 0($pop34), $pop32
4103 ; NO-SIMD128-NEXT: i32.const $push37=, 9
4104 ; NO-SIMD128-NEXT: i32.add $push38=, $0, $pop37
4105 ; NO-SIMD128-NEXT: i32.const $push59=, 255
4106 ; NO-SIMD128-NEXT: i32.and $push35=, $10, $pop59
4107 ; NO-SIMD128-NEXT: i32.shr_u $push36=, $pop35, $17
4108 ; NO-SIMD128-NEXT: i32.store8 0($pop38), $pop36
4109 ; NO-SIMD128-NEXT: i32.const $push41=, 7
4110 ; NO-SIMD128-NEXT: i32.add $push42=, $0, $pop41
4111 ; NO-SIMD128-NEXT: i32.const $push58=, 255
4112 ; NO-SIMD128-NEXT: i32.and $push39=, $8, $pop58
4113 ; NO-SIMD128-NEXT: i32.shr_u $push40=, $pop39, $17
4114 ; NO-SIMD128-NEXT: i32.store8 0($pop42), $pop40
4115 ; NO-SIMD128-NEXT: i32.const $push45=, 6
4116 ; NO-SIMD128-NEXT: i32.add $push46=, $0, $pop45
4117 ; NO-SIMD128-NEXT: i32.const $push57=, 255
4118 ; NO-SIMD128-NEXT: i32.and $push43=, $7, $pop57
4119 ; NO-SIMD128-NEXT: i32.shr_u $push44=, $pop43, $17
4120 ; NO-SIMD128-NEXT: i32.store8 0($pop46), $pop44
4121 ; NO-SIMD128-NEXT: i32.const $push49=, 5
4122 ; NO-SIMD128-NEXT: i32.add $push50=, $0, $pop49
4123 ; NO-SIMD128-NEXT: i32.const $push56=, 255
4124 ; NO-SIMD128-NEXT: i32.and $push47=, $6, $pop56
4125 ; NO-SIMD128-NEXT: i32.shr_u $push48=, $pop47, $17
4126 ; NO-SIMD128-NEXT: i32.store8 0($pop50), $pop48
4127 ; NO-SIMD128-NEXT: i32.const $push53=, 3
4128 ; NO-SIMD128-NEXT: i32.add $push54=, $0, $pop53
4129 ; NO-SIMD128-NEXT: i32.const $push55=, 255
4130 ; NO-SIMD128-NEXT: i32.and $push51=, $4, $pop55
4131 ; NO-SIMD128-NEXT: i32.shr_u $push52=, $pop51, $17
4132 ; NO-SIMD128-NEXT: i32.store8 0($pop54), $pop52
4133 ; NO-SIMD128-NEXT: return
4135 ; NO-SIMD128-FAST-LABEL: shr_u_v16i8:
4136 ; NO-SIMD128-FAST: .functype shr_u_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
4137 ; NO-SIMD128-FAST-NEXT: # %bb.0:
4138 ; NO-SIMD128-FAST-NEXT: i32.const $push0=, 255
4139 ; NO-SIMD128-FAST-NEXT: i32.and $push1=, $1, $pop0
4140 ; NO-SIMD128-FAST-NEXT: i32.const $push72=, 255
4141 ; NO-SIMD128-FAST-NEXT: i32.and $push71=, $17, $pop72
4142 ; NO-SIMD128-FAST-NEXT: local.tee $push70=, $1=, $pop71
4143 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push2=, $pop1, $pop70
4144 ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop2
4145 ; NO-SIMD128-FAST-NEXT: i32.const $push69=, 255
4146 ; NO-SIMD128-FAST-NEXT: i32.and $push3=, $2, $pop69
4147 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push4=, $pop3, $1
4148 ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop4
4149 ; NO-SIMD128-FAST-NEXT: i32.const $push68=, 255
4150 ; NO-SIMD128-FAST-NEXT: i32.and $push5=, $3, $pop68
4151 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push6=, $pop5, $1
4152 ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop6
4153 ; NO-SIMD128-FAST-NEXT: i32.const $push9=, 3
4154 ; NO-SIMD128-FAST-NEXT: i32.add $push10=, $0, $pop9
4155 ; NO-SIMD128-FAST-NEXT: i32.const $push67=, 255
4156 ; NO-SIMD128-FAST-NEXT: i32.and $push7=, $4, $pop67
4157 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push8=, $pop7, $1
4158 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop10), $pop8
4159 ; NO-SIMD128-FAST-NEXT: i32.const $push66=, 255
4160 ; NO-SIMD128-FAST-NEXT: i32.and $push11=, $5, $pop66
4161 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push12=, $pop11, $1
4162 ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop12
4163 ; NO-SIMD128-FAST-NEXT: i32.const $push15=, 5
4164 ; NO-SIMD128-FAST-NEXT: i32.add $push16=, $0, $pop15
4165 ; NO-SIMD128-FAST-NEXT: i32.const $push65=, 255
4166 ; NO-SIMD128-FAST-NEXT: i32.and $push13=, $6, $pop65
4167 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push14=, $pop13, $1
4168 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop16), $pop14
4169 ; NO-SIMD128-FAST-NEXT: i32.const $push19=, 6
4170 ; NO-SIMD128-FAST-NEXT: i32.add $push20=, $0, $pop19
4171 ; NO-SIMD128-FAST-NEXT: i32.const $push64=, 255
4172 ; NO-SIMD128-FAST-NEXT: i32.and $push17=, $7, $pop64
4173 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push18=, $pop17, $1
4174 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop20), $pop18
4175 ; NO-SIMD128-FAST-NEXT: i32.const $push23=, 7
4176 ; NO-SIMD128-FAST-NEXT: i32.add $push24=, $0, $pop23
4177 ; NO-SIMD128-FAST-NEXT: i32.const $push63=, 255
4178 ; NO-SIMD128-FAST-NEXT: i32.and $push21=, $8, $pop63
4179 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push22=, $pop21, $1
4180 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop24), $pop22
4181 ; NO-SIMD128-FAST-NEXT: i32.const $push62=, 255
4182 ; NO-SIMD128-FAST-NEXT: i32.and $push25=, $9, $pop62
4183 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push26=, $pop25, $1
4184 ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop26
4185 ; NO-SIMD128-FAST-NEXT: i32.const $push29=, 9
4186 ; NO-SIMD128-FAST-NEXT: i32.add $push30=, $0, $pop29
4187 ; NO-SIMD128-FAST-NEXT: i32.const $push61=, 255
4188 ; NO-SIMD128-FAST-NEXT: i32.and $push27=, $10, $pop61
4189 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push28=, $pop27, $1
4190 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop30), $pop28
4191 ; NO-SIMD128-FAST-NEXT: i32.const $push33=, 10
4192 ; NO-SIMD128-FAST-NEXT: i32.add $push34=, $0, $pop33
4193 ; NO-SIMD128-FAST-NEXT: i32.const $push60=, 255
4194 ; NO-SIMD128-FAST-NEXT: i32.and $push31=, $11, $pop60
4195 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push32=, $pop31, $1
4196 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop34), $pop32
4197 ; NO-SIMD128-FAST-NEXT: i32.const $push37=, 11
4198 ; NO-SIMD128-FAST-NEXT: i32.add $push38=, $0, $pop37
4199 ; NO-SIMD128-FAST-NEXT: i32.const $push59=, 255
4200 ; NO-SIMD128-FAST-NEXT: i32.and $push35=, $12, $pop59
4201 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push36=, $pop35, $1
4202 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop38), $pop36
4203 ; NO-SIMD128-FAST-NEXT: i32.const $push41=, 12
4204 ; NO-SIMD128-FAST-NEXT: i32.add $push42=, $0, $pop41
4205 ; NO-SIMD128-FAST-NEXT: i32.const $push58=, 255
4206 ; NO-SIMD128-FAST-NEXT: i32.and $push39=, $13, $pop58
4207 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push40=, $pop39, $1
4208 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop42), $pop40
4209 ; NO-SIMD128-FAST-NEXT: i32.const $push45=, 13
4210 ; NO-SIMD128-FAST-NEXT: i32.add $push46=, $0, $pop45
4211 ; NO-SIMD128-FAST-NEXT: i32.const $push57=, 255
4212 ; NO-SIMD128-FAST-NEXT: i32.and $push43=, $14, $pop57
4213 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push44=, $pop43, $1
4214 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop46), $pop44
4215 ; NO-SIMD128-FAST-NEXT: i32.const $push49=, 14
4216 ; NO-SIMD128-FAST-NEXT: i32.add $push50=, $0, $pop49
4217 ; NO-SIMD128-FAST-NEXT: i32.const $push56=, 255
4218 ; NO-SIMD128-FAST-NEXT: i32.and $push47=, $15, $pop56
4219 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push48=, $pop47, $1
4220 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop50), $pop48
4221 ; NO-SIMD128-FAST-NEXT: i32.const $push53=, 15
4222 ; NO-SIMD128-FAST-NEXT: i32.add $push54=, $0, $pop53
4223 ; NO-SIMD128-FAST-NEXT: i32.const $push55=, 255
4224 ; NO-SIMD128-FAST-NEXT: i32.and $push51=, $16, $pop55
4225 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push52=, $pop51, $1
4226 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop54), $pop52
4227 ; NO-SIMD128-FAST-NEXT: return
4228 %t = insertelement <16 x i8> undef, i8 %x, i32 0
4229 %s = shufflevector <16 x i8> %t, <16 x i8> undef,
4230 <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0,
4231 i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
4232 %a = lshr <16 x i8> %v, %s
4236 define <16 x i8> @shr_u_vec_v16i8(<16 x i8> %v, <16 x i8> %x) {
4237 ; SIMD128-LABEL: shr_u_vec_v16i8:
4238 ; SIMD128: .functype shr_u_vec_v16i8 (v128, v128) -> (v128)
4239 ; SIMD128-NEXT: # %bb.0:
4240 ; SIMD128-NEXT: i8x16.extract_lane_u $push7=, $0, 0
4241 ; SIMD128-NEXT: i8x16.extract_lane_u $push5=, $1, 0
4242 ; SIMD128-NEXT: i32.const $push1=, 7
4243 ; SIMD128-NEXT: i32.and $push6=, $pop5, $pop1
4244 ; SIMD128-NEXT: i32.shr_u $push8=, $pop7, $pop6
4245 ; SIMD128-NEXT: i8x16.splat $push9=, $pop8
4246 ; SIMD128-NEXT: i8x16.extract_lane_u $push3=, $0, 1
4247 ; SIMD128-NEXT: i8x16.extract_lane_u $push0=, $1, 1
4248 ; SIMD128-NEXT: i32.const $push95=, 7
4249 ; SIMD128-NEXT: i32.and $push2=, $pop0, $pop95
4250 ; SIMD128-NEXT: i32.shr_u $push4=, $pop3, $pop2
4251 ; SIMD128-NEXT: i8x16.replace_lane $push10=, $pop9, 1, $pop4
4252 ; SIMD128-NEXT: i8x16.extract_lane_u $push13=, $0, 2
4253 ; SIMD128-NEXT: i8x16.extract_lane_u $push11=, $1, 2
4254 ; SIMD128-NEXT: i32.const $push94=, 7
4255 ; SIMD128-NEXT: i32.and $push12=, $pop11, $pop94
4256 ; SIMD128-NEXT: i32.shr_u $push14=, $pop13, $pop12
4257 ; SIMD128-NEXT: i8x16.replace_lane $push15=, $pop10, 2, $pop14
4258 ; SIMD128-NEXT: i8x16.extract_lane_u $push18=, $0, 3
4259 ; SIMD128-NEXT: i8x16.extract_lane_u $push16=, $1, 3
4260 ; SIMD128-NEXT: i32.const $push93=, 7
4261 ; SIMD128-NEXT: i32.and $push17=, $pop16, $pop93
4262 ; SIMD128-NEXT: i32.shr_u $push19=, $pop18, $pop17
4263 ; SIMD128-NEXT: i8x16.replace_lane $push20=, $pop15, 3, $pop19
4264 ; SIMD128-NEXT: i8x16.extract_lane_u $push23=, $0, 4
4265 ; SIMD128-NEXT: i8x16.extract_lane_u $push21=, $1, 4
4266 ; SIMD128-NEXT: i32.const $push92=, 7
4267 ; SIMD128-NEXT: i32.and $push22=, $pop21, $pop92
4268 ; SIMD128-NEXT: i32.shr_u $push24=, $pop23, $pop22
4269 ; SIMD128-NEXT: i8x16.replace_lane $push25=, $pop20, 4, $pop24
4270 ; SIMD128-NEXT: i8x16.extract_lane_u $push28=, $0, 5
4271 ; SIMD128-NEXT: i8x16.extract_lane_u $push26=, $1, 5
4272 ; SIMD128-NEXT: i32.const $push91=, 7
4273 ; SIMD128-NEXT: i32.and $push27=, $pop26, $pop91
4274 ; SIMD128-NEXT: i32.shr_u $push29=, $pop28, $pop27
4275 ; SIMD128-NEXT: i8x16.replace_lane $push30=, $pop25, 5, $pop29
4276 ; SIMD128-NEXT: i8x16.extract_lane_u $push33=, $0, 6
4277 ; SIMD128-NEXT: i8x16.extract_lane_u $push31=, $1, 6
4278 ; SIMD128-NEXT: i32.const $push90=, 7
4279 ; SIMD128-NEXT: i32.and $push32=, $pop31, $pop90
4280 ; SIMD128-NEXT: i32.shr_u $push34=, $pop33, $pop32
4281 ; SIMD128-NEXT: i8x16.replace_lane $push35=, $pop30, 6, $pop34
4282 ; SIMD128-NEXT: i8x16.extract_lane_u $push38=, $0, 7
4283 ; SIMD128-NEXT: i8x16.extract_lane_u $push36=, $1, 7
4284 ; SIMD128-NEXT: i32.const $push89=, 7
4285 ; SIMD128-NEXT: i32.and $push37=, $pop36, $pop89
4286 ; SIMD128-NEXT: i32.shr_u $push39=, $pop38, $pop37
4287 ; SIMD128-NEXT: i8x16.replace_lane $push40=, $pop35, 7, $pop39
4288 ; SIMD128-NEXT: i8x16.extract_lane_u $push43=, $0, 8
4289 ; SIMD128-NEXT: i8x16.extract_lane_u $push41=, $1, 8
4290 ; SIMD128-NEXT: i32.const $push88=, 7
4291 ; SIMD128-NEXT: i32.and $push42=, $pop41, $pop88
4292 ; SIMD128-NEXT: i32.shr_u $push44=, $pop43, $pop42
4293 ; SIMD128-NEXT: i8x16.replace_lane $push45=, $pop40, 8, $pop44
4294 ; SIMD128-NEXT: i8x16.extract_lane_u $push48=, $0, 9
4295 ; SIMD128-NEXT: i8x16.extract_lane_u $push46=, $1, 9
4296 ; SIMD128-NEXT: i32.const $push87=, 7
4297 ; SIMD128-NEXT: i32.and $push47=, $pop46, $pop87
4298 ; SIMD128-NEXT: i32.shr_u $push49=, $pop48, $pop47
4299 ; SIMD128-NEXT: i8x16.replace_lane $push50=, $pop45, 9, $pop49
4300 ; SIMD128-NEXT: i8x16.extract_lane_u $push53=, $0, 10
4301 ; SIMD128-NEXT: i8x16.extract_lane_u $push51=, $1, 10
4302 ; SIMD128-NEXT: i32.const $push86=, 7
4303 ; SIMD128-NEXT: i32.and $push52=, $pop51, $pop86
4304 ; SIMD128-NEXT: i32.shr_u $push54=, $pop53, $pop52
4305 ; SIMD128-NEXT: i8x16.replace_lane $push55=, $pop50, 10, $pop54
4306 ; SIMD128-NEXT: i8x16.extract_lane_u $push58=, $0, 11
4307 ; SIMD128-NEXT: i8x16.extract_lane_u $push56=, $1, 11
4308 ; SIMD128-NEXT: i32.const $push85=, 7
4309 ; SIMD128-NEXT: i32.and $push57=, $pop56, $pop85
4310 ; SIMD128-NEXT: i32.shr_u $push59=, $pop58, $pop57
4311 ; SIMD128-NEXT: i8x16.replace_lane $push60=, $pop55, 11, $pop59
4312 ; SIMD128-NEXT: i8x16.extract_lane_u $push63=, $0, 12
4313 ; SIMD128-NEXT: i8x16.extract_lane_u $push61=, $1, 12
4314 ; SIMD128-NEXT: i32.const $push84=, 7
4315 ; SIMD128-NEXT: i32.and $push62=, $pop61, $pop84
4316 ; SIMD128-NEXT: i32.shr_u $push64=, $pop63, $pop62
4317 ; SIMD128-NEXT: i8x16.replace_lane $push65=, $pop60, 12, $pop64
4318 ; SIMD128-NEXT: i8x16.extract_lane_u $push68=, $0, 13
4319 ; SIMD128-NEXT: i8x16.extract_lane_u $push66=, $1, 13
4320 ; SIMD128-NEXT: i32.const $push83=, 7
4321 ; SIMD128-NEXT: i32.and $push67=, $pop66, $pop83
4322 ; SIMD128-NEXT: i32.shr_u $push69=, $pop68, $pop67
4323 ; SIMD128-NEXT: i8x16.replace_lane $push70=, $pop65, 13, $pop69
4324 ; SIMD128-NEXT: i8x16.extract_lane_u $push73=, $0, 14
4325 ; SIMD128-NEXT: i8x16.extract_lane_u $push71=, $1, 14
4326 ; SIMD128-NEXT: i32.const $push82=, 7
4327 ; SIMD128-NEXT: i32.and $push72=, $pop71, $pop82
4328 ; SIMD128-NEXT: i32.shr_u $push74=, $pop73, $pop72
4329 ; SIMD128-NEXT: i8x16.replace_lane $push75=, $pop70, 14, $pop74
4330 ; SIMD128-NEXT: i8x16.extract_lane_u $push78=, $0, 15
4331 ; SIMD128-NEXT: i8x16.extract_lane_u $push76=, $1, 15
4332 ; SIMD128-NEXT: i32.const $push81=, 7
4333 ; SIMD128-NEXT: i32.and $push77=, $pop76, $pop81
4334 ; SIMD128-NEXT: i32.shr_u $push79=, $pop78, $pop77
4335 ; SIMD128-NEXT: i8x16.replace_lane $push80=, $pop75, 15, $pop79
4336 ; SIMD128-NEXT: return $pop80
4338 ; SIMD128-FAST-LABEL: shr_u_vec_v16i8:
4339 ; SIMD128-FAST: .functype shr_u_vec_v16i8 (v128, v128) -> (v128)
4340 ; SIMD128-FAST-NEXT: # %bb.0:
4341 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push8=, $0, 0
4342 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push6=, $1, 0
4343 ; SIMD128-FAST-NEXT: i32.const $push2=, 7
4344 ; SIMD128-FAST-NEXT: i32.and $push7=, $pop6, $pop2
4345 ; SIMD128-FAST-NEXT: i32.shr_u $push9=, $pop8, $pop7
4346 ; SIMD128-FAST-NEXT: i8x16.splat $push10=, $pop9
4347 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push4=, $0, 1
4348 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push1=, $1, 1
4349 ; SIMD128-FAST-NEXT: i32.const $push95=, 7
4350 ; SIMD128-FAST-NEXT: i32.and $push3=, $pop1, $pop95
4351 ; SIMD128-FAST-NEXT: i32.shr_u $push5=, $pop4, $pop3
4352 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push11=, $pop10, 1, $pop5
4353 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push14=, $0, 2
4354 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push12=, $1, 2
4355 ; SIMD128-FAST-NEXT: i32.const $push94=, 7
4356 ; SIMD128-FAST-NEXT: i32.and $push13=, $pop12, $pop94
4357 ; SIMD128-FAST-NEXT: i32.shr_u $push15=, $pop14, $pop13
4358 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push16=, $pop11, 2, $pop15
4359 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push19=, $0, 3
4360 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push17=, $1, 3
4361 ; SIMD128-FAST-NEXT: i32.const $push93=, 7
4362 ; SIMD128-FAST-NEXT: i32.and $push18=, $pop17, $pop93
4363 ; SIMD128-FAST-NEXT: i32.shr_u $push20=, $pop19, $pop18
4364 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push21=, $pop16, 3, $pop20
4365 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push24=, $0, 4
4366 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push22=, $1, 4
4367 ; SIMD128-FAST-NEXT: i32.const $push92=, 7
4368 ; SIMD128-FAST-NEXT: i32.and $push23=, $pop22, $pop92
4369 ; SIMD128-FAST-NEXT: i32.shr_u $push25=, $pop24, $pop23
4370 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push26=, $pop21, 4, $pop25
4371 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push29=, $0, 5
4372 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push27=, $1, 5
4373 ; SIMD128-FAST-NEXT: i32.const $push91=, 7
4374 ; SIMD128-FAST-NEXT: i32.and $push28=, $pop27, $pop91
4375 ; SIMD128-FAST-NEXT: i32.shr_u $push30=, $pop29, $pop28
4376 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push31=, $pop26, 5, $pop30
4377 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push34=, $0, 6
4378 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push32=, $1, 6
4379 ; SIMD128-FAST-NEXT: i32.const $push90=, 7
4380 ; SIMD128-FAST-NEXT: i32.and $push33=, $pop32, $pop90
4381 ; SIMD128-FAST-NEXT: i32.shr_u $push35=, $pop34, $pop33
4382 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push36=, $pop31, 6, $pop35
4383 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push39=, $0, 7
4384 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push37=, $1, 7
4385 ; SIMD128-FAST-NEXT: i32.const $push89=, 7
4386 ; SIMD128-FAST-NEXT: i32.and $push38=, $pop37, $pop89
4387 ; SIMD128-FAST-NEXT: i32.shr_u $push40=, $pop39, $pop38
4388 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push41=, $pop36, 7, $pop40
4389 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push44=, $0, 8
4390 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push42=, $1, 8
4391 ; SIMD128-FAST-NEXT: i32.const $push88=, 7
4392 ; SIMD128-FAST-NEXT: i32.and $push43=, $pop42, $pop88
4393 ; SIMD128-FAST-NEXT: i32.shr_u $push45=, $pop44, $pop43
4394 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push46=, $pop41, 8, $pop45
4395 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push49=, $0, 9
4396 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push47=, $1, 9
4397 ; SIMD128-FAST-NEXT: i32.const $push87=, 7
4398 ; SIMD128-FAST-NEXT: i32.and $push48=, $pop47, $pop87
4399 ; SIMD128-FAST-NEXT: i32.shr_u $push50=, $pop49, $pop48
4400 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push51=, $pop46, 9, $pop50
4401 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push54=, $0, 10
4402 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push52=, $1, 10
4403 ; SIMD128-FAST-NEXT: i32.const $push86=, 7
4404 ; SIMD128-FAST-NEXT: i32.and $push53=, $pop52, $pop86
4405 ; SIMD128-FAST-NEXT: i32.shr_u $push55=, $pop54, $pop53
4406 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push56=, $pop51, 10, $pop55
4407 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push59=, $0, 11
4408 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push57=, $1, 11
4409 ; SIMD128-FAST-NEXT: i32.const $push85=, 7
4410 ; SIMD128-FAST-NEXT: i32.and $push58=, $pop57, $pop85
4411 ; SIMD128-FAST-NEXT: i32.shr_u $push60=, $pop59, $pop58
4412 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push61=, $pop56, 11, $pop60
4413 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push64=, $0, 12
4414 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push62=, $1, 12
4415 ; SIMD128-FAST-NEXT: i32.const $push84=, 7
4416 ; SIMD128-FAST-NEXT: i32.and $push63=, $pop62, $pop84
4417 ; SIMD128-FAST-NEXT: i32.shr_u $push65=, $pop64, $pop63
4418 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push66=, $pop61, 12, $pop65
4419 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push69=, $0, 13
4420 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push67=, $1, 13
4421 ; SIMD128-FAST-NEXT: i32.const $push83=, 7
4422 ; SIMD128-FAST-NEXT: i32.and $push68=, $pop67, $pop83
4423 ; SIMD128-FAST-NEXT: i32.shr_u $push70=, $pop69, $pop68
4424 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push71=, $pop66, 13, $pop70
4425 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push74=, $0, 14
4426 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push72=, $1, 14
4427 ; SIMD128-FAST-NEXT: i32.const $push82=, 7
4428 ; SIMD128-FAST-NEXT: i32.and $push73=, $pop72, $pop82
4429 ; SIMD128-FAST-NEXT: i32.shr_u $push75=, $pop74, $pop73
4430 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push76=, $pop71, 14, $pop75
4431 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push79=, $0, 15
4432 ; SIMD128-FAST-NEXT: i8x16.extract_lane_u $push77=, $1, 15
4433 ; SIMD128-FAST-NEXT: i32.const $push81=, 7
4434 ; SIMD128-FAST-NEXT: i32.and $push78=, $pop77, $pop81
4435 ; SIMD128-FAST-NEXT: i32.shr_u $push80=, $pop79, $pop78
4436 ; SIMD128-FAST-NEXT: i8x16.replace_lane $push0=, $pop76, 15, $pop80
4437 ; SIMD128-FAST-NEXT: return $pop0
4439 ; NO-SIMD128-LABEL: shr_u_vec_v16i8:
4440 ; NO-SIMD128: .functype shr_u_vec_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
4441 ; NO-SIMD128-NEXT: # %bb.0:
4442 ; NO-SIMD128-NEXT: i32.const $push0=, 255
4443 ; NO-SIMD128-NEXT: i32.and $push2=, $9, $pop0
4444 ; NO-SIMD128-NEXT: i32.const $push101=, 255
4445 ; NO-SIMD128-NEXT: i32.and $push1=, $25, $pop101
4446 ; NO-SIMD128-NEXT: i32.shr_u $push3=, $pop2, $pop1
4447 ; NO-SIMD128-NEXT: i32.store8 8($0), $pop3
4448 ; NO-SIMD128-NEXT: i32.const $push100=, 255
4449 ; NO-SIMD128-NEXT: i32.and $push5=, $5, $pop100
4450 ; NO-SIMD128-NEXT: i32.const $push99=, 255
4451 ; NO-SIMD128-NEXT: i32.and $push4=, $21, $pop99
4452 ; NO-SIMD128-NEXT: i32.shr_u $push6=, $pop5, $pop4
4453 ; NO-SIMD128-NEXT: i32.store8 4($0), $pop6
4454 ; NO-SIMD128-NEXT: i32.const $push98=, 255
4455 ; NO-SIMD128-NEXT: i32.and $push8=, $3, $pop98
4456 ; NO-SIMD128-NEXT: i32.const $push97=, 255
4457 ; NO-SIMD128-NEXT: i32.and $push7=, $19, $pop97
4458 ; NO-SIMD128-NEXT: i32.shr_u $push9=, $pop8, $pop7
4459 ; NO-SIMD128-NEXT: i32.store8 2($0), $pop9
4460 ; NO-SIMD128-NEXT: i32.const $push96=, 255
4461 ; NO-SIMD128-NEXT: i32.and $push11=, $2, $pop96
4462 ; NO-SIMD128-NEXT: i32.const $push95=, 255
4463 ; NO-SIMD128-NEXT: i32.and $push10=, $18, $pop95
4464 ; NO-SIMD128-NEXT: i32.shr_u $push12=, $pop11, $pop10
4465 ; NO-SIMD128-NEXT: i32.store8 1($0), $pop12
4466 ; NO-SIMD128-NEXT: i32.const $push94=, 255
4467 ; NO-SIMD128-NEXT: i32.and $push14=, $1, $pop94
4468 ; NO-SIMD128-NEXT: i32.const $push93=, 255
4469 ; NO-SIMD128-NEXT: i32.and $push13=, $17, $pop93
4470 ; NO-SIMD128-NEXT: i32.shr_u $push15=, $pop14, $pop13
4471 ; NO-SIMD128-NEXT: i32.store8 0($0), $pop15
4472 ; NO-SIMD128-NEXT: i32.const $push19=, 15
4473 ; NO-SIMD128-NEXT: i32.add $push20=, $0, $pop19
4474 ; NO-SIMD128-NEXT: i32.const $push92=, 255
4475 ; NO-SIMD128-NEXT: i32.and $push17=, $16, $pop92
4476 ; NO-SIMD128-NEXT: i32.const $push91=, 255
4477 ; NO-SIMD128-NEXT: i32.and $push16=, $32, $pop91
4478 ; NO-SIMD128-NEXT: i32.shr_u $push18=, $pop17, $pop16
4479 ; NO-SIMD128-NEXT: i32.store8 0($pop20), $pop18
4480 ; NO-SIMD128-NEXT: i32.const $push24=, 14
4481 ; NO-SIMD128-NEXT: i32.add $push25=, $0, $pop24
4482 ; NO-SIMD128-NEXT: i32.const $push90=, 255
4483 ; NO-SIMD128-NEXT: i32.and $push22=, $15, $pop90
4484 ; NO-SIMD128-NEXT: i32.const $push89=, 255
4485 ; NO-SIMD128-NEXT: i32.and $push21=, $31, $pop89
4486 ; NO-SIMD128-NEXT: i32.shr_u $push23=, $pop22, $pop21
4487 ; NO-SIMD128-NEXT: i32.store8 0($pop25), $pop23
4488 ; NO-SIMD128-NEXT: i32.const $push29=, 13
4489 ; NO-SIMD128-NEXT: i32.add $push30=, $0, $pop29
4490 ; NO-SIMD128-NEXT: i32.const $push88=, 255
4491 ; NO-SIMD128-NEXT: i32.and $push27=, $14, $pop88
4492 ; NO-SIMD128-NEXT: i32.const $push87=, 255
4493 ; NO-SIMD128-NEXT: i32.and $push26=, $30, $pop87
4494 ; NO-SIMD128-NEXT: i32.shr_u $push28=, $pop27, $pop26
4495 ; NO-SIMD128-NEXT: i32.store8 0($pop30), $pop28
4496 ; NO-SIMD128-NEXT: i32.const $push34=, 12
4497 ; NO-SIMD128-NEXT: i32.add $push35=, $0, $pop34
4498 ; NO-SIMD128-NEXT: i32.const $push86=, 255
4499 ; NO-SIMD128-NEXT: i32.and $push32=, $13, $pop86
4500 ; NO-SIMD128-NEXT: i32.const $push85=, 255
4501 ; NO-SIMD128-NEXT: i32.and $push31=, $29, $pop85
4502 ; NO-SIMD128-NEXT: i32.shr_u $push33=, $pop32, $pop31
4503 ; NO-SIMD128-NEXT: i32.store8 0($pop35), $pop33
4504 ; NO-SIMD128-NEXT: i32.const $push39=, 11
4505 ; NO-SIMD128-NEXT: i32.add $push40=, $0, $pop39
4506 ; NO-SIMD128-NEXT: i32.const $push84=, 255
4507 ; NO-SIMD128-NEXT: i32.and $push37=, $12, $pop84
4508 ; NO-SIMD128-NEXT: i32.const $push83=, 255
4509 ; NO-SIMD128-NEXT: i32.and $push36=, $28, $pop83
4510 ; NO-SIMD128-NEXT: i32.shr_u $push38=, $pop37, $pop36
4511 ; NO-SIMD128-NEXT: i32.store8 0($pop40), $pop38
4512 ; NO-SIMD128-NEXT: i32.const $push44=, 10
4513 ; NO-SIMD128-NEXT: i32.add $push45=, $0, $pop44
4514 ; NO-SIMD128-NEXT: i32.const $push82=, 255
4515 ; NO-SIMD128-NEXT: i32.and $push42=, $11, $pop82
4516 ; NO-SIMD128-NEXT: i32.const $push81=, 255
4517 ; NO-SIMD128-NEXT: i32.and $push41=, $27, $pop81
4518 ; NO-SIMD128-NEXT: i32.shr_u $push43=, $pop42, $pop41
4519 ; NO-SIMD128-NEXT: i32.store8 0($pop45), $pop43
4520 ; NO-SIMD128-NEXT: i32.const $push49=, 9
4521 ; NO-SIMD128-NEXT: i32.add $push50=, $0, $pop49
4522 ; NO-SIMD128-NEXT: i32.const $push80=, 255
4523 ; NO-SIMD128-NEXT: i32.and $push47=, $10, $pop80
4524 ; NO-SIMD128-NEXT: i32.const $push79=, 255
4525 ; NO-SIMD128-NEXT: i32.and $push46=, $26, $pop79
4526 ; NO-SIMD128-NEXT: i32.shr_u $push48=, $pop47, $pop46
4527 ; NO-SIMD128-NEXT: i32.store8 0($pop50), $pop48
4528 ; NO-SIMD128-NEXT: i32.const $push54=, 7
4529 ; NO-SIMD128-NEXT: i32.add $push55=, $0, $pop54
4530 ; NO-SIMD128-NEXT: i32.const $push78=, 255
4531 ; NO-SIMD128-NEXT: i32.and $push52=, $8, $pop78
4532 ; NO-SIMD128-NEXT: i32.const $push77=, 255
4533 ; NO-SIMD128-NEXT: i32.and $push51=, $24, $pop77
4534 ; NO-SIMD128-NEXT: i32.shr_u $push53=, $pop52, $pop51
4535 ; NO-SIMD128-NEXT: i32.store8 0($pop55), $pop53
4536 ; NO-SIMD128-NEXT: i32.const $push59=, 6
4537 ; NO-SIMD128-NEXT: i32.add $push60=, $0, $pop59
4538 ; NO-SIMD128-NEXT: i32.const $push76=, 255
4539 ; NO-SIMD128-NEXT: i32.and $push57=, $7, $pop76
4540 ; NO-SIMD128-NEXT: i32.const $push75=, 255
4541 ; NO-SIMD128-NEXT: i32.and $push56=, $23, $pop75
4542 ; NO-SIMD128-NEXT: i32.shr_u $push58=, $pop57, $pop56
4543 ; NO-SIMD128-NEXT: i32.store8 0($pop60), $pop58
4544 ; NO-SIMD128-NEXT: i32.const $push64=, 5
4545 ; NO-SIMD128-NEXT: i32.add $push65=, $0, $pop64
4546 ; NO-SIMD128-NEXT: i32.const $push74=, 255
4547 ; NO-SIMD128-NEXT: i32.and $push62=, $6, $pop74
4548 ; NO-SIMD128-NEXT: i32.const $push73=, 255
4549 ; NO-SIMD128-NEXT: i32.and $push61=, $22, $pop73
4550 ; NO-SIMD128-NEXT: i32.shr_u $push63=, $pop62, $pop61
4551 ; NO-SIMD128-NEXT: i32.store8 0($pop65), $pop63
4552 ; NO-SIMD128-NEXT: i32.const $push69=, 3
4553 ; NO-SIMD128-NEXT: i32.add $push70=, $0, $pop69
4554 ; NO-SIMD128-NEXT: i32.const $push72=, 255
4555 ; NO-SIMD128-NEXT: i32.and $push67=, $4, $pop72
4556 ; NO-SIMD128-NEXT: i32.const $push71=, 255
4557 ; NO-SIMD128-NEXT: i32.and $push66=, $20, $pop71
4558 ; NO-SIMD128-NEXT: i32.shr_u $push68=, $pop67, $pop66
4559 ; NO-SIMD128-NEXT: i32.store8 0($pop70), $pop68
4560 ; NO-SIMD128-NEXT: return
4562 ; NO-SIMD128-FAST-LABEL: shr_u_vec_v16i8:
4563 ; NO-SIMD128-FAST: .functype shr_u_vec_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
4564 ; NO-SIMD128-FAST-NEXT: # %bb.0:
4565 ; NO-SIMD128-FAST-NEXT: i32.const $push0=, 255
4566 ; NO-SIMD128-FAST-NEXT: i32.and $push2=, $1, $pop0
4567 ; NO-SIMD128-FAST-NEXT: i32.const $push101=, 255
4568 ; NO-SIMD128-FAST-NEXT: i32.and $push1=, $17, $pop101
4569 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push3=, $pop2, $pop1
4570 ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop3
4571 ; NO-SIMD128-FAST-NEXT: i32.const $push100=, 255
4572 ; NO-SIMD128-FAST-NEXT: i32.and $push5=, $2, $pop100
4573 ; NO-SIMD128-FAST-NEXT: i32.const $push99=, 255
4574 ; NO-SIMD128-FAST-NEXT: i32.and $push4=, $18, $pop99
4575 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push6=, $pop5, $pop4
4576 ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop6
4577 ; NO-SIMD128-FAST-NEXT: i32.const $push98=, 255
4578 ; NO-SIMD128-FAST-NEXT: i32.and $push8=, $3, $pop98
4579 ; NO-SIMD128-FAST-NEXT: i32.const $push97=, 255
4580 ; NO-SIMD128-FAST-NEXT: i32.and $push7=, $19, $pop97
4581 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push9=, $pop8, $pop7
4582 ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop9
4583 ; NO-SIMD128-FAST-NEXT: i32.const $push13=, 3
4584 ; NO-SIMD128-FAST-NEXT: i32.add $push14=, $0, $pop13
4585 ; NO-SIMD128-FAST-NEXT: i32.const $push96=, 255
4586 ; NO-SIMD128-FAST-NEXT: i32.and $push11=, $4, $pop96
4587 ; NO-SIMD128-FAST-NEXT: i32.const $push95=, 255
4588 ; NO-SIMD128-FAST-NEXT: i32.and $push10=, $20, $pop95
4589 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push12=, $pop11, $pop10
4590 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop14), $pop12
4591 ; NO-SIMD128-FAST-NEXT: i32.const $push94=, 255
4592 ; NO-SIMD128-FAST-NEXT: i32.and $push16=, $5, $pop94
4593 ; NO-SIMD128-FAST-NEXT: i32.const $push93=, 255
4594 ; NO-SIMD128-FAST-NEXT: i32.and $push15=, $21, $pop93
4595 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push17=, $pop16, $pop15
4596 ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop17
4597 ; NO-SIMD128-FAST-NEXT: i32.const $push21=, 5
4598 ; NO-SIMD128-FAST-NEXT: i32.add $push22=, $0, $pop21
4599 ; NO-SIMD128-FAST-NEXT: i32.const $push92=, 255
4600 ; NO-SIMD128-FAST-NEXT: i32.and $push19=, $6, $pop92
4601 ; NO-SIMD128-FAST-NEXT: i32.const $push91=, 255
4602 ; NO-SIMD128-FAST-NEXT: i32.and $push18=, $22, $pop91
4603 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push20=, $pop19, $pop18
4604 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop22), $pop20
4605 ; NO-SIMD128-FAST-NEXT: i32.const $push26=, 6
4606 ; NO-SIMD128-FAST-NEXT: i32.add $push27=, $0, $pop26
4607 ; NO-SIMD128-FAST-NEXT: i32.const $push90=, 255
4608 ; NO-SIMD128-FAST-NEXT: i32.and $push24=, $7, $pop90
4609 ; NO-SIMD128-FAST-NEXT: i32.const $push89=, 255
4610 ; NO-SIMD128-FAST-NEXT: i32.and $push23=, $23, $pop89
4611 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push25=, $pop24, $pop23
4612 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop27), $pop25
4613 ; NO-SIMD128-FAST-NEXT: i32.const $push31=, 7
4614 ; NO-SIMD128-FAST-NEXT: i32.add $push32=, $0, $pop31
4615 ; NO-SIMD128-FAST-NEXT: i32.const $push88=, 255
4616 ; NO-SIMD128-FAST-NEXT: i32.and $push29=, $8, $pop88
4617 ; NO-SIMD128-FAST-NEXT: i32.const $push87=, 255
4618 ; NO-SIMD128-FAST-NEXT: i32.and $push28=, $24, $pop87
4619 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push30=, $pop29, $pop28
4620 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop32), $pop30
4621 ; NO-SIMD128-FAST-NEXT: i32.const $push86=, 255
4622 ; NO-SIMD128-FAST-NEXT: i32.and $push34=, $9, $pop86
4623 ; NO-SIMD128-FAST-NEXT: i32.const $push85=, 255
4624 ; NO-SIMD128-FAST-NEXT: i32.and $push33=, $25, $pop85
4625 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push35=, $pop34, $pop33
4626 ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop35
4627 ; NO-SIMD128-FAST-NEXT: i32.const $push39=, 9
4628 ; NO-SIMD128-FAST-NEXT: i32.add $push40=, $0, $pop39
4629 ; NO-SIMD128-FAST-NEXT: i32.const $push84=, 255
4630 ; NO-SIMD128-FAST-NEXT: i32.and $push37=, $10, $pop84
4631 ; NO-SIMD128-FAST-NEXT: i32.const $push83=, 255
4632 ; NO-SIMD128-FAST-NEXT: i32.and $push36=, $26, $pop83
4633 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push38=, $pop37, $pop36
4634 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop40), $pop38
4635 ; NO-SIMD128-FAST-NEXT: i32.const $push44=, 10
4636 ; NO-SIMD128-FAST-NEXT: i32.add $push45=, $0, $pop44
4637 ; NO-SIMD128-FAST-NEXT: i32.const $push82=, 255
4638 ; NO-SIMD128-FAST-NEXT: i32.and $push42=, $11, $pop82
4639 ; NO-SIMD128-FAST-NEXT: i32.const $push81=, 255
4640 ; NO-SIMD128-FAST-NEXT: i32.and $push41=, $27, $pop81
4641 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push43=, $pop42, $pop41
4642 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop45), $pop43
4643 ; NO-SIMD128-FAST-NEXT: i32.const $push49=, 11
4644 ; NO-SIMD128-FAST-NEXT: i32.add $push50=, $0, $pop49
4645 ; NO-SIMD128-FAST-NEXT: i32.const $push80=, 255
4646 ; NO-SIMD128-FAST-NEXT: i32.and $push47=, $12, $pop80
4647 ; NO-SIMD128-FAST-NEXT: i32.const $push79=, 255
4648 ; NO-SIMD128-FAST-NEXT: i32.and $push46=, $28, $pop79
4649 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push48=, $pop47, $pop46
4650 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop50), $pop48
4651 ; NO-SIMD128-FAST-NEXT: i32.const $push54=, 12
4652 ; NO-SIMD128-FAST-NEXT: i32.add $push55=, $0, $pop54
4653 ; NO-SIMD128-FAST-NEXT: i32.const $push78=, 255
4654 ; NO-SIMD128-FAST-NEXT: i32.and $push52=, $13, $pop78
4655 ; NO-SIMD128-FAST-NEXT: i32.const $push77=, 255
4656 ; NO-SIMD128-FAST-NEXT: i32.and $push51=, $29, $pop77
4657 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push53=, $pop52, $pop51
4658 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop55), $pop53
4659 ; NO-SIMD128-FAST-NEXT: i32.const $push59=, 13
4660 ; NO-SIMD128-FAST-NEXT: i32.add $push60=, $0, $pop59
4661 ; NO-SIMD128-FAST-NEXT: i32.const $push76=, 255
4662 ; NO-SIMD128-FAST-NEXT: i32.and $push57=, $14, $pop76
4663 ; NO-SIMD128-FAST-NEXT: i32.const $push75=, 255
4664 ; NO-SIMD128-FAST-NEXT: i32.and $push56=, $30, $pop75
4665 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push58=, $pop57, $pop56
4666 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop60), $pop58
4667 ; NO-SIMD128-FAST-NEXT: i32.const $push64=, 14
4668 ; NO-SIMD128-FAST-NEXT: i32.add $push65=, $0, $pop64
4669 ; NO-SIMD128-FAST-NEXT: i32.const $push74=, 255
4670 ; NO-SIMD128-FAST-NEXT: i32.and $push62=, $15, $pop74
4671 ; NO-SIMD128-FAST-NEXT: i32.const $push73=, 255
4672 ; NO-SIMD128-FAST-NEXT: i32.and $push61=, $31, $pop73
4673 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push63=, $pop62, $pop61
4674 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop65), $pop63
4675 ; NO-SIMD128-FAST-NEXT: i32.const $push69=, 15
4676 ; NO-SIMD128-FAST-NEXT: i32.add $push70=, $0, $pop69
4677 ; NO-SIMD128-FAST-NEXT: i32.const $push72=, 255
4678 ; NO-SIMD128-FAST-NEXT: i32.and $push67=, $16, $pop72
4679 ; NO-SIMD128-FAST-NEXT: i32.const $push71=, 255
4680 ; NO-SIMD128-FAST-NEXT: i32.and $push66=, $32, $pop71
4681 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push68=, $pop67, $pop66
4682 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop70), $pop68
4683 ; NO-SIMD128-FAST-NEXT: return
4684 %a = lshr <16 x i8> %v, %x
4688 define <16 x i8> @and_v16i8(<16 x i8> %x, <16 x i8> %y) {
4689 ; SIMD128-LABEL: and_v16i8:
4690 ; SIMD128: .functype and_v16i8 (v128, v128) -> (v128)
4691 ; SIMD128-NEXT: # %bb.0:
4692 ; SIMD128-NEXT: v128.and $push0=, $0, $1
4693 ; SIMD128-NEXT: return $pop0
4695 ; SIMD128-FAST-LABEL: and_v16i8:
4696 ; SIMD128-FAST: .functype and_v16i8 (v128, v128) -> (v128)
4697 ; SIMD128-FAST-NEXT: # %bb.0:
4698 ; SIMD128-FAST-NEXT: v128.and $push0=, $0, $1
4699 ; SIMD128-FAST-NEXT: return $pop0
4701 ; NO-SIMD128-LABEL: and_v16i8:
4702 ; NO-SIMD128: .functype and_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
4703 ; NO-SIMD128-NEXT: # %bb.0:
4704 ; NO-SIMD128-NEXT: i32.and $push0=, $9, $25
4705 ; NO-SIMD128-NEXT: i32.store8 8($0), $pop0
4706 ; NO-SIMD128-NEXT: i32.and $push1=, $5, $21
4707 ; NO-SIMD128-NEXT: i32.store8 4($0), $pop1
4708 ; NO-SIMD128-NEXT: i32.and $push2=, $3, $19
4709 ; NO-SIMD128-NEXT: i32.store8 2($0), $pop2
4710 ; NO-SIMD128-NEXT: i32.and $push3=, $2, $18
4711 ; NO-SIMD128-NEXT: i32.store8 1($0), $pop3
4712 ; NO-SIMD128-NEXT: i32.and $push4=, $1, $17
4713 ; NO-SIMD128-NEXT: i32.store8 0($0), $pop4
4714 ; NO-SIMD128-NEXT: i32.const $push6=, 15
4715 ; NO-SIMD128-NEXT: i32.add $push7=, $0, $pop6
4716 ; NO-SIMD128-NEXT: i32.and $push5=, $16, $32
4717 ; NO-SIMD128-NEXT: i32.store8 0($pop7), $pop5
4718 ; NO-SIMD128-NEXT: i32.const $push9=, 14
4719 ; NO-SIMD128-NEXT: i32.add $push10=, $0, $pop9
4720 ; NO-SIMD128-NEXT: i32.and $push8=, $15, $31
4721 ; NO-SIMD128-NEXT: i32.store8 0($pop10), $pop8
4722 ; NO-SIMD128-NEXT: i32.const $push12=, 13
4723 ; NO-SIMD128-NEXT: i32.add $push13=, $0, $pop12
4724 ; NO-SIMD128-NEXT: i32.and $push11=, $14, $30
4725 ; NO-SIMD128-NEXT: i32.store8 0($pop13), $pop11
4726 ; NO-SIMD128-NEXT: i32.const $push15=, 12
4727 ; NO-SIMD128-NEXT: i32.add $push16=, $0, $pop15
4728 ; NO-SIMD128-NEXT: i32.and $push14=, $13, $29
4729 ; NO-SIMD128-NEXT: i32.store8 0($pop16), $pop14
4730 ; NO-SIMD128-NEXT: i32.const $push18=, 11
4731 ; NO-SIMD128-NEXT: i32.add $push19=, $0, $pop18
4732 ; NO-SIMD128-NEXT: i32.and $push17=, $12, $28
4733 ; NO-SIMD128-NEXT: i32.store8 0($pop19), $pop17
4734 ; NO-SIMD128-NEXT: i32.const $push21=, 10
4735 ; NO-SIMD128-NEXT: i32.add $push22=, $0, $pop21
4736 ; NO-SIMD128-NEXT: i32.and $push20=, $11, $27
4737 ; NO-SIMD128-NEXT: i32.store8 0($pop22), $pop20
4738 ; NO-SIMD128-NEXT: i32.const $push24=, 9
4739 ; NO-SIMD128-NEXT: i32.add $push25=, $0, $pop24
4740 ; NO-SIMD128-NEXT: i32.and $push23=, $10, $26
4741 ; NO-SIMD128-NEXT: i32.store8 0($pop25), $pop23
4742 ; NO-SIMD128-NEXT: i32.const $push27=, 7
4743 ; NO-SIMD128-NEXT: i32.add $push28=, $0, $pop27
4744 ; NO-SIMD128-NEXT: i32.and $push26=, $8, $24
4745 ; NO-SIMD128-NEXT: i32.store8 0($pop28), $pop26
4746 ; NO-SIMD128-NEXT: i32.const $push30=, 6
4747 ; NO-SIMD128-NEXT: i32.add $push31=, $0, $pop30
4748 ; NO-SIMD128-NEXT: i32.and $push29=, $7, $23
4749 ; NO-SIMD128-NEXT: i32.store8 0($pop31), $pop29
4750 ; NO-SIMD128-NEXT: i32.const $push33=, 5
4751 ; NO-SIMD128-NEXT: i32.add $push34=, $0, $pop33
4752 ; NO-SIMD128-NEXT: i32.and $push32=, $6, $22
4753 ; NO-SIMD128-NEXT: i32.store8 0($pop34), $pop32
4754 ; NO-SIMD128-NEXT: i32.const $push36=, 3
4755 ; NO-SIMD128-NEXT: i32.add $push37=, $0, $pop36
4756 ; NO-SIMD128-NEXT: i32.and $push35=, $4, $20
4757 ; NO-SIMD128-NEXT: i32.store8 0($pop37), $pop35
4758 ; NO-SIMD128-NEXT: return
4760 ; NO-SIMD128-FAST-LABEL: and_v16i8:
4761 ; NO-SIMD128-FAST: .functype and_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
4762 ; NO-SIMD128-FAST-NEXT: # %bb.0:
4763 ; NO-SIMD128-FAST-NEXT: i32.and $push0=, $1, $17
4764 ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop0
4765 ; NO-SIMD128-FAST-NEXT: i32.and $push1=, $2, $18
4766 ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop1
4767 ; NO-SIMD128-FAST-NEXT: i32.and $push2=, $3, $19
4768 ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop2
4769 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 3
4770 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
4771 ; NO-SIMD128-FAST-NEXT: i32.and $push5=, $4, $20
4772 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop4), $pop5
4773 ; NO-SIMD128-FAST-NEXT: i32.and $push6=, $5, $21
4774 ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop6
4775 ; NO-SIMD128-FAST-NEXT: i32.const $push7=, 5
4776 ; NO-SIMD128-FAST-NEXT: i32.add $push8=, $0, $pop7
4777 ; NO-SIMD128-FAST-NEXT: i32.and $push9=, $6, $22
4778 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop8), $pop9
4779 ; NO-SIMD128-FAST-NEXT: i32.const $push10=, 6
4780 ; NO-SIMD128-FAST-NEXT: i32.add $push11=, $0, $pop10
4781 ; NO-SIMD128-FAST-NEXT: i32.and $push12=, $7, $23
4782 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop11), $pop12
4783 ; NO-SIMD128-FAST-NEXT: i32.const $push13=, 7
4784 ; NO-SIMD128-FAST-NEXT: i32.add $push14=, $0, $pop13
4785 ; NO-SIMD128-FAST-NEXT: i32.and $push15=, $8, $24
4786 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop14), $pop15
4787 ; NO-SIMD128-FAST-NEXT: i32.and $push16=, $9, $25
4788 ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop16
4789 ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 9
4790 ; NO-SIMD128-FAST-NEXT: i32.add $push18=, $0, $pop17
4791 ; NO-SIMD128-FAST-NEXT: i32.and $push19=, $10, $26
4792 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop18), $pop19
4793 ; NO-SIMD128-FAST-NEXT: i32.const $push20=, 10
4794 ; NO-SIMD128-FAST-NEXT: i32.add $push21=, $0, $pop20
4795 ; NO-SIMD128-FAST-NEXT: i32.and $push22=, $11, $27
4796 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop21), $pop22
4797 ; NO-SIMD128-FAST-NEXT: i32.const $push23=, 11
4798 ; NO-SIMD128-FAST-NEXT: i32.add $push24=, $0, $pop23
4799 ; NO-SIMD128-FAST-NEXT: i32.and $push25=, $12, $28
4800 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop24), $pop25
4801 ; NO-SIMD128-FAST-NEXT: i32.const $push26=, 12
4802 ; NO-SIMD128-FAST-NEXT: i32.add $push27=, $0, $pop26
4803 ; NO-SIMD128-FAST-NEXT: i32.and $push28=, $13, $29
4804 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop27), $pop28
4805 ; NO-SIMD128-FAST-NEXT: i32.const $push29=, 13
4806 ; NO-SIMD128-FAST-NEXT: i32.add $push30=, $0, $pop29
4807 ; NO-SIMD128-FAST-NEXT: i32.and $push31=, $14, $30
4808 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop30), $pop31
4809 ; NO-SIMD128-FAST-NEXT: i32.const $push32=, 14
4810 ; NO-SIMD128-FAST-NEXT: i32.add $push33=, $0, $pop32
4811 ; NO-SIMD128-FAST-NEXT: i32.and $push34=, $15, $31
4812 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop33), $pop34
4813 ; NO-SIMD128-FAST-NEXT: i32.const $push35=, 15
4814 ; NO-SIMD128-FAST-NEXT: i32.add $push36=, $0, $pop35
4815 ; NO-SIMD128-FAST-NEXT: i32.and $push37=, $16, $32
4816 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop36), $pop37
4817 ; NO-SIMD128-FAST-NEXT: return
4818 %a = and <16 x i8> %x, %y
4822 define <16 x i8> @or_v16i8(<16 x i8> %x, <16 x i8> %y) {
4823 ; SIMD128-LABEL: or_v16i8:
4824 ; SIMD128: .functype or_v16i8 (v128, v128) -> (v128)
4825 ; SIMD128-NEXT: # %bb.0:
4826 ; SIMD128-NEXT: v128.or $push0=, $0, $1
4827 ; SIMD128-NEXT: return $pop0
4829 ; SIMD128-FAST-LABEL: or_v16i8:
4830 ; SIMD128-FAST: .functype or_v16i8 (v128, v128) -> (v128)
4831 ; SIMD128-FAST-NEXT: # %bb.0:
4832 ; SIMD128-FAST-NEXT: v128.or $push0=, $0, $1
4833 ; SIMD128-FAST-NEXT: return $pop0
4835 ; NO-SIMD128-LABEL: or_v16i8:
4836 ; NO-SIMD128: .functype or_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
4837 ; NO-SIMD128-NEXT: # %bb.0:
4838 ; NO-SIMD128-NEXT: i32.or $push0=, $9, $25
4839 ; NO-SIMD128-NEXT: i32.store8 8($0), $pop0
4840 ; NO-SIMD128-NEXT: i32.or $push1=, $5, $21
4841 ; NO-SIMD128-NEXT: i32.store8 4($0), $pop1
4842 ; NO-SIMD128-NEXT: i32.or $push2=, $3, $19
4843 ; NO-SIMD128-NEXT: i32.store8 2($0), $pop2
4844 ; NO-SIMD128-NEXT: i32.or $push3=, $2, $18
4845 ; NO-SIMD128-NEXT: i32.store8 1($0), $pop3
4846 ; NO-SIMD128-NEXT: i32.or $push4=, $1, $17
4847 ; NO-SIMD128-NEXT: i32.store8 0($0), $pop4
4848 ; NO-SIMD128-NEXT: i32.const $push6=, 15
4849 ; NO-SIMD128-NEXT: i32.add $push7=, $0, $pop6
4850 ; NO-SIMD128-NEXT: i32.or $push5=, $16, $32
4851 ; NO-SIMD128-NEXT: i32.store8 0($pop7), $pop5
4852 ; NO-SIMD128-NEXT: i32.const $push9=, 14
4853 ; NO-SIMD128-NEXT: i32.add $push10=, $0, $pop9
4854 ; NO-SIMD128-NEXT: i32.or $push8=, $15, $31
4855 ; NO-SIMD128-NEXT: i32.store8 0($pop10), $pop8
4856 ; NO-SIMD128-NEXT: i32.const $push12=, 13
4857 ; NO-SIMD128-NEXT: i32.add $push13=, $0, $pop12
4858 ; NO-SIMD128-NEXT: i32.or $push11=, $14, $30
4859 ; NO-SIMD128-NEXT: i32.store8 0($pop13), $pop11
4860 ; NO-SIMD128-NEXT: i32.const $push15=, 12
4861 ; NO-SIMD128-NEXT: i32.add $push16=, $0, $pop15
4862 ; NO-SIMD128-NEXT: i32.or $push14=, $13, $29
4863 ; NO-SIMD128-NEXT: i32.store8 0($pop16), $pop14
4864 ; NO-SIMD128-NEXT: i32.const $push18=, 11
4865 ; NO-SIMD128-NEXT: i32.add $push19=, $0, $pop18
4866 ; NO-SIMD128-NEXT: i32.or $push17=, $12, $28
4867 ; NO-SIMD128-NEXT: i32.store8 0($pop19), $pop17
4868 ; NO-SIMD128-NEXT: i32.const $push21=, 10
4869 ; NO-SIMD128-NEXT: i32.add $push22=, $0, $pop21
4870 ; NO-SIMD128-NEXT: i32.or $push20=, $11, $27
4871 ; NO-SIMD128-NEXT: i32.store8 0($pop22), $pop20
4872 ; NO-SIMD128-NEXT: i32.const $push24=, 9
4873 ; NO-SIMD128-NEXT: i32.add $push25=, $0, $pop24
4874 ; NO-SIMD128-NEXT: i32.or $push23=, $10, $26
4875 ; NO-SIMD128-NEXT: i32.store8 0($pop25), $pop23
4876 ; NO-SIMD128-NEXT: i32.const $push27=, 7
4877 ; NO-SIMD128-NEXT: i32.add $push28=, $0, $pop27
4878 ; NO-SIMD128-NEXT: i32.or $push26=, $8, $24
4879 ; NO-SIMD128-NEXT: i32.store8 0($pop28), $pop26
4880 ; NO-SIMD128-NEXT: i32.const $push30=, 6
4881 ; NO-SIMD128-NEXT: i32.add $push31=, $0, $pop30
4882 ; NO-SIMD128-NEXT: i32.or $push29=, $7, $23
4883 ; NO-SIMD128-NEXT: i32.store8 0($pop31), $pop29
4884 ; NO-SIMD128-NEXT: i32.const $push33=, 5
4885 ; NO-SIMD128-NEXT: i32.add $push34=, $0, $pop33
4886 ; NO-SIMD128-NEXT: i32.or $push32=, $6, $22
4887 ; NO-SIMD128-NEXT: i32.store8 0($pop34), $pop32
4888 ; NO-SIMD128-NEXT: i32.const $push36=, 3
4889 ; NO-SIMD128-NEXT: i32.add $push37=, $0, $pop36
4890 ; NO-SIMD128-NEXT: i32.or $push35=, $4, $20
4891 ; NO-SIMD128-NEXT: i32.store8 0($pop37), $pop35
4892 ; NO-SIMD128-NEXT: return
4894 ; NO-SIMD128-FAST-LABEL: or_v16i8:
4895 ; NO-SIMD128-FAST: .functype or_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
4896 ; NO-SIMD128-FAST-NEXT: # %bb.0:
4897 ; NO-SIMD128-FAST-NEXT: i32.or $push0=, $1, $17
4898 ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop0
4899 ; NO-SIMD128-FAST-NEXT: i32.or $push1=, $2, $18
4900 ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop1
4901 ; NO-SIMD128-FAST-NEXT: i32.or $push2=, $3, $19
4902 ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop2
4903 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 3
4904 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
4905 ; NO-SIMD128-FAST-NEXT: i32.or $push5=, $4, $20
4906 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop4), $pop5
4907 ; NO-SIMD128-FAST-NEXT: i32.or $push6=, $5, $21
4908 ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop6
4909 ; NO-SIMD128-FAST-NEXT: i32.const $push7=, 5
4910 ; NO-SIMD128-FAST-NEXT: i32.add $push8=, $0, $pop7
4911 ; NO-SIMD128-FAST-NEXT: i32.or $push9=, $6, $22
4912 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop8), $pop9
4913 ; NO-SIMD128-FAST-NEXT: i32.const $push10=, 6
4914 ; NO-SIMD128-FAST-NEXT: i32.add $push11=, $0, $pop10
4915 ; NO-SIMD128-FAST-NEXT: i32.or $push12=, $7, $23
4916 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop11), $pop12
4917 ; NO-SIMD128-FAST-NEXT: i32.const $push13=, 7
4918 ; NO-SIMD128-FAST-NEXT: i32.add $push14=, $0, $pop13
4919 ; NO-SIMD128-FAST-NEXT: i32.or $push15=, $8, $24
4920 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop14), $pop15
4921 ; NO-SIMD128-FAST-NEXT: i32.or $push16=, $9, $25
4922 ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop16
4923 ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 9
4924 ; NO-SIMD128-FAST-NEXT: i32.add $push18=, $0, $pop17
4925 ; NO-SIMD128-FAST-NEXT: i32.or $push19=, $10, $26
4926 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop18), $pop19
4927 ; NO-SIMD128-FAST-NEXT: i32.const $push20=, 10
4928 ; NO-SIMD128-FAST-NEXT: i32.add $push21=, $0, $pop20
4929 ; NO-SIMD128-FAST-NEXT: i32.or $push22=, $11, $27
4930 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop21), $pop22
4931 ; NO-SIMD128-FAST-NEXT: i32.const $push23=, 11
4932 ; NO-SIMD128-FAST-NEXT: i32.add $push24=, $0, $pop23
4933 ; NO-SIMD128-FAST-NEXT: i32.or $push25=, $12, $28
4934 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop24), $pop25
4935 ; NO-SIMD128-FAST-NEXT: i32.const $push26=, 12
4936 ; NO-SIMD128-FAST-NEXT: i32.add $push27=, $0, $pop26
4937 ; NO-SIMD128-FAST-NEXT: i32.or $push28=, $13, $29
4938 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop27), $pop28
4939 ; NO-SIMD128-FAST-NEXT: i32.const $push29=, 13
4940 ; NO-SIMD128-FAST-NEXT: i32.add $push30=, $0, $pop29
4941 ; NO-SIMD128-FAST-NEXT: i32.or $push31=, $14, $30
4942 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop30), $pop31
4943 ; NO-SIMD128-FAST-NEXT: i32.const $push32=, 14
4944 ; NO-SIMD128-FAST-NEXT: i32.add $push33=, $0, $pop32
4945 ; NO-SIMD128-FAST-NEXT: i32.or $push34=, $15, $31
4946 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop33), $pop34
4947 ; NO-SIMD128-FAST-NEXT: i32.const $push35=, 15
4948 ; NO-SIMD128-FAST-NEXT: i32.add $push36=, $0, $pop35
4949 ; NO-SIMD128-FAST-NEXT: i32.or $push37=, $16, $32
4950 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop36), $pop37
4951 ; NO-SIMD128-FAST-NEXT: return
4952 %a = or <16 x i8> %x, %y
4956 define <16 x i8> @xor_v16i8(<16 x i8> %x, <16 x i8> %y) {
4957 ; SIMD128-LABEL: xor_v16i8:
4958 ; SIMD128: .functype xor_v16i8 (v128, v128) -> (v128)
4959 ; SIMD128-NEXT: # %bb.0:
4960 ; SIMD128-NEXT: v128.xor $push0=, $0, $1
4961 ; SIMD128-NEXT: return $pop0
4963 ; SIMD128-FAST-LABEL: xor_v16i8:
4964 ; SIMD128-FAST: .functype xor_v16i8 (v128, v128) -> (v128)
4965 ; SIMD128-FAST-NEXT: # %bb.0:
4966 ; SIMD128-FAST-NEXT: v128.xor $push0=, $0, $1
4967 ; SIMD128-FAST-NEXT: return $pop0
4969 ; NO-SIMD128-LABEL: xor_v16i8:
4970 ; NO-SIMD128: .functype xor_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
4971 ; NO-SIMD128-NEXT: # %bb.0:
4972 ; NO-SIMD128-NEXT: i32.xor $push0=, $9, $25
4973 ; NO-SIMD128-NEXT: i32.store8 8($0), $pop0
4974 ; NO-SIMD128-NEXT: i32.xor $push1=, $5, $21
4975 ; NO-SIMD128-NEXT: i32.store8 4($0), $pop1
4976 ; NO-SIMD128-NEXT: i32.xor $push2=, $3, $19
4977 ; NO-SIMD128-NEXT: i32.store8 2($0), $pop2
4978 ; NO-SIMD128-NEXT: i32.xor $push3=, $2, $18
4979 ; NO-SIMD128-NEXT: i32.store8 1($0), $pop3
4980 ; NO-SIMD128-NEXT: i32.xor $push4=, $1, $17
4981 ; NO-SIMD128-NEXT: i32.store8 0($0), $pop4
4982 ; NO-SIMD128-NEXT: i32.const $push6=, 15
4983 ; NO-SIMD128-NEXT: i32.add $push7=, $0, $pop6
4984 ; NO-SIMD128-NEXT: i32.xor $push5=, $16, $32
4985 ; NO-SIMD128-NEXT: i32.store8 0($pop7), $pop5
4986 ; NO-SIMD128-NEXT: i32.const $push9=, 14
4987 ; NO-SIMD128-NEXT: i32.add $push10=, $0, $pop9
4988 ; NO-SIMD128-NEXT: i32.xor $push8=, $15, $31
4989 ; NO-SIMD128-NEXT: i32.store8 0($pop10), $pop8
4990 ; NO-SIMD128-NEXT: i32.const $push12=, 13
4991 ; NO-SIMD128-NEXT: i32.add $push13=, $0, $pop12
4992 ; NO-SIMD128-NEXT: i32.xor $push11=, $14, $30
4993 ; NO-SIMD128-NEXT: i32.store8 0($pop13), $pop11
4994 ; NO-SIMD128-NEXT: i32.const $push15=, 12
4995 ; NO-SIMD128-NEXT: i32.add $push16=, $0, $pop15
4996 ; NO-SIMD128-NEXT: i32.xor $push14=, $13, $29
4997 ; NO-SIMD128-NEXT: i32.store8 0($pop16), $pop14
4998 ; NO-SIMD128-NEXT: i32.const $push18=, 11
4999 ; NO-SIMD128-NEXT: i32.add $push19=, $0, $pop18
5000 ; NO-SIMD128-NEXT: i32.xor $push17=, $12, $28
5001 ; NO-SIMD128-NEXT: i32.store8 0($pop19), $pop17
5002 ; NO-SIMD128-NEXT: i32.const $push21=, 10
5003 ; NO-SIMD128-NEXT: i32.add $push22=, $0, $pop21
5004 ; NO-SIMD128-NEXT: i32.xor $push20=, $11, $27
5005 ; NO-SIMD128-NEXT: i32.store8 0($pop22), $pop20
5006 ; NO-SIMD128-NEXT: i32.const $push24=, 9
5007 ; NO-SIMD128-NEXT: i32.add $push25=, $0, $pop24
5008 ; NO-SIMD128-NEXT: i32.xor $push23=, $10, $26
5009 ; NO-SIMD128-NEXT: i32.store8 0($pop25), $pop23
5010 ; NO-SIMD128-NEXT: i32.const $push27=, 7
5011 ; NO-SIMD128-NEXT: i32.add $push28=, $0, $pop27
5012 ; NO-SIMD128-NEXT: i32.xor $push26=, $8, $24
5013 ; NO-SIMD128-NEXT: i32.store8 0($pop28), $pop26
5014 ; NO-SIMD128-NEXT: i32.const $push30=, 6
5015 ; NO-SIMD128-NEXT: i32.add $push31=, $0, $pop30
5016 ; NO-SIMD128-NEXT: i32.xor $push29=, $7, $23
5017 ; NO-SIMD128-NEXT: i32.store8 0($pop31), $pop29
5018 ; NO-SIMD128-NEXT: i32.const $push33=, 5
5019 ; NO-SIMD128-NEXT: i32.add $push34=, $0, $pop33
5020 ; NO-SIMD128-NEXT: i32.xor $push32=, $6, $22
5021 ; NO-SIMD128-NEXT: i32.store8 0($pop34), $pop32
5022 ; NO-SIMD128-NEXT: i32.const $push36=, 3
5023 ; NO-SIMD128-NEXT: i32.add $push37=, $0, $pop36
5024 ; NO-SIMD128-NEXT: i32.xor $push35=, $4, $20
5025 ; NO-SIMD128-NEXT: i32.store8 0($pop37), $pop35
5026 ; NO-SIMD128-NEXT: return
5028 ; NO-SIMD128-FAST-LABEL: xor_v16i8:
5029 ; NO-SIMD128-FAST: .functype xor_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
5030 ; NO-SIMD128-FAST-NEXT: # %bb.0:
5031 ; NO-SIMD128-FAST-NEXT: i32.xor $push0=, $1, $17
5032 ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop0
5033 ; NO-SIMD128-FAST-NEXT: i32.xor $push1=, $2, $18
5034 ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop1
5035 ; NO-SIMD128-FAST-NEXT: i32.xor $push2=, $3, $19
5036 ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop2
5037 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 3
5038 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
5039 ; NO-SIMD128-FAST-NEXT: i32.xor $push5=, $4, $20
5040 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop4), $pop5
5041 ; NO-SIMD128-FAST-NEXT: i32.xor $push6=, $5, $21
5042 ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop6
5043 ; NO-SIMD128-FAST-NEXT: i32.const $push7=, 5
5044 ; NO-SIMD128-FAST-NEXT: i32.add $push8=, $0, $pop7
5045 ; NO-SIMD128-FAST-NEXT: i32.xor $push9=, $6, $22
5046 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop8), $pop9
5047 ; NO-SIMD128-FAST-NEXT: i32.const $push10=, 6
5048 ; NO-SIMD128-FAST-NEXT: i32.add $push11=, $0, $pop10
5049 ; NO-SIMD128-FAST-NEXT: i32.xor $push12=, $7, $23
5050 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop11), $pop12
5051 ; NO-SIMD128-FAST-NEXT: i32.const $push13=, 7
5052 ; NO-SIMD128-FAST-NEXT: i32.add $push14=, $0, $pop13
5053 ; NO-SIMD128-FAST-NEXT: i32.xor $push15=, $8, $24
5054 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop14), $pop15
5055 ; NO-SIMD128-FAST-NEXT: i32.xor $push16=, $9, $25
5056 ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop16
5057 ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 9
5058 ; NO-SIMD128-FAST-NEXT: i32.add $push18=, $0, $pop17
5059 ; NO-SIMD128-FAST-NEXT: i32.xor $push19=, $10, $26
5060 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop18), $pop19
5061 ; NO-SIMD128-FAST-NEXT: i32.const $push20=, 10
5062 ; NO-SIMD128-FAST-NEXT: i32.add $push21=, $0, $pop20
5063 ; NO-SIMD128-FAST-NEXT: i32.xor $push22=, $11, $27
5064 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop21), $pop22
5065 ; NO-SIMD128-FAST-NEXT: i32.const $push23=, 11
5066 ; NO-SIMD128-FAST-NEXT: i32.add $push24=, $0, $pop23
5067 ; NO-SIMD128-FAST-NEXT: i32.xor $push25=, $12, $28
5068 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop24), $pop25
5069 ; NO-SIMD128-FAST-NEXT: i32.const $push26=, 12
5070 ; NO-SIMD128-FAST-NEXT: i32.add $push27=, $0, $pop26
5071 ; NO-SIMD128-FAST-NEXT: i32.xor $push28=, $13, $29
5072 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop27), $pop28
5073 ; NO-SIMD128-FAST-NEXT: i32.const $push29=, 13
5074 ; NO-SIMD128-FAST-NEXT: i32.add $push30=, $0, $pop29
5075 ; NO-SIMD128-FAST-NEXT: i32.xor $push31=, $14, $30
5076 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop30), $pop31
5077 ; NO-SIMD128-FAST-NEXT: i32.const $push32=, 14
5078 ; NO-SIMD128-FAST-NEXT: i32.add $push33=, $0, $pop32
5079 ; NO-SIMD128-FAST-NEXT: i32.xor $push34=, $15, $31
5080 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop33), $pop34
5081 ; NO-SIMD128-FAST-NEXT: i32.const $push35=, 15
5082 ; NO-SIMD128-FAST-NEXT: i32.add $push36=, $0, $pop35
5083 ; NO-SIMD128-FAST-NEXT: i32.xor $push37=, $16, $32
5084 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop36), $pop37
5085 ; NO-SIMD128-FAST-NEXT: return
5086 %a = xor <16 x i8> %x, %y
5090 define <16 x i8> @not_v16i8(<16 x i8> %x) {
5091 ; SIMD128-LABEL: not_v16i8:
5092 ; SIMD128: .functype not_v16i8 (v128) -> (v128)
5093 ; SIMD128-NEXT: # %bb.0:
5094 ; SIMD128-NEXT: v128.not $push0=, $0
5095 ; SIMD128-NEXT: return $pop0
5097 ; SIMD128-FAST-LABEL: not_v16i8:
5098 ; SIMD128-FAST: .functype not_v16i8 (v128) -> (v128)
5099 ; SIMD128-FAST-NEXT: # %bb.0:
5100 ; SIMD128-FAST-NEXT: v128.not $push0=, $0
5101 ; SIMD128-FAST-NEXT: return $pop0
5103 ; NO-SIMD128-LABEL: not_v16i8:
5104 ; NO-SIMD128: .functype not_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
5105 ; NO-SIMD128-NEXT: # %bb.0:
5106 ; NO-SIMD128-NEXT: i32.const $push0=, -1
5107 ; NO-SIMD128-NEXT: i32.xor $push1=, $9, $pop0
5108 ; NO-SIMD128-NEXT: i32.store8 8($0), $pop1
5109 ; NO-SIMD128-NEXT: i32.const $push53=, -1
5110 ; NO-SIMD128-NEXT: i32.xor $push2=, $5, $pop53
5111 ; NO-SIMD128-NEXT: i32.store8 4($0), $pop2
5112 ; NO-SIMD128-NEXT: i32.const $push52=, -1
5113 ; NO-SIMD128-NEXT: i32.xor $push3=, $3, $pop52
5114 ; NO-SIMD128-NEXT: i32.store8 2($0), $pop3
5115 ; NO-SIMD128-NEXT: i32.const $push51=, -1
5116 ; NO-SIMD128-NEXT: i32.xor $push4=, $2, $pop51
5117 ; NO-SIMD128-NEXT: i32.store8 1($0), $pop4
5118 ; NO-SIMD128-NEXT: i32.const $push50=, -1
5119 ; NO-SIMD128-NEXT: i32.xor $push5=, $1, $pop50
5120 ; NO-SIMD128-NEXT: i32.store8 0($0), $pop5
5121 ; NO-SIMD128-NEXT: i32.const $push7=, 15
5122 ; NO-SIMD128-NEXT: i32.add $push8=, $0, $pop7
5123 ; NO-SIMD128-NEXT: i32.const $push49=, -1
5124 ; NO-SIMD128-NEXT: i32.xor $push6=, $16, $pop49
5125 ; NO-SIMD128-NEXT: i32.store8 0($pop8), $pop6
5126 ; NO-SIMD128-NEXT: i32.const $push10=, 14
5127 ; NO-SIMD128-NEXT: i32.add $push11=, $0, $pop10
5128 ; NO-SIMD128-NEXT: i32.const $push48=, -1
5129 ; NO-SIMD128-NEXT: i32.xor $push9=, $15, $pop48
5130 ; NO-SIMD128-NEXT: i32.store8 0($pop11), $pop9
5131 ; NO-SIMD128-NEXT: i32.const $push13=, 13
5132 ; NO-SIMD128-NEXT: i32.add $push14=, $0, $pop13
5133 ; NO-SIMD128-NEXT: i32.const $push47=, -1
5134 ; NO-SIMD128-NEXT: i32.xor $push12=, $14, $pop47
5135 ; NO-SIMD128-NEXT: i32.store8 0($pop14), $pop12
5136 ; NO-SIMD128-NEXT: i32.const $push16=, 12
5137 ; NO-SIMD128-NEXT: i32.add $push17=, $0, $pop16
5138 ; NO-SIMD128-NEXT: i32.const $push46=, -1
5139 ; NO-SIMD128-NEXT: i32.xor $push15=, $13, $pop46
5140 ; NO-SIMD128-NEXT: i32.store8 0($pop17), $pop15
5141 ; NO-SIMD128-NEXT: i32.const $push19=, 11
5142 ; NO-SIMD128-NEXT: i32.add $push20=, $0, $pop19
5143 ; NO-SIMD128-NEXT: i32.const $push45=, -1
5144 ; NO-SIMD128-NEXT: i32.xor $push18=, $12, $pop45
5145 ; NO-SIMD128-NEXT: i32.store8 0($pop20), $pop18
5146 ; NO-SIMD128-NEXT: i32.const $push22=, 10
5147 ; NO-SIMD128-NEXT: i32.add $push23=, $0, $pop22
5148 ; NO-SIMD128-NEXT: i32.const $push44=, -1
5149 ; NO-SIMD128-NEXT: i32.xor $push21=, $11, $pop44
5150 ; NO-SIMD128-NEXT: i32.store8 0($pop23), $pop21
5151 ; NO-SIMD128-NEXT: i32.const $push25=, 9
5152 ; NO-SIMD128-NEXT: i32.add $push26=, $0, $pop25
5153 ; NO-SIMD128-NEXT: i32.const $push43=, -1
5154 ; NO-SIMD128-NEXT: i32.xor $push24=, $10, $pop43
5155 ; NO-SIMD128-NEXT: i32.store8 0($pop26), $pop24
5156 ; NO-SIMD128-NEXT: i32.const $push28=, 7
5157 ; NO-SIMD128-NEXT: i32.add $push29=, $0, $pop28
5158 ; NO-SIMD128-NEXT: i32.const $push42=, -1
5159 ; NO-SIMD128-NEXT: i32.xor $push27=, $8, $pop42
5160 ; NO-SIMD128-NEXT: i32.store8 0($pop29), $pop27
5161 ; NO-SIMD128-NEXT: i32.const $push31=, 6
5162 ; NO-SIMD128-NEXT: i32.add $push32=, $0, $pop31
5163 ; NO-SIMD128-NEXT: i32.const $push41=, -1
5164 ; NO-SIMD128-NEXT: i32.xor $push30=, $7, $pop41
5165 ; NO-SIMD128-NEXT: i32.store8 0($pop32), $pop30
5166 ; NO-SIMD128-NEXT: i32.const $push34=, 5
5167 ; NO-SIMD128-NEXT: i32.add $push35=, $0, $pop34
5168 ; NO-SIMD128-NEXT: i32.const $push40=, -1
5169 ; NO-SIMD128-NEXT: i32.xor $push33=, $6, $pop40
5170 ; NO-SIMD128-NEXT: i32.store8 0($pop35), $pop33
5171 ; NO-SIMD128-NEXT: i32.const $push37=, 3
5172 ; NO-SIMD128-NEXT: i32.add $push38=, $0, $pop37
5173 ; NO-SIMD128-NEXT: i32.const $push39=, -1
5174 ; NO-SIMD128-NEXT: i32.xor $push36=, $4, $pop39
5175 ; NO-SIMD128-NEXT: i32.store8 0($pop38), $pop36
5176 ; NO-SIMD128-NEXT: return
5178 ; NO-SIMD128-FAST-LABEL: not_v16i8:
5179 ; NO-SIMD128-FAST: .functype not_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
5180 ; NO-SIMD128-FAST-NEXT: # %bb.0:
5181 ; NO-SIMD128-FAST-NEXT: i32.const $push0=, -1
5182 ; NO-SIMD128-FAST-NEXT: i32.xor $push1=, $1, $pop0
5183 ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop1
5184 ; NO-SIMD128-FAST-NEXT: i32.const $push53=, -1
5185 ; NO-SIMD128-FAST-NEXT: i32.xor $push2=, $2, $pop53
5186 ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop2
5187 ; NO-SIMD128-FAST-NEXT: i32.const $push52=, -1
5188 ; NO-SIMD128-FAST-NEXT: i32.xor $push3=, $3, $pop52
5189 ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop3
5190 ; NO-SIMD128-FAST-NEXT: i32.const $push4=, 3
5191 ; NO-SIMD128-FAST-NEXT: i32.add $push5=, $0, $pop4
5192 ; NO-SIMD128-FAST-NEXT: i32.const $push51=, -1
5193 ; NO-SIMD128-FAST-NEXT: i32.xor $push6=, $4, $pop51
5194 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop5), $pop6
5195 ; NO-SIMD128-FAST-NEXT: i32.const $push50=, -1
5196 ; NO-SIMD128-FAST-NEXT: i32.xor $push7=, $5, $pop50
5197 ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop7
5198 ; NO-SIMD128-FAST-NEXT: i32.const $push8=, 5
5199 ; NO-SIMD128-FAST-NEXT: i32.add $push9=, $0, $pop8
5200 ; NO-SIMD128-FAST-NEXT: i32.const $push49=, -1
5201 ; NO-SIMD128-FAST-NEXT: i32.xor $push10=, $6, $pop49
5202 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop9), $pop10
5203 ; NO-SIMD128-FAST-NEXT: i32.const $push11=, 6
5204 ; NO-SIMD128-FAST-NEXT: i32.add $push12=, $0, $pop11
5205 ; NO-SIMD128-FAST-NEXT: i32.const $push48=, -1
5206 ; NO-SIMD128-FAST-NEXT: i32.xor $push13=, $7, $pop48
5207 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop12), $pop13
5208 ; NO-SIMD128-FAST-NEXT: i32.const $push14=, 7
5209 ; NO-SIMD128-FAST-NEXT: i32.add $push15=, $0, $pop14
5210 ; NO-SIMD128-FAST-NEXT: i32.const $push47=, -1
5211 ; NO-SIMD128-FAST-NEXT: i32.xor $push16=, $8, $pop47
5212 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop15), $pop16
5213 ; NO-SIMD128-FAST-NEXT: i32.const $push46=, -1
5214 ; NO-SIMD128-FAST-NEXT: i32.xor $push17=, $9, $pop46
5215 ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop17
5216 ; NO-SIMD128-FAST-NEXT: i32.const $push18=, 9
5217 ; NO-SIMD128-FAST-NEXT: i32.add $push19=, $0, $pop18
5218 ; NO-SIMD128-FAST-NEXT: i32.const $push45=, -1
5219 ; NO-SIMD128-FAST-NEXT: i32.xor $push20=, $10, $pop45
5220 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop19), $pop20
5221 ; NO-SIMD128-FAST-NEXT: i32.const $push21=, 10
5222 ; NO-SIMD128-FAST-NEXT: i32.add $push22=, $0, $pop21
5223 ; NO-SIMD128-FAST-NEXT: i32.const $push44=, -1
5224 ; NO-SIMD128-FAST-NEXT: i32.xor $push23=, $11, $pop44
5225 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop22), $pop23
5226 ; NO-SIMD128-FAST-NEXT: i32.const $push24=, 11
5227 ; NO-SIMD128-FAST-NEXT: i32.add $push25=, $0, $pop24
5228 ; NO-SIMD128-FAST-NEXT: i32.const $push43=, -1
5229 ; NO-SIMD128-FAST-NEXT: i32.xor $push26=, $12, $pop43
5230 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop25), $pop26
5231 ; NO-SIMD128-FAST-NEXT: i32.const $push27=, 12
5232 ; NO-SIMD128-FAST-NEXT: i32.add $push28=, $0, $pop27
5233 ; NO-SIMD128-FAST-NEXT: i32.const $push42=, -1
5234 ; NO-SIMD128-FAST-NEXT: i32.xor $push29=, $13, $pop42
5235 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop28), $pop29
5236 ; NO-SIMD128-FAST-NEXT: i32.const $push30=, 13
5237 ; NO-SIMD128-FAST-NEXT: i32.add $push31=, $0, $pop30
5238 ; NO-SIMD128-FAST-NEXT: i32.const $push41=, -1
5239 ; NO-SIMD128-FAST-NEXT: i32.xor $push32=, $14, $pop41
5240 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop31), $pop32
5241 ; NO-SIMD128-FAST-NEXT: i32.const $push33=, 14
5242 ; NO-SIMD128-FAST-NEXT: i32.add $push34=, $0, $pop33
5243 ; NO-SIMD128-FAST-NEXT: i32.const $push40=, -1
5244 ; NO-SIMD128-FAST-NEXT: i32.xor $push35=, $15, $pop40
5245 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop34), $pop35
5246 ; NO-SIMD128-FAST-NEXT: i32.const $push36=, 15
5247 ; NO-SIMD128-FAST-NEXT: i32.add $push37=, $0, $pop36
5248 ; NO-SIMD128-FAST-NEXT: i32.const $push39=, -1
5249 ; NO-SIMD128-FAST-NEXT: i32.xor $push38=, $16, $pop39
5250 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop37), $pop38
5251 ; NO-SIMD128-FAST-NEXT: return
5252 %a = xor <16 x i8> %x, <i8 -1, i8 -1, i8 -1, i8 -1,
5253 i8 -1, i8 -1, i8 -1, i8 -1,
5254 i8 -1, i8 -1, i8 -1, i8 -1,
5255 i8 -1, i8 -1, i8 -1, i8 -1>
5259 define <16 x i8> @andnot_v16i8(<16 x i8> %x, <16 x i8> %y) {
5260 ; SIMD128-LABEL: andnot_v16i8:
5261 ; SIMD128: .functype andnot_v16i8 (v128, v128) -> (v128)
5262 ; SIMD128-NEXT: # %bb.0:
5263 ; SIMD128-NEXT: v128.andnot $push0=, $0, $1
5264 ; SIMD128-NEXT: return $pop0
5266 ; SIMD128-FAST-LABEL: andnot_v16i8:
5267 ; SIMD128-FAST: .functype andnot_v16i8 (v128, v128) -> (v128)
5268 ; SIMD128-FAST-NEXT: # %bb.0:
5269 ; SIMD128-FAST-NEXT: v128.not $push0=, $1
5270 ; SIMD128-FAST-NEXT: v128.and $push1=, $0, $pop0
5271 ; SIMD128-FAST-NEXT: return $pop1
5273 ; NO-SIMD128-LABEL: andnot_v16i8:
5274 ; NO-SIMD128: .functype andnot_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
5275 ; NO-SIMD128-NEXT: # %bb.0:
5276 ; NO-SIMD128-NEXT: i32.const $push0=, -1
5277 ; NO-SIMD128-NEXT: i32.xor $push1=, $25, $pop0
5278 ; NO-SIMD128-NEXT: i32.and $push2=, $9, $pop1
5279 ; NO-SIMD128-NEXT: i32.store8 8($0), $pop2
5280 ; NO-SIMD128-NEXT: i32.const $push69=, -1
5281 ; NO-SIMD128-NEXT: i32.xor $push3=, $21, $pop69
5282 ; NO-SIMD128-NEXT: i32.and $push4=, $5, $pop3
5283 ; NO-SIMD128-NEXT: i32.store8 4($0), $pop4
5284 ; NO-SIMD128-NEXT: i32.const $push68=, -1
5285 ; NO-SIMD128-NEXT: i32.xor $push5=, $19, $pop68
5286 ; NO-SIMD128-NEXT: i32.and $push6=, $3, $pop5
5287 ; NO-SIMD128-NEXT: i32.store8 2($0), $pop6
5288 ; NO-SIMD128-NEXT: i32.const $push67=, -1
5289 ; NO-SIMD128-NEXT: i32.xor $push7=, $18, $pop67
5290 ; NO-SIMD128-NEXT: i32.and $push8=, $2, $pop7
5291 ; NO-SIMD128-NEXT: i32.store8 1($0), $pop8
5292 ; NO-SIMD128-NEXT: i32.const $push66=, -1
5293 ; NO-SIMD128-NEXT: i32.xor $push9=, $17, $pop66
5294 ; NO-SIMD128-NEXT: i32.and $push10=, $1, $pop9
5295 ; NO-SIMD128-NEXT: i32.store8 0($0), $pop10
5296 ; NO-SIMD128-NEXT: i32.const $push13=, 15
5297 ; NO-SIMD128-NEXT: i32.add $push14=, $0, $pop13
5298 ; NO-SIMD128-NEXT: i32.const $push65=, -1
5299 ; NO-SIMD128-NEXT: i32.xor $push11=, $32, $pop65
5300 ; NO-SIMD128-NEXT: i32.and $push12=, $16, $pop11
5301 ; NO-SIMD128-NEXT: i32.store8 0($pop14), $pop12
5302 ; NO-SIMD128-NEXT: i32.const $push17=, 14
5303 ; NO-SIMD128-NEXT: i32.add $push18=, $0, $pop17
5304 ; NO-SIMD128-NEXT: i32.const $push64=, -1
5305 ; NO-SIMD128-NEXT: i32.xor $push15=, $31, $pop64
5306 ; NO-SIMD128-NEXT: i32.and $push16=, $15, $pop15
5307 ; NO-SIMD128-NEXT: i32.store8 0($pop18), $pop16
5308 ; NO-SIMD128-NEXT: i32.const $push21=, 13
5309 ; NO-SIMD128-NEXT: i32.add $push22=, $0, $pop21
5310 ; NO-SIMD128-NEXT: i32.const $push63=, -1
5311 ; NO-SIMD128-NEXT: i32.xor $push19=, $30, $pop63
5312 ; NO-SIMD128-NEXT: i32.and $push20=, $14, $pop19
5313 ; NO-SIMD128-NEXT: i32.store8 0($pop22), $pop20
5314 ; NO-SIMD128-NEXT: i32.const $push25=, 12
5315 ; NO-SIMD128-NEXT: i32.add $push26=, $0, $pop25
5316 ; NO-SIMD128-NEXT: i32.const $push62=, -1
5317 ; NO-SIMD128-NEXT: i32.xor $push23=, $29, $pop62
5318 ; NO-SIMD128-NEXT: i32.and $push24=, $13, $pop23
5319 ; NO-SIMD128-NEXT: i32.store8 0($pop26), $pop24
5320 ; NO-SIMD128-NEXT: i32.const $push29=, 11
5321 ; NO-SIMD128-NEXT: i32.add $push30=, $0, $pop29
5322 ; NO-SIMD128-NEXT: i32.const $push61=, -1
5323 ; NO-SIMD128-NEXT: i32.xor $push27=, $28, $pop61
5324 ; NO-SIMD128-NEXT: i32.and $push28=, $12, $pop27
5325 ; NO-SIMD128-NEXT: i32.store8 0($pop30), $pop28
5326 ; NO-SIMD128-NEXT: i32.const $push33=, 10
5327 ; NO-SIMD128-NEXT: i32.add $push34=, $0, $pop33
5328 ; NO-SIMD128-NEXT: i32.const $push60=, -1
5329 ; NO-SIMD128-NEXT: i32.xor $push31=, $27, $pop60
5330 ; NO-SIMD128-NEXT: i32.and $push32=, $11, $pop31
5331 ; NO-SIMD128-NEXT: i32.store8 0($pop34), $pop32
5332 ; NO-SIMD128-NEXT: i32.const $push37=, 9
5333 ; NO-SIMD128-NEXT: i32.add $push38=, $0, $pop37
5334 ; NO-SIMD128-NEXT: i32.const $push59=, -1
5335 ; NO-SIMD128-NEXT: i32.xor $push35=, $26, $pop59
5336 ; NO-SIMD128-NEXT: i32.and $push36=, $10, $pop35
5337 ; NO-SIMD128-NEXT: i32.store8 0($pop38), $pop36
5338 ; NO-SIMD128-NEXT: i32.const $push41=, 7
5339 ; NO-SIMD128-NEXT: i32.add $push42=, $0, $pop41
5340 ; NO-SIMD128-NEXT: i32.const $push58=, -1
5341 ; NO-SIMD128-NEXT: i32.xor $push39=, $24, $pop58
5342 ; NO-SIMD128-NEXT: i32.and $push40=, $8, $pop39
5343 ; NO-SIMD128-NEXT: i32.store8 0($pop42), $pop40
5344 ; NO-SIMD128-NEXT: i32.const $push45=, 6
5345 ; NO-SIMD128-NEXT: i32.add $push46=, $0, $pop45
5346 ; NO-SIMD128-NEXT: i32.const $push57=, -1
5347 ; NO-SIMD128-NEXT: i32.xor $push43=, $23, $pop57
5348 ; NO-SIMD128-NEXT: i32.and $push44=, $7, $pop43
5349 ; NO-SIMD128-NEXT: i32.store8 0($pop46), $pop44
5350 ; NO-SIMD128-NEXT: i32.const $push49=, 5
5351 ; NO-SIMD128-NEXT: i32.add $push50=, $0, $pop49
5352 ; NO-SIMD128-NEXT: i32.const $push56=, -1
5353 ; NO-SIMD128-NEXT: i32.xor $push47=, $22, $pop56
5354 ; NO-SIMD128-NEXT: i32.and $push48=, $6, $pop47
5355 ; NO-SIMD128-NEXT: i32.store8 0($pop50), $pop48
5356 ; NO-SIMD128-NEXT: i32.const $push53=, 3
5357 ; NO-SIMD128-NEXT: i32.add $push54=, $0, $pop53
5358 ; NO-SIMD128-NEXT: i32.const $push55=, -1
5359 ; NO-SIMD128-NEXT: i32.xor $push51=, $20, $pop55
5360 ; NO-SIMD128-NEXT: i32.and $push52=, $4, $pop51
5361 ; NO-SIMD128-NEXT: i32.store8 0($pop54), $pop52
5362 ; NO-SIMD128-NEXT: return
5364 ; NO-SIMD128-FAST-LABEL: andnot_v16i8:
5365 ; NO-SIMD128-FAST: .functype andnot_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
5366 ; NO-SIMD128-FAST-NEXT: # %bb.0:
5367 ; NO-SIMD128-FAST-NEXT: i32.const $push0=, -1
5368 ; NO-SIMD128-FAST-NEXT: i32.xor $push1=, $17, $pop0
5369 ; NO-SIMD128-FAST-NEXT: i32.and $push2=, $1, $pop1
5370 ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop2
5371 ; NO-SIMD128-FAST-NEXT: i32.const $push69=, -1
5372 ; NO-SIMD128-FAST-NEXT: i32.xor $push3=, $18, $pop69
5373 ; NO-SIMD128-FAST-NEXT: i32.and $push4=, $2, $pop3
5374 ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop4
5375 ; NO-SIMD128-FAST-NEXT: i32.const $push68=, -1
5376 ; NO-SIMD128-FAST-NEXT: i32.xor $push5=, $19, $pop68
5377 ; NO-SIMD128-FAST-NEXT: i32.and $push6=, $3, $pop5
5378 ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop6
5379 ; NO-SIMD128-FAST-NEXT: i32.const $push7=, 3
5380 ; NO-SIMD128-FAST-NEXT: i32.add $push8=, $0, $pop7
5381 ; NO-SIMD128-FAST-NEXT: i32.const $push67=, -1
5382 ; NO-SIMD128-FAST-NEXT: i32.xor $push9=, $20, $pop67
5383 ; NO-SIMD128-FAST-NEXT: i32.and $push10=, $4, $pop9
5384 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop8), $pop10
5385 ; NO-SIMD128-FAST-NEXT: i32.const $push66=, -1
5386 ; NO-SIMD128-FAST-NEXT: i32.xor $push11=, $21, $pop66
5387 ; NO-SIMD128-FAST-NEXT: i32.and $push12=, $5, $pop11
5388 ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop12
5389 ; NO-SIMD128-FAST-NEXT: i32.const $push13=, 5
5390 ; NO-SIMD128-FAST-NEXT: i32.add $push14=, $0, $pop13
5391 ; NO-SIMD128-FAST-NEXT: i32.const $push65=, -1
5392 ; NO-SIMD128-FAST-NEXT: i32.xor $push15=, $22, $pop65
5393 ; NO-SIMD128-FAST-NEXT: i32.and $push16=, $6, $pop15
5394 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop14), $pop16
5395 ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 6
5396 ; NO-SIMD128-FAST-NEXT: i32.add $push18=, $0, $pop17
5397 ; NO-SIMD128-FAST-NEXT: i32.const $push64=, -1
5398 ; NO-SIMD128-FAST-NEXT: i32.xor $push19=, $23, $pop64
5399 ; NO-SIMD128-FAST-NEXT: i32.and $push20=, $7, $pop19
5400 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop18), $pop20
5401 ; NO-SIMD128-FAST-NEXT: i32.const $push21=, 7
5402 ; NO-SIMD128-FAST-NEXT: i32.add $push22=, $0, $pop21
5403 ; NO-SIMD128-FAST-NEXT: i32.const $push63=, -1
5404 ; NO-SIMD128-FAST-NEXT: i32.xor $push23=, $24, $pop63
5405 ; NO-SIMD128-FAST-NEXT: i32.and $push24=, $8, $pop23
5406 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop22), $pop24
5407 ; NO-SIMD128-FAST-NEXT: i32.const $push62=, -1
5408 ; NO-SIMD128-FAST-NEXT: i32.xor $push25=, $25, $pop62
5409 ; NO-SIMD128-FAST-NEXT: i32.and $push26=, $9, $pop25
5410 ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop26
5411 ; NO-SIMD128-FAST-NEXT: i32.const $push27=, 9
5412 ; NO-SIMD128-FAST-NEXT: i32.add $push28=, $0, $pop27
5413 ; NO-SIMD128-FAST-NEXT: i32.const $push61=, -1
5414 ; NO-SIMD128-FAST-NEXT: i32.xor $push29=, $26, $pop61
5415 ; NO-SIMD128-FAST-NEXT: i32.and $push30=, $10, $pop29
5416 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop28), $pop30
5417 ; NO-SIMD128-FAST-NEXT: i32.const $push31=, 10
5418 ; NO-SIMD128-FAST-NEXT: i32.add $push32=, $0, $pop31
5419 ; NO-SIMD128-FAST-NEXT: i32.const $push60=, -1
5420 ; NO-SIMD128-FAST-NEXT: i32.xor $push33=, $27, $pop60
5421 ; NO-SIMD128-FAST-NEXT: i32.and $push34=, $11, $pop33
5422 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop32), $pop34
5423 ; NO-SIMD128-FAST-NEXT: i32.const $push35=, 11
5424 ; NO-SIMD128-FAST-NEXT: i32.add $push36=, $0, $pop35
5425 ; NO-SIMD128-FAST-NEXT: i32.const $push59=, -1
5426 ; NO-SIMD128-FAST-NEXT: i32.xor $push37=, $28, $pop59
5427 ; NO-SIMD128-FAST-NEXT: i32.and $push38=, $12, $pop37
5428 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop36), $pop38
5429 ; NO-SIMD128-FAST-NEXT: i32.const $push39=, 12
5430 ; NO-SIMD128-FAST-NEXT: i32.add $push40=, $0, $pop39
5431 ; NO-SIMD128-FAST-NEXT: i32.const $push58=, -1
5432 ; NO-SIMD128-FAST-NEXT: i32.xor $push41=, $29, $pop58
5433 ; NO-SIMD128-FAST-NEXT: i32.and $push42=, $13, $pop41
5434 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop40), $pop42
5435 ; NO-SIMD128-FAST-NEXT: i32.const $push43=, 13
5436 ; NO-SIMD128-FAST-NEXT: i32.add $push44=, $0, $pop43
5437 ; NO-SIMD128-FAST-NEXT: i32.const $push57=, -1
5438 ; NO-SIMD128-FAST-NEXT: i32.xor $push45=, $30, $pop57
5439 ; NO-SIMD128-FAST-NEXT: i32.and $push46=, $14, $pop45
5440 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop44), $pop46
5441 ; NO-SIMD128-FAST-NEXT: i32.const $push47=, 14
5442 ; NO-SIMD128-FAST-NEXT: i32.add $push48=, $0, $pop47
5443 ; NO-SIMD128-FAST-NEXT: i32.const $push56=, -1
5444 ; NO-SIMD128-FAST-NEXT: i32.xor $push49=, $31, $pop56
5445 ; NO-SIMD128-FAST-NEXT: i32.and $push50=, $15, $pop49
5446 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop48), $pop50
5447 ; NO-SIMD128-FAST-NEXT: i32.const $push51=, 15
5448 ; NO-SIMD128-FAST-NEXT: i32.add $push52=, $0, $pop51
5449 ; NO-SIMD128-FAST-NEXT: i32.const $push55=, -1
5450 ; NO-SIMD128-FAST-NEXT: i32.xor $push53=, $32, $pop55
5451 ; NO-SIMD128-FAST-NEXT: i32.and $push54=, $16, $pop53
5452 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop52), $pop54
5453 ; NO-SIMD128-FAST-NEXT: return
5454 %inv_y = xor <16 x i8> %y,
5455 <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1,
5456 i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
5457 %a = and <16 x i8> %x, %inv_y
5461 define <16 x i8> @bitselect_v16i8(<16 x i8> %c, <16 x i8> %v1, <16 x i8> %v2) {
5462 ; SIMD128-LABEL: bitselect_v16i8:
5463 ; SIMD128: .functype bitselect_v16i8 (v128, v128, v128) -> (v128)
5464 ; SIMD128-NEXT: # %bb.0:
5465 ; SIMD128-NEXT: v128.bitselect $push0=, $1, $2, $0
5466 ; SIMD128-NEXT: return $pop0
5468 ; SIMD128-FAST-LABEL: bitselect_v16i8:
5469 ; SIMD128-FAST: .functype bitselect_v16i8 (v128, v128, v128) -> (v128)
5470 ; SIMD128-FAST-NEXT: # %bb.0:
5471 ; SIMD128-FAST-NEXT: v128.and $push0=, $0, $1
5472 ; SIMD128-FAST-NEXT: v128.not $push2=, $0
5473 ; SIMD128-FAST-NEXT: v128.and $push3=, $pop2, $2
5474 ; SIMD128-FAST-NEXT: v128.or $push1=, $pop0, $pop3
5475 ; SIMD128-FAST-NEXT: return $pop1
5477 ; NO-SIMD128-LABEL: bitselect_v16i8:
5478 ; NO-SIMD128: .functype bitselect_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
5479 ; NO-SIMD128-NEXT: # %bb.0:
5480 ; NO-SIMD128-NEXT: i32.const $push5=, 15
5481 ; NO-SIMD128-NEXT: i32.add $push6=, $0, $pop5
5482 ; NO-SIMD128-NEXT: i32.and $push0=, $16, $32
5483 ; NO-SIMD128-NEXT: i32.const $push1=, -1
5484 ; NO-SIMD128-NEXT: i32.xor $push2=, $16, $pop1
5485 ; NO-SIMD128-NEXT: i32.and $push3=, $pop2, $48
5486 ; NO-SIMD128-NEXT: i32.or $push4=, $pop0, $pop3
5487 ; NO-SIMD128-NEXT: i32.store8 0($pop6), $pop4
5488 ; NO-SIMD128-NEXT: i32.const $push11=, 14
5489 ; NO-SIMD128-NEXT: i32.add $push12=, $0, $pop11
5490 ; NO-SIMD128-NEXT: i32.and $push7=, $15, $31
5491 ; NO-SIMD128-NEXT: i32.const $push101=, -1
5492 ; NO-SIMD128-NEXT: i32.xor $push8=, $15, $pop101
5493 ; NO-SIMD128-NEXT: i32.and $push9=, $pop8, $47
5494 ; NO-SIMD128-NEXT: i32.or $push10=, $pop7, $pop9
5495 ; NO-SIMD128-NEXT: i32.store8 0($pop12), $pop10
5496 ; NO-SIMD128-NEXT: i32.const $push17=, 13
5497 ; NO-SIMD128-NEXT: i32.add $push18=, $0, $pop17
5498 ; NO-SIMD128-NEXT: i32.and $push13=, $14, $30
5499 ; NO-SIMD128-NEXT: i32.const $push100=, -1
5500 ; NO-SIMD128-NEXT: i32.xor $push14=, $14, $pop100
5501 ; NO-SIMD128-NEXT: i32.and $push15=, $pop14, $46
5502 ; NO-SIMD128-NEXT: i32.or $push16=, $pop13, $pop15
5503 ; NO-SIMD128-NEXT: i32.store8 0($pop18), $pop16
5504 ; NO-SIMD128-NEXT: i32.const $push23=, 12
5505 ; NO-SIMD128-NEXT: i32.add $push24=, $0, $pop23
5506 ; NO-SIMD128-NEXT: i32.and $push19=, $13, $29
5507 ; NO-SIMD128-NEXT: i32.const $push99=, -1
5508 ; NO-SIMD128-NEXT: i32.xor $push20=, $13, $pop99
5509 ; NO-SIMD128-NEXT: i32.and $push21=, $pop20, $45
5510 ; NO-SIMD128-NEXT: i32.or $push22=, $pop19, $pop21
5511 ; NO-SIMD128-NEXT: i32.store8 0($pop24), $pop22
5512 ; NO-SIMD128-NEXT: i32.const $push29=, 11
5513 ; NO-SIMD128-NEXT: i32.add $push30=, $0, $pop29
5514 ; NO-SIMD128-NEXT: i32.and $push25=, $12, $28
5515 ; NO-SIMD128-NEXT: i32.const $push98=, -1
5516 ; NO-SIMD128-NEXT: i32.xor $push26=, $12, $pop98
5517 ; NO-SIMD128-NEXT: i32.and $push27=, $pop26, $44
5518 ; NO-SIMD128-NEXT: i32.or $push28=, $pop25, $pop27
5519 ; NO-SIMD128-NEXT: i32.store8 0($pop30), $pop28
5520 ; NO-SIMD128-NEXT: i32.const $push35=, 10
5521 ; NO-SIMD128-NEXT: i32.add $push36=, $0, $pop35
5522 ; NO-SIMD128-NEXT: i32.and $push31=, $11, $27
5523 ; NO-SIMD128-NEXT: i32.const $push97=, -1
5524 ; NO-SIMD128-NEXT: i32.xor $push32=, $11, $pop97
5525 ; NO-SIMD128-NEXT: i32.and $push33=, $pop32, $43
5526 ; NO-SIMD128-NEXT: i32.or $push34=, $pop31, $pop33
5527 ; NO-SIMD128-NEXT: i32.store8 0($pop36), $pop34
5528 ; NO-SIMD128-NEXT: i32.const $push41=, 9
5529 ; NO-SIMD128-NEXT: i32.add $push42=, $0, $pop41
5530 ; NO-SIMD128-NEXT: i32.and $push37=, $10, $26
5531 ; NO-SIMD128-NEXT: i32.const $push96=, -1
5532 ; NO-SIMD128-NEXT: i32.xor $push38=, $10, $pop96
5533 ; NO-SIMD128-NEXT: i32.and $push39=, $pop38, $42
5534 ; NO-SIMD128-NEXT: i32.or $push40=, $pop37, $pop39
5535 ; NO-SIMD128-NEXT: i32.store8 0($pop42), $pop40
5536 ; NO-SIMD128-NEXT: i32.and $push43=, $9, $25
5537 ; NO-SIMD128-NEXT: i32.const $push95=, -1
5538 ; NO-SIMD128-NEXT: i32.xor $push44=, $9, $pop95
5539 ; NO-SIMD128-NEXT: i32.and $push45=, $pop44, $41
5540 ; NO-SIMD128-NEXT: i32.or $push46=, $pop43, $pop45
5541 ; NO-SIMD128-NEXT: i32.store8 8($0), $pop46
5542 ; NO-SIMD128-NEXT: i32.const $push51=, 7
5543 ; NO-SIMD128-NEXT: i32.add $push52=, $0, $pop51
5544 ; NO-SIMD128-NEXT: i32.and $push47=, $8, $24
5545 ; NO-SIMD128-NEXT: i32.const $push94=, -1
5546 ; NO-SIMD128-NEXT: i32.xor $push48=, $8, $pop94
5547 ; NO-SIMD128-NEXT: i32.and $push49=, $pop48, $40
5548 ; NO-SIMD128-NEXT: i32.or $push50=, $pop47, $pop49
5549 ; NO-SIMD128-NEXT: i32.store8 0($pop52), $pop50
5550 ; NO-SIMD128-NEXT: i32.const $push57=, 6
5551 ; NO-SIMD128-NEXT: i32.add $push58=, $0, $pop57
5552 ; NO-SIMD128-NEXT: i32.and $push53=, $7, $23
5553 ; NO-SIMD128-NEXT: i32.const $push93=, -1
5554 ; NO-SIMD128-NEXT: i32.xor $push54=, $7, $pop93
5555 ; NO-SIMD128-NEXT: i32.and $push55=, $pop54, $39
5556 ; NO-SIMD128-NEXT: i32.or $push56=, $pop53, $pop55
5557 ; NO-SIMD128-NEXT: i32.store8 0($pop58), $pop56
5558 ; NO-SIMD128-NEXT: i32.const $push63=, 5
5559 ; NO-SIMD128-NEXT: i32.add $push64=, $0, $pop63
5560 ; NO-SIMD128-NEXT: i32.and $push59=, $6, $22
5561 ; NO-SIMD128-NEXT: i32.const $push92=, -1
5562 ; NO-SIMD128-NEXT: i32.xor $push60=, $6, $pop92
5563 ; NO-SIMD128-NEXT: i32.and $push61=, $pop60, $38
5564 ; NO-SIMD128-NEXT: i32.or $push62=, $pop59, $pop61
5565 ; NO-SIMD128-NEXT: i32.store8 0($pop64), $pop62
5566 ; NO-SIMD128-NEXT: i32.and $push65=, $5, $21
5567 ; NO-SIMD128-NEXT: i32.const $push91=, -1
5568 ; NO-SIMD128-NEXT: i32.xor $push66=, $5, $pop91
5569 ; NO-SIMD128-NEXT: i32.and $push67=, $pop66, $37
5570 ; NO-SIMD128-NEXT: i32.or $push68=, $pop65, $pop67
5571 ; NO-SIMD128-NEXT: i32.store8 4($0), $pop68
5572 ; NO-SIMD128-NEXT: i32.const $push73=, 3
5573 ; NO-SIMD128-NEXT: i32.add $push74=, $0, $pop73
5574 ; NO-SIMD128-NEXT: i32.and $push69=, $4, $20
5575 ; NO-SIMD128-NEXT: i32.const $push90=, -1
5576 ; NO-SIMD128-NEXT: i32.xor $push70=, $4, $pop90
5577 ; NO-SIMD128-NEXT: i32.and $push71=, $pop70, $36
5578 ; NO-SIMD128-NEXT: i32.or $push72=, $pop69, $pop71
5579 ; NO-SIMD128-NEXT: i32.store8 0($pop74), $pop72
5580 ; NO-SIMD128-NEXT: i32.and $push75=, $3, $19
5581 ; NO-SIMD128-NEXT: i32.const $push89=, -1
5582 ; NO-SIMD128-NEXT: i32.xor $push76=, $3, $pop89
5583 ; NO-SIMD128-NEXT: i32.and $push77=, $pop76, $35
5584 ; NO-SIMD128-NEXT: i32.or $push78=, $pop75, $pop77
5585 ; NO-SIMD128-NEXT: i32.store8 2($0), $pop78
5586 ; NO-SIMD128-NEXT: i32.and $push79=, $2, $18
5587 ; NO-SIMD128-NEXT: i32.const $push88=, -1
5588 ; NO-SIMD128-NEXT: i32.xor $push80=, $2, $pop88
5589 ; NO-SIMD128-NEXT: i32.and $push81=, $pop80, $34
5590 ; NO-SIMD128-NEXT: i32.or $push82=, $pop79, $pop81
5591 ; NO-SIMD128-NEXT: i32.store8 1($0), $pop82
5592 ; NO-SIMD128-NEXT: i32.and $push83=, $1, $17
5593 ; NO-SIMD128-NEXT: i32.const $push87=, -1
5594 ; NO-SIMD128-NEXT: i32.xor $push84=, $1, $pop87
5595 ; NO-SIMD128-NEXT: i32.and $push85=, $pop84, $33
5596 ; NO-SIMD128-NEXT: i32.or $push86=, $pop83, $pop85
5597 ; NO-SIMD128-NEXT: i32.store8 0($0), $pop86
5598 ; NO-SIMD128-NEXT: return
5600 ; NO-SIMD128-FAST-LABEL: bitselect_v16i8:
5601 ; NO-SIMD128-FAST: .functype bitselect_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
5602 ; NO-SIMD128-FAST-NEXT: # %bb.0:
5603 ; NO-SIMD128-FAST-NEXT: i32.and $push0=, $1, $17
5604 ; NO-SIMD128-FAST-NEXT: i32.const $push1=, -1
5605 ; NO-SIMD128-FAST-NEXT: i32.xor $push2=, $1, $pop1
5606 ; NO-SIMD128-FAST-NEXT: i32.and $push3=, $pop2, $33
5607 ; NO-SIMD128-FAST-NEXT: i32.or $push4=, $pop0, $pop3
5608 ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop4
5609 ; NO-SIMD128-FAST-NEXT: i32.and $push5=, $2, $18
5610 ; NO-SIMD128-FAST-NEXT: i32.const $push101=, -1
5611 ; NO-SIMD128-FAST-NEXT: i32.xor $push6=, $2, $pop101
5612 ; NO-SIMD128-FAST-NEXT: i32.and $push7=, $pop6, $34
5613 ; NO-SIMD128-FAST-NEXT: i32.or $push8=, $pop5, $pop7
5614 ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop8
5615 ; NO-SIMD128-FAST-NEXT: i32.and $push9=, $3, $19
5616 ; NO-SIMD128-FAST-NEXT: i32.const $push100=, -1
5617 ; NO-SIMD128-FAST-NEXT: i32.xor $push10=, $3, $pop100
5618 ; NO-SIMD128-FAST-NEXT: i32.and $push11=, $pop10, $35
5619 ; NO-SIMD128-FAST-NEXT: i32.or $push12=, $pop9, $pop11
5620 ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop12
5621 ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 3
5622 ; NO-SIMD128-FAST-NEXT: i32.add $push18=, $0, $pop17
5623 ; NO-SIMD128-FAST-NEXT: i32.and $push13=, $4, $20
5624 ; NO-SIMD128-FAST-NEXT: i32.const $push99=, -1
5625 ; NO-SIMD128-FAST-NEXT: i32.xor $push14=, $4, $pop99
5626 ; NO-SIMD128-FAST-NEXT: i32.and $push15=, $pop14, $36
5627 ; NO-SIMD128-FAST-NEXT: i32.or $push16=, $pop13, $pop15
5628 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop18), $pop16
5629 ; NO-SIMD128-FAST-NEXT: i32.and $push19=, $5, $21
5630 ; NO-SIMD128-FAST-NEXT: i32.const $push98=, -1
5631 ; NO-SIMD128-FAST-NEXT: i32.xor $push20=, $5, $pop98
5632 ; NO-SIMD128-FAST-NEXT: i32.and $push21=, $pop20, $37
5633 ; NO-SIMD128-FAST-NEXT: i32.or $push22=, $pop19, $pop21
5634 ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop22
5635 ; NO-SIMD128-FAST-NEXT: i32.const $push27=, 5
5636 ; NO-SIMD128-FAST-NEXT: i32.add $push28=, $0, $pop27
5637 ; NO-SIMD128-FAST-NEXT: i32.and $push23=, $6, $22
5638 ; NO-SIMD128-FAST-NEXT: i32.const $push97=, -1
5639 ; NO-SIMD128-FAST-NEXT: i32.xor $push24=, $6, $pop97
5640 ; NO-SIMD128-FAST-NEXT: i32.and $push25=, $pop24, $38
5641 ; NO-SIMD128-FAST-NEXT: i32.or $push26=, $pop23, $pop25
5642 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop28), $pop26
5643 ; NO-SIMD128-FAST-NEXT: i32.const $push33=, 6
5644 ; NO-SIMD128-FAST-NEXT: i32.add $push34=, $0, $pop33
5645 ; NO-SIMD128-FAST-NEXT: i32.and $push29=, $7, $23
5646 ; NO-SIMD128-FAST-NEXT: i32.const $push96=, -1
5647 ; NO-SIMD128-FAST-NEXT: i32.xor $push30=, $7, $pop96
5648 ; NO-SIMD128-FAST-NEXT: i32.and $push31=, $pop30, $39
5649 ; NO-SIMD128-FAST-NEXT: i32.or $push32=, $pop29, $pop31
5650 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop34), $pop32
5651 ; NO-SIMD128-FAST-NEXT: i32.const $push39=, 7
5652 ; NO-SIMD128-FAST-NEXT: i32.add $push40=, $0, $pop39
5653 ; NO-SIMD128-FAST-NEXT: i32.and $push35=, $8, $24
5654 ; NO-SIMD128-FAST-NEXT: i32.const $push95=, -1
5655 ; NO-SIMD128-FAST-NEXT: i32.xor $push36=, $8, $pop95
5656 ; NO-SIMD128-FAST-NEXT: i32.and $push37=, $pop36, $40
5657 ; NO-SIMD128-FAST-NEXT: i32.or $push38=, $pop35, $pop37
5658 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop40), $pop38
5659 ; NO-SIMD128-FAST-NEXT: i32.and $push41=, $9, $25
5660 ; NO-SIMD128-FAST-NEXT: i32.const $push94=, -1
5661 ; NO-SIMD128-FAST-NEXT: i32.xor $push42=, $9, $pop94
5662 ; NO-SIMD128-FAST-NEXT: i32.and $push43=, $pop42, $41
5663 ; NO-SIMD128-FAST-NEXT: i32.or $push44=, $pop41, $pop43
5664 ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop44
5665 ; NO-SIMD128-FAST-NEXT: i32.const $push49=, 9
5666 ; NO-SIMD128-FAST-NEXT: i32.add $push50=, $0, $pop49
5667 ; NO-SIMD128-FAST-NEXT: i32.and $push45=, $10, $26
5668 ; NO-SIMD128-FAST-NEXT: i32.const $push93=, -1
5669 ; NO-SIMD128-FAST-NEXT: i32.xor $push46=, $10, $pop93
5670 ; NO-SIMD128-FAST-NEXT: i32.and $push47=, $pop46, $42
5671 ; NO-SIMD128-FAST-NEXT: i32.or $push48=, $pop45, $pop47
5672 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop50), $pop48
5673 ; NO-SIMD128-FAST-NEXT: i32.const $push55=, 10
5674 ; NO-SIMD128-FAST-NEXT: i32.add $push56=, $0, $pop55
5675 ; NO-SIMD128-FAST-NEXT: i32.and $push51=, $11, $27
5676 ; NO-SIMD128-FAST-NEXT: i32.const $push92=, -1
5677 ; NO-SIMD128-FAST-NEXT: i32.xor $push52=, $11, $pop92
5678 ; NO-SIMD128-FAST-NEXT: i32.and $push53=, $pop52, $43
5679 ; NO-SIMD128-FAST-NEXT: i32.or $push54=, $pop51, $pop53
5680 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop56), $pop54
5681 ; NO-SIMD128-FAST-NEXT: i32.const $push61=, 11
5682 ; NO-SIMD128-FAST-NEXT: i32.add $push62=, $0, $pop61
5683 ; NO-SIMD128-FAST-NEXT: i32.and $push57=, $12, $28
5684 ; NO-SIMD128-FAST-NEXT: i32.const $push91=, -1
5685 ; NO-SIMD128-FAST-NEXT: i32.xor $push58=, $12, $pop91
5686 ; NO-SIMD128-FAST-NEXT: i32.and $push59=, $pop58, $44
5687 ; NO-SIMD128-FAST-NEXT: i32.or $push60=, $pop57, $pop59
5688 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop62), $pop60
5689 ; NO-SIMD128-FAST-NEXT: i32.const $push67=, 12
5690 ; NO-SIMD128-FAST-NEXT: i32.add $push68=, $0, $pop67
5691 ; NO-SIMD128-FAST-NEXT: i32.and $push63=, $13, $29
5692 ; NO-SIMD128-FAST-NEXT: i32.const $push90=, -1
5693 ; NO-SIMD128-FAST-NEXT: i32.xor $push64=, $13, $pop90
5694 ; NO-SIMD128-FAST-NEXT: i32.and $push65=, $pop64, $45
5695 ; NO-SIMD128-FAST-NEXT: i32.or $push66=, $pop63, $pop65
5696 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop68), $pop66
5697 ; NO-SIMD128-FAST-NEXT: i32.const $push73=, 13
5698 ; NO-SIMD128-FAST-NEXT: i32.add $push74=, $0, $pop73
5699 ; NO-SIMD128-FAST-NEXT: i32.and $push69=, $14, $30
5700 ; NO-SIMD128-FAST-NEXT: i32.const $push89=, -1
5701 ; NO-SIMD128-FAST-NEXT: i32.xor $push70=, $14, $pop89
5702 ; NO-SIMD128-FAST-NEXT: i32.and $push71=, $pop70, $46
5703 ; NO-SIMD128-FAST-NEXT: i32.or $push72=, $pop69, $pop71
5704 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop74), $pop72
5705 ; NO-SIMD128-FAST-NEXT: i32.const $push79=, 14
5706 ; NO-SIMD128-FAST-NEXT: i32.add $push80=, $0, $pop79
5707 ; NO-SIMD128-FAST-NEXT: i32.and $push75=, $15, $31
5708 ; NO-SIMD128-FAST-NEXT: i32.const $push88=, -1
5709 ; NO-SIMD128-FAST-NEXT: i32.xor $push76=, $15, $pop88
5710 ; NO-SIMD128-FAST-NEXT: i32.and $push77=, $pop76, $47
5711 ; NO-SIMD128-FAST-NEXT: i32.or $push78=, $pop75, $pop77
5712 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop80), $pop78
5713 ; NO-SIMD128-FAST-NEXT: i32.const $push85=, 15
5714 ; NO-SIMD128-FAST-NEXT: i32.add $push86=, $0, $pop85
5715 ; NO-SIMD128-FAST-NEXT: i32.and $push81=, $16, $32
5716 ; NO-SIMD128-FAST-NEXT: i32.const $push87=, -1
5717 ; NO-SIMD128-FAST-NEXT: i32.xor $push82=, $16, $pop87
5718 ; NO-SIMD128-FAST-NEXT: i32.and $push83=, $pop82, $48
5719 ; NO-SIMD128-FAST-NEXT: i32.or $push84=, $pop81, $pop83
5720 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop86), $pop84
5721 ; NO-SIMD128-FAST-NEXT: return
5722 %masked_v1 = and <16 x i8> %c, %v1
5723 %inv_mask = xor <16 x i8> %c,
5724 <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1,
5725 i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
5726 %masked_v2 = and <16 x i8> %inv_mask, %v2
5727 %a = or <16 x i8> %masked_v1, %masked_v2
5731 define <16 x i8> @bitselect_xor_v16i8(<16 x i8> %c, <16 x i8> %v1, <16 x i8> %v2) {
5732 ; SIMD128-LABEL: bitselect_xor_v16i8:
5733 ; SIMD128: .functype bitselect_xor_v16i8 (v128, v128, v128) -> (v128)
5734 ; SIMD128-NEXT: # %bb.0:
5735 ; SIMD128-NEXT: v128.bitselect $push0=, $1, $2, $0
5736 ; SIMD128-NEXT: return $pop0
5738 ; SIMD128-FAST-LABEL: bitselect_xor_v16i8:
5739 ; SIMD128-FAST: .functype bitselect_xor_v16i8 (v128, v128, v128) -> (v128)
5740 ; SIMD128-FAST-NEXT: # %bb.0:
5741 ; SIMD128-FAST-NEXT: v128.xor $push2=, $1, $2
5742 ; SIMD128-FAST-NEXT: v128.and $push1=, $pop2, $0
5743 ; SIMD128-FAST-NEXT: v128.xor $push0=, $pop1, $2
5744 ; SIMD128-FAST-NEXT: return $pop0
5746 ; NO-SIMD128-LABEL: bitselect_xor_v16i8:
5747 ; NO-SIMD128: .functype bitselect_xor_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
5748 ; NO-SIMD128-NEXT: # %bb.0:
5749 ; NO-SIMD128-NEXT: i32.const $push3=, 15
5750 ; NO-SIMD128-NEXT: i32.add $push4=, $0, $pop3
5751 ; NO-SIMD128-NEXT: i32.xor $push0=, $32, $48
5752 ; NO-SIMD128-NEXT: i32.and $push1=, $pop0, $16
5753 ; NO-SIMD128-NEXT: i32.xor $push2=, $pop1, $48
5754 ; NO-SIMD128-NEXT: i32.store8 0($pop4), $pop2
5755 ; NO-SIMD128-NEXT: i32.const $push8=, 14
5756 ; NO-SIMD128-NEXT: i32.add $push9=, $0, $pop8
5757 ; NO-SIMD128-NEXT: i32.xor $push5=, $31, $47
5758 ; NO-SIMD128-NEXT: i32.and $push6=, $pop5, $15
5759 ; NO-SIMD128-NEXT: i32.xor $push7=, $pop6, $47
5760 ; NO-SIMD128-NEXT: i32.store8 0($pop9), $pop7
5761 ; NO-SIMD128-NEXT: i32.const $push13=, 13
5762 ; NO-SIMD128-NEXT: i32.add $push14=, $0, $pop13
5763 ; NO-SIMD128-NEXT: i32.xor $push10=, $30, $46
5764 ; NO-SIMD128-NEXT: i32.and $push11=, $pop10, $14
5765 ; NO-SIMD128-NEXT: i32.xor $push12=, $pop11, $46
5766 ; NO-SIMD128-NEXT: i32.store8 0($pop14), $pop12
5767 ; NO-SIMD128-NEXT: i32.const $push18=, 12
5768 ; NO-SIMD128-NEXT: i32.add $push19=, $0, $pop18
5769 ; NO-SIMD128-NEXT: i32.xor $push15=, $29, $45
5770 ; NO-SIMD128-NEXT: i32.and $push16=, $pop15, $13
5771 ; NO-SIMD128-NEXT: i32.xor $push17=, $pop16, $45
5772 ; NO-SIMD128-NEXT: i32.store8 0($pop19), $pop17
5773 ; NO-SIMD128-NEXT: i32.const $push23=, 11
5774 ; NO-SIMD128-NEXT: i32.add $push24=, $0, $pop23
5775 ; NO-SIMD128-NEXT: i32.xor $push20=, $28, $44
5776 ; NO-SIMD128-NEXT: i32.and $push21=, $pop20, $12
5777 ; NO-SIMD128-NEXT: i32.xor $push22=, $pop21, $44
5778 ; NO-SIMD128-NEXT: i32.store8 0($pop24), $pop22
5779 ; NO-SIMD128-NEXT: i32.const $push28=, 10
5780 ; NO-SIMD128-NEXT: i32.add $push29=, $0, $pop28
5781 ; NO-SIMD128-NEXT: i32.xor $push25=, $27, $43
5782 ; NO-SIMD128-NEXT: i32.and $push26=, $pop25, $11
5783 ; NO-SIMD128-NEXT: i32.xor $push27=, $pop26, $43
5784 ; NO-SIMD128-NEXT: i32.store8 0($pop29), $pop27
5785 ; NO-SIMD128-NEXT: i32.const $push33=, 9
5786 ; NO-SIMD128-NEXT: i32.add $push34=, $0, $pop33
5787 ; NO-SIMD128-NEXT: i32.xor $push30=, $26, $42
5788 ; NO-SIMD128-NEXT: i32.and $push31=, $pop30, $10
5789 ; NO-SIMD128-NEXT: i32.xor $push32=, $pop31, $42
5790 ; NO-SIMD128-NEXT: i32.store8 0($pop34), $pop32
5791 ; NO-SIMD128-NEXT: i32.xor $push35=, $25, $41
5792 ; NO-SIMD128-NEXT: i32.and $push36=, $pop35, $9
5793 ; NO-SIMD128-NEXT: i32.xor $push37=, $pop36, $41
5794 ; NO-SIMD128-NEXT: i32.store8 8($0), $pop37
5795 ; NO-SIMD128-NEXT: i32.const $push41=, 7
5796 ; NO-SIMD128-NEXT: i32.add $push42=, $0, $pop41
5797 ; NO-SIMD128-NEXT: i32.xor $push38=, $24, $40
5798 ; NO-SIMD128-NEXT: i32.and $push39=, $pop38, $8
5799 ; NO-SIMD128-NEXT: i32.xor $push40=, $pop39, $40
5800 ; NO-SIMD128-NEXT: i32.store8 0($pop42), $pop40
5801 ; NO-SIMD128-NEXT: i32.const $push46=, 6
5802 ; NO-SIMD128-NEXT: i32.add $push47=, $0, $pop46
5803 ; NO-SIMD128-NEXT: i32.xor $push43=, $23, $39
5804 ; NO-SIMD128-NEXT: i32.and $push44=, $pop43, $7
5805 ; NO-SIMD128-NEXT: i32.xor $push45=, $pop44, $39
5806 ; NO-SIMD128-NEXT: i32.store8 0($pop47), $pop45
5807 ; NO-SIMD128-NEXT: i32.const $push51=, 5
5808 ; NO-SIMD128-NEXT: i32.add $push52=, $0, $pop51
5809 ; NO-SIMD128-NEXT: i32.xor $push48=, $22, $38
5810 ; NO-SIMD128-NEXT: i32.and $push49=, $pop48, $6
5811 ; NO-SIMD128-NEXT: i32.xor $push50=, $pop49, $38
5812 ; NO-SIMD128-NEXT: i32.store8 0($pop52), $pop50
5813 ; NO-SIMD128-NEXT: i32.xor $push53=, $21, $37
5814 ; NO-SIMD128-NEXT: i32.and $push54=, $pop53, $5
5815 ; NO-SIMD128-NEXT: i32.xor $push55=, $pop54, $37
5816 ; NO-SIMD128-NEXT: i32.store8 4($0), $pop55
5817 ; NO-SIMD128-NEXT: i32.const $push59=, 3
5818 ; NO-SIMD128-NEXT: i32.add $push60=, $0, $pop59
5819 ; NO-SIMD128-NEXT: i32.xor $push56=, $20, $36
5820 ; NO-SIMD128-NEXT: i32.and $push57=, $pop56, $4
5821 ; NO-SIMD128-NEXT: i32.xor $push58=, $pop57, $36
5822 ; NO-SIMD128-NEXT: i32.store8 0($pop60), $pop58
5823 ; NO-SIMD128-NEXT: i32.xor $push61=, $19, $35
5824 ; NO-SIMD128-NEXT: i32.and $push62=, $pop61, $3
5825 ; NO-SIMD128-NEXT: i32.xor $push63=, $pop62, $35
5826 ; NO-SIMD128-NEXT: i32.store8 2($0), $pop63
5827 ; NO-SIMD128-NEXT: i32.xor $push64=, $18, $34
5828 ; NO-SIMD128-NEXT: i32.and $push65=, $pop64, $2
5829 ; NO-SIMD128-NEXT: i32.xor $push66=, $pop65, $34
5830 ; NO-SIMD128-NEXT: i32.store8 1($0), $pop66
5831 ; NO-SIMD128-NEXT: i32.xor $push67=, $17, $33
5832 ; NO-SIMD128-NEXT: i32.and $push68=, $pop67, $1
5833 ; NO-SIMD128-NEXT: i32.xor $push69=, $pop68, $33
5834 ; NO-SIMD128-NEXT: i32.store8 0($0), $pop69
5835 ; NO-SIMD128-NEXT: return
5837 ; NO-SIMD128-FAST-LABEL: bitselect_xor_v16i8:
5838 ; NO-SIMD128-FAST: .functype bitselect_xor_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
5839 ; NO-SIMD128-FAST-NEXT: # %bb.0:
5840 ; NO-SIMD128-FAST-NEXT: i32.xor $push0=, $17, $33
5841 ; NO-SIMD128-FAST-NEXT: i32.and $push1=, $pop0, $1
5842 ; NO-SIMD128-FAST-NEXT: i32.xor $push2=, $pop1, $33
5843 ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop2
5844 ; NO-SIMD128-FAST-NEXT: i32.xor $push3=, $18, $34
5845 ; NO-SIMD128-FAST-NEXT: i32.and $push4=, $pop3, $2
5846 ; NO-SIMD128-FAST-NEXT: i32.xor $push5=, $pop4, $34
5847 ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop5
5848 ; NO-SIMD128-FAST-NEXT: i32.xor $push6=, $19, $35
5849 ; NO-SIMD128-FAST-NEXT: i32.and $push7=, $pop6, $3
5850 ; NO-SIMD128-FAST-NEXT: i32.xor $push8=, $pop7, $35
5851 ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop8
5852 ; NO-SIMD128-FAST-NEXT: i32.const $push9=, 3
5853 ; NO-SIMD128-FAST-NEXT: i32.add $push10=, $0, $pop9
5854 ; NO-SIMD128-FAST-NEXT: i32.xor $push11=, $20, $36
5855 ; NO-SIMD128-FAST-NEXT: i32.and $push12=, $pop11, $4
5856 ; NO-SIMD128-FAST-NEXT: i32.xor $push13=, $pop12, $36
5857 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop10), $pop13
5858 ; NO-SIMD128-FAST-NEXT: i32.xor $push14=, $21, $37
5859 ; NO-SIMD128-FAST-NEXT: i32.and $push15=, $pop14, $5
5860 ; NO-SIMD128-FAST-NEXT: i32.xor $push16=, $pop15, $37
5861 ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop16
5862 ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 5
5863 ; NO-SIMD128-FAST-NEXT: i32.add $push18=, $0, $pop17
5864 ; NO-SIMD128-FAST-NEXT: i32.xor $push19=, $22, $38
5865 ; NO-SIMD128-FAST-NEXT: i32.and $push20=, $pop19, $6
5866 ; NO-SIMD128-FAST-NEXT: i32.xor $push21=, $pop20, $38
5867 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop18), $pop21
5868 ; NO-SIMD128-FAST-NEXT: i32.const $push22=, 6
5869 ; NO-SIMD128-FAST-NEXT: i32.add $push23=, $0, $pop22
5870 ; NO-SIMD128-FAST-NEXT: i32.xor $push24=, $23, $39
5871 ; NO-SIMD128-FAST-NEXT: i32.and $push25=, $pop24, $7
5872 ; NO-SIMD128-FAST-NEXT: i32.xor $push26=, $pop25, $39
5873 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop23), $pop26
5874 ; NO-SIMD128-FAST-NEXT: i32.const $push27=, 7
5875 ; NO-SIMD128-FAST-NEXT: i32.add $push28=, $0, $pop27
5876 ; NO-SIMD128-FAST-NEXT: i32.xor $push29=, $24, $40
5877 ; NO-SIMD128-FAST-NEXT: i32.and $push30=, $pop29, $8
5878 ; NO-SIMD128-FAST-NEXT: i32.xor $push31=, $pop30, $40
5879 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop28), $pop31
5880 ; NO-SIMD128-FAST-NEXT: i32.xor $push32=, $25, $41
5881 ; NO-SIMD128-FAST-NEXT: i32.and $push33=, $pop32, $9
5882 ; NO-SIMD128-FAST-NEXT: i32.xor $push34=, $pop33, $41
5883 ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop34
5884 ; NO-SIMD128-FAST-NEXT: i32.const $push35=, 9
5885 ; NO-SIMD128-FAST-NEXT: i32.add $push36=, $0, $pop35
5886 ; NO-SIMD128-FAST-NEXT: i32.xor $push37=, $26, $42
5887 ; NO-SIMD128-FAST-NEXT: i32.and $push38=, $pop37, $10
5888 ; NO-SIMD128-FAST-NEXT: i32.xor $push39=, $pop38, $42
5889 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop36), $pop39
5890 ; NO-SIMD128-FAST-NEXT: i32.const $push40=, 10
5891 ; NO-SIMD128-FAST-NEXT: i32.add $push41=, $0, $pop40
5892 ; NO-SIMD128-FAST-NEXT: i32.xor $push42=, $27, $43
5893 ; NO-SIMD128-FAST-NEXT: i32.and $push43=, $pop42, $11
5894 ; NO-SIMD128-FAST-NEXT: i32.xor $push44=, $pop43, $43
5895 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop41), $pop44
5896 ; NO-SIMD128-FAST-NEXT: i32.const $push45=, 11
5897 ; NO-SIMD128-FAST-NEXT: i32.add $push46=, $0, $pop45
5898 ; NO-SIMD128-FAST-NEXT: i32.xor $push47=, $28, $44
5899 ; NO-SIMD128-FAST-NEXT: i32.and $push48=, $pop47, $12
5900 ; NO-SIMD128-FAST-NEXT: i32.xor $push49=, $pop48, $44
5901 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop46), $pop49
5902 ; NO-SIMD128-FAST-NEXT: i32.const $push50=, 12
5903 ; NO-SIMD128-FAST-NEXT: i32.add $push51=, $0, $pop50
5904 ; NO-SIMD128-FAST-NEXT: i32.xor $push52=, $29, $45
5905 ; NO-SIMD128-FAST-NEXT: i32.and $push53=, $pop52, $13
5906 ; NO-SIMD128-FAST-NEXT: i32.xor $push54=, $pop53, $45
5907 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop51), $pop54
5908 ; NO-SIMD128-FAST-NEXT: i32.const $push55=, 13
5909 ; NO-SIMD128-FAST-NEXT: i32.add $push56=, $0, $pop55
5910 ; NO-SIMD128-FAST-NEXT: i32.xor $push57=, $30, $46
5911 ; NO-SIMD128-FAST-NEXT: i32.and $push58=, $pop57, $14
5912 ; NO-SIMD128-FAST-NEXT: i32.xor $push59=, $pop58, $46
5913 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop56), $pop59
5914 ; NO-SIMD128-FAST-NEXT: i32.const $push60=, 14
5915 ; NO-SIMD128-FAST-NEXT: i32.add $push61=, $0, $pop60
5916 ; NO-SIMD128-FAST-NEXT: i32.xor $push62=, $31, $47
5917 ; NO-SIMD128-FAST-NEXT: i32.and $push63=, $pop62, $15
5918 ; NO-SIMD128-FAST-NEXT: i32.xor $push64=, $pop63, $47
5919 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop61), $pop64
5920 ; NO-SIMD128-FAST-NEXT: i32.const $push65=, 15
5921 ; NO-SIMD128-FAST-NEXT: i32.add $push66=, $0, $pop65
5922 ; NO-SIMD128-FAST-NEXT: i32.xor $push67=, $32, $48
5923 ; NO-SIMD128-FAST-NEXT: i32.and $push68=, $pop67, $16
5924 ; NO-SIMD128-FAST-NEXT: i32.xor $push69=, $pop68, $48
5925 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop66), $pop69
5926 ; NO-SIMD128-FAST-NEXT: return
5927 %xor1 = xor <16 x i8> %v1, %v2
5928 %and = and <16 x i8> %xor1, %c
5929 %a = xor <16 x i8> %and, %v2
5933 define <16 x i8> @bitselect_xor_reversed_v16i8(<16 x i8> %c, <16 x i8> %v1, <16 x i8> %v2) {
5934 ; SIMD128-LABEL: bitselect_xor_reversed_v16i8:
5935 ; SIMD128: .functype bitselect_xor_reversed_v16i8 (v128, v128, v128) -> (v128)
5936 ; SIMD128-NEXT: # %bb.0:
5937 ; SIMD128-NEXT: v128.bitselect $push0=, $2, $1, $0
5938 ; SIMD128-NEXT: return $pop0
5940 ; SIMD128-FAST-LABEL: bitselect_xor_reversed_v16i8:
5941 ; SIMD128-FAST: .functype bitselect_xor_reversed_v16i8 (v128, v128, v128) -> (v128)
5942 ; SIMD128-FAST-NEXT: # %bb.0:
5943 ; SIMD128-FAST-NEXT: v128.xor $push1=, $1, $2
5944 ; SIMD128-FAST-NEXT: v128.not $push2=, $0
5945 ; SIMD128-FAST-NEXT: v128.and $push3=, $pop1, $pop2
5946 ; SIMD128-FAST-NEXT: v128.xor $push0=, $pop3, $2
5947 ; SIMD128-FAST-NEXT: return $pop0
5949 ; NO-SIMD128-LABEL: bitselect_xor_reversed_v16i8:
5950 ; NO-SIMD128: .functype bitselect_xor_reversed_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
5951 ; NO-SIMD128-NEXT: # %bb.0:
5952 ; NO-SIMD128-NEXT: i32.const $push5=, 15
5953 ; NO-SIMD128-NEXT: i32.add $push6=, $0, $pop5
5954 ; NO-SIMD128-NEXT: i32.xor $push2=, $32, $48
5955 ; NO-SIMD128-NEXT: i32.const $push0=, -1
5956 ; NO-SIMD128-NEXT: i32.xor $push1=, $16, $pop0
5957 ; NO-SIMD128-NEXT: i32.and $push3=, $pop2, $pop1
5958 ; NO-SIMD128-NEXT: i32.xor $push4=, $pop3, $48
5959 ; NO-SIMD128-NEXT: i32.store8 0($pop6), $pop4
5960 ; NO-SIMD128-NEXT: i32.const $push11=, 14
5961 ; NO-SIMD128-NEXT: i32.add $push12=, $0, $pop11
5962 ; NO-SIMD128-NEXT: i32.xor $push8=, $31, $47
5963 ; NO-SIMD128-NEXT: i32.const $push101=, -1
5964 ; NO-SIMD128-NEXT: i32.xor $push7=, $15, $pop101
5965 ; NO-SIMD128-NEXT: i32.and $push9=, $pop8, $pop7
5966 ; NO-SIMD128-NEXT: i32.xor $push10=, $pop9, $47
5967 ; NO-SIMD128-NEXT: i32.store8 0($pop12), $pop10
5968 ; NO-SIMD128-NEXT: i32.const $push17=, 13
5969 ; NO-SIMD128-NEXT: i32.add $push18=, $0, $pop17
5970 ; NO-SIMD128-NEXT: i32.xor $push14=, $30, $46
5971 ; NO-SIMD128-NEXT: i32.const $push100=, -1
5972 ; NO-SIMD128-NEXT: i32.xor $push13=, $14, $pop100
5973 ; NO-SIMD128-NEXT: i32.and $push15=, $pop14, $pop13
5974 ; NO-SIMD128-NEXT: i32.xor $push16=, $pop15, $46
5975 ; NO-SIMD128-NEXT: i32.store8 0($pop18), $pop16
5976 ; NO-SIMD128-NEXT: i32.const $push23=, 12
5977 ; NO-SIMD128-NEXT: i32.add $push24=, $0, $pop23
5978 ; NO-SIMD128-NEXT: i32.xor $push20=, $29, $45
5979 ; NO-SIMD128-NEXT: i32.const $push99=, -1
5980 ; NO-SIMD128-NEXT: i32.xor $push19=, $13, $pop99
5981 ; NO-SIMD128-NEXT: i32.and $push21=, $pop20, $pop19
5982 ; NO-SIMD128-NEXT: i32.xor $push22=, $pop21, $45
5983 ; NO-SIMD128-NEXT: i32.store8 0($pop24), $pop22
5984 ; NO-SIMD128-NEXT: i32.const $push29=, 11
5985 ; NO-SIMD128-NEXT: i32.add $push30=, $0, $pop29
5986 ; NO-SIMD128-NEXT: i32.xor $push26=, $28, $44
5987 ; NO-SIMD128-NEXT: i32.const $push98=, -1
5988 ; NO-SIMD128-NEXT: i32.xor $push25=, $12, $pop98
5989 ; NO-SIMD128-NEXT: i32.and $push27=, $pop26, $pop25
5990 ; NO-SIMD128-NEXT: i32.xor $push28=, $pop27, $44
5991 ; NO-SIMD128-NEXT: i32.store8 0($pop30), $pop28
5992 ; NO-SIMD128-NEXT: i32.const $push35=, 10
5993 ; NO-SIMD128-NEXT: i32.add $push36=, $0, $pop35
5994 ; NO-SIMD128-NEXT: i32.xor $push32=, $27, $43
5995 ; NO-SIMD128-NEXT: i32.const $push97=, -1
5996 ; NO-SIMD128-NEXT: i32.xor $push31=, $11, $pop97
5997 ; NO-SIMD128-NEXT: i32.and $push33=, $pop32, $pop31
5998 ; NO-SIMD128-NEXT: i32.xor $push34=, $pop33, $43
5999 ; NO-SIMD128-NEXT: i32.store8 0($pop36), $pop34
6000 ; NO-SIMD128-NEXT: i32.const $push41=, 9
6001 ; NO-SIMD128-NEXT: i32.add $push42=, $0, $pop41
6002 ; NO-SIMD128-NEXT: i32.xor $push38=, $26, $42
6003 ; NO-SIMD128-NEXT: i32.const $push96=, -1
6004 ; NO-SIMD128-NEXT: i32.xor $push37=, $10, $pop96
6005 ; NO-SIMD128-NEXT: i32.and $push39=, $pop38, $pop37
6006 ; NO-SIMD128-NEXT: i32.xor $push40=, $pop39, $42
6007 ; NO-SIMD128-NEXT: i32.store8 0($pop42), $pop40
6008 ; NO-SIMD128-NEXT: i32.xor $push44=, $25, $41
6009 ; NO-SIMD128-NEXT: i32.const $push95=, -1
6010 ; NO-SIMD128-NEXT: i32.xor $push43=, $9, $pop95
6011 ; NO-SIMD128-NEXT: i32.and $push45=, $pop44, $pop43
6012 ; NO-SIMD128-NEXT: i32.xor $push46=, $pop45, $41
6013 ; NO-SIMD128-NEXT: i32.store8 8($0), $pop46
6014 ; NO-SIMD128-NEXT: i32.const $push51=, 7
6015 ; NO-SIMD128-NEXT: i32.add $push52=, $0, $pop51
6016 ; NO-SIMD128-NEXT: i32.xor $push48=, $24, $40
6017 ; NO-SIMD128-NEXT: i32.const $push94=, -1
6018 ; NO-SIMD128-NEXT: i32.xor $push47=, $8, $pop94
6019 ; NO-SIMD128-NEXT: i32.and $push49=, $pop48, $pop47
6020 ; NO-SIMD128-NEXT: i32.xor $push50=, $pop49, $40
6021 ; NO-SIMD128-NEXT: i32.store8 0($pop52), $pop50
6022 ; NO-SIMD128-NEXT: i32.const $push57=, 6
6023 ; NO-SIMD128-NEXT: i32.add $push58=, $0, $pop57
6024 ; NO-SIMD128-NEXT: i32.xor $push54=, $23, $39
6025 ; NO-SIMD128-NEXT: i32.const $push93=, -1
6026 ; NO-SIMD128-NEXT: i32.xor $push53=, $7, $pop93
6027 ; NO-SIMD128-NEXT: i32.and $push55=, $pop54, $pop53
6028 ; NO-SIMD128-NEXT: i32.xor $push56=, $pop55, $39
6029 ; NO-SIMD128-NEXT: i32.store8 0($pop58), $pop56
6030 ; NO-SIMD128-NEXT: i32.const $push63=, 5
6031 ; NO-SIMD128-NEXT: i32.add $push64=, $0, $pop63
6032 ; NO-SIMD128-NEXT: i32.xor $push60=, $22, $38
6033 ; NO-SIMD128-NEXT: i32.const $push92=, -1
6034 ; NO-SIMD128-NEXT: i32.xor $push59=, $6, $pop92
6035 ; NO-SIMD128-NEXT: i32.and $push61=, $pop60, $pop59
6036 ; NO-SIMD128-NEXT: i32.xor $push62=, $pop61, $38
6037 ; NO-SIMD128-NEXT: i32.store8 0($pop64), $pop62
6038 ; NO-SIMD128-NEXT: i32.xor $push66=, $21, $37
6039 ; NO-SIMD128-NEXT: i32.const $push91=, -1
6040 ; NO-SIMD128-NEXT: i32.xor $push65=, $5, $pop91
6041 ; NO-SIMD128-NEXT: i32.and $push67=, $pop66, $pop65
6042 ; NO-SIMD128-NEXT: i32.xor $push68=, $pop67, $37
6043 ; NO-SIMD128-NEXT: i32.store8 4($0), $pop68
6044 ; NO-SIMD128-NEXT: i32.const $push73=, 3
6045 ; NO-SIMD128-NEXT: i32.add $push74=, $0, $pop73
6046 ; NO-SIMD128-NEXT: i32.xor $push70=, $20, $36
6047 ; NO-SIMD128-NEXT: i32.const $push90=, -1
6048 ; NO-SIMD128-NEXT: i32.xor $push69=, $4, $pop90
6049 ; NO-SIMD128-NEXT: i32.and $push71=, $pop70, $pop69
6050 ; NO-SIMD128-NEXT: i32.xor $push72=, $pop71, $36
6051 ; NO-SIMD128-NEXT: i32.store8 0($pop74), $pop72
6052 ; NO-SIMD128-NEXT: i32.xor $push76=, $19, $35
6053 ; NO-SIMD128-NEXT: i32.const $push89=, -1
6054 ; NO-SIMD128-NEXT: i32.xor $push75=, $3, $pop89
6055 ; NO-SIMD128-NEXT: i32.and $push77=, $pop76, $pop75
6056 ; NO-SIMD128-NEXT: i32.xor $push78=, $pop77, $35
6057 ; NO-SIMD128-NEXT: i32.store8 2($0), $pop78
6058 ; NO-SIMD128-NEXT: i32.xor $push80=, $18, $34
6059 ; NO-SIMD128-NEXT: i32.const $push88=, -1
6060 ; NO-SIMD128-NEXT: i32.xor $push79=, $2, $pop88
6061 ; NO-SIMD128-NEXT: i32.and $push81=, $pop80, $pop79
6062 ; NO-SIMD128-NEXT: i32.xor $push82=, $pop81, $34
6063 ; NO-SIMD128-NEXT: i32.store8 1($0), $pop82
6064 ; NO-SIMD128-NEXT: i32.xor $push84=, $17, $33
6065 ; NO-SIMD128-NEXT: i32.const $push87=, -1
6066 ; NO-SIMD128-NEXT: i32.xor $push83=, $1, $pop87
6067 ; NO-SIMD128-NEXT: i32.and $push85=, $pop84, $pop83
6068 ; NO-SIMD128-NEXT: i32.xor $push86=, $pop85, $33
6069 ; NO-SIMD128-NEXT: i32.store8 0($0), $pop86
6070 ; NO-SIMD128-NEXT: return
6072 ; NO-SIMD128-FAST-LABEL: bitselect_xor_reversed_v16i8:
6073 ; NO-SIMD128-FAST: .functype bitselect_xor_reversed_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
6074 ; NO-SIMD128-FAST-NEXT: # %bb.0:
6075 ; NO-SIMD128-FAST-NEXT: i32.xor $push2=, $17, $33
6076 ; NO-SIMD128-FAST-NEXT: i32.const $push0=, -1
6077 ; NO-SIMD128-FAST-NEXT: i32.xor $push1=, $1, $pop0
6078 ; NO-SIMD128-FAST-NEXT: i32.and $push3=, $pop2, $pop1
6079 ; NO-SIMD128-FAST-NEXT: i32.xor $push4=, $pop3, $33
6080 ; NO-SIMD128-FAST-NEXT: i32.store8 0($0), $pop4
6081 ; NO-SIMD128-FAST-NEXT: i32.xor $push6=, $18, $34
6082 ; NO-SIMD128-FAST-NEXT: i32.const $push101=, -1
6083 ; NO-SIMD128-FAST-NEXT: i32.xor $push5=, $2, $pop101
6084 ; NO-SIMD128-FAST-NEXT: i32.and $push7=, $pop6, $pop5
6085 ; NO-SIMD128-FAST-NEXT: i32.xor $push8=, $pop7, $34
6086 ; NO-SIMD128-FAST-NEXT: i32.store8 1($0), $pop8
6087 ; NO-SIMD128-FAST-NEXT: i32.xor $push10=, $19, $35
6088 ; NO-SIMD128-FAST-NEXT: i32.const $push100=, -1
6089 ; NO-SIMD128-FAST-NEXT: i32.xor $push9=, $3, $pop100
6090 ; NO-SIMD128-FAST-NEXT: i32.and $push11=, $pop10, $pop9
6091 ; NO-SIMD128-FAST-NEXT: i32.xor $push12=, $pop11, $35
6092 ; NO-SIMD128-FAST-NEXT: i32.store8 2($0), $pop12
6093 ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 3
6094 ; NO-SIMD128-FAST-NEXT: i32.add $push18=, $0, $pop17
6095 ; NO-SIMD128-FAST-NEXT: i32.xor $push14=, $20, $36
6096 ; NO-SIMD128-FAST-NEXT: i32.const $push99=, -1
6097 ; NO-SIMD128-FAST-NEXT: i32.xor $push13=, $4, $pop99
6098 ; NO-SIMD128-FAST-NEXT: i32.and $push15=, $pop14, $pop13
6099 ; NO-SIMD128-FAST-NEXT: i32.xor $push16=, $pop15, $36
6100 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop18), $pop16
6101 ; NO-SIMD128-FAST-NEXT: i32.xor $push20=, $21, $37
6102 ; NO-SIMD128-FAST-NEXT: i32.const $push98=, -1
6103 ; NO-SIMD128-FAST-NEXT: i32.xor $push19=, $5, $pop98
6104 ; NO-SIMD128-FAST-NEXT: i32.and $push21=, $pop20, $pop19
6105 ; NO-SIMD128-FAST-NEXT: i32.xor $push22=, $pop21, $37
6106 ; NO-SIMD128-FAST-NEXT: i32.store8 4($0), $pop22
6107 ; NO-SIMD128-FAST-NEXT: i32.const $push27=, 5
6108 ; NO-SIMD128-FAST-NEXT: i32.add $push28=, $0, $pop27
6109 ; NO-SIMD128-FAST-NEXT: i32.xor $push24=, $22, $38
6110 ; NO-SIMD128-FAST-NEXT: i32.const $push97=, -1
6111 ; NO-SIMD128-FAST-NEXT: i32.xor $push23=, $6, $pop97
6112 ; NO-SIMD128-FAST-NEXT: i32.and $push25=, $pop24, $pop23
6113 ; NO-SIMD128-FAST-NEXT: i32.xor $push26=, $pop25, $38
6114 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop28), $pop26
6115 ; NO-SIMD128-FAST-NEXT: i32.const $push33=, 6
6116 ; NO-SIMD128-FAST-NEXT: i32.add $push34=, $0, $pop33
6117 ; NO-SIMD128-FAST-NEXT: i32.xor $push30=, $23, $39
6118 ; NO-SIMD128-FAST-NEXT: i32.const $push96=, -1
6119 ; NO-SIMD128-FAST-NEXT: i32.xor $push29=, $7, $pop96
6120 ; NO-SIMD128-FAST-NEXT: i32.and $push31=, $pop30, $pop29
6121 ; NO-SIMD128-FAST-NEXT: i32.xor $push32=, $pop31, $39
6122 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop34), $pop32
6123 ; NO-SIMD128-FAST-NEXT: i32.const $push39=, 7
6124 ; NO-SIMD128-FAST-NEXT: i32.add $push40=, $0, $pop39
6125 ; NO-SIMD128-FAST-NEXT: i32.xor $push36=, $24, $40
6126 ; NO-SIMD128-FAST-NEXT: i32.const $push95=, -1
6127 ; NO-SIMD128-FAST-NEXT: i32.xor $push35=, $8, $pop95
6128 ; NO-SIMD128-FAST-NEXT: i32.and $push37=, $pop36, $pop35
6129 ; NO-SIMD128-FAST-NEXT: i32.xor $push38=, $pop37, $40
6130 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop40), $pop38
6131 ; NO-SIMD128-FAST-NEXT: i32.xor $push42=, $25, $41
6132 ; NO-SIMD128-FAST-NEXT: i32.const $push94=, -1
6133 ; NO-SIMD128-FAST-NEXT: i32.xor $push41=, $9, $pop94
6134 ; NO-SIMD128-FAST-NEXT: i32.and $push43=, $pop42, $pop41
6135 ; NO-SIMD128-FAST-NEXT: i32.xor $push44=, $pop43, $41
6136 ; NO-SIMD128-FAST-NEXT: i32.store8 8($0), $pop44
6137 ; NO-SIMD128-FAST-NEXT: i32.const $push49=, 9
6138 ; NO-SIMD128-FAST-NEXT: i32.add $push50=, $0, $pop49
6139 ; NO-SIMD128-FAST-NEXT: i32.xor $push46=, $26, $42
6140 ; NO-SIMD128-FAST-NEXT: i32.const $push93=, -1
6141 ; NO-SIMD128-FAST-NEXT: i32.xor $push45=, $10, $pop93
6142 ; NO-SIMD128-FAST-NEXT: i32.and $push47=, $pop46, $pop45
6143 ; NO-SIMD128-FAST-NEXT: i32.xor $push48=, $pop47, $42
6144 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop50), $pop48
6145 ; NO-SIMD128-FAST-NEXT: i32.const $push55=, 10
6146 ; NO-SIMD128-FAST-NEXT: i32.add $push56=, $0, $pop55
6147 ; NO-SIMD128-FAST-NEXT: i32.xor $push52=, $27, $43
6148 ; NO-SIMD128-FAST-NEXT: i32.const $push92=, -1
6149 ; NO-SIMD128-FAST-NEXT: i32.xor $push51=, $11, $pop92
6150 ; NO-SIMD128-FAST-NEXT: i32.and $push53=, $pop52, $pop51
6151 ; NO-SIMD128-FAST-NEXT: i32.xor $push54=, $pop53, $43
6152 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop56), $pop54
6153 ; NO-SIMD128-FAST-NEXT: i32.const $push61=, 11
6154 ; NO-SIMD128-FAST-NEXT: i32.add $push62=, $0, $pop61
6155 ; NO-SIMD128-FAST-NEXT: i32.xor $push58=, $28, $44
6156 ; NO-SIMD128-FAST-NEXT: i32.const $push91=, -1
6157 ; NO-SIMD128-FAST-NEXT: i32.xor $push57=, $12, $pop91
6158 ; NO-SIMD128-FAST-NEXT: i32.and $push59=, $pop58, $pop57
6159 ; NO-SIMD128-FAST-NEXT: i32.xor $push60=, $pop59, $44
6160 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop62), $pop60
6161 ; NO-SIMD128-FAST-NEXT: i32.const $push67=, 12
6162 ; NO-SIMD128-FAST-NEXT: i32.add $push68=, $0, $pop67
6163 ; NO-SIMD128-FAST-NEXT: i32.xor $push64=, $29, $45
6164 ; NO-SIMD128-FAST-NEXT: i32.const $push90=, -1
6165 ; NO-SIMD128-FAST-NEXT: i32.xor $push63=, $13, $pop90
6166 ; NO-SIMD128-FAST-NEXT: i32.and $push65=, $pop64, $pop63
6167 ; NO-SIMD128-FAST-NEXT: i32.xor $push66=, $pop65, $45
6168 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop68), $pop66
6169 ; NO-SIMD128-FAST-NEXT: i32.const $push73=, 13
6170 ; NO-SIMD128-FAST-NEXT: i32.add $push74=, $0, $pop73
6171 ; NO-SIMD128-FAST-NEXT: i32.xor $push70=, $30, $46
6172 ; NO-SIMD128-FAST-NEXT: i32.const $push89=, -1
6173 ; NO-SIMD128-FAST-NEXT: i32.xor $push69=, $14, $pop89
6174 ; NO-SIMD128-FAST-NEXT: i32.and $push71=, $pop70, $pop69
6175 ; NO-SIMD128-FAST-NEXT: i32.xor $push72=, $pop71, $46
6176 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop74), $pop72
6177 ; NO-SIMD128-FAST-NEXT: i32.const $push79=, 14
6178 ; NO-SIMD128-FAST-NEXT: i32.add $push80=, $0, $pop79
6179 ; NO-SIMD128-FAST-NEXT: i32.xor $push76=, $31, $47
6180 ; NO-SIMD128-FAST-NEXT: i32.const $push88=, -1
6181 ; NO-SIMD128-FAST-NEXT: i32.xor $push75=, $15, $pop88
6182 ; NO-SIMD128-FAST-NEXT: i32.and $push77=, $pop76, $pop75
6183 ; NO-SIMD128-FAST-NEXT: i32.xor $push78=, $pop77, $47
6184 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop80), $pop78
6185 ; NO-SIMD128-FAST-NEXT: i32.const $push85=, 15
6186 ; NO-SIMD128-FAST-NEXT: i32.add $push86=, $0, $pop85
6187 ; NO-SIMD128-FAST-NEXT: i32.xor $push82=, $32, $48
6188 ; NO-SIMD128-FAST-NEXT: i32.const $push87=, -1
6189 ; NO-SIMD128-FAST-NEXT: i32.xor $push81=, $16, $pop87
6190 ; NO-SIMD128-FAST-NEXT: i32.and $push83=, $pop82, $pop81
6191 ; NO-SIMD128-FAST-NEXT: i32.xor $push84=, $pop83, $48
6192 ; NO-SIMD128-FAST-NEXT: i32.store8 0($pop86), $pop84
6193 ; NO-SIMD128-FAST-NEXT: return
6194 %xor1 = xor <16 x i8> %v1, %v2
6195 %notc = xor <16 x i8> %c, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1,
6196 i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
6197 %and = and <16 x i8> %xor1, %notc
6198 %a = xor <16 x i8> %and, %v2
6202 ; ==============================================================================
6204 ; ==============================================================================
6205 define <8 x i16> @add_v8i16(<8 x i16> %x, <8 x i16> %y) {
6206 ; SIMD128-LABEL: add_v8i16:
6207 ; SIMD128: .functype add_v8i16 (v128, v128) -> (v128)
6208 ; SIMD128-NEXT: # %bb.0:
6209 ; SIMD128-NEXT: i16x8.add $push0=, $0, $1
6210 ; SIMD128-NEXT: return $pop0
6212 ; SIMD128-FAST-LABEL: add_v8i16:
6213 ; SIMD128-FAST: .functype add_v8i16 (v128, v128) -> (v128)
6214 ; SIMD128-FAST-NEXT: # %bb.0:
6215 ; SIMD128-FAST-NEXT: i16x8.add $push0=, $0, $1
6216 ; SIMD128-FAST-NEXT: return $pop0
6218 ; NO-SIMD128-LABEL: add_v8i16:
6219 ; NO-SIMD128: .functype add_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
6220 ; NO-SIMD128-NEXT: # %bb.0:
6221 ; NO-SIMD128-NEXT: i32.add $push0=, $5, $13
6222 ; NO-SIMD128-NEXT: i32.store16 8($0), $pop0
6223 ; NO-SIMD128-NEXT: i32.add $push1=, $3, $11
6224 ; NO-SIMD128-NEXT: i32.store16 4($0), $pop1
6225 ; NO-SIMD128-NEXT: i32.add $push2=, $2, $10
6226 ; NO-SIMD128-NEXT: i32.store16 2($0), $pop2
6227 ; NO-SIMD128-NEXT: i32.add $push3=, $1, $9
6228 ; NO-SIMD128-NEXT: i32.store16 0($0), $pop3
6229 ; NO-SIMD128-NEXT: i32.const $push5=, 14
6230 ; NO-SIMD128-NEXT: i32.add $push6=, $0, $pop5
6231 ; NO-SIMD128-NEXT: i32.add $push4=, $8, $16
6232 ; NO-SIMD128-NEXT: i32.store16 0($pop6), $pop4
6233 ; NO-SIMD128-NEXT: i32.const $push8=, 12
6234 ; NO-SIMD128-NEXT: i32.add $push9=, $0, $pop8
6235 ; NO-SIMD128-NEXT: i32.add $push7=, $7, $15
6236 ; NO-SIMD128-NEXT: i32.store16 0($pop9), $pop7
6237 ; NO-SIMD128-NEXT: i32.const $push11=, 10
6238 ; NO-SIMD128-NEXT: i32.add $push12=, $0, $pop11
6239 ; NO-SIMD128-NEXT: i32.add $push10=, $6, $14
6240 ; NO-SIMD128-NEXT: i32.store16 0($pop12), $pop10
6241 ; NO-SIMD128-NEXT: i32.const $push14=, 6
6242 ; NO-SIMD128-NEXT: i32.add $push15=, $0, $pop14
6243 ; NO-SIMD128-NEXT: i32.add $push13=, $4, $12
6244 ; NO-SIMD128-NEXT: i32.store16 0($pop15), $pop13
6245 ; NO-SIMD128-NEXT: return
6247 ; NO-SIMD128-FAST-LABEL: add_v8i16:
6248 ; NO-SIMD128-FAST: .functype add_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
6249 ; NO-SIMD128-FAST-NEXT: # %bb.0:
6250 ; NO-SIMD128-FAST-NEXT: i32.add $push0=, $1, $9
6251 ; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop0
6252 ; NO-SIMD128-FAST-NEXT: i32.add $push1=, $2, $10
6253 ; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop1
6254 ; NO-SIMD128-FAST-NEXT: i32.add $push2=, $3, $11
6255 ; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop2
6256 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 6
6257 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
6258 ; NO-SIMD128-FAST-NEXT: i32.add $push5=, $4, $12
6259 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop4), $pop5
6260 ; NO-SIMD128-FAST-NEXT: i32.add $push6=, $5, $13
6261 ; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop6
6262 ; NO-SIMD128-FAST-NEXT: i32.const $push7=, 10
6263 ; NO-SIMD128-FAST-NEXT: i32.add $push8=, $0, $pop7
6264 ; NO-SIMD128-FAST-NEXT: i32.add $push9=, $6, $14
6265 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop8), $pop9
6266 ; NO-SIMD128-FAST-NEXT: i32.const $push10=, 12
6267 ; NO-SIMD128-FAST-NEXT: i32.add $push11=, $0, $pop10
6268 ; NO-SIMD128-FAST-NEXT: i32.add $push12=, $7, $15
6269 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop11), $pop12
6270 ; NO-SIMD128-FAST-NEXT: i32.const $push13=, 14
6271 ; NO-SIMD128-FAST-NEXT: i32.add $push14=, $0, $pop13
6272 ; NO-SIMD128-FAST-NEXT: i32.add $push15=, $8, $16
6273 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop14), $pop15
6274 ; NO-SIMD128-FAST-NEXT: return
6275 %a = add <8 x i16> %x, %y
6279 define <8 x i16> @sub_v8i16(<8 x i16> %x, <8 x i16> %y) {
6280 ; SIMD128-LABEL: sub_v8i16:
6281 ; SIMD128: .functype sub_v8i16 (v128, v128) -> (v128)
6282 ; SIMD128-NEXT: # %bb.0:
6283 ; SIMD128-NEXT: i16x8.sub $push0=, $0, $1
6284 ; SIMD128-NEXT: return $pop0
6286 ; SIMD128-FAST-LABEL: sub_v8i16:
6287 ; SIMD128-FAST: .functype sub_v8i16 (v128, v128) -> (v128)
6288 ; SIMD128-FAST-NEXT: # %bb.0:
6289 ; SIMD128-FAST-NEXT: i16x8.sub $push0=, $0, $1
6290 ; SIMD128-FAST-NEXT: return $pop0
6292 ; NO-SIMD128-LABEL: sub_v8i16:
6293 ; NO-SIMD128: .functype sub_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
6294 ; NO-SIMD128-NEXT: # %bb.0:
6295 ; NO-SIMD128-NEXT: i32.sub $push0=, $5, $13
6296 ; NO-SIMD128-NEXT: i32.store16 8($0), $pop0
6297 ; NO-SIMD128-NEXT: i32.sub $push1=, $3, $11
6298 ; NO-SIMD128-NEXT: i32.store16 4($0), $pop1
6299 ; NO-SIMD128-NEXT: i32.sub $push2=, $2, $10
6300 ; NO-SIMD128-NEXT: i32.store16 2($0), $pop2
6301 ; NO-SIMD128-NEXT: i32.sub $push3=, $1, $9
6302 ; NO-SIMD128-NEXT: i32.store16 0($0), $pop3
6303 ; NO-SIMD128-NEXT: i32.const $push5=, 14
6304 ; NO-SIMD128-NEXT: i32.add $push6=, $0, $pop5
6305 ; NO-SIMD128-NEXT: i32.sub $push4=, $8, $16
6306 ; NO-SIMD128-NEXT: i32.store16 0($pop6), $pop4
6307 ; NO-SIMD128-NEXT: i32.const $push8=, 12
6308 ; NO-SIMD128-NEXT: i32.add $push9=, $0, $pop8
6309 ; NO-SIMD128-NEXT: i32.sub $push7=, $7, $15
6310 ; NO-SIMD128-NEXT: i32.store16 0($pop9), $pop7
6311 ; NO-SIMD128-NEXT: i32.const $push11=, 10
6312 ; NO-SIMD128-NEXT: i32.add $push12=, $0, $pop11
6313 ; NO-SIMD128-NEXT: i32.sub $push10=, $6, $14
6314 ; NO-SIMD128-NEXT: i32.store16 0($pop12), $pop10
6315 ; NO-SIMD128-NEXT: i32.const $push14=, 6
6316 ; NO-SIMD128-NEXT: i32.add $push15=, $0, $pop14
6317 ; NO-SIMD128-NEXT: i32.sub $push13=, $4, $12
6318 ; NO-SIMD128-NEXT: i32.store16 0($pop15), $pop13
6319 ; NO-SIMD128-NEXT: return
6321 ; NO-SIMD128-FAST-LABEL: sub_v8i16:
6322 ; NO-SIMD128-FAST: .functype sub_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
6323 ; NO-SIMD128-FAST-NEXT: # %bb.0:
6324 ; NO-SIMD128-FAST-NEXT: i32.sub $push0=, $1, $9
6325 ; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop0
6326 ; NO-SIMD128-FAST-NEXT: i32.sub $push1=, $2, $10
6327 ; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop1
6328 ; NO-SIMD128-FAST-NEXT: i32.sub $push2=, $3, $11
6329 ; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop2
6330 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 6
6331 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
6332 ; NO-SIMD128-FAST-NEXT: i32.sub $push5=, $4, $12
6333 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop4), $pop5
6334 ; NO-SIMD128-FAST-NEXT: i32.sub $push6=, $5, $13
6335 ; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop6
6336 ; NO-SIMD128-FAST-NEXT: i32.const $push7=, 10
6337 ; NO-SIMD128-FAST-NEXT: i32.add $push8=, $0, $pop7
6338 ; NO-SIMD128-FAST-NEXT: i32.sub $push9=, $6, $14
6339 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop8), $pop9
6340 ; NO-SIMD128-FAST-NEXT: i32.const $push10=, 12
6341 ; NO-SIMD128-FAST-NEXT: i32.add $push11=, $0, $pop10
6342 ; NO-SIMD128-FAST-NEXT: i32.sub $push12=, $7, $15
6343 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop11), $pop12
6344 ; NO-SIMD128-FAST-NEXT: i32.const $push13=, 14
6345 ; NO-SIMD128-FAST-NEXT: i32.add $push14=, $0, $pop13
6346 ; NO-SIMD128-FAST-NEXT: i32.sub $push15=, $8, $16
6347 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop14), $pop15
6348 ; NO-SIMD128-FAST-NEXT: return
6349 %a = sub <8 x i16> %x, %y
6353 define <8 x i16> @mul_v8i16(<8 x i16> %x, <8 x i16> %y) {
6354 ; SIMD128-LABEL: mul_v8i16:
6355 ; SIMD128: .functype mul_v8i16 (v128, v128) -> (v128)
6356 ; SIMD128-NEXT: # %bb.0:
6357 ; SIMD128-NEXT: i16x8.mul $push0=, $0, $1
6358 ; SIMD128-NEXT: return $pop0
6360 ; SIMD128-FAST-LABEL: mul_v8i16:
6361 ; SIMD128-FAST: .functype mul_v8i16 (v128, v128) -> (v128)
6362 ; SIMD128-FAST-NEXT: # %bb.0:
6363 ; SIMD128-FAST-NEXT: i16x8.mul $push0=, $0, $1
6364 ; SIMD128-FAST-NEXT: return $pop0
6366 ; NO-SIMD128-LABEL: mul_v8i16:
6367 ; NO-SIMD128: .functype mul_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
6368 ; NO-SIMD128-NEXT: # %bb.0:
6369 ; NO-SIMD128-NEXT: i32.mul $push0=, $5, $13
6370 ; NO-SIMD128-NEXT: i32.store16 8($0), $pop0
6371 ; NO-SIMD128-NEXT: i32.mul $push1=, $3, $11
6372 ; NO-SIMD128-NEXT: i32.store16 4($0), $pop1
6373 ; NO-SIMD128-NEXT: i32.mul $push2=, $2, $10
6374 ; NO-SIMD128-NEXT: i32.store16 2($0), $pop2
6375 ; NO-SIMD128-NEXT: i32.mul $push3=, $1, $9
6376 ; NO-SIMD128-NEXT: i32.store16 0($0), $pop3
6377 ; NO-SIMD128-NEXT: i32.const $push5=, 14
6378 ; NO-SIMD128-NEXT: i32.add $push6=, $0, $pop5
6379 ; NO-SIMD128-NEXT: i32.mul $push4=, $8, $16
6380 ; NO-SIMD128-NEXT: i32.store16 0($pop6), $pop4
6381 ; NO-SIMD128-NEXT: i32.const $push8=, 12
6382 ; NO-SIMD128-NEXT: i32.add $push9=, $0, $pop8
6383 ; NO-SIMD128-NEXT: i32.mul $push7=, $7, $15
6384 ; NO-SIMD128-NEXT: i32.store16 0($pop9), $pop7
6385 ; NO-SIMD128-NEXT: i32.const $push11=, 10
6386 ; NO-SIMD128-NEXT: i32.add $push12=, $0, $pop11
6387 ; NO-SIMD128-NEXT: i32.mul $push10=, $6, $14
6388 ; NO-SIMD128-NEXT: i32.store16 0($pop12), $pop10
6389 ; NO-SIMD128-NEXT: i32.const $push14=, 6
6390 ; NO-SIMD128-NEXT: i32.add $push15=, $0, $pop14
6391 ; NO-SIMD128-NEXT: i32.mul $push13=, $4, $12
6392 ; NO-SIMD128-NEXT: i32.store16 0($pop15), $pop13
6393 ; NO-SIMD128-NEXT: return
6395 ; NO-SIMD128-FAST-LABEL: mul_v8i16:
6396 ; NO-SIMD128-FAST: .functype mul_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
6397 ; NO-SIMD128-FAST-NEXT: # %bb.0:
6398 ; NO-SIMD128-FAST-NEXT: i32.mul $push0=, $1, $9
6399 ; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop0
6400 ; NO-SIMD128-FAST-NEXT: i32.mul $push1=, $2, $10
6401 ; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop1
6402 ; NO-SIMD128-FAST-NEXT: i32.mul $push2=, $3, $11
6403 ; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop2
6404 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 6
6405 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
6406 ; NO-SIMD128-FAST-NEXT: i32.mul $push5=, $4, $12
6407 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop4), $pop5
6408 ; NO-SIMD128-FAST-NEXT: i32.mul $push6=, $5, $13
6409 ; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop6
6410 ; NO-SIMD128-FAST-NEXT: i32.const $push7=, 10
6411 ; NO-SIMD128-FAST-NEXT: i32.add $push8=, $0, $pop7
6412 ; NO-SIMD128-FAST-NEXT: i32.mul $push9=, $6, $14
6413 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop8), $pop9
6414 ; NO-SIMD128-FAST-NEXT: i32.const $push10=, 12
6415 ; NO-SIMD128-FAST-NEXT: i32.add $push11=, $0, $pop10
6416 ; NO-SIMD128-FAST-NEXT: i32.mul $push12=, $7, $15
6417 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop11), $pop12
6418 ; NO-SIMD128-FAST-NEXT: i32.const $push13=, 14
6419 ; NO-SIMD128-FAST-NEXT: i32.add $push14=, $0, $pop13
6420 ; NO-SIMD128-FAST-NEXT: i32.mul $push15=, $8, $16
6421 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop14), $pop15
6422 ; NO-SIMD128-FAST-NEXT: return
6423 %a = mul <8 x i16> %x, %y
6427 define <8 x i16> @min_s_v8i16(<8 x i16> %x, <8 x i16> %y) {
6428 ; SIMD128-LABEL: min_s_v8i16:
6429 ; SIMD128: .functype min_s_v8i16 (v128, v128) -> (v128)
6430 ; SIMD128-NEXT: # %bb.0:
6431 ; SIMD128-NEXT: i16x8.min_s $push0=, $0, $1
6432 ; SIMD128-NEXT: return $pop0
6434 ; SIMD128-FAST-LABEL: min_s_v8i16:
6435 ; SIMD128-FAST: .functype min_s_v8i16 (v128, v128) -> (v128)
6436 ; SIMD128-FAST-NEXT: # %bb.0:
6437 ; SIMD128-FAST-NEXT: i16x8.min_s $push0=, $0, $1
6438 ; SIMD128-FAST-NEXT: return $pop0
6440 ; NO-SIMD128-LABEL: min_s_v8i16:
6441 ; NO-SIMD128: .functype min_s_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
6442 ; NO-SIMD128-NEXT: # %bb.0:
6443 ; NO-SIMD128-NEXT: i32.const $push4=, 14
6444 ; NO-SIMD128-NEXT: i32.add $push5=, $0, $pop4
6445 ; NO-SIMD128-NEXT: i32.extend16_s $push1=, $8
6446 ; NO-SIMD128-NEXT: i32.extend16_s $push0=, $16
6447 ; NO-SIMD128-NEXT: i32.lt_s $push2=, $pop1, $pop0
6448 ; NO-SIMD128-NEXT: i32.select $push3=, $8, $16, $pop2
6449 ; NO-SIMD128-NEXT: i32.store16 0($pop5), $pop3
6450 ; NO-SIMD128-NEXT: i32.const $push10=, 12
6451 ; NO-SIMD128-NEXT: i32.add $push11=, $0, $pop10
6452 ; NO-SIMD128-NEXT: i32.extend16_s $push7=, $7
6453 ; NO-SIMD128-NEXT: i32.extend16_s $push6=, $15
6454 ; NO-SIMD128-NEXT: i32.lt_s $push8=, $pop7, $pop6
6455 ; NO-SIMD128-NEXT: i32.select $push9=, $7, $15, $pop8
6456 ; NO-SIMD128-NEXT: i32.store16 0($pop11), $pop9
6457 ; NO-SIMD128-NEXT: i32.const $push16=, 10
6458 ; NO-SIMD128-NEXT: i32.add $push17=, $0, $pop16
6459 ; NO-SIMD128-NEXT: i32.extend16_s $push13=, $6
6460 ; NO-SIMD128-NEXT: i32.extend16_s $push12=, $14
6461 ; NO-SIMD128-NEXT: i32.lt_s $push14=, $pop13, $pop12
6462 ; NO-SIMD128-NEXT: i32.select $push15=, $6, $14, $pop14
6463 ; NO-SIMD128-NEXT: i32.store16 0($pop17), $pop15
6464 ; NO-SIMD128-NEXT: i32.extend16_s $push19=, $5
6465 ; NO-SIMD128-NEXT: i32.extend16_s $push18=, $13
6466 ; NO-SIMD128-NEXT: i32.lt_s $push20=, $pop19, $pop18
6467 ; NO-SIMD128-NEXT: i32.select $push21=, $5, $13, $pop20
6468 ; NO-SIMD128-NEXT: i32.store16 8($0), $pop21
6469 ; NO-SIMD128-NEXT: i32.const $push26=, 6
6470 ; NO-SIMD128-NEXT: i32.add $push27=, $0, $pop26
6471 ; NO-SIMD128-NEXT: i32.extend16_s $push23=, $4
6472 ; NO-SIMD128-NEXT: i32.extend16_s $push22=, $12
6473 ; NO-SIMD128-NEXT: i32.lt_s $push24=, $pop23, $pop22
6474 ; NO-SIMD128-NEXT: i32.select $push25=, $4, $12, $pop24
6475 ; NO-SIMD128-NEXT: i32.store16 0($pop27), $pop25
6476 ; NO-SIMD128-NEXT: i32.extend16_s $push29=, $3
6477 ; NO-SIMD128-NEXT: i32.extend16_s $push28=, $11
6478 ; NO-SIMD128-NEXT: i32.lt_s $push30=, $pop29, $pop28
6479 ; NO-SIMD128-NEXT: i32.select $push31=, $3, $11, $pop30
6480 ; NO-SIMD128-NEXT: i32.store16 4($0), $pop31
6481 ; NO-SIMD128-NEXT: i32.extend16_s $push33=, $2
6482 ; NO-SIMD128-NEXT: i32.extend16_s $push32=, $10
6483 ; NO-SIMD128-NEXT: i32.lt_s $push34=, $pop33, $pop32
6484 ; NO-SIMD128-NEXT: i32.select $push35=, $2, $10, $pop34
6485 ; NO-SIMD128-NEXT: i32.store16 2($0), $pop35
6486 ; NO-SIMD128-NEXT: i32.extend16_s $push37=, $1
6487 ; NO-SIMD128-NEXT: i32.extend16_s $push36=, $9
6488 ; NO-SIMD128-NEXT: i32.lt_s $push38=, $pop37, $pop36
6489 ; NO-SIMD128-NEXT: i32.select $push39=, $1, $9, $pop38
6490 ; NO-SIMD128-NEXT: i32.store16 0($0), $pop39
6491 ; NO-SIMD128-NEXT: return
6493 ; NO-SIMD128-FAST-LABEL: min_s_v8i16:
6494 ; NO-SIMD128-FAST: .functype min_s_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
6495 ; NO-SIMD128-FAST-NEXT: # %bb.0:
6496 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push1=, $1
6497 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push0=, $9
6498 ; NO-SIMD128-FAST-NEXT: i32.lt_s $push2=, $pop1, $pop0
6499 ; NO-SIMD128-FAST-NEXT: i32.select $push3=, $1, $9, $pop2
6500 ; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop3
6501 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push5=, $2
6502 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push4=, $10
6503 ; NO-SIMD128-FAST-NEXT: i32.lt_s $push6=, $pop5, $pop4
6504 ; NO-SIMD128-FAST-NEXT: i32.select $push7=, $2, $10, $pop6
6505 ; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop7
6506 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push9=, $3
6507 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push8=, $11
6508 ; NO-SIMD128-FAST-NEXT: i32.lt_s $push10=, $pop9, $pop8
6509 ; NO-SIMD128-FAST-NEXT: i32.select $push11=, $3, $11, $pop10
6510 ; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop11
6511 ; NO-SIMD128-FAST-NEXT: i32.const $push16=, 6
6512 ; NO-SIMD128-FAST-NEXT: i32.add $push17=, $0, $pop16
6513 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push13=, $4
6514 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push12=, $12
6515 ; NO-SIMD128-FAST-NEXT: i32.lt_s $push14=, $pop13, $pop12
6516 ; NO-SIMD128-FAST-NEXT: i32.select $push15=, $4, $12, $pop14
6517 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop17), $pop15
6518 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push19=, $5
6519 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push18=, $13
6520 ; NO-SIMD128-FAST-NEXT: i32.lt_s $push20=, $pop19, $pop18
6521 ; NO-SIMD128-FAST-NEXT: i32.select $push21=, $5, $13, $pop20
6522 ; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop21
6523 ; NO-SIMD128-FAST-NEXT: i32.const $push26=, 10
6524 ; NO-SIMD128-FAST-NEXT: i32.add $push27=, $0, $pop26
6525 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push23=, $6
6526 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push22=, $14
6527 ; NO-SIMD128-FAST-NEXT: i32.lt_s $push24=, $pop23, $pop22
6528 ; NO-SIMD128-FAST-NEXT: i32.select $push25=, $6, $14, $pop24
6529 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop27), $pop25
6530 ; NO-SIMD128-FAST-NEXT: i32.const $push32=, 12
6531 ; NO-SIMD128-FAST-NEXT: i32.add $push33=, $0, $pop32
6532 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push29=, $7
6533 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push28=, $15
6534 ; NO-SIMD128-FAST-NEXT: i32.lt_s $push30=, $pop29, $pop28
6535 ; NO-SIMD128-FAST-NEXT: i32.select $push31=, $7, $15, $pop30
6536 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop33), $pop31
6537 ; NO-SIMD128-FAST-NEXT: i32.const $push38=, 14
6538 ; NO-SIMD128-FAST-NEXT: i32.add $push39=, $0, $pop38
6539 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push35=, $8
6540 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push34=, $16
6541 ; NO-SIMD128-FAST-NEXT: i32.lt_s $push36=, $pop35, $pop34
6542 ; NO-SIMD128-FAST-NEXT: i32.select $push37=, $8, $16, $pop36
6543 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop39), $pop37
6544 ; NO-SIMD128-FAST-NEXT: return
6545 %c = icmp slt <8 x i16> %x, %y
6546 %a = select <8 x i1> %c, <8 x i16> %x, <8 x i16> %y
6550 define <8 x i16> @min_u_v8i16(<8 x i16> %x, <8 x i16> %y) {
6551 ; SIMD128-LABEL: min_u_v8i16:
6552 ; SIMD128: .functype min_u_v8i16 (v128, v128) -> (v128)
6553 ; SIMD128-NEXT: # %bb.0:
6554 ; SIMD128-NEXT: i16x8.min_u $push0=, $0, $1
6555 ; SIMD128-NEXT: return $pop0
6557 ; SIMD128-FAST-LABEL: min_u_v8i16:
6558 ; SIMD128-FAST: .functype min_u_v8i16 (v128, v128) -> (v128)
6559 ; SIMD128-FAST-NEXT: # %bb.0:
6560 ; SIMD128-FAST-NEXT: i16x8.min_u $push0=, $0, $1
6561 ; SIMD128-FAST-NEXT: return $pop0
6563 ; NO-SIMD128-LABEL: min_u_v8i16:
6564 ; NO-SIMD128: .functype min_u_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
6565 ; NO-SIMD128-NEXT: # %bb.0:
6566 ; NO-SIMD128-NEXT: i32.const $push5=, 14
6567 ; NO-SIMD128-NEXT: i32.add $push6=, $0, $pop5
6568 ; NO-SIMD128-NEXT: i32.const $push0=, 65535
6569 ; NO-SIMD128-NEXT: i32.and $push2=, $8, $pop0
6570 ; NO-SIMD128-NEXT: i32.const $push55=, 65535
6571 ; NO-SIMD128-NEXT: i32.and $push1=, $16, $pop55
6572 ; NO-SIMD128-NEXT: i32.lt_u $push3=, $pop2, $pop1
6573 ; NO-SIMD128-NEXT: i32.select $push4=, $8, $16, $pop3
6574 ; NO-SIMD128-NEXT: i32.store16 0($pop6), $pop4
6575 ; NO-SIMD128-NEXT: i32.const $push11=, 12
6576 ; NO-SIMD128-NEXT: i32.add $push12=, $0, $pop11
6577 ; NO-SIMD128-NEXT: i32.const $push54=, 65535
6578 ; NO-SIMD128-NEXT: i32.and $push8=, $7, $pop54
6579 ; NO-SIMD128-NEXT: i32.const $push53=, 65535
6580 ; NO-SIMD128-NEXT: i32.and $push7=, $15, $pop53
6581 ; NO-SIMD128-NEXT: i32.lt_u $push9=, $pop8, $pop7
6582 ; NO-SIMD128-NEXT: i32.select $push10=, $7, $15, $pop9
6583 ; NO-SIMD128-NEXT: i32.store16 0($pop12), $pop10
6584 ; NO-SIMD128-NEXT: i32.const $push17=, 10
6585 ; NO-SIMD128-NEXT: i32.add $push18=, $0, $pop17
6586 ; NO-SIMD128-NEXT: i32.const $push52=, 65535
6587 ; NO-SIMD128-NEXT: i32.and $push14=, $6, $pop52
6588 ; NO-SIMD128-NEXT: i32.const $push51=, 65535
6589 ; NO-SIMD128-NEXT: i32.and $push13=, $14, $pop51
6590 ; NO-SIMD128-NEXT: i32.lt_u $push15=, $pop14, $pop13
6591 ; NO-SIMD128-NEXT: i32.select $push16=, $6, $14, $pop15
6592 ; NO-SIMD128-NEXT: i32.store16 0($pop18), $pop16
6593 ; NO-SIMD128-NEXT: i32.const $push50=, 65535
6594 ; NO-SIMD128-NEXT: i32.and $push20=, $5, $pop50
6595 ; NO-SIMD128-NEXT: i32.const $push49=, 65535
6596 ; NO-SIMD128-NEXT: i32.and $push19=, $13, $pop49
6597 ; NO-SIMD128-NEXT: i32.lt_u $push21=, $pop20, $pop19
6598 ; NO-SIMD128-NEXT: i32.select $push22=, $5, $13, $pop21
6599 ; NO-SIMD128-NEXT: i32.store16 8($0), $pop22
6600 ; NO-SIMD128-NEXT: i32.const $push27=, 6
6601 ; NO-SIMD128-NEXT: i32.add $push28=, $0, $pop27
6602 ; NO-SIMD128-NEXT: i32.const $push48=, 65535
6603 ; NO-SIMD128-NEXT: i32.and $push24=, $4, $pop48
6604 ; NO-SIMD128-NEXT: i32.const $push47=, 65535
6605 ; NO-SIMD128-NEXT: i32.and $push23=, $12, $pop47
6606 ; NO-SIMD128-NEXT: i32.lt_u $push25=, $pop24, $pop23
6607 ; NO-SIMD128-NEXT: i32.select $push26=, $4, $12, $pop25
6608 ; NO-SIMD128-NEXT: i32.store16 0($pop28), $pop26
6609 ; NO-SIMD128-NEXT: i32.const $push46=, 65535
6610 ; NO-SIMD128-NEXT: i32.and $push30=, $3, $pop46
6611 ; NO-SIMD128-NEXT: i32.const $push45=, 65535
6612 ; NO-SIMD128-NEXT: i32.and $push29=, $11, $pop45
6613 ; NO-SIMD128-NEXT: i32.lt_u $push31=, $pop30, $pop29
6614 ; NO-SIMD128-NEXT: i32.select $push32=, $3, $11, $pop31
6615 ; NO-SIMD128-NEXT: i32.store16 4($0), $pop32
6616 ; NO-SIMD128-NEXT: i32.const $push44=, 65535
6617 ; NO-SIMD128-NEXT: i32.and $push34=, $2, $pop44
6618 ; NO-SIMD128-NEXT: i32.const $push43=, 65535
6619 ; NO-SIMD128-NEXT: i32.and $push33=, $10, $pop43
6620 ; NO-SIMD128-NEXT: i32.lt_u $push35=, $pop34, $pop33
6621 ; NO-SIMD128-NEXT: i32.select $push36=, $2, $10, $pop35
6622 ; NO-SIMD128-NEXT: i32.store16 2($0), $pop36
6623 ; NO-SIMD128-NEXT: i32.const $push42=, 65535
6624 ; NO-SIMD128-NEXT: i32.and $push38=, $1, $pop42
6625 ; NO-SIMD128-NEXT: i32.const $push41=, 65535
6626 ; NO-SIMD128-NEXT: i32.and $push37=, $9, $pop41
6627 ; NO-SIMD128-NEXT: i32.lt_u $push39=, $pop38, $pop37
6628 ; NO-SIMD128-NEXT: i32.select $push40=, $1, $9, $pop39
6629 ; NO-SIMD128-NEXT: i32.store16 0($0), $pop40
6630 ; NO-SIMD128-NEXT: return
6632 ; NO-SIMD128-FAST-LABEL: min_u_v8i16:
6633 ; NO-SIMD128-FAST: .functype min_u_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
6634 ; NO-SIMD128-FAST-NEXT: # %bb.0:
6635 ; NO-SIMD128-FAST-NEXT: i32.const $push0=, 65535
6636 ; NO-SIMD128-FAST-NEXT: i32.and $push2=, $1, $pop0
6637 ; NO-SIMD128-FAST-NEXT: i32.const $push55=, 65535
6638 ; NO-SIMD128-FAST-NEXT: i32.and $push1=, $9, $pop55
6639 ; NO-SIMD128-FAST-NEXT: i32.lt_u $push3=, $pop2, $pop1
6640 ; NO-SIMD128-FAST-NEXT: i32.select $push4=, $1, $9, $pop3
6641 ; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop4
6642 ; NO-SIMD128-FAST-NEXT: i32.const $push54=, 65535
6643 ; NO-SIMD128-FAST-NEXT: i32.and $push6=, $2, $pop54
6644 ; NO-SIMD128-FAST-NEXT: i32.const $push53=, 65535
6645 ; NO-SIMD128-FAST-NEXT: i32.and $push5=, $10, $pop53
6646 ; NO-SIMD128-FAST-NEXT: i32.lt_u $push7=, $pop6, $pop5
6647 ; NO-SIMD128-FAST-NEXT: i32.select $push8=, $2, $10, $pop7
6648 ; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop8
6649 ; NO-SIMD128-FAST-NEXT: i32.const $push52=, 65535
6650 ; NO-SIMD128-FAST-NEXT: i32.and $push10=, $3, $pop52
6651 ; NO-SIMD128-FAST-NEXT: i32.const $push51=, 65535
6652 ; NO-SIMD128-FAST-NEXT: i32.and $push9=, $11, $pop51
6653 ; NO-SIMD128-FAST-NEXT: i32.lt_u $push11=, $pop10, $pop9
6654 ; NO-SIMD128-FAST-NEXT: i32.select $push12=, $3, $11, $pop11
6655 ; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop12
6656 ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 6
6657 ; NO-SIMD128-FAST-NEXT: i32.add $push18=, $0, $pop17
6658 ; NO-SIMD128-FAST-NEXT: i32.const $push50=, 65535
6659 ; NO-SIMD128-FAST-NEXT: i32.and $push14=, $4, $pop50
6660 ; NO-SIMD128-FAST-NEXT: i32.const $push49=, 65535
6661 ; NO-SIMD128-FAST-NEXT: i32.and $push13=, $12, $pop49
6662 ; NO-SIMD128-FAST-NEXT: i32.lt_u $push15=, $pop14, $pop13
6663 ; NO-SIMD128-FAST-NEXT: i32.select $push16=, $4, $12, $pop15
6664 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop18), $pop16
6665 ; NO-SIMD128-FAST-NEXT: i32.const $push48=, 65535
6666 ; NO-SIMD128-FAST-NEXT: i32.and $push20=, $5, $pop48
6667 ; NO-SIMD128-FAST-NEXT: i32.const $push47=, 65535
6668 ; NO-SIMD128-FAST-NEXT: i32.and $push19=, $13, $pop47
6669 ; NO-SIMD128-FAST-NEXT: i32.lt_u $push21=, $pop20, $pop19
6670 ; NO-SIMD128-FAST-NEXT: i32.select $push22=, $5, $13, $pop21
6671 ; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop22
6672 ; NO-SIMD128-FAST-NEXT: i32.const $push27=, 10
6673 ; NO-SIMD128-FAST-NEXT: i32.add $push28=, $0, $pop27
6674 ; NO-SIMD128-FAST-NEXT: i32.const $push46=, 65535
6675 ; NO-SIMD128-FAST-NEXT: i32.and $push24=, $6, $pop46
6676 ; NO-SIMD128-FAST-NEXT: i32.const $push45=, 65535
6677 ; NO-SIMD128-FAST-NEXT: i32.and $push23=, $14, $pop45
6678 ; NO-SIMD128-FAST-NEXT: i32.lt_u $push25=, $pop24, $pop23
6679 ; NO-SIMD128-FAST-NEXT: i32.select $push26=, $6, $14, $pop25
6680 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop28), $pop26
6681 ; NO-SIMD128-FAST-NEXT: i32.const $push33=, 12
6682 ; NO-SIMD128-FAST-NEXT: i32.add $push34=, $0, $pop33
6683 ; NO-SIMD128-FAST-NEXT: i32.const $push44=, 65535
6684 ; NO-SIMD128-FAST-NEXT: i32.and $push30=, $7, $pop44
6685 ; NO-SIMD128-FAST-NEXT: i32.const $push43=, 65535
6686 ; NO-SIMD128-FAST-NEXT: i32.and $push29=, $15, $pop43
6687 ; NO-SIMD128-FAST-NEXT: i32.lt_u $push31=, $pop30, $pop29
6688 ; NO-SIMD128-FAST-NEXT: i32.select $push32=, $7, $15, $pop31
6689 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop34), $pop32
6690 ; NO-SIMD128-FAST-NEXT: i32.const $push39=, 14
6691 ; NO-SIMD128-FAST-NEXT: i32.add $push40=, $0, $pop39
6692 ; NO-SIMD128-FAST-NEXT: i32.const $push42=, 65535
6693 ; NO-SIMD128-FAST-NEXT: i32.and $push36=, $8, $pop42
6694 ; NO-SIMD128-FAST-NEXT: i32.const $push41=, 65535
6695 ; NO-SIMD128-FAST-NEXT: i32.and $push35=, $16, $pop41
6696 ; NO-SIMD128-FAST-NEXT: i32.lt_u $push37=, $pop36, $pop35
6697 ; NO-SIMD128-FAST-NEXT: i32.select $push38=, $8, $16, $pop37
6698 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop40), $pop38
6699 ; NO-SIMD128-FAST-NEXT: return
6700 %c = icmp ult <8 x i16> %x, %y
6701 %a = select <8 x i1> %c, <8 x i16> %x, <8 x i16> %y
6705 define <8 x i16> @max_s_v8i16(<8 x i16> %x, <8 x i16> %y) {
6706 ; SIMD128-LABEL: max_s_v8i16:
6707 ; SIMD128: .functype max_s_v8i16 (v128, v128) -> (v128)
6708 ; SIMD128-NEXT: # %bb.0:
6709 ; SIMD128-NEXT: i16x8.max_s $push0=, $0, $1
6710 ; SIMD128-NEXT: return $pop0
6712 ; SIMD128-FAST-LABEL: max_s_v8i16:
6713 ; SIMD128-FAST: .functype max_s_v8i16 (v128, v128) -> (v128)
6714 ; SIMD128-FAST-NEXT: # %bb.0:
6715 ; SIMD128-FAST-NEXT: i16x8.max_s $push0=, $0, $1
6716 ; SIMD128-FAST-NEXT: return $pop0
6718 ; NO-SIMD128-LABEL: max_s_v8i16:
6719 ; NO-SIMD128: .functype max_s_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
6720 ; NO-SIMD128-NEXT: # %bb.0:
6721 ; NO-SIMD128-NEXT: i32.const $push4=, 14
6722 ; NO-SIMD128-NEXT: i32.add $push5=, $0, $pop4
6723 ; NO-SIMD128-NEXT: i32.extend16_s $push1=, $8
6724 ; NO-SIMD128-NEXT: i32.extend16_s $push0=, $16
6725 ; NO-SIMD128-NEXT: i32.gt_s $push2=, $pop1, $pop0
6726 ; NO-SIMD128-NEXT: i32.select $push3=, $8, $16, $pop2
6727 ; NO-SIMD128-NEXT: i32.store16 0($pop5), $pop3
6728 ; NO-SIMD128-NEXT: i32.const $push10=, 12
6729 ; NO-SIMD128-NEXT: i32.add $push11=, $0, $pop10
6730 ; NO-SIMD128-NEXT: i32.extend16_s $push7=, $7
6731 ; NO-SIMD128-NEXT: i32.extend16_s $push6=, $15
6732 ; NO-SIMD128-NEXT: i32.gt_s $push8=, $pop7, $pop6
6733 ; NO-SIMD128-NEXT: i32.select $push9=, $7, $15, $pop8
6734 ; NO-SIMD128-NEXT: i32.store16 0($pop11), $pop9
6735 ; NO-SIMD128-NEXT: i32.const $push16=, 10
6736 ; NO-SIMD128-NEXT: i32.add $push17=, $0, $pop16
6737 ; NO-SIMD128-NEXT: i32.extend16_s $push13=, $6
6738 ; NO-SIMD128-NEXT: i32.extend16_s $push12=, $14
6739 ; NO-SIMD128-NEXT: i32.gt_s $push14=, $pop13, $pop12
6740 ; NO-SIMD128-NEXT: i32.select $push15=, $6, $14, $pop14
6741 ; NO-SIMD128-NEXT: i32.store16 0($pop17), $pop15
6742 ; NO-SIMD128-NEXT: i32.extend16_s $push19=, $5
6743 ; NO-SIMD128-NEXT: i32.extend16_s $push18=, $13
6744 ; NO-SIMD128-NEXT: i32.gt_s $push20=, $pop19, $pop18
6745 ; NO-SIMD128-NEXT: i32.select $push21=, $5, $13, $pop20
6746 ; NO-SIMD128-NEXT: i32.store16 8($0), $pop21
6747 ; NO-SIMD128-NEXT: i32.const $push26=, 6
6748 ; NO-SIMD128-NEXT: i32.add $push27=, $0, $pop26
6749 ; NO-SIMD128-NEXT: i32.extend16_s $push23=, $4
6750 ; NO-SIMD128-NEXT: i32.extend16_s $push22=, $12
6751 ; NO-SIMD128-NEXT: i32.gt_s $push24=, $pop23, $pop22
6752 ; NO-SIMD128-NEXT: i32.select $push25=, $4, $12, $pop24
6753 ; NO-SIMD128-NEXT: i32.store16 0($pop27), $pop25
6754 ; NO-SIMD128-NEXT: i32.extend16_s $push29=, $3
6755 ; NO-SIMD128-NEXT: i32.extend16_s $push28=, $11
6756 ; NO-SIMD128-NEXT: i32.gt_s $push30=, $pop29, $pop28
6757 ; NO-SIMD128-NEXT: i32.select $push31=, $3, $11, $pop30
6758 ; NO-SIMD128-NEXT: i32.store16 4($0), $pop31
6759 ; NO-SIMD128-NEXT: i32.extend16_s $push33=, $2
6760 ; NO-SIMD128-NEXT: i32.extend16_s $push32=, $10
6761 ; NO-SIMD128-NEXT: i32.gt_s $push34=, $pop33, $pop32
6762 ; NO-SIMD128-NEXT: i32.select $push35=, $2, $10, $pop34
6763 ; NO-SIMD128-NEXT: i32.store16 2($0), $pop35
6764 ; NO-SIMD128-NEXT: i32.extend16_s $push37=, $1
6765 ; NO-SIMD128-NEXT: i32.extend16_s $push36=, $9
6766 ; NO-SIMD128-NEXT: i32.gt_s $push38=, $pop37, $pop36
6767 ; NO-SIMD128-NEXT: i32.select $push39=, $1, $9, $pop38
6768 ; NO-SIMD128-NEXT: i32.store16 0($0), $pop39
6769 ; NO-SIMD128-NEXT: return
6771 ; NO-SIMD128-FAST-LABEL: max_s_v8i16:
6772 ; NO-SIMD128-FAST: .functype max_s_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
6773 ; NO-SIMD128-FAST-NEXT: # %bb.0:
6774 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push1=, $1
6775 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push0=, $9
6776 ; NO-SIMD128-FAST-NEXT: i32.gt_s $push2=, $pop1, $pop0
6777 ; NO-SIMD128-FAST-NEXT: i32.select $push3=, $1, $9, $pop2
6778 ; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop3
6779 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push5=, $2
6780 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push4=, $10
6781 ; NO-SIMD128-FAST-NEXT: i32.gt_s $push6=, $pop5, $pop4
6782 ; NO-SIMD128-FAST-NEXT: i32.select $push7=, $2, $10, $pop6
6783 ; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop7
6784 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push9=, $3
6785 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push8=, $11
6786 ; NO-SIMD128-FAST-NEXT: i32.gt_s $push10=, $pop9, $pop8
6787 ; NO-SIMD128-FAST-NEXT: i32.select $push11=, $3, $11, $pop10
6788 ; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop11
6789 ; NO-SIMD128-FAST-NEXT: i32.const $push16=, 6
6790 ; NO-SIMD128-FAST-NEXT: i32.add $push17=, $0, $pop16
6791 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push13=, $4
6792 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push12=, $12
6793 ; NO-SIMD128-FAST-NEXT: i32.gt_s $push14=, $pop13, $pop12
6794 ; NO-SIMD128-FAST-NEXT: i32.select $push15=, $4, $12, $pop14
6795 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop17), $pop15
6796 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push19=, $5
6797 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push18=, $13
6798 ; NO-SIMD128-FAST-NEXT: i32.gt_s $push20=, $pop19, $pop18
6799 ; NO-SIMD128-FAST-NEXT: i32.select $push21=, $5, $13, $pop20
6800 ; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop21
6801 ; NO-SIMD128-FAST-NEXT: i32.const $push26=, 10
6802 ; NO-SIMD128-FAST-NEXT: i32.add $push27=, $0, $pop26
6803 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push23=, $6
6804 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push22=, $14
6805 ; NO-SIMD128-FAST-NEXT: i32.gt_s $push24=, $pop23, $pop22
6806 ; NO-SIMD128-FAST-NEXT: i32.select $push25=, $6, $14, $pop24
6807 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop27), $pop25
6808 ; NO-SIMD128-FAST-NEXT: i32.const $push32=, 12
6809 ; NO-SIMD128-FAST-NEXT: i32.add $push33=, $0, $pop32
6810 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push29=, $7
6811 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push28=, $15
6812 ; NO-SIMD128-FAST-NEXT: i32.gt_s $push30=, $pop29, $pop28
6813 ; NO-SIMD128-FAST-NEXT: i32.select $push31=, $7, $15, $pop30
6814 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop33), $pop31
6815 ; NO-SIMD128-FAST-NEXT: i32.const $push38=, 14
6816 ; NO-SIMD128-FAST-NEXT: i32.add $push39=, $0, $pop38
6817 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push35=, $8
6818 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push34=, $16
6819 ; NO-SIMD128-FAST-NEXT: i32.gt_s $push36=, $pop35, $pop34
6820 ; NO-SIMD128-FAST-NEXT: i32.select $push37=, $8, $16, $pop36
6821 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop39), $pop37
6822 ; NO-SIMD128-FAST-NEXT: return
6823 %c = icmp sgt <8 x i16> %x, %y
6824 %a = select <8 x i1> %c, <8 x i16> %x, <8 x i16> %y
6828 define <8 x i16> @max_u_v8i16(<8 x i16> %x, <8 x i16> %y) {
6829 ; SIMD128-LABEL: max_u_v8i16:
6830 ; SIMD128: .functype max_u_v8i16 (v128, v128) -> (v128)
6831 ; SIMD128-NEXT: # %bb.0:
6832 ; SIMD128-NEXT: i16x8.max_u $push0=, $0, $1
6833 ; SIMD128-NEXT: return $pop0
6835 ; SIMD128-FAST-LABEL: max_u_v8i16:
6836 ; SIMD128-FAST: .functype max_u_v8i16 (v128, v128) -> (v128)
6837 ; SIMD128-FAST-NEXT: # %bb.0:
6838 ; SIMD128-FAST-NEXT: i16x8.max_u $push0=, $0, $1
6839 ; SIMD128-FAST-NEXT: return $pop0
6841 ; NO-SIMD128-LABEL: max_u_v8i16:
6842 ; NO-SIMD128: .functype max_u_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
6843 ; NO-SIMD128-NEXT: # %bb.0:
6844 ; NO-SIMD128-NEXT: i32.const $push5=, 14
6845 ; NO-SIMD128-NEXT: i32.add $push6=, $0, $pop5
6846 ; NO-SIMD128-NEXT: i32.const $push0=, 65535
6847 ; NO-SIMD128-NEXT: i32.and $push2=, $8, $pop0
6848 ; NO-SIMD128-NEXT: i32.const $push55=, 65535
6849 ; NO-SIMD128-NEXT: i32.and $push1=, $16, $pop55
6850 ; NO-SIMD128-NEXT: i32.gt_u $push3=, $pop2, $pop1
6851 ; NO-SIMD128-NEXT: i32.select $push4=, $8, $16, $pop3
6852 ; NO-SIMD128-NEXT: i32.store16 0($pop6), $pop4
6853 ; NO-SIMD128-NEXT: i32.const $push11=, 12
6854 ; NO-SIMD128-NEXT: i32.add $push12=, $0, $pop11
6855 ; NO-SIMD128-NEXT: i32.const $push54=, 65535
6856 ; NO-SIMD128-NEXT: i32.and $push8=, $7, $pop54
6857 ; NO-SIMD128-NEXT: i32.const $push53=, 65535
6858 ; NO-SIMD128-NEXT: i32.and $push7=, $15, $pop53
6859 ; NO-SIMD128-NEXT: i32.gt_u $push9=, $pop8, $pop7
6860 ; NO-SIMD128-NEXT: i32.select $push10=, $7, $15, $pop9
6861 ; NO-SIMD128-NEXT: i32.store16 0($pop12), $pop10
6862 ; NO-SIMD128-NEXT: i32.const $push17=, 10
6863 ; NO-SIMD128-NEXT: i32.add $push18=, $0, $pop17
6864 ; NO-SIMD128-NEXT: i32.const $push52=, 65535
6865 ; NO-SIMD128-NEXT: i32.and $push14=, $6, $pop52
6866 ; NO-SIMD128-NEXT: i32.const $push51=, 65535
6867 ; NO-SIMD128-NEXT: i32.and $push13=, $14, $pop51
6868 ; NO-SIMD128-NEXT: i32.gt_u $push15=, $pop14, $pop13
6869 ; NO-SIMD128-NEXT: i32.select $push16=, $6, $14, $pop15
6870 ; NO-SIMD128-NEXT: i32.store16 0($pop18), $pop16
6871 ; NO-SIMD128-NEXT: i32.const $push50=, 65535
6872 ; NO-SIMD128-NEXT: i32.and $push20=, $5, $pop50
6873 ; NO-SIMD128-NEXT: i32.const $push49=, 65535
6874 ; NO-SIMD128-NEXT: i32.and $push19=, $13, $pop49
6875 ; NO-SIMD128-NEXT: i32.gt_u $push21=, $pop20, $pop19
6876 ; NO-SIMD128-NEXT: i32.select $push22=, $5, $13, $pop21
6877 ; NO-SIMD128-NEXT: i32.store16 8($0), $pop22
6878 ; NO-SIMD128-NEXT: i32.const $push27=, 6
6879 ; NO-SIMD128-NEXT: i32.add $push28=, $0, $pop27
6880 ; NO-SIMD128-NEXT: i32.const $push48=, 65535
6881 ; NO-SIMD128-NEXT: i32.and $push24=, $4, $pop48
6882 ; NO-SIMD128-NEXT: i32.const $push47=, 65535
6883 ; NO-SIMD128-NEXT: i32.and $push23=, $12, $pop47
6884 ; NO-SIMD128-NEXT: i32.gt_u $push25=, $pop24, $pop23
6885 ; NO-SIMD128-NEXT: i32.select $push26=, $4, $12, $pop25
6886 ; NO-SIMD128-NEXT: i32.store16 0($pop28), $pop26
6887 ; NO-SIMD128-NEXT: i32.const $push46=, 65535
6888 ; NO-SIMD128-NEXT: i32.and $push30=, $3, $pop46
6889 ; NO-SIMD128-NEXT: i32.const $push45=, 65535
6890 ; NO-SIMD128-NEXT: i32.and $push29=, $11, $pop45
6891 ; NO-SIMD128-NEXT: i32.gt_u $push31=, $pop30, $pop29
6892 ; NO-SIMD128-NEXT: i32.select $push32=, $3, $11, $pop31
6893 ; NO-SIMD128-NEXT: i32.store16 4($0), $pop32
6894 ; NO-SIMD128-NEXT: i32.const $push44=, 65535
6895 ; NO-SIMD128-NEXT: i32.and $push34=, $2, $pop44
6896 ; NO-SIMD128-NEXT: i32.const $push43=, 65535
6897 ; NO-SIMD128-NEXT: i32.and $push33=, $10, $pop43
6898 ; NO-SIMD128-NEXT: i32.gt_u $push35=, $pop34, $pop33
6899 ; NO-SIMD128-NEXT: i32.select $push36=, $2, $10, $pop35
6900 ; NO-SIMD128-NEXT: i32.store16 2($0), $pop36
6901 ; NO-SIMD128-NEXT: i32.const $push42=, 65535
6902 ; NO-SIMD128-NEXT: i32.and $push38=, $1, $pop42
6903 ; NO-SIMD128-NEXT: i32.const $push41=, 65535
6904 ; NO-SIMD128-NEXT: i32.and $push37=, $9, $pop41
6905 ; NO-SIMD128-NEXT: i32.gt_u $push39=, $pop38, $pop37
6906 ; NO-SIMD128-NEXT: i32.select $push40=, $1, $9, $pop39
6907 ; NO-SIMD128-NEXT: i32.store16 0($0), $pop40
6908 ; NO-SIMD128-NEXT: return
6910 ; NO-SIMD128-FAST-LABEL: max_u_v8i16:
6911 ; NO-SIMD128-FAST: .functype max_u_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
6912 ; NO-SIMD128-FAST-NEXT: # %bb.0:
6913 ; NO-SIMD128-FAST-NEXT: i32.const $push0=, 65535
6914 ; NO-SIMD128-FAST-NEXT: i32.and $push2=, $1, $pop0
6915 ; NO-SIMD128-FAST-NEXT: i32.const $push55=, 65535
6916 ; NO-SIMD128-FAST-NEXT: i32.and $push1=, $9, $pop55
6917 ; NO-SIMD128-FAST-NEXT: i32.gt_u $push3=, $pop2, $pop1
6918 ; NO-SIMD128-FAST-NEXT: i32.select $push4=, $1, $9, $pop3
6919 ; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop4
6920 ; NO-SIMD128-FAST-NEXT: i32.const $push54=, 65535
6921 ; NO-SIMD128-FAST-NEXT: i32.and $push6=, $2, $pop54
6922 ; NO-SIMD128-FAST-NEXT: i32.const $push53=, 65535
6923 ; NO-SIMD128-FAST-NEXT: i32.and $push5=, $10, $pop53
6924 ; NO-SIMD128-FAST-NEXT: i32.gt_u $push7=, $pop6, $pop5
6925 ; NO-SIMD128-FAST-NEXT: i32.select $push8=, $2, $10, $pop7
6926 ; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop8
6927 ; NO-SIMD128-FAST-NEXT: i32.const $push52=, 65535
6928 ; NO-SIMD128-FAST-NEXT: i32.and $push10=, $3, $pop52
6929 ; NO-SIMD128-FAST-NEXT: i32.const $push51=, 65535
6930 ; NO-SIMD128-FAST-NEXT: i32.and $push9=, $11, $pop51
6931 ; NO-SIMD128-FAST-NEXT: i32.gt_u $push11=, $pop10, $pop9
6932 ; NO-SIMD128-FAST-NEXT: i32.select $push12=, $3, $11, $pop11
6933 ; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop12
6934 ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 6
6935 ; NO-SIMD128-FAST-NEXT: i32.add $push18=, $0, $pop17
6936 ; NO-SIMD128-FAST-NEXT: i32.const $push50=, 65535
6937 ; NO-SIMD128-FAST-NEXT: i32.and $push14=, $4, $pop50
6938 ; NO-SIMD128-FAST-NEXT: i32.const $push49=, 65535
6939 ; NO-SIMD128-FAST-NEXT: i32.and $push13=, $12, $pop49
6940 ; NO-SIMD128-FAST-NEXT: i32.gt_u $push15=, $pop14, $pop13
6941 ; NO-SIMD128-FAST-NEXT: i32.select $push16=, $4, $12, $pop15
6942 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop18), $pop16
6943 ; NO-SIMD128-FAST-NEXT: i32.const $push48=, 65535
6944 ; NO-SIMD128-FAST-NEXT: i32.and $push20=, $5, $pop48
6945 ; NO-SIMD128-FAST-NEXT: i32.const $push47=, 65535
6946 ; NO-SIMD128-FAST-NEXT: i32.and $push19=, $13, $pop47
6947 ; NO-SIMD128-FAST-NEXT: i32.gt_u $push21=, $pop20, $pop19
6948 ; NO-SIMD128-FAST-NEXT: i32.select $push22=, $5, $13, $pop21
6949 ; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop22
6950 ; NO-SIMD128-FAST-NEXT: i32.const $push27=, 10
6951 ; NO-SIMD128-FAST-NEXT: i32.add $push28=, $0, $pop27
6952 ; NO-SIMD128-FAST-NEXT: i32.const $push46=, 65535
6953 ; NO-SIMD128-FAST-NEXT: i32.and $push24=, $6, $pop46
6954 ; NO-SIMD128-FAST-NEXT: i32.const $push45=, 65535
6955 ; NO-SIMD128-FAST-NEXT: i32.and $push23=, $14, $pop45
6956 ; NO-SIMD128-FAST-NEXT: i32.gt_u $push25=, $pop24, $pop23
6957 ; NO-SIMD128-FAST-NEXT: i32.select $push26=, $6, $14, $pop25
6958 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop28), $pop26
6959 ; NO-SIMD128-FAST-NEXT: i32.const $push33=, 12
6960 ; NO-SIMD128-FAST-NEXT: i32.add $push34=, $0, $pop33
6961 ; NO-SIMD128-FAST-NEXT: i32.const $push44=, 65535
6962 ; NO-SIMD128-FAST-NEXT: i32.and $push30=, $7, $pop44
6963 ; NO-SIMD128-FAST-NEXT: i32.const $push43=, 65535
6964 ; NO-SIMD128-FAST-NEXT: i32.and $push29=, $15, $pop43
6965 ; NO-SIMD128-FAST-NEXT: i32.gt_u $push31=, $pop30, $pop29
6966 ; NO-SIMD128-FAST-NEXT: i32.select $push32=, $7, $15, $pop31
6967 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop34), $pop32
6968 ; NO-SIMD128-FAST-NEXT: i32.const $push39=, 14
6969 ; NO-SIMD128-FAST-NEXT: i32.add $push40=, $0, $pop39
6970 ; NO-SIMD128-FAST-NEXT: i32.const $push42=, 65535
6971 ; NO-SIMD128-FAST-NEXT: i32.and $push36=, $8, $pop42
6972 ; NO-SIMD128-FAST-NEXT: i32.const $push41=, 65535
6973 ; NO-SIMD128-FAST-NEXT: i32.and $push35=, $16, $pop41
6974 ; NO-SIMD128-FAST-NEXT: i32.gt_u $push37=, $pop36, $pop35
6975 ; NO-SIMD128-FAST-NEXT: i32.select $push38=, $8, $16, $pop37
6976 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop40), $pop38
6977 ; NO-SIMD128-FAST-NEXT: return
6978 %c = icmp ugt <8 x i16> %x, %y
6979 %a = select <8 x i1> %c, <8 x i16> %x, <8 x i16> %y
6983 define <8 x i16> @avgr_u_v8i16(<8 x i16> %x, <8 x i16> %y) {
6984 ; SIMD128-LABEL: avgr_u_v8i16:
6985 ; SIMD128: .functype avgr_u_v8i16 (v128, v128) -> (v128)
6986 ; SIMD128-NEXT: # %bb.0:
6987 ; SIMD128-NEXT: i16x8.avgr_u $push0=, $0, $1
6988 ; SIMD128-NEXT: return $pop0
6990 ; SIMD128-FAST-LABEL: avgr_u_v8i16:
6991 ; SIMD128-FAST: .functype avgr_u_v8i16 (v128, v128) -> (v128)
6992 ; SIMD128-FAST-NEXT: # %bb.0:
6993 ; SIMD128-FAST-NEXT: i16x8.avgr_u $push0=, $0, $1
6994 ; SIMD128-FAST-NEXT: return $pop0
6996 ; NO-SIMD128-LABEL: avgr_u_v8i16:
6997 ; NO-SIMD128: .functype avgr_u_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
6998 ; NO-SIMD128-NEXT: # %bb.0:
6999 ; NO-SIMD128-NEXT: i32.const $push0=, 14
7000 ; NO-SIMD128-NEXT: i32.add $push1=, $0, $pop0
7001 ; NO-SIMD128-NEXT: i32.add $push2=, $8, $16
7002 ; NO-SIMD128-NEXT: i32.const $push3=, 1
7003 ; NO-SIMD128-NEXT: i32.add $push4=, $pop2, $pop3
7004 ; NO-SIMD128-NEXT: i32.const $push5=, 65534
7005 ; NO-SIMD128-NEXT: i32.and $push6=, $pop4, $pop5
7006 ; NO-SIMD128-NEXT: i32.const $push63=, 1
7007 ; NO-SIMD128-NEXT: i32.shr_u $push7=, $pop6, $pop63
7008 ; NO-SIMD128-NEXT: i32.store16 0($pop1), $pop7
7009 ; NO-SIMD128-NEXT: i32.const $push8=, 12
7010 ; NO-SIMD128-NEXT: i32.add $push9=, $0, $pop8
7011 ; NO-SIMD128-NEXT: i32.add $push10=, $7, $15
7012 ; NO-SIMD128-NEXT: i32.const $push62=, 1
7013 ; NO-SIMD128-NEXT: i32.add $push11=, $pop10, $pop62
7014 ; NO-SIMD128-NEXT: i32.const $push61=, 65534
7015 ; NO-SIMD128-NEXT: i32.and $push12=, $pop11, $pop61
7016 ; NO-SIMD128-NEXT: i32.const $push60=, 1
7017 ; NO-SIMD128-NEXT: i32.shr_u $push13=, $pop12, $pop60
7018 ; NO-SIMD128-NEXT: i32.store16 0($pop9), $pop13
7019 ; NO-SIMD128-NEXT: i32.const $push14=, 10
7020 ; NO-SIMD128-NEXT: i32.add $push15=, $0, $pop14
7021 ; NO-SIMD128-NEXT: i32.add $push16=, $6, $14
7022 ; NO-SIMD128-NEXT: i32.const $push59=, 1
7023 ; NO-SIMD128-NEXT: i32.add $push17=, $pop16, $pop59
7024 ; NO-SIMD128-NEXT: i32.const $push58=, 65534
7025 ; NO-SIMD128-NEXT: i32.and $push18=, $pop17, $pop58
7026 ; NO-SIMD128-NEXT: i32.const $push57=, 1
7027 ; NO-SIMD128-NEXT: i32.shr_u $push19=, $pop18, $pop57
7028 ; NO-SIMD128-NEXT: i32.store16 0($pop15), $pop19
7029 ; NO-SIMD128-NEXT: i32.add $push20=, $5, $13
7030 ; NO-SIMD128-NEXT: i32.const $push56=, 1
7031 ; NO-SIMD128-NEXT: i32.add $push21=, $pop20, $pop56
7032 ; NO-SIMD128-NEXT: i32.const $push55=, 65534
7033 ; NO-SIMD128-NEXT: i32.and $push22=, $pop21, $pop55
7034 ; NO-SIMD128-NEXT: i32.const $push54=, 1
7035 ; NO-SIMD128-NEXT: i32.shr_u $push23=, $pop22, $pop54
7036 ; NO-SIMD128-NEXT: i32.store16 8($0), $pop23
7037 ; NO-SIMD128-NEXT: i32.const $push24=, 6
7038 ; NO-SIMD128-NEXT: i32.add $push25=, $0, $pop24
7039 ; NO-SIMD128-NEXT: i32.add $push26=, $4, $12
7040 ; NO-SIMD128-NEXT: i32.const $push53=, 1
7041 ; NO-SIMD128-NEXT: i32.add $push27=, $pop26, $pop53
7042 ; NO-SIMD128-NEXT: i32.const $push52=, 65534
7043 ; NO-SIMD128-NEXT: i32.and $push28=, $pop27, $pop52
7044 ; NO-SIMD128-NEXT: i32.const $push51=, 1
7045 ; NO-SIMD128-NEXT: i32.shr_u $push29=, $pop28, $pop51
7046 ; NO-SIMD128-NEXT: i32.store16 0($pop25), $pop29
7047 ; NO-SIMD128-NEXT: i32.add $push30=, $3, $11
7048 ; NO-SIMD128-NEXT: i32.const $push50=, 1
7049 ; NO-SIMD128-NEXT: i32.add $push31=, $pop30, $pop50
7050 ; NO-SIMD128-NEXT: i32.const $push49=, 65534
7051 ; NO-SIMD128-NEXT: i32.and $push32=, $pop31, $pop49
7052 ; NO-SIMD128-NEXT: i32.const $push48=, 1
7053 ; NO-SIMD128-NEXT: i32.shr_u $push33=, $pop32, $pop48
7054 ; NO-SIMD128-NEXT: i32.store16 4($0), $pop33
7055 ; NO-SIMD128-NEXT: i32.add $push34=, $2, $10
7056 ; NO-SIMD128-NEXT: i32.const $push47=, 1
7057 ; NO-SIMD128-NEXT: i32.add $push35=, $pop34, $pop47
7058 ; NO-SIMD128-NEXT: i32.const $push46=, 65534
7059 ; NO-SIMD128-NEXT: i32.and $push36=, $pop35, $pop46
7060 ; NO-SIMD128-NEXT: i32.const $push45=, 1
7061 ; NO-SIMD128-NEXT: i32.shr_u $push37=, $pop36, $pop45
7062 ; NO-SIMD128-NEXT: i32.store16 2($0), $pop37
7063 ; NO-SIMD128-NEXT: i32.add $push38=, $1, $9
7064 ; NO-SIMD128-NEXT: i32.const $push44=, 1
7065 ; NO-SIMD128-NEXT: i32.add $push39=, $pop38, $pop44
7066 ; NO-SIMD128-NEXT: i32.const $push43=, 65534
7067 ; NO-SIMD128-NEXT: i32.and $push40=, $pop39, $pop43
7068 ; NO-SIMD128-NEXT: i32.const $push42=, 1
7069 ; NO-SIMD128-NEXT: i32.shr_u $push41=, $pop40, $pop42
7070 ; NO-SIMD128-NEXT: i32.store16 0($0), $pop41
7071 ; NO-SIMD128-NEXT: return
7073 ; NO-SIMD128-FAST-LABEL: avgr_u_v8i16:
7074 ; NO-SIMD128-FAST: .functype avgr_u_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
7075 ; NO-SIMD128-FAST-NEXT: # %bb.0:
7076 ; NO-SIMD128-FAST-NEXT: i32.add $push0=, $1, $9
7077 ; NO-SIMD128-FAST-NEXT: i32.const $push1=, 1
7078 ; NO-SIMD128-FAST-NEXT: i32.add $push2=, $pop0, $pop1
7079 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 65534
7080 ; NO-SIMD128-FAST-NEXT: i32.and $push4=, $pop2, $pop3
7081 ; NO-SIMD128-FAST-NEXT: i32.const $push63=, 1
7082 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push5=, $pop4, $pop63
7083 ; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop5
7084 ; NO-SIMD128-FAST-NEXT: i32.add $push6=, $2, $10
7085 ; NO-SIMD128-FAST-NEXT: i32.const $push62=, 1
7086 ; NO-SIMD128-FAST-NEXT: i32.add $push7=, $pop6, $pop62
7087 ; NO-SIMD128-FAST-NEXT: i32.const $push61=, 65534
7088 ; NO-SIMD128-FAST-NEXT: i32.and $push8=, $pop7, $pop61
7089 ; NO-SIMD128-FAST-NEXT: i32.const $push60=, 1
7090 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push9=, $pop8, $pop60
7091 ; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop9
7092 ; NO-SIMD128-FAST-NEXT: i32.add $push10=, $3, $11
7093 ; NO-SIMD128-FAST-NEXT: i32.const $push59=, 1
7094 ; NO-SIMD128-FAST-NEXT: i32.add $push11=, $pop10, $pop59
7095 ; NO-SIMD128-FAST-NEXT: i32.const $push58=, 65534
7096 ; NO-SIMD128-FAST-NEXT: i32.and $push12=, $pop11, $pop58
7097 ; NO-SIMD128-FAST-NEXT: i32.const $push57=, 1
7098 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push13=, $pop12, $pop57
7099 ; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop13
7100 ; NO-SIMD128-FAST-NEXT: i32.const $push14=, 6
7101 ; NO-SIMD128-FAST-NEXT: i32.add $push15=, $0, $pop14
7102 ; NO-SIMD128-FAST-NEXT: i32.add $push16=, $4, $12
7103 ; NO-SIMD128-FAST-NEXT: i32.const $push56=, 1
7104 ; NO-SIMD128-FAST-NEXT: i32.add $push17=, $pop16, $pop56
7105 ; NO-SIMD128-FAST-NEXT: i32.const $push55=, 65534
7106 ; NO-SIMD128-FAST-NEXT: i32.and $push18=, $pop17, $pop55
7107 ; NO-SIMD128-FAST-NEXT: i32.const $push54=, 1
7108 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push19=, $pop18, $pop54
7109 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop15), $pop19
7110 ; NO-SIMD128-FAST-NEXT: i32.add $push20=, $5, $13
7111 ; NO-SIMD128-FAST-NEXT: i32.const $push53=, 1
7112 ; NO-SIMD128-FAST-NEXT: i32.add $push21=, $pop20, $pop53
7113 ; NO-SIMD128-FAST-NEXT: i32.const $push52=, 65534
7114 ; NO-SIMD128-FAST-NEXT: i32.and $push22=, $pop21, $pop52
7115 ; NO-SIMD128-FAST-NEXT: i32.const $push51=, 1
7116 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push23=, $pop22, $pop51
7117 ; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop23
7118 ; NO-SIMD128-FAST-NEXT: i32.const $push24=, 10
7119 ; NO-SIMD128-FAST-NEXT: i32.add $push25=, $0, $pop24
7120 ; NO-SIMD128-FAST-NEXT: i32.add $push26=, $6, $14
7121 ; NO-SIMD128-FAST-NEXT: i32.const $push50=, 1
7122 ; NO-SIMD128-FAST-NEXT: i32.add $push27=, $pop26, $pop50
7123 ; NO-SIMD128-FAST-NEXT: i32.const $push49=, 65534
7124 ; NO-SIMD128-FAST-NEXT: i32.and $push28=, $pop27, $pop49
7125 ; NO-SIMD128-FAST-NEXT: i32.const $push48=, 1
7126 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push29=, $pop28, $pop48
7127 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop25), $pop29
7128 ; NO-SIMD128-FAST-NEXT: i32.const $push30=, 12
7129 ; NO-SIMD128-FAST-NEXT: i32.add $push31=, $0, $pop30
7130 ; NO-SIMD128-FAST-NEXT: i32.add $push32=, $7, $15
7131 ; NO-SIMD128-FAST-NEXT: i32.const $push47=, 1
7132 ; NO-SIMD128-FAST-NEXT: i32.add $push33=, $pop32, $pop47
7133 ; NO-SIMD128-FAST-NEXT: i32.const $push46=, 65534
7134 ; NO-SIMD128-FAST-NEXT: i32.and $push34=, $pop33, $pop46
7135 ; NO-SIMD128-FAST-NEXT: i32.const $push45=, 1
7136 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push35=, $pop34, $pop45
7137 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop31), $pop35
7138 ; NO-SIMD128-FAST-NEXT: i32.const $push36=, 14
7139 ; NO-SIMD128-FAST-NEXT: i32.add $push37=, $0, $pop36
7140 ; NO-SIMD128-FAST-NEXT: i32.add $push38=, $8, $16
7141 ; NO-SIMD128-FAST-NEXT: i32.const $push44=, 1
7142 ; NO-SIMD128-FAST-NEXT: i32.add $push39=, $pop38, $pop44
7143 ; NO-SIMD128-FAST-NEXT: i32.const $push43=, 65534
7144 ; NO-SIMD128-FAST-NEXT: i32.and $push40=, $pop39, $pop43
7145 ; NO-SIMD128-FAST-NEXT: i32.const $push42=, 1
7146 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push41=, $pop40, $pop42
7147 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop37), $pop41
7148 ; NO-SIMD128-FAST-NEXT: return
7149 %a = add nuw <8 x i16> %x, %y
7150 %b = add nuw <8 x i16> %a, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
7151 %c = udiv <8 x i16> %b, <i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2>
7155 define <8 x i16> @avgr_u_v8i16_wrap(<8 x i16> %x, <8 x i16> %y) {
7156 ; SIMD128-LABEL: avgr_u_v8i16_wrap:
7157 ; SIMD128: .functype avgr_u_v8i16_wrap (v128, v128) -> (v128)
7158 ; SIMD128-NEXT: # %bb.0:
7159 ; SIMD128-NEXT: i16x8.add $push0=, $0, $1
7160 ; SIMD128-NEXT: v128.const $push1=, 1, 1, 1, 1, 1, 1, 1, 1
7161 ; SIMD128-NEXT: i16x8.add $push2=, $pop0, $pop1
7162 ; SIMD128-NEXT: i32.const $push3=, 1
7163 ; SIMD128-NEXT: i16x8.shr_u $push4=, $pop2, $pop3
7164 ; SIMD128-NEXT: return $pop4
7166 ; SIMD128-FAST-LABEL: avgr_u_v8i16_wrap:
7167 ; SIMD128-FAST: .functype avgr_u_v8i16_wrap (v128, v128) -> (v128)
7168 ; SIMD128-FAST-NEXT: # %bb.0:
7169 ; SIMD128-FAST-NEXT: i16x8.add $push2=, $0, $1
7170 ; SIMD128-FAST-NEXT: v128.const $push3=, 1, 1, 1, 1, 1, 1, 1, 1
7171 ; SIMD128-FAST-NEXT: i16x8.add $push1=, $pop2, $pop3
7172 ; SIMD128-FAST-NEXT: i32.const $push4=, 1
7173 ; SIMD128-FAST-NEXT: i16x8.shr_u $push0=, $pop1, $pop4
7174 ; SIMD128-FAST-NEXT: return $pop0
7176 ; NO-SIMD128-LABEL: avgr_u_v8i16_wrap:
7177 ; NO-SIMD128: .functype avgr_u_v8i16_wrap (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
7178 ; NO-SIMD128-NEXT: # %bb.0:
7179 ; NO-SIMD128-NEXT: i32.const $push0=, 14
7180 ; NO-SIMD128-NEXT: i32.add $push1=, $0, $pop0
7181 ; NO-SIMD128-NEXT: i32.add $push2=, $8, $16
7182 ; NO-SIMD128-NEXT: i32.const $push3=, 1
7183 ; NO-SIMD128-NEXT: i32.add $push4=, $pop2, $pop3
7184 ; NO-SIMD128-NEXT: i32.const $push5=, 65534
7185 ; NO-SIMD128-NEXT: i32.and $push6=, $pop4, $pop5
7186 ; NO-SIMD128-NEXT: i32.const $push63=, 1
7187 ; NO-SIMD128-NEXT: i32.shr_u $push7=, $pop6, $pop63
7188 ; NO-SIMD128-NEXT: i32.store16 0($pop1), $pop7
7189 ; NO-SIMD128-NEXT: i32.const $push8=, 12
7190 ; NO-SIMD128-NEXT: i32.add $push9=, $0, $pop8
7191 ; NO-SIMD128-NEXT: i32.add $push10=, $7, $15
7192 ; NO-SIMD128-NEXT: i32.const $push62=, 1
7193 ; NO-SIMD128-NEXT: i32.add $push11=, $pop10, $pop62
7194 ; NO-SIMD128-NEXT: i32.const $push61=, 65534
7195 ; NO-SIMD128-NEXT: i32.and $push12=, $pop11, $pop61
7196 ; NO-SIMD128-NEXT: i32.const $push60=, 1
7197 ; NO-SIMD128-NEXT: i32.shr_u $push13=, $pop12, $pop60
7198 ; NO-SIMD128-NEXT: i32.store16 0($pop9), $pop13
7199 ; NO-SIMD128-NEXT: i32.const $push14=, 10
7200 ; NO-SIMD128-NEXT: i32.add $push15=, $0, $pop14
7201 ; NO-SIMD128-NEXT: i32.add $push16=, $6, $14
7202 ; NO-SIMD128-NEXT: i32.const $push59=, 1
7203 ; NO-SIMD128-NEXT: i32.add $push17=, $pop16, $pop59
7204 ; NO-SIMD128-NEXT: i32.const $push58=, 65534
7205 ; NO-SIMD128-NEXT: i32.and $push18=, $pop17, $pop58
7206 ; NO-SIMD128-NEXT: i32.const $push57=, 1
7207 ; NO-SIMD128-NEXT: i32.shr_u $push19=, $pop18, $pop57
7208 ; NO-SIMD128-NEXT: i32.store16 0($pop15), $pop19
7209 ; NO-SIMD128-NEXT: i32.add $push20=, $5, $13
7210 ; NO-SIMD128-NEXT: i32.const $push56=, 1
7211 ; NO-SIMD128-NEXT: i32.add $push21=, $pop20, $pop56
7212 ; NO-SIMD128-NEXT: i32.const $push55=, 65534
7213 ; NO-SIMD128-NEXT: i32.and $push22=, $pop21, $pop55
7214 ; NO-SIMD128-NEXT: i32.const $push54=, 1
7215 ; NO-SIMD128-NEXT: i32.shr_u $push23=, $pop22, $pop54
7216 ; NO-SIMD128-NEXT: i32.store16 8($0), $pop23
7217 ; NO-SIMD128-NEXT: i32.const $push24=, 6
7218 ; NO-SIMD128-NEXT: i32.add $push25=, $0, $pop24
7219 ; NO-SIMD128-NEXT: i32.add $push26=, $4, $12
7220 ; NO-SIMD128-NEXT: i32.const $push53=, 1
7221 ; NO-SIMD128-NEXT: i32.add $push27=, $pop26, $pop53
7222 ; NO-SIMD128-NEXT: i32.const $push52=, 65534
7223 ; NO-SIMD128-NEXT: i32.and $push28=, $pop27, $pop52
7224 ; NO-SIMD128-NEXT: i32.const $push51=, 1
7225 ; NO-SIMD128-NEXT: i32.shr_u $push29=, $pop28, $pop51
7226 ; NO-SIMD128-NEXT: i32.store16 0($pop25), $pop29
7227 ; NO-SIMD128-NEXT: i32.add $push30=, $3, $11
7228 ; NO-SIMD128-NEXT: i32.const $push50=, 1
7229 ; NO-SIMD128-NEXT: i32.add $push31=, $pop30, $pop50
7230 ; NO-SIMD128-NEXT: i32.const $push49=, 65534
7231 ; NO-SIMD128-NEXT: i32.and $push32=, $pop31, $pop49
7232 ; NO-SIMD128-NEXT: i32.const $push48=, 1
7233 ; NO-SIMD128-NEXT: i32.shr_u $push33=, $pop32, $pop48
7234 ; NO-SIMD128-NEXT: i32.store16 4($0), $pop33
7235 ; NO-SIMD128-NEXT: i32.add $push34=, $2, $10
7236 ; NO-SIMD128-NEXT: i32.const $push47=, 1
7237 ; NO-SIMD128-NEXT: i32.add $push35=, $pop34, $pop47
7238 ; NO-SIMD128-NEXT: i32.const $push46=, 65534
7239 ; NO-SIMD128-NEXT: i32.and $push36=, $pop35, $pop46
7240 ; NO-SIMD128-NEXT: i32.const $push45=, 1
7241 ; NO-SIMD128-NEXT: i32.shr_u $push37=, $pop36, $pop45
7242 ; NO-SIMD128-NEXT: i32.store16 2($0), $pop37
7243 ; NO-SIMD128-NEXT: i32.add $push38=, $1, $9
7244 ; NO-SIMD128-NEXT: i32.const $push44=, 1
7245 ; NO-SIMD128-NEXT: i32.add $push39=, $pop38, $pop44
7246 ; NO-SIMD128-NEXT: i32.const $push43=, 65534
7247 ; NO-SIMD128-NEXT: i32.and $push40=, $pop39, $pop43
7248 ; NO-SIMD128-NEXT: i32.const $push42=, 1
7249 ; NO-SIMD128-NEXT: i32.shr_u $push41=, $pop40, $pop42
7250 ; NO-SIMD128-NEXT: i32.store16 0($0), $pop41
7251 ; NO-SIMD128-NEXT: return
7253 ; NO-SIMD128-FAST-LABEL: avgr_u_v8i16_wrap:
7254 ; NO-SIMD128-FAST: .functype avgr_u_v8i16_wrap (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
7255 ; NO-SIMD128-FAST-NEXT: # %bb.0:
7256 ; NO-SIMD128-FAST-NEXT: i32.add $push0=, $1, $9
7257 ; NO-SIMD128-FAST-NEXT: i32.const $push1=, 1
7258 ; NO-SIMD128-FAST-NEXT: i32.add $push2=, $pop0, $pop1
7259 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 65534
7260 ; NO-SIMD128-FAST-NEXT: i32.and $push4=, $pop2, $pop3
7261 ; NO-SIMD128-FAST-NEXT: i32.const $push63=, 1
7262 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push5=, $pop4, $pop63
7263 ; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop5
7264 ; NO-SIMD128-FAST-NEXT: i32.add $push6=, $2, $10
7265 ; NO-SIMD128-FAST-NEXT: i32.const $push62=, 1
7266 ; NO-SIMD128-FAST-NEXT: i32.add $push7=, $pop6, $pop62
7267 ; NO-SIMD128-FAST-NEXT: i32.const $push61=, 65534
7268 ; NO-SIMD128-FAST-NEXT: i32.and $push8=, $pop7, $pop61
7269 ; NO-SIMD128-FAST-NEXT: i32.const $push60=, 1
7270 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push9=, $pop8, $pop60
7271 ; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop9
7272 ; NO-SIMD128-FAST-NEXT: i32.add $push10=, $3, $11
7273 ; NO-SIMD128-FAST-NEXT: i32.const $push59=, 1
7274 ; NO-SIMD128-FAST-NEXT: i32.add $push11=, $pop10, $pop59
7275 ; NO-SIMD128-FAST-NEXT: i32.const $push58=, 65534
7276 ; NO-SIMD128-FAST-NEXT: i32.and $push12=, $pop11, $pop58
7277 ; NO-SIMD128-FAST-NEXT: i32.const $push57=, 1
7278 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push13=, $pop12, $pop57
7279 ; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop13
7280 ; NO-SIMD128-FAST-NEXT: i32.const $push14=, 6
7281 ; NO-SIMD128-FAST-NEXT: i32.add $push15=, $0, $pop14
7282 ; NO-SIMD128-FAST-NEXT: i32.add $push16=, $4, $12
7283 ; NO-SIMD128-FAST-NEXT: i32.const $push56=, 1
7284 ; NO-SIMD128-FAST-NEXT: i32.add $push17=, $pop16, $pop56
7285 ; NO-SIMD128-FAST-NEXT: i32.const $push55=, 65534
7286 ; NO-SIMD128-FAST-NEXT: i32.and $push18=, $pop17, $pop55
7287 ; NO-SIMD128-FAST-NEXT: i32.const $push54=, 1
7288 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push19=, $pop18, $pop54
7289 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop15), $pop19
7290 ; NO-SIMD128-FAST-NEXT: i32.add $push20=, $5, $13
7291 ; NO-SIMD128-FAST-NEXT: i32.const $push53=, 1
7292 ; NO-SIMD128-FAST-NEXT: i32.add $push21=, $pop20, $pop53
7293 ; NO-SIMD128-FAST-NEXT: i32.const $push52=, 65534
7294 ; NO-SIMD128-FAST-NEXT: i32.and $push22=, $pop21, $pop52
7295 ; NO-SIMD128-FAST-NEXT: i32.const $push51=, 1
7296 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push23=, $pop22, $pop51
7297 ; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop23
7298 ; NO-SIMD128-FAST-NEXT: i32.const $push24=, 10
7299 ; NO-SIMD128-FAST-NEXT: i32.add $push25=, $0, $pop24
7300 ; NO-SIMD128-FAST-NEXT: i32.add $push26=, $6, $14
7301 ; NO-SIMD128-FAST-NEXT: i32.const $push50=, 1
7302 ; NO-SIMD128-FAST-NEXT: i32.add $push27=, $pop26, $pop50
7303 ; NO-SIMD128-FAST-NEXT: i32.const $push49=, 65534
7304 ; NO-SIMD128-FAST-NEXT: i32.and $push28=, $pop27, $pop49
7305 ; NO-SIMD128-FAST-NEXT: i32.const $push48=, 1
7306 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push29=, $pop28, $pop48
7307 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop25), $pop29
7308 ; NO-SIMD128-FAST-NEXT: i32.const $push30=, 12
7309 ; NO-SIMD128-FAST-NEXT: i32.add $push31=, $0, $pop30
7310 ; NO-SIMD128-FAST-NEXT: i32.add $push32=, $7, $15
7311 ; NO-SIMD128-FAST-NEXT: i32.const $push47=, 1
7312 ; NO-SIMD128-FAST-NEXT: i32.add $push33=, $pop32, $pop47
7313 ; NO-SIMD128-FAST-NEXT: i32.const $push46=, 65534
7314 ; NO-SIMD128-FAST-NEXT: i32.and $push34=, $pop33, $pop46
7315 ; NO-SIMD128-FAST-NEXT: i32.const $push45=, 1
7316 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push35=, $pop34, $pop45
7317 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop31), $pop35
7318 ; NO-SIMD128-FAST-NEXT: i32.const $push36=, 14
7319 ; NO-SIMD128-FAST-NEXT: i32.add $push37=, $0, $pop36
7320 ; NO-SIMD128-FAST-NEXT: i32.add $push38=, $8, $16
7321 ; NO-SIMD128-FAST-NEXT: i32.const $push44=, 1
7322 ; NO-SIMD128-FAST-NEXT: i32.add $push39=, $pop38, $pop44
7323 ; NO-SIMD128-FAST-NEXT: i32.const $push43=, 65534
7324 ; NO-SIMD128-FAST-NEXT: i32.and $push40=, $pop39, $pop43
7325 ; NO-SIMD128-FAST-NEXT: i32.const $push42=, 1
7326 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push41=, $pop40, $pop42
7327 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop37), $pop41
7328 ; NO-SIMD128-FAST-NEXT: return
7329 %a = add <8 x i16> %x, %y
7330 %b = add <8 x i16> %a, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
7331 %c = udiv <8 x i16> %b, <i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2>
7335 define <8 x i16> @abs_v8i16(<8 x i16> %x) {
7336 ; SIMD128-LABEL: abs_v8i16:
7337 ; SIMD128: .functype abs_v8i16 (v128) -> (v128)
7338 ; SIMD128-NEXT: # %bb.0:
7339 ; SIMD128-NEXT: i16x8.abs $push0=, $0
7340 ; SIMD128-NEXT: return $pop0
7342 ; SIMD128-FAST-LABEL: abs_v8i16:
7343 ; SIMD128-FAST: .functype abs_v8i16 (v128) -> (v128)
7344 ; SIMD128-FAST-NEXT: # %bb.0:
7345 ; SIMD128-FAST-NEXT: i16x8.abs $push0=, $0
7346 ; SIMD128-FAST-NEXT: return $pop0
7348 ; NO-SIMD128-LABEL: abs_v8i16:
7349 ; NO-SIMD128: .functype abs_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
7350 ; NO-SIMD128-NEXT: # %bb.0:
7351 ; NO-SIMD128-NEXT: i32.const $push4=, 14
7352 ; NO-SIMD128-NEXT: i32.add $push5=, $0, $pop4
7353 ; NO-SIMD128-NEXT: i32.extend16_s $push0=, $8
7354 ; NO-SIMD128-NEXT: i32.const $push1=, 15
7355 ; NO-SIMD128-NEXT: i32.shr_s $push55=, $pop0, $pop1
7356 ; NO-SIMD128-NEXT: local.tee $push54=, $9=, $pop55
7357 ; NO-SIMD128-NEXT: i32.xor $push2=, $8, $pop54
7358 ; NO-SIMD128-NEXT: i32.sub $push3=, $pop2, $9
7359 ; NO-SIMD128-NEXT: i32.store16 0($pop5), $pop3
7360 ; NO-SIMD128-NEXT: i32.const $push9=, 12
7361 ; NO-SIMD128-NEXT: i32.add $push10=, $0, $pop9
7362 ; NO-SIMD128-NEXT: i32.extend16_s $push6=, $7
7363 ; NO-SIMD128-NEXT: i32.const $push53=, 15
7364 ; NO-SIMD128-NEXT: i32.shr_s $push52=, $pop6, $pop53
7365 ; NO-SIMD128-NEXT: local.tee $push51=, $8=, $pop52
7366 ; NO-SIMD128-NEXT: i32.xor $push7=, $7, $pop51
7367 ; NO-SIMD128-NEXT: i32.sub $push8=, $pop7, $8
7368 ; NO-SIMD128-NEXT: i32.store16 0($pop10), $pop8
7369 ; NO-SIMD128-NEXT: i32.const $push14=, 10
7370 ; NO-SIMD128-NEXT: i32.add $push15=, $0, $pop14
7371 ; NO-SIMD128-NEXT: i32.extend16_s $push11=, $6
7372 ; NO-SIMD128-NEXT: i32.const $push50=, 15
7373 ; NO-SIMD128-NEXT: i32.shr_s $push49=, $pop11, $pop50
7374 ; NO-SIMD128-NEXT: local.tee $push48=, $8=, $pop49
7375 ; NO-SIMD128-NEXT: i32.xor $push12=, $6, $pop48
7376 ; NO-SIMD128-NEXT: i32.sub $push13=, $pop12, $8
7377 ; NO-SIMD128-NEXT: i32.store16 0($pop15), $pop13
7378 ; NO-SIMD128-NEXT: i32.extend16_s $push16=, $5
7379 ; NO-SIMD128-NEXT: i32.const $push47=, 15
7380 ; NO-SIMD128-NEXT: i32.shr_s $push46=, $pop16, $pop47
7381 ; NO-SIMD128-NEXT: local.tee $push45=, $8=, $pop46
7382 ; NO-SIMD128-NEXT: i32.xor $push17=, $5, $pop45
7383 ; NO-SIMD128-NEXT: i32.sub $push18=, $pop17, $8
7384 ; NO-SIMD128-NEXT: i32.store16 8($0), $pop18
7385 ; NO-SIMD128-NEXT: i32.const $push22=, 6
7386 ; NO-SIMD128-NEXT: i32.add $push23=, $0, $pop22
7387 ; NO-SIMD128-NEXT: i32.extend16_s $push19=, $4
7388 ; NO-SIMD128-NEXT: i32.const $push44=, 15
7389 ; NO-SIMD128-NEXT: i32.shr_s $push43=, $pop19, $pop44
7390 ; NO-SIMD128-NEXT: local.tee $push42=, $8=, $pop43
7391 ; NO-SIMD128-NEXT: i32.xor $push20=, $4, $pop42
7392 ; NO-SIMD128-NEXT: i32.sub $push21=, $pop20, $8
7393 ; NO-SIMD128-NEXT: i32.store16 0($pop23), $pop21
7394 ; NO-SIMD128-NEXT: i32.extend16_s $push24=, $3
7395 ; NO-SIMD128-NEXT: i32.const $push41=, 15
7396 ; NO-SIMD128-NEXT: i32.shr_s $push40=, $pop24, $pop41
7397 ; NO-SIMD128-NEXT: local.tee $push39=, $8=, $pop40
7398 ; NO-SIMD128-NEXT: i32.xor $push25=, $3, $pop39
7399 ; NO-SIMD128-NEXT: i32.sub $push26=, $pop25, $8
7400 ; NO-SIMD128-NEXT: i32.store16 4($0), $pop26
7401 ; NO-SIMD128-NEXT: i32.extend16_s $push27=, $2
7402 ; NO-SIMD128-NEXT: i32.const $push38=, 15
7403 ; NO-SIMD128-NEXT: i32.shr_s $push37=, $pop27, $pop38
7404 ; NO-SIMD128-NEXT: local.tee $push36=, $8=, $pop37
7405 ; NO-SIMD128-NEXT: i32.xor $push28=, $2, $pop36
7406 ; NO-SIMD128-NEXT: i32.sub $push29=, $pop28, $8
7407 ; NO-SIMD128-NEXT: i32.store16 2($0), $pop29
7408 ; NO-SIMD128-NEXT: i32.extend16_s $push30=, $1
7409 ; NO-SIMD128-NEXT: i32.const $push35=, 15
7410 ; NO-SIMD128-NEXT: i32.shr_s $push34=, $pop30, $pop35
7411 ; NO-SIMD128-NEXT: local.tee $push33=, $8=, $pop34
7412 ; NO-SIMD128-NEXT: i32.xor $push31=, $1, $pop33
7413 ; NO-SIMD128-NEXT: i32.sub $push32=, $pop31, $8
7414 ; NO-SIMD128-NEXT: i32.store16 0($0), $pop32
7415 ; NO-SIMD128-NEXT: return
7417 ; NO-SIMD128-FAST-LABEL: abs_v8i16:
7418 ; NO-SIMD128-FAST: .functype abs_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
7419 ; NO-SIMD128-FAST-NEXT: # %bb.0:
7420 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push0=, $1
7421 ; NO-SIMD128-FAST-NEXT: i32.const $push1=, 15
7422 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push55=, $pop0, $pop1
7423 ; NO-SIMD128-FAST-NEXT: local.tee $push54=, $9=, $pop55
7424 ; NO-SIMD128-FAST-NEXT: i32.xor $push2=, $1, $pop54
7425 ; NO-SIMD128-FAST-NEXT: i32.sub $push3=, $pop2, $9
7426 ; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop3
7427 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push4=, $2
7428 ; NO-SIMD128-FAST-NEXT: i32.const $push53=, 15
7429 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push52=, $pop4, $pop53
7430 ; NO-SIMD128-FAST-NEXT: local.tee $push51=, $1=, $pop52
7431 ; NO-SIMD128-FAST-NEXT: i32.xor $push5=, $2, $pop51
7432 ; NO-SIMD128-FAST-NEXT: i32.sub $push6=, $pop5, $1
7433 ; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop6
7434 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push7=, $3
7435 ; NO-SIMD128-FAST-NEXT: i32.const $push50=, 15
7436 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push49=, $pop7, $pop50
7437 ; NO-SIMD128-FAST-NEXT: local.tee $push48=, $2=, $pop49
7438 ; NO-SIMD128-FAST-NEXT: i32.xor $push8=, $3, $pop48
7439 ; NO-SIMD128-FAST-NEXT: i32.sub $push9=, $pop8, $2
7440 ; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop9
7441 ; NO-SIMD128-FAST-NEXT: i32.const $push13=, 6
7442 ; NO-SIMD128-FAST-NEXT: i32.add $push14=, $0, $pop13
7443 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push10=, $4
7444 ; NO-SIMD128-FAST-NEXT: i32.const $push47=, 15
7445 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push46=, $pop10, $pop47
7446 ; NO-SIMD128-FAST-NEXT: local.tee $push45=, $3=, $pop46
7447 ; NO-SIMD128-FAST-NEXT: i32.xor $push11=, $4, $pop45
7448 ; NO-SIMD128-FAST-NEXT: i32.sub $push12=, $pop11, $3
7449 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop14), $pop12
7450 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push15=, $5
7451 ; NO-SIMD128-FAST-NEXT: i32.const $push44=, 15
7452 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push43=, $pop15, $pop44
7453 ; NO-SIMD128-FAST-NEXT: local.tee $push42=, $4=, $pop43
7454 ; NO-SIMD128-FAST-NEXT: i32.xor $push16=, $5, $pop42
7455 ; NO-SIMD128-FAST-NEXT: i32.sub $push17=, $pop16, $4
7456 ; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop17
7457 ; NO-SIMD128-FAST-NEXT: i32.const $push21=, 10
7458 ; NO-SIMD128-FAST-NEXT: i32.add $push22=, $0, $pop21
7459 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push18=, $6
7460 ; NO-SIMD128-FAST-NEXT: i32.const $push41=, 15
7461 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push40=, $pop18, $pop41
7462 ; NO-SIMD128-FAST-NEXT: local.tee $push39=, $5=, $pop40
7463 ; NO-SIMD128-FAST-NEXT: i32.xor $push19=, $6, $pop39
7464 ; NO-SIMD128-FAST-NEXT: i32.sub $push20=, $pop19, $5
7465 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop22), $pop20
7466 ; NO-SIMD128-FAST-NEXT: i32.const $push26=, 12
7467 ; NO-SIMD128-FAST-NEXT: i32.add $push27=, $0, $pop26
7468 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push23=, $7
7469 ; NO-SIMD128-FAST-NEXT: i32.const $push38=, 15
7470 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push37=, $pop23, $pop38
7471 ; NO-SIMD128-FAST-NEXT: local.tee $push36=, $6=, $pop37
7472 ; NO-SIMD128-FAST-NEXT: i32.xor $push24=, $7, $pop36
7473 ; NO-SIMD128-FAST-NEXT: i32.sub $push25=, $pop24, $6
7474 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop27), $pop25
7475 ; NO-SIMD128-FAST-NEXT: i32.const $push31=, 14
7476 ; NO-SIMD128-FAST-NEXT: i32.add $push32=, $0, $pop31
7477 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push28=, $8
7478 ; NO-SIMD128-FAST-NEXT: i32.const $push35=, 15
7479 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push34=, $pop28, $pop35
7480 ; NO-SIMD128-FAST-NEXT: local.tee $push33=, $0=, $pop34
7481 ; NO-SIMD128-FAST-NEXT: i32.xor $push29=, $8, $pop33
7482 ; NO-SIMD128-FAST-NEXT: i32.sub $push30=, $pop29, $0
7483 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop32), $pop30
7484 ; NO-SIMD128-FAST-NEXT: return
7485 %a = sub <8 x i16> zeroinitializer, %x
7486 %b = icmp slt <8 x i16> %x, zeroinitializer
7487 %c = select <8 x i1> %b, <8 x i16> %a, <8 x i16> %x
7491 define <8 x i16> @neg_v8i16(<8 x i16> %x) {
7492 ; SIMD128-LABEL: neg_v8i16:
7493 ; SIMD128: .functype neg_v8i16 (v128) -> (v128)
7494 ; SIMD128-NEXT: # %bb.0:
7495 ; SIMD128-NEXT: i16x8.neg $push0=, $0
7496 ; SIMD128-NEXT: return $pop0
7498 ; SIMD128-FAST-LABEL: neg_v8i16:
7499 ; SIMD128-FAST: .functype neg_v8i16 (v128) -> (v128)
7500 ; SIMD128-FAST-NEXT: # %bb.0:
7501 ; SIMD128-FAST-NEXT: i16x8.neg $push0=, $0
7502 ; SIMD128-FAST-NEXT: return $pop0
7504 ; NO-SIMD128-LABEL: neg_v8i16:
7505 ; NO-SIMD128: .functype neg_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
7506 ; NO-SIMD128-NEXT: # %bb.0:
7507 ; NO-SIMD128-NEXT: i32.const $push0=, 0
7508 ; NO-SIMD128-NEXT: i32.sub $push1=, $pop0, $5
7509 ; NO-SIMD128-NEXT: i32.store16 8($0), $pop1
7510 ; NO-SIMD128-NEXT: i32.const $push23=, 0
7511 ; NO-SIMD128-NEXT: i32.sub $push2=, $pop23, $3
7512 ; NO-SIMD128-NEXT: i32.store16 4($0), $pop2
7513 ; NO-SIMD128-NEXT: i32.const $push22=, 0
7514 ; NO-SIMD128-NEXT: i32.sub $push3=, $pop22, $2
7515 ; NO-SIMD128-NEXT: i32.store16 2($0), $pop3
7516 ; NO-SIMD128-NEXT: i32.const $push21=, 0
7517 ; NO-SIMD128-NEXT: i32.sub $push4=, $pop21, $1
7518 ; NO-SIMD128-NEXT: i32.store16 0($0), $pop4
7519 ; NO-SIMD128-NEXT: i32.const $push6=, 14
7520 ; NO-SIMD128-NEXT: i32.add $push7=, $0, $pop6
7521 ; NO-SIMD128-NEXT: i32.const $push20=, 0
7522 ; NO-SIMD128-NEXT: i32.sub $push5=, $pop20, $8
7523 ; NO-SIMD128-NEXT: i32.store16 0($pop7), $pop5
7524 ; NO-SIMD128-NEXT: i32.const $push9=, 12
7525 ; NO-SIMD128-NEXT: i32.add $push10=, $0, $pop9
7526 ; NO-SIMD128-NEXT: i32.const $push19=, 0
7527 ; NO-SIMD128-NEXT: i32.sub $push8=, $pop19, $7
7528 ; NO-SIMD128-NEXT: i32.store16 0($pop10), $pop8
7529 ; NO-SIMD128-NEXT: i32.const $push12=, 10
7530 ; NO-SIMD128-NEXT: i32.add $push13=, $0, $pop12
7531 ; NO-SIMD128-NEXT: i32.const $push18=, 0
7532 ; NO-SIMD128-NEXT: i32.sub $push11=, $pop18, $6
7533 ; NO-SIMD128-NEXT: i32.store16 0($pop13), $pop11
7534 ; NO-SIMD128-NEXT: i32.const $push15=, 6
7535 ; NO-SIMD128-NEXT: i32.add $push16=, $0, $pop15
7536 ; NO-SIMD128-NEXT: i32.const $push17=, 0
7537 ; NO-SIMD128-NEXT: i32.sub $push14=, $pop17, $4
7538 ; NO-SIMD128-NEXT: i32.store16 0($pop16), $pop14
7539 ; NO-SIMD128-NEXT: return
7541 ; NO-SIMD128-FAST-LABEL: neg_v8i16:
7542 ; NO-SIMD128-FAST: .functype neg_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
7543 ; NO-SIMD128-FAST-NEXT: # %bb.0:
7544 ; NO-SIMD128-FAST-NEXT: i32.const $push0=, 0
7545 ; NO-SIMD128-FAST-NEXT: i32.sub $push1=, $pop0, $1
7546 ; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop1
7547 ; NO-SIMD128-FAST-NEXT: i32.const $push23=, 0
7548 ; NO-SIMD128-FAST-NEXT: i32.sub $push2=, $pop23, $2
7549 ; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop2
7550 ; NO-SIMD128-FAST-NEXT: i32.const $push22=, 0
7551 ; NO-SIMD128-FAST-NEXT: i32.sub $push3=, $pop22, $3
7552 ; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop3
7553 ; NO-SIMD128-FAST-NEXT: i32.const $push4=, 6
7554 ; NO-SIMD128-FAST-NEXT: i32.add $push5=, $0, $pop4
7555 ; NO-SIMD128-FAST-NEXT: i32.const $push21=, 0
7556 ; NO-SIMD128-FAST-NEXT: i32.sub $push6=, $pop21, $4
7557 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop5), $pop6
7558 ; NO-SIMD128-FAST-NEXT: i32.const $push20=, 0
7559 ; NO-SIMD128-FAST-NEXT: i32.sub $push7=, $pop20, $5
7560 ; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop7
7561 ; NO-SIMD128-FAST-NEXT: i32.const $push8=, 10
7562 ; NO-SIMD128-FAST-NEXT: i32.add $push9=, $0, $pop8
7563 ; NO-SIMD128-FAST-NEXT: i32.const $push19=, 0
7564 ; NO-SIMD128-FAST-NEXT: i32.sub $push10=, $pop19, $6
7565 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop9), $pop10
7566 ; NO-SIMD128-FAST-NEXT: i32.const $push11=, 12
7567 ; NO-SIMD128-FAST-NEXT: i32.add $push12=, $0, $pop11
7568 ; NO-SIMD128-FAST-NEXT: i32.const $push18=, 0
7569 ; NO-SIMD128-FAST-NEXT: i32.sub $push13=, $pop18, $7
7570 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop12), $pop13
7571 ; NO-SIMD128-FAST-NEXT: i32.const $push14=, 14
7572 ; NO-SIMD128-FAST-NEXT: i32.add $push15=, $0, $pop14
7573 ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 0
7574 ; NO-SIMD128-FAST-NEXT: i32.sub $push16=, $pop17, $8
7575 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop15), $pop16
7576 ; NO-SIMD128-FAST-NEXT: return
7577 %a = sub <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>,
7582 define <8 x i16> @shl_v8i16(<8 x i16> %v, i16 %x) {
7583 ; SIMD128-LABEL: shl_v8i16:
7584 ; SIMD128: .functype shl_v8i16 (v128, i32) -> (v128)
7585 ; SIMD128-NEXT: # %bb.0:
7586 ; SIMD128-NEXT: i16x8.shl $push0=, $0, $1
7587 ; SIMD128-NEXT: return $pop0
7589 ; SIMD128-FAST-LABEL: shl_v8i16:
7590 ; SIMD128-FAST: .functype shl_v8i16 (v128, i32) -> (v128)
7591 ; SIMD128-FAST-NEXT: # %bb.0:
7592 ; SIMD128-FAST-NEXT: i16x8.shl $push0=, $0, $1
7593 ; SIMD128-FAST-NEXT: return $pop0
7595 ; NO-SIMD128-LABEL: shl_v8i16:
7596 ; NO-SIMD128: .functype shl_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
7597 ; NO-SIMD128-NEXT: # %bb.0:
7598 ; NO-SIMD128-NEXT: i32.const $push0=, 65535
7599 ; NO-SIMD128-NEXT: i32.and $push18=, $9, $pop0
7600 ; NO-SIMD128-NEXT: local.tee $push17=, $9=, $pop18
7601 ; NO-SIMD128-NEXT: i32.shl $push1=, $5, $pop17
7602 ; NO-SIMD128-NEXT: i32.store16 8($0), $pop1
7603 ; NO-SIMD128-NEXT: i32.shl $push2=, $3, $9
7604 ; NO-SIMD128-NEXT: i32.store16 4($0), $pop2
7605 ; NO-SIMD128-NEXT: i32.shl $push3=, $2, $9
7606 ; NO-SIMD128-NEXT: i32.store16 2($0), $pop3
7607 ; NO-SIMD128-NEXT: i32.shl $push4=, $1, $9
7608 ; NO-SIMD128-NEXT: i32.store16 0($0), $pop4
7609 ; NO-SIMD128-NEXT: i32.const $push6=, 14
7610 ; NO-SIMD128-NEXT: i32.add $push7=, $0, $pop6
7611 ; NO-SIMD128-NEXT: i32.shl $push5=, $8, $9
7612 ; NO-SIMD128-NEXT: i32.store16 0($pop7), $pop5
7613 ; NO-SIMD128-NEXT: i32.const $push9=, 12
7614 ; NO-SIMD128-NEXT: i32.add $push10=, $0, $pop9
7615 ; NO-SIMD128-NEXT: i32.shl $push8=, $7, $9
7616 ; NO-SIMD128-NEXT: i32.store16 0($pop10), $pop8
7617 ; NO-SIMD128-NEXT: i32.const $push12=, 10
7618 ; NO-SIMD128-NEXT: i32.add $push13=, $0, $pop12
7619 ; NO-SIMD128-NEXT: i32.shl $push11=, $6, $9
7620 ; NO-SIMD128-NEXT: i32.store16 0($pop13), $pop11
7621 ; NO-SIMD128-NEXT: i32.const $push15=, 6
7622 ; NO-SIMD128-NEXT: i32.add $push16=, $0, $pop15
7623 ; NO-SIMD128-NEXT: i32.shl $push14=, $4, $9
7624 ; NO-SIMD128-NEXT: i32.store16 0($pop16), $pop14
7625 ; NO-SIMD128-NEXT: return
7627 ; NO-SIMD128-FAST-LABEL: shl_v8i16:
7628 ; NO-SIMD128-FAST: .functype shl_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
7629 ; NO-SIMD128-FAST-NEXT: # %bb.0:
7630 ; NO-SIMD128-FAST-NEXT: i32.const $push0=, 65535
7631 ; NO-SIMD128-FAST-NEXT: i32.and $push18=, $9, $pop0
7632 ; NO-SIMD128-FAST-NEXT: local.tee $push17=, $9=, $pop18
7633 ; NO-SIMD128-FAST-NEXT: i32.shl $push1=, $2, $pop17
7634 ; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop1
7635 ; NO-SIMD128-FAST-NEXT: i32.shl $push2=, $1, $9
7636 ; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop2
7637 ; NO-SIMD128-FAST-NEXT: i32.shl $push3=, $3, $9
7638 ; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop3
7639 ; NO-SIMD128-FAST-NEXT: i32.const $push4=, 6
7640 ; NO-SIMD128-FAST-NEXT: i32.add $push5=, $0, $pop4
7641 ; NO-SIMD128-FAST-NEXT: i32.shl $push6=, $4, $9
7642 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop5), $pop6
7643 ; NO-SIMD128-FAST-NEXT: i32.shl $push7=, $5, $9
7644 ; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop7
7645 ; NO-SIMD128-FAST-NEXT: i32.const $push8=, 10
7646 ; NO-SIMD128-FAST-NEXT: i32.add $push9=, $0, $pop8
7647 ; NO-SIMD128-FAST-NEXT: i32.shl $push10=, $6, $9
7648 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop9), $pop10
7649 ; NO-SIMD128-FAST-NEXT: i32.const $push11=, 12
7650 ; NO-SIMD128-FAST-NEXT: i32.add $push12=, $0, $pop11
7651 ; NO-SIMD128-FAST-NEXT: i32.shl $push13=, $7, $9
7652 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop12), $pop13
7653 ; NO-SIMD128-FAST-NEXT: i32.const $push14=, 14
7654 ; NO-SIMD128-FAST-NEXT: i32.add $push15=, $0, $pop14
7655 ; NO-SIMD128-FAST-NEXT: i32.shl $push16=, $8, $9
7656 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop15), $pop16
7657 ; NO-SIMD128-FAST-NEXT: return
7658 %t = insertelement <8 x i16> undef, i16 %x, i32 0
7659 %s = shufflevector <8 x i16> %t, <8 x i16> undef,
7660 <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
7661 %a = shl <8 x i16> %v, %s
7665 define <8 x i16> @shl_const_v8i16(<8 x i16> %v) {
7666 ; SIMD128-LABEL: shl_const_v8i16:
7667 ; SIMD128: .functype shl_const_v8i16 (v128) -> (v128)
7668 ; SIMD128-NEXT: # %bb.0:
7669 ; SIMD128-NEXT: i32.const $push0=, 5
7670 ; SIMD128-NEXT: i16x8.shl $push1=, $0, $pop0
7671 ; SIMD128-NEXT: return $pop1
7673 ; SIMD128-FAST-LABEL: shl_const_v8i16:
7674 ; SIMD128-FAST: .functype shl_const_v8i16 (v128) -> (v128)
7675 ; SIMD128-FAST-NEXT: # %bb.0:
7676 ; SIMD128-FAST-NEXT: i32.const $push1=, 5
7677 ; SIMD128-FAST-NEXT: i16x8.shl $push0=, $0, $pop1
7678 ; SIMD128-FAST-NEXT: return $pop0
7680 ; NO-SIMD128-LABEL: shl_const_v8i16:
7681 ; NO-SIMD128: .functype shl_const_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
7682 ; NO-SIMD128-NEXT: # %bb.0:
7683 ; NO-SIMD128-NEXT: i32.const $push0=, 5
7684 ; NO-SIMD128-NEXT: i32.shl $push1=, $5, $pop0
7685 ; NO-SIMD128-NEXT: i32.store16 8($0), $pop1
7686 ; NO-SIMD128-NEXT: i32.const $push23=, 5
7687 ; NO-SIMD128-NEXT: i32.shl $push2=, $3, $pop23
7688 ; NO-SIMD128-NEXT: i32.store16 4($0), $pop2
7689 ; NO-SIMD128-NEXT: i32.const $push22=, 5
7690 ; NO-SIMD128-NEXT: i32.shl $push3=, $2, $pop22
7691 ; NO-SIMD128-NEXT: i32.store16 2($0), $pop3
7692 ; NO-SIMD128-NEXT: i32.const $push21=, 5
7693 ; NO-SIMD128-NEXT: i32.shl $push4=, $1, $pop21
7694 ; NO-SIMD128-NEXT: i32.store16 0($0), $pop4
7695 ; NO-SIMD128-NEXT: i32.const $push6=, 14
7696 ; NO-SIMD128-NEXT: i32.add $push7=, $0, $pop6
7697 ; NO-SIMD128-NEXT: i32.const $push20=, 5
7698 ; NO-SIMD128-NEXT: i32.shl $push5=, $8, $pop20
7699 ; NO-SIMD128-NEXT: i32.store16 0($pop7), $pop5
7700 ; NO-SIMD128-NEXT: i32.const $push9=, 12
7701 ; NO-SIMD128-NEXT: i32.add $push10=, $0, $pop9
7702 ; NO-SIMD128-NEXT: i32.const $push19=, 5
7703 ; NO-SIMD128-NEXT: i32.shl $push8=, $7, $pop19
7704 ; NO-SIMD128-NEXT: i32.store16 0($pop10), $pop8
7705 ; NO-SIMD128-NEXT: i32.const $push12=, 10
7706 ; NO-SIMD128-NEXT: i32.add $push13=, $0, $pop12
7707 ; NO-SIMD128-NEXT: i32.const $push18=, 5
7708 ; NO-SIMD128-NEXT: i32.shl $push11=, $6, $pop18
7709 ; NO-SIMD128-NEXT: i32.store16 0($pop13), $pop11
7710 ; NO-SIMD128-NEXT: i32.const $push15=, 6
7711 ; NO-SIMD128-NEXT: i32.add $push16=, $0, $pop15
7712 ; NO-SIMD128-NEXT: i32.const $push17=, 5
7713 ; NO-SIMD128-NEXT: i32.shl $push14=, $4, $pop17
7714 ; NO-SIMD128-NEXT: i32.store16 0($pop16), $pop14
7715 ; NO-SIMD128-NEXT: return
7717 ; NO-SIMD128-FAST-LABEL: shl_const_v8i16:
7718 ; NO-SIMD128-FAST: .functype shl_const_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
7719 ; NO-SIMD128-FAST-NEXT: # %bb.0:
7720 ; NO-SIMD128-FAST-NEXT: i32.const $push0=, 5
7721 ; NO-SIMD128-FAST-NEXT: i32.shl $push1=, $1, $pop0
7722 ; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop1
7723 ; NO-SIMD128-FAST-NEXT: i32.const $push23=, 5
7724 ; NO-SIMD128-FAST-NEXT: i32.shl $push2=, $2, $pop23
7725 ; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop2
7726 ; NO-SIMD128-FAST-NEXT: i32.const $push22=, 5
7727 ; NO-SIMD128-FAST-NEXT: i32.shl $push3=, $3, $pop22
7728 ; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop3
7729 ; NO-SIMD128-FAST-NEXT: i32.const $push4=, 6
7730 ; NO-SIMD128-FAST-NEXT: i32.add $push5=, $0, $pop4
7731 ; NO-SIMD128-FAST-NEXT: i32.const $push21=, 5
7732 ; NO-SIMD128-FAST-NEXT: i32.shl $push6=, $4, $pop21
7733 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop5), $pop6
7734 ; NO-SIMD128-FAST-NEXT: i32.const $push20=, 5
7735 ; NO-SIMD128-FAST-NEXT: i32.shl $push7=, $5, $pop20
7736 ; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop7
7737 ; NO-SIMD128-FAST-NEXT: i32.const $push8=, 10
7738 ; NO-SIMD128-FAST-NEXT: i32.add $push9=, $0, $pop8
7739 ; NO-SIMD128-FAST-NEXT: i32.const $push19=, 5
7740 ; NO-SIMD128-FAST-NEXT: i32.shl $push10=, $6, $pop19
7741 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop9), $pop10
7742 ; NO-SIMD128-FAST-NEXT: i32.const $push11=, 12
7743 ; NO-SIMD128-FAST-NEXT: i32.add $push12=, $0, $pop11
7744 ; NO-SIMD128-FAST-NEXT: i32.const $push18=, 5
7745 ; NO-SIMD128-FAST-NEXT: i32.shl $push13=, $7, $pop18
7746 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop12), $pop13
7747 ; NO-SIMD128-FAST-NEXT: i32.const $push14=, 14
7748 ; NO-SIMD128-FAST-NEXT: i32.add $push15=, $0, $pop14
7749 ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 5
7750 ; NO-SIMD128-FAST-NEXT: i32.shl $push16=, $8, $pop17
7751 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop15), $pop16
7752 ; NO-SIMD128-FAST-NEXT: return
7753 %a = shl <8 x i16> %v,
7754 <i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5>
7758 define <8 x i16> @shl_vec_v8i16(<8 x i16> %v, <8 x i16> %x) {
7759 ; SIMD128-LABEL: shl_vec_v8i16:
7760 ; SIMD128: .functype shl_vec_v8i16 (v128, v128) -> (v128)
7761 ; SIMD128-NEXT: # %bb.0:
7762 ; SIMD128-NEXT: i16x8.extract_lane_u $push7=, $0, 0
7763 ; SIMD128-NEXT: i16x8.extract_lane_u $push5=, $1, 0
7764 ; SIMD128-NEXT: i32.const $push1=, 15
7765 ; SIMD128-NEXT: i32.and $push6=, $pop5, $pop1
7766 ; SIMD128-NEXT: i32.shl $push8=, $pop7, $pop6
7767 ; SIMD128-NEXT: i16x8.splat $push9=, $pop8
7768 ; SIMD128-NEXT: i16x8.extract_lane_u $push3=, $0, 1
7769 ; SIMD128-NEXT: i16x8.extract_lane_u $push0=, $1, 1
7770 ; SIMD128-NEXT: i32.const $push47=, 15
7771 ; SIMD128-NEXT: i32.and $push2=, $pop0, $pop47
7772 ; SIMD128-NEXT: i32.shl $push4=, $pop3, $pop2
7773 ; SIMD128-NEXT: i16x8.replace_lane $push10=, $pop9, 1, $pop4
7774 ; SIMD128-NEXT: i16x8.extract_lane_u $push13=, $0, 2
7775 ; SIMD128-NEXT: i16x8.extract_lane_u $push11=, $1, 2
7776 ; SIMD128-NEXT: i32.const $push46=, 15
7777 ; SIMD128-NEXT: i32.and $push12=, $pop11, $pop46
7778 ; SIMD128-NEXT: i32.shl $push14=, $pop13, $pop12
7779 ; SIMD128-NEXT: i16x8.replace_lane $push15=, $pop10, 2, $pop14
7780 ; SIMD128-NEXT: i16x8.extract_lane_u $push18=, $0, 3
7781 ; SIMD128-NEXT: i16x8.extract_lane_u $push16=, $1, 3
7782 ; SIMD128-NEXT: i32.const $push45=, 15
7783 ; SIMD128-NEXT: i32.and $push17=, $pop16, $pop45
7784 ; SIMD128-NEXT: i32.shl $push19=, $pop18, $pop17
7785 ; SIMD128-NEXT: i16x8.replace_lane $push20=, $pop15, 3, $pop19
7786 ; SIMD128-NEXT: i16x8.extract_lane_u $push23=, $0, 4
7787 ; SIMD128-NEXT: i16x8.extract_lane_u $push21=, $1, 4
7788 ; SIMD128-NEXT: i32.const $push44=, 15
7789 ; SIMD128-NEXT: i32.and $push22=, $pop21, $pop44
7790 ; SIMD128-NEXT: i32.shl $push24=, $pop23, $pop22
7791 ; SIMD128-NEXT: i16x8.replace_lane $push25=, $pop20, 4, $pop24
7792 ; SIMD128-NEXT: i16x8.extract_lane_u $push28=, $0, 5
7793 ; SIMD128-NEXT: i16x8.extract_lane_u $push26=, $1, 5
7794 ; SIMD128-NEXT: i32.const $push43=, 15
7795 ; SIMD128-NEXT: i32.and $push27=, $pop26, $pop43
7796 ; SIMD128-NEXT: i32.shl $push29=, $pop28, $pop27
7797 ; SIMD128-NEXT: i16x8.replace_lane $push30=, $pop25, 5, $pop29
7798 ; SIMD128-NEXT: i16x8.extract_lane_u $push33=, $0, 6
7799 ; SIMD128-NEXT: i16x8.extract_lane_u $push31=, $1, 6
7800 ; SIMD128-NEXT: i32.const $push42=, 15
7801 ; SIMD128-NEXT: i32.and $push32=, $pop31, $pop42
7802 ; SIMD128-NEXT: i32.shl $push34=, $pop33, $pop32
7803 ; SIMD128-NEXT: i16x8.replace_lane $push35=, $pop30, 6, $pop34
7804 ; SIMD128-NEXT: i16x8.extract_lane_u $push38=, $0, 7
7805 ; SIMD128-NEXT: i16x8.extract_lane_u $push36=, $1, 7
7806 ; SIMD128-NEXT: i32.const $push41=, 15
7807 ; SIMD128-NEXT: i32.and $push37=, $pop36, $pop41
7808 ; SIMD128-NEXT: i32.shl $push39=, $pop38, $pop37
7809 ; SIMD128-NEXT: i16x8.replace_lane $push40=, $pop35, 7, $pop39
7810 ; SIMD128-NEXT: return $pop40
7812 ; SIMD128-FAST-LABEL: shl_vec_v8i16:
7813 ; SIMD128-FAST: .functype shl_vec_v8i16 (v128, v128) -> (v128)
7814 ; SIMD128-FAST-NEXT: # %bb.0:
7815 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push8=, $0, 0
7816 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push6=, $1, 0
7817 ; SIMD128-FAST-NEXT: i32.const $push2=, 15
7818 ; SIMD128-FAST-NEXT: i32.and $push7=, $pop6, $pop2
7819 ; SIMD128-FAST-NEXT: i32.shl $push9=, $pop8, $pop7
7820 ; SIMD128-FAST-NEXT: i16x8.splat $push10=, $pop9
7821 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push4=, $0, 1
7822 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push1=, $1, 1
7823 ; SIMD128-FAST-NEXT: i32.const $push47=, 15
7824 ; SIMD128-FAST-NEXT: i32.and $push3=, $pop1, $pop47
7825 ; SIMD128-FAST-NEXT: i32.shl $push5=, $pop4, $pop3
7826 ; SIMD128-FAST-NEXT: i16x8.replace_lane $push11=, $pop10, 1, $pop5
7827 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push14=, $0, 2
7828 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push12=, $1, 2
7829 ; SIMD128-FAST-NEXT: i32.const $push46=, 15
7830 ; SIMD128-FAST-NEXT: i32.and $push13=, $pop12, $pop46
7831 ; SIMD128-FAST-NEXT: i32.shl $push15=, $pop14, $pop13
7832 ; SIMD128-FAST-NEXT: i16x8.replace_lane $push16=, $pop11, 2, $pop15
7833 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push19=, $0, 3
7834 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push17=, $1, 3
7835 ; SIMD128-FAST-NEXT: i32.const $push45=, 15
7836 ; SIMD128-FAST-NEXT: i32.and $push18=, $pop17, $pop45
7837 ; SIMD128-FAST-NEXT: i32.shl $push20=, $pop19, $pop18
7838 ; SIMD128-FAST-NEXT: i16x8.replace_lane $push21=, $pop16, 3, $pop20
7839 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push24=, $0, 4
7840 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push22=, $1, 4
7841 ; SIMD128-FAST-NEXT: i32.const $push44=, 15
7842 ; SIMD128-FAST-NEXT: i32.and $push23=, $pop22, $pop44
7843 ; SIMD128-FAST-NEXT: i32.shl $push25=, $pop24, $pop23
7844 ; SIMD128-FAST-NEXT: i16x8.replace_lane $push26=, $pop21, 4, $pop25
7845 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push29=, $0, 5
7846 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push27=, $1, 5
7847 ; SIMD128-FAST-NEXT: i32.const $push43=, 15
7848 ; SIMD128-FAST-NEXT: i32.and $push28=, $pop27, $pop43
7849 ; SIMD128-FAST-NEXT: i32.shl $push30=, $pop29, $pop28
7850 ; SIMD128-FAST-NEXT: i16x8.replace_lane $push31=, $pop26, 5, $pop30
7851 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push34=, $0, 6
7852 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push32=, $1, 6
7853 ; SIMD128-FAST-NEXT: i32.const $push42=, 15
7854 ; SIMD128-FAST-NEXT: i32.and $push33=, $pop32, $pop42
7855 ; SIMD128-FAST-NEXT: i32.shl $push35=, $pop34, $pop33
7856 ; SIMD128-FAST-NEXT: i16x8.replace_lane $push36=, $pop31, 6, $pop35
7857 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push39=, $0, 7
7858 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push37=, $1, 7
7859 ; SIMD128-FAST-NEXT: i32.const $push41=, 15
7860 ; SIMD128-FAST-NEXT: i32.and $push38=, $pop37, $pop41
7861 ; SIMD128-FAST-NEXT: i32.shl $push40=, $pop39, $pop38
7862 ; SIMD128-FAST-NEXT: i16x8.replace_lane $push0=, $pop36, 7, $pop40
7863 ; SIMD128-FAST-NEXT: return $pop0
7865 ; NO-SIMD128-LABEL: shl_vec_v8i16:
7866 ; NO-SIMD128: .functype shl_vec_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
7867 ; NO-SIMD128-NEXT: # %bb.0:
7868 ; NO-SIMD128-NEXT: i32.const $push0=, 65535
7869 ; NO-SIMD128-NEXT: i32.and $push1=, $13, $pop0
7870 ; NO-SIMD128-NEXT: i32.shl $push2=, $5, $pop1
7871 ; NO-SIMD128-NEXT: i32.store16 8($0), $pop2
7872 ; NO-SIMD128-NEXT: i32.const $push31=, 65535
7873 ; NO-SIMD128-NEXT: i32.and $push3=, $11, $pop31
7874 ; NO-SIMD128-NEXT: i32.shl $push4=, $3, $pop3
7875 ; NO-SIMD128-NEXT: i32.store16 4($0), $pop4
7876 ; NO-SIMD128-NEXT: i32.const $push30=, 65535
7877 ; NO-SIMD128-NEXT: i32.and $push5=, $10, $pop30
7878 ; NO-SIMD128-NEXT: i32.shl $push6=, $2, $pop5
7879 ; NO-SIMD128-NEXT: i32.store16 2($0), $pop6
7880 ; NO-SIMD128-NEXT: i32.const $push29=, 65535
7881 ; NO-SIMD128-NEXT: i32.and $push7=, $9, $pop29
7882 ; NO-SIMD128-NEXT: i32.shl $push8=, $1, $pop7
7883 ; NO-SIMD128-NEXT: i32.store16 0($0), $pop8
7884 ; NO-SIMD128-NEXT: i32.const $push11=, 14
7885 ; NO-SIMD128-NEXT: i32.add $push12=, $0, $pop11
7886 ; NO-SIMD128-NEXT: i32.const $push28=, 65535
7887 ; NO-SIMD128-NEXT: i32.and $push9=, $16, $pop28
7888 ; NO-SIMD128-NEXT: i32.shl $push10=, $8, $pop9
7889 ; NO-SIMD128-NEXT: i32.store16 0($pop12), $pop10
7890 ; NO-SIMD128-NEXT: i32.const $push15=, 12
7891 ; NO-SIMD128-NEXT: i32.add $push16=, $0, $pop15
7892 ; NO-SIMD128-NEXT: i32.const $push27=, 65535
7893 ; NO-SIMD128-NEXT: i32.and $push13=, $15, $pop27
7894 ; NO-SIMD128-NEXT: i32.shl $push14=, $7, $pop13
7895 ; NO-SIMD128-NEXT: i32.store16 0($pop16), $pop14
7896 ; NO-SIMD128-NEXT: i32.const $push19=, 10
7897 ; NO-SIMD128-NEXT: i32.add $push20=, $0, $pop19
7898 ; NO-SIMD128-NEXT: i32.const $push26=, 65535
7899 ; NO-SIMD128-NEXT: i32.and $push17=, $14, $pop26
7900 ; NO-SIMD128-NEXT: i32.shl $push18=, $6, $pop17
7901 ; NO-SIMD128-NEXT: i32.store16 0($pop20), $pop18
7902 ; NO-SIMD128-NEXT: i32.const $push23=, 6
7903 ; NO-SIMD128-NEXT: i32.add $push24=, $0, $pop23
7904 ; NO-SIMD128-NEXT: i32.const $push25=, 65535
7905 ; NO-SIMD128-NEXT: i32.and $push21=, $12, $pop25
7906 ; NO-SIMD128-NEXT: i32.shl $push22=, $4, $pop21
7907 ; NO-SIMD128-NEXT: i32.store16 0($pop24), $pop22
7908 ; NO-SIMD128-NEXT: return
7910 ; NO-SIMD128-FAST-LABEL: shl_vec_v8i16:
7911 ; NO-SIMD128-FAST: .functype shl_vec_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
7912 ; NO-SIMD128-FAST-NEXT: # %bb.0:
7913 ; NO-SIMD128-FAST-NEXT: i32.const $push0=, 65535
7914 ; NO-SIMD128-FAST-NEXT: i32.and $push1=, $9, $pop0
7915 ; NO-SIMD128-FAST-NEXT: i32.shl $push2=, $1, $pop1
7916 ; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop2
7917 ; NO-SIMD128-FAST-NEXT: i32.const $push31=, 65535
7918 ; NO-SIMD128-FAST-NEXT: i32.and $push3=, $10, $pop31
7919 ; NO-SIMD128-FAST-NEXT: i32.shl $push4=, $2, $pop3
7920 ; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop4
7921 ; NO-SIMD128-FAST-NEXT: i32.const $push30=, 65535
7922 ; NO-SIMD128-FAST-NEXT: i32.and $push5=, $11, $pop30
7923 ; NO-SIMD128-FAST-NEXT: i32.shl $push6=, $3, $pop5
7924 ; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop6
7925 ; NO-SIMD128-FAST-NEXT: i32.const $push7=, 6
7926 ; NO-SIMD128-FAST-NEXT: i32.add $push8=, $0, $pop7
7927 ; NO-SIMD128-FAST-NEXT: i32.const $push29=, 65535
7928 ; NO-SIMD128-FAST-NEXT: i32.and $push9=, $12, $pop29
7929 ; NO-SIMD128-FAST-NEXT: i32.shl $push10=, $4, $pop9
7930 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop8), $pop10
7931 ; NO-SIMD128-FAST-NEXT: i32.const $push28=, 65535
7932 ; NO-SIMD128-FAST-NEXT: i32.and $push11=, $13, $pop28
7933 ; NO-SIMD128-FAST-NEXT: i32.shl $push12=, $5, $pop11
7934 ; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop12
7935 ; NO-SIMD128-FAST-NEXT: i32.const $push13=, 10
7936 ; NO-SIMD128-FAST-NEXT: i32.add $push14=, $0, $pop13
7937 ; NO-SIMD128-FAST-NEXT: i32.const $push27=, 65535
7938 ; NO-SIMD128-FAST-NEXT: i32.and $push15=, $14, $pop27
7939 ; NO-SIMD128-FAST-NEXT: i32.shl $push16=, $6, $pop15
7940 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop14), $pop16
7941 ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 12
7942 ; NO-SIMD128-FAST-NEXT: i32.add $push18=, $0, $pop17
7943 ; NO-SIMD128-FAST-NEXT: i32.const $push26=, 65535
7944 ; NO-SIMD128-FAST-NEXT: i32.and $push19=, $15, $pop26
7945 ; NO-SIMD128-FAST-NEXT: i32.shl $push20=, $7, $pop19
7946 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop18), $pop20
7947 ; NO-SIMD128-FAST-NEXT: i32.const $push21=, 14
7948 ; NO-SIMD128-FAST-NEXT: i32.add $push22=, $0, $pop21
7949 ; NO-SIMD128-FAST-NEXT: i32.const $push25=, 65535
7950 ; NO-SIMD128-FAST-NEXT: i32.and $push23=, $16, $pop25
7951 ; NO-SIMD128-FAST-NEXT: i32.shl $push24=, $8, $pop23
7952 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop22), $pop24
7953 ; NO-SIMD128-FAST-NEXT: return
7954 %a = shl <8 x i16> %v, %x
7958 define <8 x i16> @shr_s_v8i16(<8 x i16> %v, i16 %x) {
7959 ; SIMD128-LABEL: shr_s_v8i16:
7960 ; SIMD128: .functype shr_s_v8i16 (v128, i32) -> (v128)
7961 ; SIMD128-NEXT: # %bb.0:
7962 ; SIMD128-NEXT: i16x8.shr_s $push0=, $0, $1
7963 ; SIMD128-NEXT: return $pop0
7965 ; SIMD128-FAST-LABEL: shr_s_v8i16:
7966 ; SIMD128-FAST: .functype shr_s_v8i16 (v128, i32) -> (v128)
7967 ; SIMD128-FAST-NEXT: # %bb.0:
7968 ; SIMD128-FAST-NEXT: i16x8.shr_s $push0=, $0, $1
7969 ; SIMD128-FAST-NEXT: return $pop0
7971 ; NO-SIMD128-LABEL: shr_s_v8i16:
7972 ; NO-SIMD128: .functype shr_s_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
7973 ; NO-SIMD128-NEXT: # %bb.0:
7974 ; NO-SIMD128-NEXT: i32.extend16_s $push1=, $5
7975 ; NO-SIMD128-NEXT: i32.const $push0=, 65535
7976 ; NO-SIMD128-NEXT: i32.and $push26=, $9, $pop0
7977 ; NO-SIMD128-NEXT: local.tee $push25=, $9=, $pop26
7978 ; NO-SIMD128-NEXT: i32.shr_s $push2=, $pop1, $pop25
7979 ; NO-SIMD128-NEXT: i32.store16 8($0), $pop2
7980 ; NO-SIMD128-NEXT: i32.extend16_s $push3=, $3
7981 ; NO-SIMD128-NEXT: i32.shr_s $push4=, $pop3, $9
7982 ; NO-SIMD128-NEXT: i32.store16 4($0), $pop4
7983 ; NO-SIMD128-NEXT: i32.extend16_s $push5=, $2
7984 ; NO-SIMD128-NEXT: i32.shr_s $push6=, $pop5, $9
7985 ; NO-SIMD128-NEXT: i32.store16 2($0), $pop6
7986 ; NO-SIMD128-NEXT: i32.extend16_s $push7=, $1
7987 ; NO-SIMD128-NEXT: i32.shr_s $push8=, $pop7, $9
7988 ; NO-SIMD128-NEXT: i32.store16 0($0), $pop8
7989 ; NO-SIMD128-NEXT: i32.const $push11=, 14
7990 ; NO-SIMD128-NEXT: i32.add $push12=, $0, $pop11
7991 ; NO-SIMD128-NEXT: i32.extend16_s $push9=, $8
7992 ; NO-SIMD128-NEXT: i32.shr_s $push10=, $pop9, $9
7993 ; NO-SIMD128-NEXT: i32.store16 0($pop12), $pop10
7994 ; NO-SIMD128-NEXT: i32.const $push15=, 12
7995 ; NO-SIMD128-NEXT: i32.add $push16=, $0, $pop15
7996 ; NO-SIMD128-NEXT: i32.extend16_s $push13=, $7
7997 ; NO-SIMD128-NEXT: i32.shr_s $push14=, $pop13, $9
7998 ; NO-SIMD128-NEXT: i32.store16 0($pop16), $pop14
7999 ; NO-SIMD128-NEXT: i32.const $push19=, 10
8000 ; NO-SIMD128-NEXT: i32.add $push20=, $0, $pop19
8001 ; NO-SIMD128-NEXT: i32.extend16_s $push17=, $6
8002 ; NO-SIMD128-NEXT: i32.shr_s $push18=, $pop17, $9
8003 ; NO-SIMD128-NEXT: i32.store16 0($pop20), $pop18
8004 ; NO-SIMD128-NEXT: i32.const $push23=, 6
8005 ; NO-SIMD128-NEXT: i32.add $push24=, $0, $pop23
8006 ; NO-SIMD128-NEXT: i32.extend16_s $push21=, $4
8007 ; NO-SIMD128-NEXT: i32.shr_s $push22=, $pop21, $9
8008 ; NO-SIMD128-NEXT: i32.store16 0($pop24), $pop22
8009 ; NO-SIMD128-NEXT: return
8011 ; NO-SIMD128-FAST-LABEL: shr_s_v8i16:
8012 ; NO-SIMD128-FAST: .functype shr_s_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
8013 ; NO-SIMD128-FAST-NEXT: # %bb.0:
8014 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push1=, $1
8015 ; NO-SIMD128-FAST-NEXT: i32.const $push0=, 65535
8016 ; NO-SIMD128-FAST-NEXT: i32.and $push26=, $9, $pop0
8017 ; NO-SIMD128-FAST-NEXT: local.tee $push25=, $1=, $pop26
8018 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push2=, $pop1, $pop25
8019 ; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop2
8020 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push3=, $2
8021 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push4=, $pop3, $1
8022 ; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop4
8023 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push5=, $3
8024 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push6=, $pop5, $1
8025 ; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop6
8026 ; NO-SIMD128-FAST-NEXT: i32.const $push7=, 6
8027 ; NO-SIMD128-FAST-NEXT: i32.add $push8=, $0, $pop7
8028 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push9=, $4
8029 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push10=, $pop9, $1
8030 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop8), $pop10
8031 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push11=, $5
8032 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push12=, $pop11, $1
8033 ; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop12
8034 ; NO-SIMD128-FAST-NEXT: i32.const $push13=, 10
8035 ; NO-SIMD128-FAST-NEXT: i32.add $push14=, $0, $pop13
8036 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push15=, $6
8037 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push16=, $pop15, $1
8038 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop14), $pop16
8039 ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 12
8040 ; NO-SIMD128-FAST-NEXT: i32.add $push18=, $0, $pop17
8041 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push19=, $7
8042 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push20=, $pop19, $1
8043 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop18), $pop20
8044 ; NO-SIMD128-FAST-NEXT: i32.const $push21=, 14
8045 ; NO-SIMD128-FAST-NEXT: i32.add $push22=, $0, $pop21
8046 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push23=, $8
8047 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push24=, $pop23, $1
8048 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop22), $pop24
8049 ; NO-SIMD128-FAST-NEXT: return
8050 %t = insertelement <8 x i16> undef, i16 %x, i32 0
8051 %s = shufflevector <8 x i16> %t, <8 x i16> undef,
8052 <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
8053 %a = ashr <8 x i16> %v, %s
8057 define <8 x i16> @shr_s_vec_v8i16(<8 x i16> %v, <8 x i16> %x) {
8058 ; SIMD128-LABEL: shr_s_vec_v8i16:
8059 ; SIMD128: .functype shr_s_vec_v8i16 (v128, v128) -> (v128)
8060 ; SIMD128-NEXT: # %bb.0:
8061 ; SIMD128-NEXT: i16x8.extract_lane_s $push7=, $0, 0
8062 ; SIMD128-NEXT: i16x8.extract_lane_u $push5=, $1, 0
8063 ; SIMD128-NEXT: i32.const $push1=, 15
8064 ; SIMD128-NEXT: i32.and $push6=, $pop5, $pop1
8065 ; SIMD128-NEXT: i32.shr_s $push8=, $pop7, $pop6
8066 ; SIMD128-NEXT: i16x8.splat $push9=, $pop8
8067 ; SIMD128-NEXT: i16x8.extract_lane_s $push3=, $0, 1
8068 ; SIMD128-NEXT: i16x8.extract_lane_u $push0=, $1, 1
8069 ; SIMD128-NEXT: i32.const $push47=, 15
8070 ; SIMD128-NEXT: i32.and $push2=, $pop0, $pop47
8071 ; SIMD128-NEXT: i32.shr_s $push4=, $pop3, $pop2
8072 ; SIMD128-NEXT: i16x8.replace_lane $push10=, $pop9, 1, $pop4
8073 ; SIMD128-NEXT: i16x8.extract_lane_s $push13=, $0, 2
8074 ; SIMD128-NEXT: i16x8.extract_lane_u $push11=, $1, 2
8075 ; SIMD128-NEXT: i32.const $push46=, 15
8076 ; SIMD128-NEXT: i32.and $push12=, $pop11, $pop46
8077 ; SIMD128-NEXT: i32.shr_s $push14=, $pop13, $pop12
8078 ; SIMD128-NEXT: i16x8.replace_lane $push15=, $pop10, 2, $pop14
8079 ; SIMD128-NEXT: i16x8.extract_lane_s $push18=, $0, 3
8080 ; SIMD128-NEXT: i16x8.extract_lane_u $push16=, $1, 3
8081 ; SIMD128-NEXT: i32.const $push45=, 15
8082 ; SIMD128-NEXT: i32.and $push17=, $pop16, $pop45
8083 ; SIMD128-NEXT: i32.shr_s $push19=, $pop18, $pop17
8084 ; SIMD128-NEXT: i16x8.replace_lane $push20=, $pop15, 3, $pop19
8085 ; SIMD128-NEXT: i16x8.extract_lane_s $push23=, $0, 4
8086 ; SIMD128-NEXT: i16x8.extract_lane_u $push21=, $1, 4
8087 ; SIMD128-NEXT: i32.const $push44=, 15
8088 ; SIMD128-NEXT: i32.and $push22=, $pop21, $pop44
8089 ; SIMD128-NEXT: i32.shr_s $push24=, $pop23, $pop22
8090 ; SIMD128-NEXT: i16x8.replace_lane $push25=, $pop20, 4, $pop24
8091 ; SIMD128-NEXT: i16x8.extract_lane_s $push28=, $0, 5
8092 ; SIMD128-NEXT: i16x8.extract_lane_u $push26=, $1, 5
8093 ; SIMD128-NEXT: i32.const $push43=, 15
8094 ; SIMD128-NEXT: i32.and $push27=, $pop26, $pop43
8095 ; SIMD128-NEXT: i32.shr_s $push29=, $pop28, $pop27
8096 ; SIMD128-NEXT: i16x8.replace_lane $push30=, $pop25, 5, $pop29
8097 ; SIMD128-NEXT: i16x8.extract_lane_s $push33=, $0, 6
8098 ; SIMD128-NEXT: i16x8.extract_lane_u $push31=, $1, 6
8099 ; SIMD128-NEXT: i32.const $push42=, 15
8100 ; SIMD128-NEXT: i32.and $push32=, $pop31, $pop42
8101 ; SIMD128-NEXT: i32.shr_s $push34=, $pop33, $pop32
8102 ; SIMD128-NEXT: i16x8.replace_lane $push35=, $pop30, 6, $pop34
8103 ; SIMD128-NEXT: i16x8.extract_lane_s $push38=, $0, 7
8104 ; SIMD128-NEXT: i16x8.extract_lane_u $push36=, $1, 7
8105 ; SIMD128-NEXT: i32.const $push41=, 15
8106 ; SIMD128-NEXT: i32.and $push37=, $pop36, $pop41
8107 ; SIMD128-NEXT: i32.shr_s $push39=, $pop38, $pop37
8108 ; SIMD128-NEXT: i16x8.replace_lane $push40=, $pop35, 7, $pop39
8109 ; SIMD128-NEXT: return $pop40
8111 ; SIMD128-FAST-LABEL: shr_s_vec_v8i16:
8112 ; SIMD128-FAST: .functype shr_s_vec_v8i16 (v128, v128) -> (v128)
8113 ; SIMD128-FAST-NEXT: # %bb.0:
8114 ; SIMD128-FAST-NEXT: i16x8.extract_lane_s $push8=, $0, 0
8115 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push6=, $1, 0
8116 ; SIMD128-FAST-NEXT: i32.const $push2=, 15
8117 ; SIMD128-FAST-NEXT: i32.and $push7=, $pop6, $pop2
8118 ; SIMD128-FAST-NEXT: i32.shr_s $push9=, $pop8, $pop7
8119 ; SIMD128-FAST-NEXT: i16x8.splat $push10=, $pop9
8120 ; SIMD128-FAST-NEXT: i16x8.extract_lane_s $push4=, $0, 1
8121 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push1=, $1, 1
8122 ; SIMD128-FAST-NEXT: i32.const $push47=, 15
8123 ; SIMD128-FAST-NEXT: i32.and $push3=, $pop1, $pop47
8124 ; SIMD128-FAST-NEXT: i32.shr_s $push5=, $pop4, $pop3
8125 ; SIMD128-FAST-NEXT: i16x8.replace_lane $push11=, $pop10, 1, $pop5
8126 ; SIMD128-FAST-NEXT: i16x8.extract_lane_s $push14=, $0, 2
8127 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push12=, $1, 2
8128 ; SIMD128-FAST-NEXT: i32.const $push46=, 15
8129 ; SIMD128-FAST-NEXT: i32.and $push13=, $pop12, $pop46
8130 ; SIMD128-FAST-NEXT: i32.shr_s $push15=, $pop14, $pop13
8131 ; SIMD128-FAST-NEXT: i16x8.replace_lane $push16=, $pop11, 2, $pop15
8132 ; SIMD128-FAST-NEXT: i16x8.extract_lane_s $push19=, $0, 3
8133 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push17=, $1, 3
8134 ; SIMD128-FAST-NEXT: i32.const $push45=, 15
8135 ; SIMD128-FAST-NEXT: i32.and $push18=, $pop17, $pop45
8136 ; SIMD128-FAST-NEXT: i32.shr_s $push20=, $pop19, $pop18
8137 ; SIMD128-FAST-NEXT: i16x8.replace_lane $push21=, $pop16, 3, $pop20
8138 ; SIMD128-FAST-NEXT: i16x8.extract_lane_s $push24=, $0, 4
8139 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push22=, $1, 4
8140 ; SIMD128-FAST-NEXT: i32.const $push44=, 15
8141 ; SIMD128-FAST-NEXT: i32.and $push23=, $pop22, $pop44
8142 ; SIMD128-FAST-NEXT: i32.shr_s $push25=, $pop24, $pop23
8143 ; SIMD128-FAST-NEXT: i16x8.replace_lane $push26=, $pop21, 4, $pop25
8144 ; SIMD128-FAST-NEXT: i16x8.extract_lane_s $push29=, $0, 5
8145 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push27=, $1, 5
8146 ; SIMD128-FAST-NEXT: i32.const $push43=, 15
8147 ; SIMD128-FAST-NEXT: i32.and $push28=, $pop27, $pop43
8148 ; SIMD128-FAST-NEXT: i32.shr_s $push30=, $pop29, $pop28
8149 ; SIMD128-FAST-NEXT: i16x8.replace_lane $push31=, $pop26, 5, $pop30
8150 ; SIMD128-FAST-NEXT: i16x8.extract_lane_s $push34=, $0, 6
8151 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push32=, $1, 6
8152 ; SIMD128-FAST-NEXT: i32.const $push42=, 15
8153 ; SIMD128-FAST-NEXT: i32.and $push33=, $pop32, $pop42
8154 ; SIMD128-FAST-NEXT: i32.shr_s $push35=, $pop34, $pop33
8155 ; SIMD128-FAST-NEXT: i16x8.replace_lane $push36=, $pop31, 6, $pop35
8156 ; SIMD128-FAST-NEXT: i16x8.extract_lane_s $push39=, $0, 7
8157 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push37=, $1, 7
8158 ; SIMD128-FAST-NEXT: i32.const $push41=, 15
8159 ; SIMD128-FAST-NEXT: i32.and $push38=, $pop37, $pop41
8160 ; SIMD128-FAST-NEXT: i32.shr_s $push40=, $pop39, $pop38
8161 ; SIMD128-FAST-NEXT: i16x8.replace_lane $push0=, $pop36, 7, $pop40
8162 ; SIMD128-FAST-NEXT: return $pop0
8164 ; NO-SIMD128-LABEL: shr_s_vec_v8i16:
8165 ; NO-SIMD128: .functype shr_s_vec_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
8166 ; NO-SIMD128-NEXT: # %bb.0:
8167 ; NO-SIMD128-NEXT: i32.extend16_s $push2=, $5
8168 ; NO-SIMD128-NEXT: i32.const $push0=, 65535
8169 ; NO-SIMD128-NEXT: i32.and $push1=, $13, $pop0
8170 ; NO-SIMD128-NEXT: i32.shr_s $push3=, $pop2, $pop1
8171 ; NO-SIMD128-NEXT: i32.store16 8($0), $pop3
8172 ; NO-SIMD128-NEXT: i32.extend16_s $push5=, $3
8173 ; NO-SIMD128-NEXT: i32.const $push39=, 65535
8174 ; NO-SIMD128-NEXT: i32.and $push4=, $11, $pop39
8175 ; NO-SIMD128-NEXT: i32.shr_s $push6=, $pop5, $pop4
8176 ; NO-SIMD128-NEXT: i32.store16 4($0), $pop6
8177 ; NO-SIMD128-NEXT: i32.extend16_s $push8=, $2
8178 ; NO-SIMD128-NEXT: i32.const $push38=, 65535
8179 ; NO-SIMD128-NEXT: i32.and $push7=, $10, $pop38
8180 ; NO-SIMD128-NEXT: i32.shr_s $push9=, $pop8, $pop7
8181 ; NO-SIMD128-NEXT: i32.store16 2($0), $pop9
8182 ; NO-SIMD128-NEXT: i32.extend16_s $push11=, $1
8183 ; NO-SIMD128-NEXT: i32.const $push37=, 65535
8184 ; NO-SIMD128-NEXT: i32.and $push10=, $9, $pop37
8185 ; NO-SIMD128-NEXT: i32.shr_s $push12=, $pop11, $pop10
8186 ; NO-SIMD128-NEXT: i32.store16 0($0), $pop12
8187 ; NO-SIMD128-NEXT: i32.const $push16=, 14
8188 ; NO-SIMD128-NEXT: i32.add $push17=, $0, $pop16
8189 ; NO-SIMD128-NEXT: i32.extend16_s $push14=, $8
8190 ; NO-SIMD128-NEXT: i32.const $push36=, 65535
8191 ; NO-SIMD128-NEXT: i32.and $push13=, $16, $pop36
8192 ; NO-SIMD128-NEXT: i32.shr_s $push15=, $pop14, $pop13
8193 ; NO-SIMD128-NEXT: i32.store16 0($pop17), $pop15
8194 ; NO-SIMD128-NEXT: i32.const $push21=, 12
8195 ; NO-SIMD128-NEXT: i32.add $push22=, $0, $pop21
8196 ; NO-SIMD128-NEXT: i32.extend16_s $push19=, $7
8197 ; NO-SIMD128-NEXT: i32.const $push35=, 65535
8198 ; NO-SIMD128-NEXT: i32.and $push18=, $15, $pop35
8199 ; NO-SIMD128-NEXT: i32.shr_s $push20=, $pop19, $pop18
8200 ; NO-SIMD128-NEXT: i32.store16 0($pop22), $pop20
8201 ; NO-SIMD128-NEXT: i32.const $push26=, 10
8202 ; NO-SIMD128-NEXT: i32.add $push27=, $0, $pop26
8203 ; NO-SIMD128-NEXT: i32.extend16_s $push24=, $6
8204 ; NO-SIMD128-NEXT: i32.const $push34=, 65535
8205 ; NO-SIMD128-NEXT: i32.and $push23=, $14, $pop34
8206 ; NO-SIMD128-NEXT: i32.shr_s $push25=, $pop24, $pop23
8207 ; NO-SIMD128-NEXT: i32.store16 0($pop27), $pop25
8208 ; NO-SIMD128-NEXT: i32.const $push31=, 6
8209 ; NO-SIMD128-NEXT: i32.add $push32=, $0, $pop31
8210 ; NO-SIMD128-NEXT: i32.extend16_s $push29=, $4
8211 ; NO-SIMD128-NEXT: i32.const $push33=, 65535
8212 ; NO-SIMD128-NEXT: i32.and $push28=, $12, $pop33
8213 ; NO-SIMD128-NEXT: i32.shr_s $push30=, $pop29, $pop28
8214 ; NO-SIMD128-NEXT: i32.store16 0($pop32), $pop30
8215 ; NO-SIMD128-NEXT: return
8217 ; NO-SIMD128-FAST-LABEL: shr_s_vec_v8i16:
8218 ; NO-SIMD128-FAST: .functype shr_s_vec_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
8219 ; NO-SIMD128-FAST-NEXT: # %bb.0:
8220 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push2=, $1
8221 ; NO-SIMD128-FAST-NEXT: i32.const $push0=, 65535
8222 ; NO-SIMD128-FAST-NEXT: i32.and $push1=, $9, $pop0
8223 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push3=, $pop2, $pop1
8224 ; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop3
8225 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push5=, $2
8226 ; NO-SIMD128-FAST-NEXT: i32.const $push39=, 65535
8227 ; NO-SIMD128-FAST-NEXT: i32.and $push4=, $10, $pop39
8228 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push6=, $pop5, $pop4
8229 ; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop6
8230 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push8=, $3
8231 ; NO-SIMD128-FAST-NEXT: i32.const $push38=, 65535
8232 ; NO-SIMD128-FAST-NEXT: i32.and $push7=, $11, $pop38
8233 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push9=, $pop8, $pop7
8234 ; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop9
8235 ; NO-SIMD128-FAST-NEXT: i32.const $push10=, 6
8236 ; NO-SIMD128-FAST-NEXT: i32.add $push11=, $0, $pop10
8237 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push13=, $4
8238 ; NO-SIMD128-FAST-NEXT: i32.const $push37=, 65535
8239 ; NO-SIMD128-FAST-NEXT: i32.and $push12=, $12, $pop37
8240 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push14=, $pop13, $pop12
8241 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop11), $pop14
8242 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push16=, $5
8243 ; NO-SIMD128-FAST-NEXT: i32.const $push36=, 65535
8244 ; NO-SIMD128-FAST-NEXT: i32.and $push15=, $13, $pop36
8245 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push17=, $pop16, $pop15
8246 ; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop17
8247 ; NO-SIMD128-FAST-NEXT: i32.const $push18=, 10
8248 ; NO-SIMD128-FAST-NEXT: i32.add $push19=, $0, $pop18
8249 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push21=, $6
8250 ; NO-SIMD128-FAST-NEXT: i32.const $push35=, 65535
8251 ; NO-SIMD128-FAST-NEXT: i32.and $push20=, $14, $pop35
8252 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push22=, $pop21, $pop20
8253 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop19), $pop22
8254 ; NO-SIMD128-FAST-NEXT: i32.const $push23=, 12
8255 ; NO-SIMD128-FAST-NEXT: i32.add $push24=, $0, $pop23
8256 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push26=, $7
8257 ; NO-SIMD128-FAST-NEXT: i32.const $push34=, 65535
8258 ; NO-SIMD128-FAST-NEXT: i32.and $push25=, $15, $pop34
8259 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push27=, $pop26, $pop25
8260 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop24), $pop27
8261 ; NO-SIMD128-FAST-NEXT: i32.const $push28=, 14
8262 ; NO-SIMD128-FAST-NEXT: i32.add $push29=, $0, $pop28
8263 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push31=, $8
8264 ; NO-SIMD128-FAST-NEXT: i32.const $push33=, 65535
8265 ; NO-SIMD128-FAST-NEXT: i32.and $push30=, $16, $pop33
8266 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push32=, $pop31, $pop30
8267 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop29), $pop32
8268 ; NO-SIMD128-FAST-NEXT: return
8269 %a = ashr <8 x i16> %v, %x
8273 define <8 x i16> @shr_u_v8i16(<8 x i16> %v, i16 %x) {
8274 ; SIMD128-LABEL: shr_u_v8i16:
8275 ; SIMD128: .functype shr_u_v8i16 (v128, i32) -> (v128)
8276 ; SIMD128-NEXT: # %bb.0:
8277 ; SIMD128-NEXT: i16x8.shr_u $push0=, $0, $1
8278 ; SIMD128-NEXT: return $pop0
8280 ; SIMD128-FAST-LABEL: shr_u_v8i16:
8281 ; SIMD128-FAST: .functype shr_u_v8i16 (v128, i32) -> (v128)
8282 ; SIMD128-FAST-NEXT: # %bb.0:
8283 ; SIMD128-FAST-NEXT: i16x8.shr_u $push0=, $0, $1
8284 ; SIMD128-FAST-NEXT: return $pop0
8286 ; NO-SIMD128-LABEL: shr_u_v8i16:
8287 ; NO-SIMD128: .functype shr_u_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
8288 ; NO-SIMD128-NEXT: # %bb.0:
8289 ; NO-SIMD128-NEXT: i32.const $push0=, 65535
8290 ; NO-SIMD128-NEXT: i32.and $push1=, $5, $pop0
8291 ; NO-SIMD128-NEXT: i32.const $push34=, 65535
8292 ; NO-SIMD128-NEXT: i32.and $push33=, $9, $pop34
8293 ; NO-SIMD128-NEXT: local.tee $push32=, $9=, $pop33
8294 ; NO-SIMD128-NEXT: i32.shr_u $push2=, $pop1, $pop32
8295 ; NO-SIMD128-NEXT: i32.store16 8($0), $pop2
8296 ; NO-SIMD128-NEXT: i32.const $push31=, 65535
8297 ; NO-SIMD128-NEXT: i32.and $push3=, $3, $pop31
8298 ; NO-SIMD128-NEXT: i32.shr_u $push4=, $pop3, $9
8299 ; NO-SIMD128-NEXT: i32.store16 4($0), $pop4
8300 ; NO-SIMD128-NEXT: i32.const $push30=, 65535
8301 ; NO-SIMD128-NEXT: i32.and $push5=, $2, $pop30
8302 ; NO-SIMD128-NEXT: i32.shr_u $push6=, $pop5, $9
8303 ; NO-SIMD128-NEXT: i32.store16 2($0), $pop6
8304 ; NO-SIMD128-NEXT: i32.const $push29=, 65535
8305 ; NO-SIMD128-NEXT: i32.and $push7=, $1, $pop29
8306 ; NO-SIMD128-NEXT: i32.shr_u $push8=, $pop7, $9
8307 ; NO-SIMD128-NEXT: i32.store16 0($0), $pop8
8308 ; NO-SIMD128-NEXT: i32.const $push11=, 14
8309 ; NO-SIMD128-NEXT: i32.add $push12=, $0, $pop11
8310 ; NO-SIMD128-NEXT: i32.const $push28=, 65535
8311 ; NO-SIMD128-NEXT: i32.and $push9=, $8, $pop28
8312 ; NO-SIMD128-NEXT: i32.shr_u $push10=, $pop9, $9
8313 ; NO-SIMD128-NEXT: i32.store16 0($pop12), $pop10
8314 ; NO-SIMD128-NEXT: i32.const $push15=, 12
8315 ; NO-SIMD128-NEXT: i32.add $push16=, $0, $pop15
8316 ; NO-SIMD128-NEXT: i32.const $push27=, 65535
8317 ; NO-SIMD128-NEXT: i32.and $push13=, $7, $pop27
8318 ; NO-SIMD128-NEXT: i32.shr_u $push14=, $pop13, $9
8319 ; NO-SIMD128-NEXT: i32.store16 0($pop16), $pop14
8320 ; NO-SIMD128-NEXT: i32.const $push19=, 10
8321 ; NO-SIMD128-NEXT: i32.add $push20=, $0, $pop19
8322 ; NO-SIMD128-NEXT: i32.const $push26=, 65535
8323 ; NO-SIMD128-NEXT: i32.and $push17=, $6, $pop26
8324 ; NO-SIMD128-NEXT: i32.shr_u $push18=, $pop17, $9
8325 ; NO-SIMD128-NEXT: i32.store16 0($pop20), $pop18
8326 ; NO-SIMD128-NEXT: i32.const $push23=, 6
8327 ; NO-SIMD128-NEXT: i32.add $push24=, $0, $pop23
8328 ; NO-SIMD128-NEXT: i32.const $push25=, 65535
8329 ; NO-SIMD128-NEXT: i32.and $push21=, $4, $pop25
8330 ; NO-SIMD128-NEXT: i32.shr_u $push22=, $pop21, $9
8331 ; NO-SIMD128-NEXT: i32.store16 0($pop24), $pop22
8332 ; NO-SIMD128-NEXT: return
8334 ; NO-SIMD128-FAST-LABEL: shr_u_v8i16:
8335 ; NO-SIMD128-FAST: .functype shr_u_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
8336 ; NO-SIMD128-FAST-NEXT: # %bb.0:
8337 ; NO-SIMD128-FAST-NEXT: i32.const $push0=, 65535
8338 ; NO-SIMD128-FAST-NEXT: i32.and $push1=, $1, $pop0
8339 ; NO-SIMD128-FAST-NEXT: i32.const $push34=, 65535
8340 ; NO-SIMD128-FAST-NEXT: i32.and $push33=, $9, $pop34
8341 ; NO-SIMD128-FAST-NEXT: local.tee $push32=, $1=, $pop33
8342 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push2=, $pop1, $pop32
8343 ; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop2
8344 ; NO-SIMD128-FAST-NEXT: i32.const $push31=, 65535
8345 ; NO-SIMD128-FAST-NEXT: i32.and $push3=, $2, $pop31
8346 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push4=, $pop3, $1
8347 ; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop4
8348 ; NO-SIMD128-FAST-NEXT: i32.const $push30=, 65535
8349 ; NO-SIMD128-FAST-NEXT: i32.and $push5=, $3, $pop30
8350 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push6=, $pop5, $1
8351 ; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop6
8352 ; NO-SIMD128-FAST-NEXT: i32.const $push9=, 6
8353 ; NO-SIMD128-FAST-NEXT: i32.add $push10=, $0, $pop9
8354 ; NO-SIMD128-FAST-NEXT: i32.const $push29=, 65535
8355 ; NO-SIMD128-FAST-NEXT: i32.and $push7=, $4, $pop29
8356 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push8=, $pop7, $1
8357 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop10), $pop8
8358 ; NO-SIMD128-FAST-NEXT: i32.const $push28=, 65535
8359 ; NO-SIMD128-FAST-NEXT: i32.and $push11=, $5, $pop28
8360 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push12=, $pop11, $1
8361 ; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop12
8362 ; NO-SIMD128-FAST-NEXT: i32.const $push15=, 10
8363 ; NO-SIMD128-FAST-NEXT: i32.add $push16=, $0, $pop15
8364 ; NO-SIMD128-FAST-NEXT: i32.const $push27=, 65535
8365 ; NO-SIMD128-FAST-NEXT: i32.and $push13=, $6, $pop27
8366 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push14=, $pop13, $1
8367 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop16), $pop14
8368 ; NO-SIMD128-FAST-NEXT: i32.const $push19=, 12
8369 ; NO-SIMD128-FAST-NEXT: i32.add $push20=, $0, $pop19
8370 ; NO-SIMD128-FAST-NEXT: i32.const $push26=, 65535
8371 ; NO-SIMD128-FAST-NEXT: i32.and $push17=, $7, $pop26
8372 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push18=, $pop17, $1
8373 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop20), $pop18
8374 ; NO-SIMD128-FAST-NEXT: i32.const $push23=, 14
8375 ; NO-SIMD128-FAST-NEXT: i32.add $push24=, $0, $pop23
8376 ; NO-SIMD128-FAST-NEXT: i32.const $push25=, 65535
8377 ; NO-SIMD128-FAST-NEXT: i32.and $push21=, $8, $pop25
8378 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push22=, $pop21, $1
8379 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop24), $pop22
8380 ; NO-SIMD128-FAST-NEXT: return
8381 %t = insertelement <8 x i16> undef, i16 %x, i32 0
8382 %s = shufflevector <8 x i16> %t, <8 x i16> undef,
8383 <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
8384 %a = lshr <8 x i16> %v, %s
8388 define <8 x i16> @shr_u_vec_v8i16(<8 x i16> %v, <8 x i16> %x) {
8389 ; SIMD128-LABEL: shr_u_vec_v8i16:
8390 ; SIMD128: .functype shr_u_vec_v8i16 (v128, v128) -> (v128)
8391 ; SIMD128-NEXT: # %bb.0:
8392 ; SIMD128-NEXT: i16x8.extract_lane_u $push7=, $0, 0
8393 ; SIMD128-NEXT: i16x8.extract_lane_u $push5=, $1, 0
8394 ; SIMD128-NEXT: i32.const $push1=, 15
8395 ; SIMD128-NEXT: i32.and $push6=, $pop5, $pop1
8396 ; SIMD128-NEXT: i32.shr_u $push8=, $pop7, $pop6
8397 ; SIMD128-NEXT: i16x8.splat $push9=, $pop8
8398 ; SIMD128-NEXT: i16x8.extract_lane_u $push3=, $0, 1
8399 ; SIMD128-NEXT: i16x8.extract_lane_u $push0=, $1, 1
8400 ; SIMD128-NEXT: i32.const $push47=, 15
8401 ; SIMD128-NEXT: i32.and $push2=, $pop0, $pop47
8402 ; SIMD128-NEXT: i32.shr_u $push4=, $pop3, $pop2
8403 ; SIMD128-NEXT: i16x8.replace_lane $push10=, $pop9, 1, $pop4
8404 ; SIMD128-NEXT: i16x8.extract_lane_u $push13=, $0, 2
8405 ; SIMD128-NEXT: i16x8.extract_lane_u $push11=, $1, 2
8406 ; SIMD128-NEXT: i32.const $push46=, 15
8407 ; SIMD128-NEXT: i32.and $push12=, $pop11, $pop46
8408 ; SIMD128-NEXT: i32.shr_u $push14=, $pop13, $pop12
8409 ; SIMD128-NEXT: i16x8.replace_lane $push15=, $pop10, 2, $pop14
8410 ; SIMD128-NEXT: i16x8.extract_lane_u $push18=, $0, 3
8411 ; SIMD128-NEXT: i16x8.extract_lane_u $push16=, $1, 3
8412 ; SIMD128-NEXT: i32.const $push45=, 15
8413 ; SIMD128-NEXT: i32.and $push17=, $pop16, $pop45
8414 ; SIMD128-NEXT: i32.shr_u $push19=, $pop18, $pop17
8415 ; SIMD128-NEXT: i16x8.replace_lane $push20=, $pop15, 3, $pop19
8416 ; SIMD128-NEXT: i16x8.extract_lane_u $push23=, $0, 4
8417 ; SIMD128-NEXT: i16x8.extract_lane_u $push21=, $1, 4
8418 ; SIMD128-NEXT: i32.const $push44=, 15
8419 ; SIMD128-NEXT: i32.and $push22=, $pop21, $pop44
8420 ; SIMD128-NEXT: i32.shr_u $push24=, $pop23, $pop22
8421 ; SIMD128-NEXT: i16x8.replace_lane $push25=, $pop20, 4, $pop24
8422 ; SIMD128-NEXT: i16x8.extract_lane_u $push28=, $0, 5
8423 ; SIMD128-NEXT: i16x8.extract_lane_u $push26=, $1, 5
8424 ; SIMD128-NEXT: i32.const $push43=, 15
8425 ; SIMD128-NEXT: i32.and $push27=, $pop26, $pop43
8426 ; SIMD128-NEXT: i32.shr_u $push29=, $pop28, $pop27
8427 ; SIMD128-NEXT: i16x8.replace_lane $push30=, $pop25, 5, $pop29
8428 ; SIMD128-NEXT: i16x8.extract_lane_u $push33=, $0, 6
8429 ; SIMD128-NEXT: i16x8.extract_lane_u $push31=, $1, 6
8430 ; SIMD128-NEXT: i32.const $push42=, 15
8431 ; SIMD128-NEXT: i32.and $push32=, $pop31, $pop42
8432 ; SIMD128-NEXT: i32.shr_u $push34=, $pop33, $pop32
8433 ; SIMD128-NEXT: i16x8.replace_lane $push35=, $pop30, 6, $pop34
8434 ; SIMD128-NEXT: i16x8.extract_lane_u $push38=, $0, 7
8435 ; SIMD128-NEXT: i16x8.extract_lane_u $push36=, $1, 7
8436 ; SIMD128-NEXT: i32.const $push41=, 15
8437 ; SIMD128-NEXT: i32.and $push37=, $pop36, $pop41
8438 ; SIMD128-NEXT: i32.shr_u $push39=, $pop38, $pop37
8439 ; SIMD128-NEXT: i16x8.replace_lane $push40=, $pop35, 7, $pop39
8440 ; SIMD128-NEXT: return $pop40
8442 ; SIMD128-FAST-LABEL: shr_u_vec_v8i16:
8443 ; SIMD128-FAST: .functype shr_u_vec_v8i16 (v128, v128) -> (v128)
8444 ; SIMD128-FAST-NEXT: # %bb.0:
8445 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push8=, $0, 0
8446 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push6=, $1, 0
8447 ; SIMD128-FAST-NEXT: i32.const $push2=, 15
8448 ; SIMD128-FAST-NEXT: i32.and $push7=, $pop6, $pop2
8449 ; SIMD128-FAST-NEXT: i32.shr_u $push9=, $pop8, $pop7
8450 ; SIMD128-FAST-NEXT: i16x8.splat $push10=, $pop9
8451 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push4=, $0, 1
8452 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push1=, $1, 1
8453 ; SIMD128-FAST-NEXT: i32.const $push47=, 15
8454 ; SIMD128-FAST-NEXT: i32.and $push3=, $pop1, $pop47
8455 ; SIMD128-FAST-NEXT: i32.shr_u $push5=, $pop4, $pop3
8456 ; SIMD128-FAST-NEXT: i16x8.replace_lane $push11=, $pop10, 1, $pop5
8457 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push14=, $0, 2
8458 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push12=, $1, 2
8459 ; SIMD128-FAST-NEXT: i32.const $push46=, 15
8460 ; SIMD128-FAST-NEXT: i32.and $push13=, $pop12, $pop46
8461 ; SIMD128-FAST-NEXT: i32.shr_u $push15=, $pop14, $pop13
8462 ; SIMD128-FAST-NEXT: i16x8.replace_lane $push16=, $pop11, 2, $pop15
8463 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push19=, $0, 3
8464 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push17=, $1, 3
8465 ; SIMD128-FAST-NEXT: i32.const $push45=, 15
8466 ; SIMD128-FAST-NEXT: i32.and $push18=, $pop17, $pop45
8467 ; SIMD128-FAST-NEXT: i32.shr_u $push20=, $pop19, $pop18
8468 ; SIMD128-FAST-NEXT: i16x8.replace_lane $push21=, $pop16, 3, $pop20
8469 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push24=, $0, 4
8470 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push22=, $1, 4
8471 ; SIMD128-FAST-NEXT: i32.const $push44=, 15
8472 ; SIMD128-FAST-NEXT: i32.and $push23=, $pop22, $pop44
8473 ; SIMD128-FAST-NEXT: i32.shr_u $push25=, $pop24, $pop23
8474 ; SIMD128-FAST-NEXT: i16x8.replace_lane $push26=, $pop21, 4, $pop25
8475 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push29=, $0, 5
8476 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push27=, $1, 5
8477 ; SIMD128-FAST-NEXT: i32.const $push43=, 15
8478 ; SIMD128-FAST-NEXT: i32.and $push28=, $pop27, $pop43
8479 ; SIMD128-FAST-NEXT: i32.shr_u $push30=, $pop29, $pop28
8480 ; SIMD128-FAST-NEXT: i16x8.replace_lane $push31=, $pop26, 5, $pop30
8481 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push34=, $0, 6
8482 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push32=, $1, 6
8483 ; SIMD128-FAST-NEXT: i32.const $push42=, 15
8484 ; SIMD128-FAST-NEXT: i32.and $push33=, $pop32, $pop42
8485 ; SIMD128-FAST-NEXT: i32.shr_u $push35=, $pop34, $pop33
8486 ; SIMD128-FAST-NEXT: i16x8.replace_lane $push36=, $pop31, 6, $pop35
8487 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push39=, $0, 7
8488 ; SIMD128-FAST-NEXT: i16x8.extract_lane_u $push37=, $1, 7
8489 ; SIMD128-FAST-NEXT: i32.const $push41=, 15
8490 ; SIMD128-FAST-NEXT: i32.and $push38=, $pop37, $pop41
8491 ; SIMD128-FAST-NEXT: i32.shr_u $push40=, $pop39, $pop38
8492 ; SIMD128-FAST-NEXT: i16x8.replace_lane $push0=, $pop36, 7, $pop40
8493 ; SIMD128-FAST-NEXT: return $pop0
8495 ; NO-SIMD128-LABEL: shr_u_vec_v8i16:
8496 ; NO-SIMD128: .functype shr_u_vec_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
8497 ; NO-SIMD128-NEXT: # %bb.0:
8498 ; NO-SIMD128-NEXT: i32.const $push0=, 65535
8499 ; NO-SIMD128-NEXT: i32.and $push2=, $5, $pop0
8500 ; NO-SIMD128-NEXT: i32.const $push47=, 65535
8501 ; NO-SIMD128-NEXT: i32.and $push1=, $13, $pop47
8502 ; NO-SIMD128-NEXT: i32.shr_u $push3=, $pop2, $pop1
8503 ; NO-SIMD128-NEXT: i32.store16 8($0), $pop3
8504 ; NO-SIMD128-NEXT: i32.const $push46=, 65535
8505 ; NO-SIMD128-NEXT: i32.and $push5=, $3, $pop46
8506 ; NO-SIMD128-NEXT: i32.const $push45=, 65535
8507 ; NO-SIMD128-NEXT: i32.and $push4=, $11, $pop45
8508 ; NO-SIMD128-NEXT: i32.shr_u $push6=, $pop5, $pop4
8509 ; NO-SIMD128-NEXT: i32.store16 4($0), $pop6
8510 ; NO-SIMD128-NEXT: i32.const $push44=, 65535
8511 ; NO-SIMD128-NEXT: i32.and $push8=, $2, $pop44
8512 ; NO-SIMD128-NEXT: i32.const $push43=, 65535
8513 ; NO-SIMD128-NEXT: i32.and $push7=, $10, $pop43
8514 ; NO-SIMD128-NEXT: i32.shr_u $push9=, $pop8, $pop7
8515 ; NO-SIMD128-NEXT: i32.store16 2($0), $pop9
8516 ; NO-SIMD128-NEXT: i32.const $push42=, 65535
8517 ; NO-SIMD128-NEXT: i32.and $push11=, $1, $pop42
8518 ; NO-SIMD128-NEXT: i32.const $push41=, 65535
8519 ; NO-SIMD128-NEXT: i32.and $push10=, $9, $pop41
8520 ; NO-SIMD128-NEXT: i32.shr_u $push12=, $pop11, $pop10
8521 ; NO-SIMD128-NEXT: i32.store16 0($0), $pop12
8522 ; NO-SIMD128-NEXT: i32.const $push16=, 14
8523 ; NO-SIMD128-NEXT: i32.add $push17=, $0, $pop16
8524 ; NO-SIMD128-NEXT: i32.const $push40=, 65535
8525 ; NO-SIMD128-NEXT: i32.and $push14=, $8, $pop40
8526 ; NO-SIMD128-NEXT: i32.const $push39=, 65535
8527 ; NO-SIMD128-NEXT: i32.and $push13=, $16, $pop39
8528 ; NO-SIMD128-NEXT: i32.shr_u $push15=, $pop14, $pop13
8529 ; NO-SIMD128-NEXT: i32.store16 0($pop17), $pop15
8530 ; NO-SIMD128-NEXT: i32.const $push21=, 12
8531 ; NO-SIMD128-NEXT: i32.add $push22=, $0, $pop21
8532 ; NO-SIMD128-NEXT: i32.const $push38=, 65535
8533 ; NO-SIMD128-NEXT: i32.and $push19=, $7, $pop38
8534 ; NO-SIMD128-NEXT: i32.const $push37=, 65535
8535 ; NO-SIMD128-NEXT: i32.and $push18=, $15, $pop37
8536 ; NO-SIMD128-NEXT: i32.shr_u $push20=, $pop19, $pop18
8537 ; NO-SIMD128-NEXT: i32.store16 0($pop22), $pop20
8538 ; NO-SIMD128-NEXT: i32.const $push26=, 10
8539 ; NO-SIMD128-NEXT: i32.add $push27=, $0, $pop26
8540 ; NO-SIMD128-NEXT: i32.const $push36=, 65535
8541 ; NO-SIMD128-NEXT: i32.and $push24=, $6, $pop36
8542 ; NO-SIMD128-NEXT: i32.const $push35=, 65535
8543 ; NO-SIMD128-NEXT: i32.and $push23=, $14, $pop35
8544 ; NO-SIMD128-NEXT: i32.shr_u $push25=, $pop24, $pop23
8545 ; NO-SIMD128-NEXT: i32.store16 0($pop27), $pop25
8546 ; NO-SIMD128-NEXT: i32.const $push31=, 6
8547 ; NO-SIMD128-NEXT: i32.add $push32=, $0, $pop31
8548 ; NO-SIMD128-NEXT: i32.const $push34=, 65535
8549 ; NO-SIMD128-NEXT: i32.and $push29=, $4, $pop34
8550 ; NO-SIMD128-NEXT: i32.const $push33=, 65535
8551 ; NO-SIMD128-NEXT: i32.and $push28=, $12, $pop33
8552 ; NO-SIMD128-NEXT: i32.shr_u $push30=, $pop29, $pop28
8553 ; NO-SIMD128-NEXT: i32.store16 0($pop32), $pop30
8554 ; NO-SIMD128-NEXT: return
8556 ; NO-SIMD128-FAST-LABEL: shr_u_vec_v8i16:
8557 ; NO-SIMD128-FAST: .functype shr_u_vec_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
8558 ; NO-SIMD128-FAST-NEXT: # %bb.0:
8559 ; NO-SIMD128-FAST-NEXT: i32.const $push0=, 65535
8560 ; NO-SIMD128-FAST-NEXT: i32.and $push2=, $1, $pop0
8561 ; NO-SIMD128-FAST-NEXT: i32.const $push47=, 65535
8562 ; NO-SIMD128-FAST-NEXT: i32.and $push1=, $9, $pop47
8563 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push3=, $pop2, $pop1
8564 ; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop3
8565 ; NO-SIMD128-FAST-NEXT: i32.const $push46=, 65535
8566 ; NO-SIMD128-FAST-NEXT: i32.and $push5=, $2, $pop46
8567 ; NO-SIMD128-FAST-NEXT: i32.const $push45=, 65535
8568 ; NO-SIMD128-FAST-NEXT: i32.and $push4=, $10, $pop45
8569 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push6=, $pop5, $pop4
8570 ; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop6
8571 ; NO-SIMD128-FAST-NEXT: i32.const $push44=, 65535
8572 ; NO-SIMD128-FAST-NEXT: i32.and $push8=, $3, $pop44
8573 ; NO-SIMD128-FAST-NEXT: i32.const $push43=, 65535
8574 ; NO-SIMD128-FAST-NEXT: i32.and $push7=, $11, $pop43
8575 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push9=, $pop8, $pop7
8576 ; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop9
8577 ; NO-SIMD128-FAST-NEXT: i32.const $push13=, 6
8578 ; NO-SIMD128-FAST-NEXT: i32.add $push14=, $0, $pop13
8579 ; NO-SIMD128-FAST-NEXT: i32.const $push42=, 65535
8580 ; NO-SIMD128-FAST-NEXT: i32.and $push11=, $4, $pop42
8581 ; NO-SIMD128-FAST-NEXT: i32.const $push41=, 65535
8582 ; NO-SIMD128-FAST-NEXT: i32.and $push10=, $12, $pop41
8583 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push12=, $pop11, $pop10
8584 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop14), $pop12
8585 ; NO-SIMD128-FAST-NEXT: i32.const $push40=, 65535
8586 ; NO-SIMD128-FAST-NEXT: i32.and $push16=, $5, $pop40
8587 ; NO-SIMD128-FAST-NEXT: i32.const $push39=, 65535
8588 ; NO-SIMD128-FAST-NEXT: i32.and $push15=, $13, $pop39
8589 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push17=, $pop16, $pop15
8590 ; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop17
8591 ; NO-SIMD128-FAST-NEXT: i32.const $push21=, 10
8592 ; NO-SIMD128-FAST-NEXT: i32.add $push22=, $0, $pop21
8593 ; NO-SIMD128-FAST-NEXT: i32.const $push38=, 65535
8594 ; NO-SIMD128-FAST-NEXT: i32.and $push19=, $6, $pop38
8595 ; NO-SIMD128-FAST-NEXT: i32.const $push37=, 65535
8596 ; NO-SIMD128-FAST-NEXT: i32.and $push18=, $14, $pop37
8597 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push20=, $pop19, $pop18
8598 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop22), $pop20
8599 ; NO-SIMD128-FAST-NEXT: i32.const $push26=, 12
8600 ; NO-SIMD128-FAST-NEXT: i32.add $push27=, $0, $pop26
8601 ; NO-SIMD128-FAST-NEXT: i32.const $push36=, 65535
8602 ; NO-SIMD128-FAST-NEXT: i32.and $push24=, $7, $pop36
8603 ; NO-SIMD128-FAST-NEXT: i32.const $push35=, 65535
8604 ; NO-SIMD128-FAST-NEXT: i32.and $push23=, $15, $pop35
8605 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push25=, $pop24, $pop23
8606 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop27), $pop25
8607 ; NO-SIMD128-FAST-NEXT: i32.const $push31=, 14
8608 ; NO-SIMD128-FAST-NEXT: i32.add $push32=, $0, $pop31
8609 ; NO-SIMD128-FAST-NEXT: i32.const $push34=, 65535
8610 ; NO-SIMD128-FAST-NEXT: i32.and $push29=, $8, $pop34
8611 ; NO-SIMD128-FAST-NEXT: i32.const $push33=, 65535
8612 ; NO-SIMD128-FAST-NEXT: i32.and $push28=, $16, $pop33
8613 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push30=, $pop29, $pop28
8614 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop32), $pop30
8615 ; NO-SIMD128-FAST-NEXT: return
8616 %a = lshr <8 x i16> %v, %x
8620 define <8 x i16> @and_v8i16(<8 x i16> %x, <8 x i16> %y) {
8621 ; SIMD128-LABEL: and_v8i16:
8622 ; SIMD128: .functype and_v8i16 (v128, v128) -> (v128)
8623 ; SIMD128-NEXT: # %bb.0:
8624 ; SIMD128-NEXT: v128.and $push0=, $0, $1
8625 ; SIMD128-NEXT: return $pop0
8627 ; SIMD128-FAST-LABEL: and_v8i16:
8628 ; SIMD128-FAST: .functype and_v8i16 (v128, v128) -> (v128)
8629 ; SIMD128-FAST-NEXT: # %bb.0:
8630 ; SIMD128-FAST-NEXT: v128.and $push0=, $0, $1
8631 ; SIMD128-FAST-NEXT: return $pop0
8633 ; NO-SIMD128-LABEL: and_v8i16:
8634 ; NO-SIMD128: .functype and_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
8635 ; NO-SIMD128-NEXT: # %bb.0:
8636 ; NO-SIMD128-NEXT: i32.and $push0=, $5, $13
8637 ; NO-SIMD128-NEXT: i32.store16 8($0), $pop0
8638 ; NO-SIMD128-NEXT: i32.and $push1=, $3, $11
8639 ; NO-SIMD128-NEXT: i32.store16 4($0), $pop1
8640 ; NO-SIMD128-NEXT: i32.and $push2=, $2, $10
8641 ; NO-SIMD128-NEXT: i32.store16 2($0), $pop2
8642 ; NO-SIMD128-NEXT: i32.and $push3=, $1, $9
8643 ; NO-SIMD128-NEXT: i32.store16 0($0), $pop3
8644 ; NO-SIMD128-NEXT: i32.const $push5=, 14
8645 ; NO-SIMD128-NEXT: i32.add $push6=, $0, $pop5
8646 ; NO-SIMD128-NEXT: i32.and $push4=, $8, $16
8647 ; NO-SIMD128-NEXT: i32.store16 0($pop6), $pop4
8648 ; NO-SIMD128-NEXT: i32.const $push8=, 12
8649 ; NO-SIMD128-NEXT: i32.add $push9=, $0, $pop8
8650 ; NO-SIMD128-NEXT: i32.and $push7=, $7, $15
8651 ; NO-SIMD128-NEXT: i32.store16 0($pop9), $pop7
8652 ; NO-SIMD128-NEXT: i32.const $push11=, 10
8653 ; NO-SIMD128-NEXT: i32.add $push12=, $0, $pop11
8654 ; NO-SIMD128-NEXT: i32.and $push10=, $6, $14
8655 ; NO-SIMD128-NEXT: i32.store16 0($pop12), $pop10
8656 ; NO-SIMD128-NEXT: i32.const $push14=, 6
8657 ; NO-SIMD128-NEXT: i32.add $push15=, $0, $pop14
8658 ; NO-SIMD128-NEXT: i32.and $push13=, $4, $12
8659 ; NO-SIMD128-NEXT: i32.store16 0($pop15), $pop13
8660 ; NO-SIMD128-NEXT: return
8662 ; NO-SIMD128-FAST-LABEL: and_v8i16:
8663 ; NO-SIMD128-FAST: .functype and_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
8664 ; NO-SIMD128-FAST-NEXT: # %bb.0:
8665 ; NO-SIMD128-FAST-NEXT: i32.and $push0=, $1, $9
8666 ; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop0
8667 ; NO-SIMD128-FAST-NEXT: i32.and $push1=, $2, $10
8668 ; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop1
8669 ; NO-SIMD128-FAST-NEXT: i32.and $push2=, $3, $11
8670 ; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop2
8671 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 6
8672 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
8673 ; NO-SIMD128-FAST-NEXT: i32.and $push5=, $4, $12
8674 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop4), $pop5
8675 ; NO-SIMD128-FAST-NEXT: i32.and $push6=, $5, $13
8676 ; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop6
8677 ; NO-SIMD128-FAST-NEXT: i32.const $push7=, 10
8678 ; NO-SIMD128-FAST-NEXT: i32.add $push8=, $0, $pop7
8679 ; NO-SIMD128-FAST-NEXT: i32.and $push9=, $6, $14
8680 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop8), $pop9
8681 ; NO-SIMD128-FAST-NEXT: i32.const $push10=, 12
8682 ; NO-SIMD128-FAST-NEXT: i32.add $push11=, $0, $pop10
8683 ; NO-SIMD128-FAST-NEXT: i32.and $push12=, $7, $15
8684 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop11), $pop12
8685 ; NO-SIMD128-FAST-NEXT: i32.const $push13=, 14
8686 ; NO-SIMD128-FAST-NEXT: i32.add $push14=, $0, $pop13
8687 ; NO-SIMD128-FAST-NEXT: i32.and $push15=, $8, $16
8688 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop14), $pop15
8689 ; NO-SIMD128-FAST-NEXT: return
8690 %a = and <8 x i16> %x, %y
8694 define <8 x i16> @or_v8i16(<8 x i16> %x, <8 x i16> %y) {
8695 ; SIMD128-LABEL: or_v8i16:
8696 ; SIMD128: .functype or_v8i16 (v128, v128) -> (v128)
8697 ; SIMD128-NEXT: # %bb.0:
8698 ; SIMD128-NEXT: v128.or $push0=, $0, $1
8699 ; SIMD128-NEXT: return $pop0
8701 ; SIMD128-FAST-LABEL: or_v8i16:
8702 ; SIMD128-FAST: .functype or_v8i16 (v128, v128) -> (v128)
8703 ; SIMD128-FAST-NEXT: # %bb.0:
8704 ; SIMD128-FAST-NEXT: v128.or $push0=, $0, $1
8705 ; SIMD128-FAST-NEXT: return $pop0
8707 ; NO-SIMD128-LABEL: or_v8i16:
8708 ; NO-SIMD128: .functype or_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
8709 ; NO-SIMD128-NEXT: # %bb.0:
8710 ; NO-SIMD128-NEXT: i32.or $push0=, $5, $13
8711 ; NO-SIMD128-NEXT: i32.store16 8($0), $pop0
8712 ; NO-SIMD128-NEXT: i32.or $push1=, $3, $11
8713 ; NO-SIMD128-NEXT: i32.store16 4($0), $pop1
8714 ; NO-SIMD128-NEXT: i32.or $push2=, $2, $10
8715 ; NO-SIMD128-NEXT: i32.store16 2($0), $pop2
8716 ; NO-SIMD128-NEXT: i32.or $push3=, $1, $9
8717 ; NO-SIMD128-NEXT: i32.store16 0($0), $pop3
8718 ; NO-SIMD128-NEXT: i32.const $push5=, 14
8719 ; NO-SIMD128-NEXT: i32.add $push6=, $0, $pop5
8720 ; NO-SIMD128-NEXT: i32.or $push4=, $8, $16
8721 ; NO-SIMD128-NEXT: i32.store16 0($pop6), $pop4
8722 ; NO-SIMD128-NEXT: i32.const $push8=, 12
8723 ; NO-SIMD128-NEXT: i32.add $push9=, $0, $pop8
8724 ; NO-SIMD128-NEXT: i32.or $push7=, $7, $15
8725 ; NO-SIMD128-NEXT: i32.store16 0($pop9), $pop7
8726 ; NO-SIMD128-NEXT: i32.const $push11=, 10
8727 ; NO-SIMD128-NEXT: i32.add $push12=, $0, $pop11
8728 ; NO-SIMD128-NEXT: i32.or $push10=, $6, $14
8729 ; NO-SIMD128-NEXT: i32.store16 0($pop12), $pop10
8730 ; NO-SIMD128-NEXT: i32.const $push14=, 6
8731 ; NO-SIMD128-NEXT: i32.add $push15=, $0, $pop14
8732 ; NO-SIMD128-NEXT: i32.or $push13=, $4, $12
8733 ; NO-SIMD128-NEXT: i32.store16 0($pop15), $pop13
8734 ; NO-SIMD128-NEXT: return
8736 ; NO-SIMD128-FAST-LABEL: or_v8i16:
8737 ; NO-SIMD128-FAST: .functype or_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
8738 ; NO-SIMD128-FAST-NEXT: # %bb.0:
8739 ; NO-SIMD128-FAST-NEXT: i32.or $push0=, $1, $9
8740 ; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop0
8741 ; NO-SIMD128-FAST-NEXT: i32.or $push1=, $2, $10
8742 ; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop1
8743 ; NO-SIMD128-FAST-NEXT: i32.or $push2=, $3, $11
8744 ; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop2
8745 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 6
8746 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
8747 ; NO-SIMD128-FAST-NEXT: i32.or $push5=, $4, $12
8748 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop4), $pop5
8749 ; NO-SIMD128-FAST-NEXT: i32.or $push6=, $5, $13
8750 ; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop6
8751 ; NO-SIMD128-FAST-NEXT: i32.const $push7=, 10
8752 ; NO-SIMD128-FAST-NEXT: i32.add $push8=, $0, $pop7
8753 ; NO-SIMD128-FAST-NEXT: i32.or $push9=, $6, $14
8754 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop8), $pop9
8755 ; NO-SIMD128-FAST-NEXT: i32.const $push10=, 12
8756 ; NO-SIMD128-FAST-NEXT: i32.add $push11=, $0, $pop10
8757 ; NO-SIMD128-FAST-NEXT: i32.or $push12=, $7, $15
8758 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop11), $pop12
8759 ; NO-SIMD128-FAST-NEXT: i32.const $push13=, 14
8760 ; NO-SIMD128-FAST-NEXT: i32.add $push14=, $0, $pop13
8761 ; NO-SIMD128-FAST-NEXT: i32.or $push15=, $8, $16
8762 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop14), $pop15
8763 ; NO-SIMD128-FAST-NEXT: return
8764 %a = or <8 x i16> %x, %y
8768 define <8 x i16> @xor_v8i16(<8 x i16> %x, <8 x i16> %y) {
8769 ; SIMD128-LABEL: xor_v8i16:
8770 ; SIMD128: .functype xor_v8i16 (v128, v128) -> (v128)
8771 ; SIMD128-NEXT: # %bb.0:
8772 ; SIMD128-NEXT: v128.xor $push0=, $0, $1
8773 ; SIMD128-NEXT: return $pop0
8775 ; SIMD128-FAST-LABEL: xor_v8i16:
8776 ; SIMD128-FAST: .functype xor_v8i16 (v128, v128) -> (v128)
8777 ; SIMD128-FAST-NEXT: # %bb.0:
8778 ; SIMD128-FAST-NEXT: v128.xor $push0=, $0, $1
8779 ; SIMD128-FAST-NEXT: return $pop0
8781 ; NO-SIMD128-LABEL: xor_v8i16:
8782 ; NO-SIMD128: .functype xor_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
8783 ; NO-SIMD128-NEXT: # %bb.0:
8784 ; NO-SIMD128-NEXT: i32.xor $push0=, $5, $13
8785 ; NO-SIMD128-NEXT: i32.store16 8($0), $pop0
8786 ; NO-SIMD128-NEXT: i32.xor $push1=, $3, $11
8787 ; NO-SIMD128-NEXT: i32.store16 4($0), $pop1
8788 ; NO-SIMD128-NEXT: i32.xor $push2=, $2, $10
8789 ; NO-SIMD128-NEXT: i32.store16 2($0), $pop2
8790 ; NO-SIMD128-NEXT: i32.xor $push3=, $1, $9
8791 ; NO-SIMD128-NEXT: i32.store16 0($0), $pop3
8792 ; NO-SIMD128-NEXT: i32.const $push5=, 14
8793 ; NO-SIMD128-NEXT: i32.add $push6=, $0, $pop5
8794 ; NO-SIMD128-NEXT: i32.xor $push4=, $8, $16
8795 ; NO-SIMD128-NEXT: i32.store16 0($pop6), $pop4
8796 ; NO-SIMD128-NEXT: i32.const $push8=, 12
8797 ; NO-SIMD128-NEXT: i32.add $push9=, $0, $pop8
8798 ; NO-SIMD128-NEXT: i32.xor $push7=, $7, $15
8799 ; NO-SIMD128-NEXT: i32.store16 0($pop9), $pop7
8800 ; NO-SIMD128-NEXT: i32.const $push11=, 10
8801 ; NO-SIMD128-NEXT: i32.add $push12=, $0, $pop11
8802 ; NO-SIMD128-NEXT: i32.xor $push10=, $6, $14
8803 ; NO-SIMD128-NEXT: i32.store16 0($pop12), $pop10
8804 ; NO-SIMD128-NEXT: i32.const $push14=, 6
8805 ; NO-SIMD128-NEXT: i32.add $push15=, $0, $pop14
8806 ; NO-SIMD128-NEXT: i32.xor $push13=, $4, $12
8807 ; NO-SIMD128-NEXT: i32.store16 0($pop15), $pop13
8808 ; NO-SIMD128-NEXT: return
8810 ; NO-SIMD128-FAST-LABEL: xor_v8i16:
8811 ; NO-SIMD128-FAST: .functype xor_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
8812 ; NO-SIMD128-FAST-NEXT: # %bb.0:
8813 ; NO-SIMD128-FAST-NEXT: i32.xor $push0=, $1, $9
8814 ; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop0
8815 ; NO-SIMD128-FAST-NEXT: i32.xor $push1=, $2, $10
8816 ; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop1
8817 ; NO-SIMD128-FAST-NEXT: i32.xor $push2=, $3, $11
8818 ; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop2
8819 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 6
8820 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
8821 ; NO-SIMD128-FAST-NEXT: i32.xor $push5=, $4, $12
8822 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop4), $pop5
8823 ; NO-SIMD128-FAST-NEXT: i32.xor $push6=, $5, $13
8824 ; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop6
8825 ; NO-SIMD128-FAST-NEXT: i32.const $push7=, 10
8826 ; NO-SIMD128-FAST-NEXT: i32.add $push8=, $0, $pop7
8827 ; NO-SIMD128-FAST-NEXT: i32.xor $push9=, $6, $14
8828 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop8), $pop9
8829 ; NO-SIMD128-FAST-NEXT: i32.const $push10=, 12
8830 ; NO-SIMD128-FAST-NEXT: i32.add $push11=, $0, $pop10
8831 ; NO-SIMD128-FAST-NEXT: i32.xor $push12=, $7, $15
8832 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop11), $pop12
8833 ; NO-SIMD128-FAST-NEXT: i32.const $push13=, 14
8834 ; NO-SIMD128-FAST-NEXT: i32.add $push14=, $0, $pop13
8835 ; NO-SIMD128-FAST-NEXT: i32.xor $push15=, $8, $16
8836 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop14), $pop15
8837 ; NO-SIMD128-FAST-NEXT: return
8838 %a = xor <8 x i16> %x, %y
8842 define <8 x i16> @not_v8i16(<8 x i16> %x) {
8843 ; SIMD128-LABEL: not_v8i16:
8844 ; SIMD128: .functype not_v8i16 (v128) -> (v128)
8845 ; SIMD128-NEXT: # %bb.0:
8846 ; SIMD128-NEXT: v128.not $push0=, $0
8847 ; SIMD128-NEXT: return $pop0
8849 ; SIMD128-FAST-LABEL: not_v8i16:
8850 ; SIMD128-FAST: .functype not_v8i16 (v128) -> (v128)
8851 ; SIMD128-FAST-NEXT: # %bb.0:
8852 ; SIMD128-FAST-NEXT: v128.not $push0=, $0
8853 ; SIMD128-FAST-NEXT: return $pop0
8855 ; NO-SIMD128-LABEL: not_v8i16:
8856 ; NO-SIMD128: .functype not_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
8857 ; NO-SIMD128-NEXT: # %bb.0:
8858 ; NO-SIMD128-NEXT: i32.const $push0=, -1
8859 ; NO-SIMD128-NEXT: i32.xor $push1=, $5, $pop0
8860 ; NO-SIMD128-NEXT: i32.store16 8($0), $pop1
8861 ; NO-SIMD128-NEXT: i32.const $push23=, -1
8862 ; NO-SIMD128-NEXT: i32.xor $push2=, $3, $pop23
8863 ; NO-SIMD128-NEXT: i32.store16 4($0), $pop2
8864 ; NO-SIMD128-NEXT: i32.const $push22=, -1
8865 ; NO-SIMD128-NEXT: i32.xor $push3=, $2, $pop22
8866 ; NO-SIMD128-NEXT: i32.store16 2($0), $pop3
8867 ; NO-SIMD128-NEXT: i32.const $push21=, -1
8868 ; NO-SIMD128-NEXT: i32.xor $push4=, $1, $pop21
8869 ; NO-SIMD128-NEXT: i32.store16 0($0), $pop4
8870 ; NO-SIMD128-NEXT: i32.const $push6=, 14
8871 ; NO-SIMD128-NEXT: i32.add $push7=, $0, $pop6
8872 ; NO-SIMD128-NEXT: i32.const $push20=, -1
8873 ; NO-SIMD128-NEXT: i32.xor $push5=, $8, $pop20
8874 ; NO-SIMD128-NEXT: i32.store16 0($pop7), $pop5
8875 ; NO-SIMD128-NEXT: i32.const $push9=, 12
8876 ; NO-SIMD128-NEXT: i32.add $push10=, $0, $pop9
8877 ; NO-SIMD128-NEXT: i32.const $push19=, -1
8878 ; NO-SIMD128-NEXT: i32.xor $push8=, $7, $pop19
8879 ; NO-SIMD128-NEXT: i32.store16 0($pop10), $pop8
8880 ; NO-SIMD128-NEXT: i32.const $push12=, 10
8881 ; NO-SIMD128-NEXT: i32.add $push13=, $0, $pop12
8882 ; NO-SIMD128-NEXT: i32.const $push18=, -1
8883 ; NO-SIMD128-NEXT: i32.xor $push11=, $6, $pop18
8884 ; NO-SIMD128-NEXT: i32.store16 0($pop13), $pop11
8885 ; NO-SIMD128-NEXT: i32.const $push15=, 6
8886 ; NO-SIMD128-NEXT: i32.add $push16=, $0, $pop15
8887 ; NO-SIMD128-NEXT: i32.const $push17=, -1
8888 ; NO-SIMD128-NEXT: i32.xor $push14=, $4, $pop17
8889 ; NO-SIMD128-NEXT: i32.store16 0($pop16), $pop14
8890 ; NO-SIMD128-NEXT: return
8892 ; NO-SIMD128-FAST-LABEL: not_v8i16:
8893 ; NO-SIMD128-FAST: .functype not_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
8894 ; NO-SIMD128-FAST-NEXT: # %bb.0:
8895 ; NO-SIMD128-FAST-NEXT: i32.const $push0=, -1
8896 ; NO-SIMD128-FAST-NEXT: i32.xor $push1=, $1, $pop0
8897 ; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop1
8898 ; NO-SIMD128-FAST-NEXT: i32.const $push23=, -1
8899 ; NO-SIMD128-FAST-NEXT: i32.xor $push2=, $2, $pop23
8900 ; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop2
8901 ; NO-SIMD128-FAST-NEXT: i32.const $push22=, -1
8902 ; NO-SIMD128-FAST-NEXT: i32.xor $push3=, $3, $pop22
8903 ; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop3
8904 ; NO-SIMD128-FAST-NEXT: i32.const $push4=, 6
8905 ; NO-SIMD128-FAST-NEXT: i32.add $push5=, $0, $pop4
8906 ; NO-SIMD128-FAST-NEXT: i32.const $push21=, -1
8907 ; NO-SIMD128-FAST-NEXT: i32.xor $push6=, $4, $pop21
8908 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop5), $pop6
8909 ; NO-SIMD128-FAST-NEXT: i32.const $push20=, -1
8910 ; NO-SIMD128-FAST-NEXT: i32.xor $push7=, $5, $pop20
8911 ; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop7
8912 ; NO-SIMD128-FAST-NEXT: i32.const $push8=, 10
8913 ; NO-SIMD128-FAST-NEXT: i32.add $push9=, $0, $pop8
8914 ; NO-SIMD128-FAST-NEXT: i32.const $push19=, -1
8915 ; NO-SIMD128-FAST-NEXT: i32.xor $push10=, $6, $pop19
8916 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop9), $pop10
8917 ; NO-SIMD128-FAST-NEXT: i32.const $push11=, 12
8918 ; NO-SIMD128-FAST-NEXT: i32.add $push12=, $0, $pop11
8919 ; NO-SIMD128-FAST-NEXT: i32.const $push18=, -1
8920 ; NO-SIMD128-FAST-NEXT: i32.xor $push13=, $7, $pop18
8921 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop12), $pop13
8922 ; NO-SIMD128-FAST-NEXT: i32.const $push14=, 14
8923 ; NO-SIMD128-FAST-NEXT: i32.add $push15=, $0, $pop14
8924 ; NO-SIMD128-FAST-NEXT: i32.const $push17=, -1
8925 ; NO-SIMD128-FAST-NEXT: i32.xor $push16=, $8, $pop17
8926 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop15), $pop16
8927 ; NO-SIMD128-FAST-NEXT: return
8928 %a = xor <8 x i16> %x, <i16 -1, i16 -1, i16 -1, i16 -1,
8929 i16 -1, i16 -1, i16 -1, i16 -1>
8933 define <8 x i16> @andnot_v8i16(<8 x i16> %x, <8 x i16> %y) {
8934 ; SIMD128-LABEL: andnot_v8i16:
8935 ; SIMD128: .functype andnot_v8i16 (v128, v128) -> (v128)
8936 ; SIMD128-NEXT: # %bb.0:
8937 ; SIMD128-NEXT: v128.andnot $push0=, $0, $1
8938 ; SIMD128-NEXT: return $pop0
8940 ; SIMD128-FAST-LABEL: andnot_v8i16:
8941 ; SIMD128-FAST: .functype andnot_v8i16 (v128, v128) -> (v128)
8942 ; SIMD128-FAST-NEXT: # %bb.0:
8943 ; SIMD128-FAST-NEXT: v128.not $push0=, $1
8944 ; SIMD128-FAST-NEXT: v128.and $push1=, $0, $pop0
8945 ; SIMD128-FAST-NEXT: return $pop1
8947 ; NO-SIMD128-LABEL: andnot_v8i16:
8948 ; NO-SIMD128: .functype andnot_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
8949 ; NO-SIMD128-NEXT: # %bb.0:
8950 ; NO-SIMD128-NEXT: i32.const $push0=, -1
8951 ; NO-SIMD128-NEXT: i32.xor $push1=, $13, $pop0
8952 ; NO-SIMD128-NEXT: i32.and $push2=, $5, $pop1
8953 ; NO-SIMD128-NEXT: i32.store16 8($0), $pop2
8954 ; NO-SIMD128-NEXT: i32.const $push31=, -1
8955 ; NO-SIMD128-NEXT: i32.xor $push3=, $11, $pop31
8956 ; NO-SIMD128-NEXT: i32.and $push4=, $3, $pop3
8957 ; NO-SIMD128-NEXT: i32.store16 4($0), $pop4
8958 ; NO-SIMD128-NEXT: i32.const $push30=, -1
8959 ; NO-SIMD128-NEXT: i32.xor $push5=, $10, $pop30
8960 ; NO-SIMD128-NEXT: i32.and $push6=, $2, $pop5
8961 ; NO-SIMD128-NEXT: i32.store16 2($0), $pop6
8962 ; NO-SIMD128-NEXT: i32.const $push29=, -1
8963 ; NO-SIMD128-NEXT: i32.xor $push7=, $9, $pop29
8964 ; NO-SIMD128-NEXT: i32.and $push8=, $1, $pop7
8965 ; NO-SIMD128-NEXT: i32.store16 0($0), $pop8
8966 ; NO-SIMD128-NEXT: i32.const $push11=, 14
8967 ; NO-SIMD128-NEXT: i32.add $push12=, $0, $pop11
8968 ; NO-SIMD128-NEXT: i32.const $push28=, -1
8969 ; NO-SIMD128-NEXT: i32.xor $push9=, $16, $pop28
8970 ; NO-SIMD128-NEXT: i32.and $push10=, $8, $pop9
8971 ; NO-SIMD128-NEXT: i32.store16 0($pop12), $pop10
8972 ; NO-SIMD128-NEXT: i32.const $push15=, 12
8973 ; NO-SIMD128-NEXT: i32.add $push16=, $0, $pop15
8974 ; NO-SIMD128-NEXT: i32.const $push27=, -1
8975 ; NO-SIMD128-NEXT: i32.xor $push13=, $15, $pop27
8976 ; NO-SIMD128-NEXT: i32.and $push14=, $7, $pop13
8977 ; NO-SIMD128-NEXT: i32.store16 0($pop16), $pop14
8978 ; NO-SIMD128-NEXT: i32.const $push19=, 10
8979 ; NO-SIMD128-NEXT: i32.add $push20=, $0, $pop19
8980 ; NO-SIMD128-NEXT: i32.const $push26=, -1
8981 ; NO-SIMD128-NEXT: i32.xor $push17=, $14, $pop26
8982 ; NO-SIMD128-NEXT: i32.and $push18=, $6, $pop17
8983 ; NO-SIMD128-NEXT: i32.store16 0($pop20), $pop18
8984 ; NO-SIMD128-NEXT: i32.const $push23=, 6
8985 ; NO-SIMD128-NEXT: i32.add $push24=, $0, $pop23
8986 ; NO-SIMD128-NEXT: i32.const $push25=, -1
8987 ; NO-SIMD128-NEXT: i32.xor $push21=, $12, $pop25
8988 ; NO-SIMD128-NEXT: i32.and $push22=, $4, $pop21
8989 ; NO-SIMD128-NEXT: i32.store16 0($pop24), $pop22
8990 ; NO-SIMD128-NEXT: return
8992 ; NO-SIMD128-FAST-LABEL: andnot_v8i16:
8993 ; NO-SIMD128-FAST: .functype andnot_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
8994 ; NO-SIMD128-FAST-NEXT: # %bb.0:
8995 ; NO-SIMD128-FAST-NEXT: i32.const $push0=, -1
8996 ; NO-SIMD128-FAST-NEXT: i32.xor $push1=, $9, $pop0
8997 ; NO-SIMD128-FAST-NEXT: i32.and $push2=, $1, $pop1
8998 ; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop2
8999 ; NO-SIMD128-FAST-NEXT: i32.const $push31=, -1
9000 ; NO-SIMD128-FAST-NEXT: i32.xor $push3=, $10, $pop31
9001 ; NO-SIMD128-FAST-NEXT: i32.and $push4=, $2, $pop3
9002 ; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop4
9003 ; NO-SIMD128-FAST-NEXT: i32.const $push30=, -1
9004 ; NO-SIMD128-FAST-NEXT: i32.xor $push5=, $11, $pop30
9005 ; NO-SIMD128-FAST-NEXT: i32.and $push6=, $3, $pop5
9006 ; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop6
9007 ; NO-SIMD128-FAST-NEXT: i32.const $push7=, 6
9008 ; NO-SIMD128-FAST-NEXT: i32.add $push8=, $0, $pop7
9009 ; NO-SIMD128-FAST-NEXT: i32.const $push29=, -1
9010 ; NO-SIMD128-FAST-NEXT: i32.xor $push9=, $12, $pop29
9011 ; NO-SIMD128-FAST-NEXT: i32.and $push10=, $4, $pop9
9012 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop8), $pop10
9013 ; NO-SIMD128-FAST-NEXT: i32.const $push28=, -1
9014 ; NO-SIMD128-FAST-NEXT: i32.xor $push11=, $13, $pop28
9015 ; NO-SIMD128-FAST-NEXT: i32.and $push12=, $5, $pop11
9016 ; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop12
9017 ; NO-SIMD128-FAST-NEXT: i32.const $push13=, 10
9018 ; NO-SIMD128-FAST-NEXT: i32.add $push14=, $0, $pop13
9019 ; NO-SIMD128-FAST-NEXT: i32.const $push27=, -1
9020 ; NO-SIMD128-FAST-NEXT: i32.xor $push15=, $14, $pop27
9021 ; NO-SIMD128-FAST-NEXT: i32.and $push16=, $6, $pop15
9022 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop14), $pop16
9023 ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 12
9024 ; NO-SIMD128-FAST-NEXT: i32.add $push18=, $0, $pop17
9025 ; NO-SIMD128-FAST-NEXT: i32.const $push26=, -1
9026 ; NO-SIMD128-FAST-NEXT: i32.xor $push19=, $15, $pop26
9027 ; NO-SIMD128-FAST-NEXT: i32.and $push20=, $7, $pop19
9028 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop18), $pop20
9029 ; NO-SIMD128-FAST-NEXT: i32.const $push21=, 14
9030 ; NO-SIMD128-FAST-NEXT: i32.add $push22=, $0, $pop21
9031 ; NO-SIMD128-FAST-NEXT: i32.const $push25=, -1
9032 ; NO-SIMD128-FAST-NEXT: i32.xor $push23=, $16, $pop25
9033 ; NO-SIMD128-FAST-NEXT: i32.and $push24=, $8, $pop23
9034 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop22), $pop24
9035 ; NO-SIMD128-FAST-NEXT: return
9036 %inv_y = xor <8 x i16> %y,
9037 <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
9038 %a = and <8 x i16> %x, %inv_y
9042 define <8 x i16> @bitselect_v8i16(<8 x i16> %c, <8 x i16> %v1, <8 x i16> %v2) {
9043 ; SIMD128-LABEL: bitselect_v8i16:
9044 ; SIMD128: .functype bitselect_v8i16 (v128, v128, v128) -> (v128)
9045 ; SIMD128-NEXT: # %bb.0:
9046 ; SIMD128-NEXT: v128.bitselect $push0=, $1, $2, $0
9047 ; SIMD128-NEXT: return $pop0
9049 ; SIMD128-FAST-LABEL: bitselect_v8i16:
9050 ; SIMD128-FAST: .functype bitselect_v8i16 (v128, v128, v128) -> (v128)
9051 ; SIMD128-FAST-NEXT: # %bb.0:
9052 ; SIMD128-FAST-NEXT: v128.and $push0=, $1, $0
9053 ; SIMD128-FAST-NEXT: v128.not $push2=, $0
9054 ; SIMD128-FAST-NEXT: v128.and $push3=, $2, $pop2
9055 ; SIMD128-FAST-NEXT: v128.or $push1=, $pop0, $pop3
9056 ; SIMD128-FAST-NEXT: return $pop1
9058 ; NO-SIMD128-LABEL: bitselect_v8i16:
9059 ; NO-SIMD128: .functype bitselect_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9060 ; NO-SIMD128-NEXT: # %bb.0:
9061 ; NO-SIMD128-NEXT: i32.const $push5=, 14
9062 ; NO-SIMD128-NEXT: i32.add $push6=, $0, $pop5
9063 ; NO-SIMD128-NEXT: i32.and $push0=, $16, $8
9064 ; NO-SIMD128-NEXT: i32.const $push1=, -1
9065 ; NO-SIMD128-NEXT: i32.xor $push2=, $8, $pop1
9066 ; NO-SIMD128-NEXT: i32.and $push3=, $24, $pop2
9067 ; NO-SIMD128-NEXT: i32.or $push4=, $pop0, $pop3
9068 ; NO-SIMD128-NEXT: i32.store16 0($pop6), $pop4
9069 ; NO-SIMD128-NEXT: i32.const $push11=, 12
9070 ; NO-SIMD128-NEXT: i32.add $push12=, $0, $pop11
9071 ; NO-SIMD128-NEXT: i32.and $push7=, $15, $7
9072 ; NO-SIMD128-NEXT: i32.const $push47=, -1
9073 ; NO-SIMD128-NEXT: i32.xor $push8=, $7, $pop47
9074 ; NO-SIMD128-NEXT: i32.and $push9=, $23, $pop8
9075 ; NO-SIMD128-NEXT: i32.or $push10=, $pop7, $pop9
9076 ; NO-SIMD128-NEXT: i32.store16 0($pop12), $pop10
9077 ; NO-SIMD128-NEXT: i32.const $push17=, 10
9078 ; NO-SIMD128-NEXT: i32.add $push18=, $0, $pop17
9079 ; NO-SIMD128-NEXT: i32.and $push13=, $14, $6
9080 ; NO-SIMD128-NEXT: i32.const $push46=, -1
9081 ; NO-SIMD128-NEXT: i32.xor $push14=, $6, $pop46
9082 ; NO-SIMD128-NEXT: i32.and $push15=, $22, $pop14
9083 ; NO-SIMD128-NEXT: i32.or $push16=, $pop13, $pop15
9084 ; NO-SIMD128-NEXT: i32.store16 0($pop18), $pop16
9085 ; NO-SIMD128-NEXT: i32.and $push19=, $13, $5
9086 ; NO-SIMD128-NEXT: i32.const $push45=, -1
9087 ; NO-SIMD128-NEXT: i32.xor $push20=, $5, $pop45
9088 ; NO-SIMD128-NEXT: i32.and $push21=, $21, $pop20
9089 ; NO-SIMD128-NEXT: i32.or $push22=, $pop19, $pop21
9090 ; NO-SIMD128-NEXT: i32.store16 8($0), $pop22
9091 ; NO-SIMD128-NEXT: i32.const $push27=, 6
9092 ; NO-SIMD128-NEXT: i32.add $push28=, $0, $pop27
9093 ; NO-SIMD128-NEXT: i32.and $push23=, $12, $4
9094 ; NO-SIMD128-NEXT: i32.const $push44=, -1
9095 ; NO-SIMD128-NEXT: i32.xor $push24=, $4, $pop44
9096 ; NO-SIMD128-NEXT: i32.and $push25=, $20, $pop24
9097 ; NO-SIMD128-NEXT: i32.or $push26=, $pop23, $pop25
9098 ; NO-SIMD128-NEXT: i32.store16 0($pop28), $pop26
9099 ; NO-SIMD128-NEXT: i32.and $push29=, $11, $3
9100 ; NO-SIMD128-NEXT: i32.const $push43=, -1
9101 ; NO-SIMD128-NEXT: i32.xor $push30=, $3, $pop43
9102 ; NO-SIMD128-NEXT: i32.and $push31=, $19, $pop30
9103 ; NO-SIMD128-NEXT: i32.or $push32=, $pop29, $pop31
9104 ; NO-SIMD128-NEXT: i32.store16 4($0), $pop32
9105 ; NO-SIMD128-NEXT: i32.and $push33=, $10, $2
9106 ; NO-SIMD128-NEXT: i32.const $push42=, -1
9107 ; NO-SIMD128-NEXT: i32.xor $push34=, $2, $pop42
9108 ; NO-SIMD128-NEXT: i32.and $push35=, $18, $pop34
9109 ; NO-SIMD128-NEXT: i32.or $push36=, $pop33, $pop35
9110 ; NO-SIMD128-NEXT: i32.store16 2($0), $pop36
9111 ; NO-SIMD128-NEXT: i32.and $push37=, $9, $1
9112 ; NO-SIMD128-NEXT: i32.const $push41=, -1
9113 ; NO-SIMD128-NEXT: i32.xor $push38=, $1, $pop41
9114 ; NO-SIMD128-NEXT: i32.and $push39=, $17, $pop38
9115 ; NO-SIMD128-NEXT: i32.or $push40=, $pop37, $pop39
9116 ; NO-SIMD128-NEXT: i32.store16 0($0), $pop40
9117 ; NO-SIMD128-NEXT: return
9119 ; NO-SIMD128-FAST-LABEL: bitselect_v8i16:
9120 ; NO-SIMD128-FAST: .functype bitselect_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9121 ; NO-SIMD128-FAST-NEXT: # %bb.0:
9122 ; NO-SIMD128-FAST-NEXT: i32.and $push0=, $9, $1
9123 ; NO-SIMD128-FAST-NEXT: i32.const $push1=, -1
9124 ; NO-SIMD128-FAST-NEXT: i32.xor $push2=, $1, $pop1
9125 ; NO-SIMD128-FAST-NEXT: i32.and $push3=, $17, $pop2
9126 ; NO-SIMD128-FAST-NEXT: i32.or $push4=, $pop0, $pop3
9127 ; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop4
9128 ; NO-SIMD128-FAST-NEXT: i32.and $push5=, $10, $2
9129 ; NO-SIMD128-FAST-NEXT: i32.const $push47=, -1
9130 ; NO-SIMD128-FAST-NEXT: i32.xor $push6=, $2, $pop47
9131 ; NO-SIMD128-FAST-NEXT: i32.and $push7=, $18, $pop6
9132 ; NO-SIMD128-FAST-NEXT: i32.or $push8=, $pop5, $pop7
9133 ; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop8
9134 ; NO-SIMD128-FAST-NEXT: i32.and $push9=, $11, $3
9135 ; NO-SIMD128-FAST-NEXT: i32.const $push46=, -1
9136 ; NO-SIMD128-FAST-NEXT: i32.xor $push10=, $3, $pop46
9137 ; NO-SIMD128-FAST-NEXT: i32.and $push11=, $19, $pop10
9138 ; NO-SIMD128-FAST-NEXT: i32.or $push12=, $pop9, $pop11
9139 ; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop12
9140 ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 6
9141 ; NO-SIMD128-FAST-NEXT: i32.add $push18=, $0, $pop17
9142 ; NO-SIMD128-FAST-NEXT: i32.and $push13=, $12, $4
9143 ; NO-SIMD128-FAST-NEXT: i32.const $push45=, -1
9144 ; NO-SIMD128-FAST-NEXT: i32.xor $push14=, $4, $pop45
9145 ; NO-SIMD128-FAST-NEXT: i32.and $push15=, $20, $pop14
9146 ; NO-SIMD128-FAST-NEXT: i32.or $push16=, $pop13, $pop15
9147 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop18), $pop16
9148 ; NO-SIMD128-FAST-NEXT: i32.and $push19=, $13, $5
9149 ; NO-SIMD128-FAST-NEXT: i32.const $push44=, -1
9150 ; NO-SIMD128-FAST-NEXT: i32.xor $push20=, $5, $pop44
9151 ; NO-SIMD128-FAST-NEXT: i32.and $push21=, $21, $pop20
9152 ; NO-SIMD128-FAST-NEXT: i32.or $push22=, $pop19, $pop21
9153 ; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop22
9154 ; NO-SIMD128-FAST-NEXT: i32.const $push27=, 10
9155 ; NO-SIMD128-FAST-NEXT: i32.add $push28=, $0, $pop27
9156 ; NO-SIMD128-FAST-NEXT: i32.and $push23=, $14, $6
9157 ; NO-SIMD128-FAST-NEXT: i32.const $push43=, -1
9158 ; NO-SIMD128-FAST-NEXT: i32.xor $push24=, $6, $pop43
9159 ; NO-SIMD128-FAST-NEXT: i32.and $push25=, $22, $pop24
9160 ; NO-SIMD128-FAST-NEXT: i32.or $push26=, $pop23, $pop25
9161 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop28), $pop26
9162 ; NO-SIMD128-FAST-NEXT: i32.const $push33=, 12
9163 ; NO-SIMD128-FAST-NEXT: i32.add $push34=, $0, $pop33
9164 ; NO-SIMD128-FAST-NEXT: i32.and $push29=, $15, $7
9165 ; NO-SIMD128-FAST-NEXT: i32.const $push42=, -1
9166 ; NO-SIMD128-FAST-NEXT: i32.xor $push30=, $7, $pop42
9167 ; NO-SIMD128-FAST-NEXT: i32.and $push31=, $23, $pop30
9168 ; NO-SIMD128-FAST-NEXT: i32.or $push32=, $pop29, $pop31
9169 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop34), $pop32
9170 ; NO-SIMD128-FAST-NEXT: i32.const $push39=, 14
9171 ; NO-SIMD128-FAST-NEXT: i32.add $push40=, $0, $pop39
9172 ; NO-SIMD128-FAST-NEXT: i32.and $push35=, $16, $8
9173 ; NO-SIMD128-FAST-NEXT: i32.const $push41=, -1
9174 ; NO-SIMD128-FAST-NEXT: i32.xor $push36=, $8, $pop41
9175 ; NO-SIMD128-FAST-NEXT: i32.and $push37=, $24, $pop36
9176 ; NO-SIMD128-FAST-NEXT: i32.or $push38=, $pop35, $pop37
9177 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop40), $pop38
9178 ; NO-SIMD128-FAST-NEXT: return
9179 %masked_v1 = and <8 x i16> %v1, %c
9180 %inv_mask = xor <8 x i16>
9181 <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>,
9183 %masked_v2 = and <8 x i16> %v2, %inv_mask
9184 %a = or <8 x i16> %masked_v1, %masked_v2
9188 define <8 x i16> @bitselect_xor_v8i16(<8 x i16> %c, <8 x i16> %v1, <8 x i16> %v2) {
9189 ; SIMD128-LABEL: bitselect_xor_v8i16:
9190 ; SIMD128: .functype bitselect_xor_v8i16 (v128, v128, v128) -> (v128)
9191 ; SIMD128-NEXT: # %bb.0:
9192 ; SIMD128-NEXT: v128.bitselect $push0=, $1, $2, $0
9193 ; SIMD128-NEXT: return $pop0
9195 ; SIMD128-FAST-LABEL: bitselect_xor_v8i16:
9196 ; SIMD128-FAST: .functype bitselect_xor_v8i16 (v128, v128, v128) -> (v128)
9197 ; SIMD128-FAST-NEXT: # %bb.0:
9198 ; SIMD128-FAST-NEXT: v128.xor $push2=, $1, $2
9199 ; SIMD128-FAST-NEXT: v128.and $push1=, $pop2, $0
9200 ; SIMD128-FAST-NEXT: v128.xor $push0=, $pop1, $2
9201 ; SIMD128-FAST-NEXT: return $pop0
9203 ; NO-SIMD128-LABEL: bitselect_xor_v8i16:
9204 ; NO-SIMD128: .functype bitselect_xor_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9205 ; NO-SIMD128-NEXT: # %bb.0:
9206 ; NO-SIMD128-NEXT: i32.const $push3=, 14
9207 ; NO-SIMD128-NEXT: i32.add $push4=, $0, $pop3
9208 ; NO-SIMD128-NEXT: i32.xor $push0=, $16, $24
9209 ; NO-SIMD128-NEXT: i32.and $push1=, $pop0, $8
9210 ; NO-SIMD128-NEXT: i32.xor $push2=, $pop1, $24
9211 ; NO-SIMD128-NEXT: i32.store16 0($pop4), $pop2
9212 ; NO-SIMD128-NEXT: i32.const $push8=, 12
9213 ; NO-SIMD128-NEXT: i32.add $push9=, $0, $pop8
9214 ; NO-SIMD128-NEXT: i32.xor $push5=, $15, $23
9215 ; NO-SIMD128-NEXT: i32.and $push6=, $pop5, $7
9216 ; NO-SIMD128-NEXT: i32.xor $push7=, $pop6, $23
9217 ; NO-SIMD128-NEXT: i32.store16 0($pop9), $pop7
9218 ; NO-SIMD128-NEXT: i32.const $push13=, 10
9219 ; NO-SIMD128-NEXT: i32.add $push14=, $0, $pop13
9220 ; NO-SIMD128-NEXT: i32.xor $push10=, $14, $22
9221 ; NO-SIMD128-NEXT: i32.and $push11=, $pop10, $6
9222 ; NO-SIMD128-NEXT: i32.xor $push12=, $pop11, $22
9223 ; NO-SIMD128-NEXT: i32.store16 0($pop14), $pop12
9224 ; NO-SIMD128-NEXT: i32.xor $push15=, $13, $21
9225 ; NO-SIMD128-NEXT: i32.and $push16=, $pop15, $5
9226 ; NO-SIMD128-NEXT: i32.xor $push17=, $pop16, $21
9227 ; NO-SIMD128-NEXT: i32.store16 8($0), $pop17
9228 ; NO-SIMD128-NEXT: i32.const $push21=, 6
9229 ; NO-SIMD128-NEXT: i32.add $push22=, $0, $pop21
9230 ; NO-SIMD128-NEXT: i32.xor $push18=, $12, $20
9231 ; NO-SIMD128-NEXT: i32.and $push19=, $pop18, $4
9232 ; NO-SIMD128-NEXT: i32.xor $push20=, $pop19, $20
9233 ; NO-SIMD128-NEXT: i32.store16 0($pop22), $pop20
9234 ; NO-SIMD128-NEXT: i32.xor $push23=, $11, $19
9235 ; NO-SIMD128-NEXT: i32.and $push24=, $pop23, $3
9236 ; NO-SIMD128-NEXT: i32.xor $push25=, $pop24, $19
9237 ; NO-SIMD128-NEXT: i32.store16 4($0), $pop25
9238 ; NO-SIMD128-NEXT: i32.xor $push26=, $10, $18
9239 ; NO-SIMD128-NEXT: i32.and $push27=, $pop26, $2
9240 ; NO-SIMD128-NEXT: i32.xor $push28=, $pop27, $18
9241 ; NO-SIMD128-NEXT: i32.store16 2($0), $pop28
9242 ; NO-SIMD128-NEXT: i32.xor $push29=, $9, $17
9243 ; NO-SIMD128-NEXT: i32.and $push30=, $pop29, $1
9244 ; NO-SIMD128-NEXT: i32.xor $push31=, $pop30, $17
9245 ; NO-SIMD128-NEXT: i32.store16 0($0), $pop31
9246 ; NO-SIMD128-NEXT: return
9248 ; NO-SIMD128-FAST-LABEL: bitselect_xor_v8i16:
9249 ; NO-SIMD128-FAST: .functype bitselect_xor_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9250 ; NO-SIMD128-FAST-NEXT: # %bb.0:
9251 ; NO-SIMD128-FAST-NEXT: i32.xor $push0=, $9, $17
9252 ; NO-SIMD128-FAST-NEXT: i32.and $push1=, $pop0, $1
9253 ; NO-SIMD128-FAST-NEXT: i32.xor $push2=, $pop1, $17
9254 ; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop2
9255 ; NO-SIMD128-FAST-NEXT: i32.xor $push3=, $10, $18
9256 ; NO-SIMD128-FAST-NEXT: i32.and $push4=, $pop3, $2
9257 ; NO-SIMD128-FAST-NEXT: i32.xor $push5=, $pop4, $18
9258 ; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop5
9259 ; NO-SIMD128-FAST-NEXT: i32.xor $push6=, $11, $19
9260 ; NO-SIMD128-FAST-NEXT: i32.and $push7=, $pop6, $3
9261 ; NO-SIMD128-FAST-NEXT: i32.xor $push8=, $pop7, $19
9262 ; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop8
9263 ; NO-SIMD128-FAST-NEXT: i32.const $push9=, 6
9264 ; NO-SIMD128-FAST-NEXT: i32.add $push10=, $0, $pop9
9265 ; NO-SIMD128-FAST-NEXT: i32.xor $push11=, $12, $20
9266 ; NO-SIMD128-FAST-NEXT: i32.and $push12=, $pop11, $4
9267 ; NO-SIMD128-FAST-NEXT: i32.xor $push13=, $pop12, $20
9268 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop10), $pop13
9269 ; NO-SIMD128-FAST-NEXT: i32.xor $push14=, $13, $21
9270 ; NO-SIMD128-FAST-NEXT: i32.and $push15=, $pop14, $5
9271 ; NO-SIMD128-FAST-NEXT: i32.xor $push16=, $pop15, $21
9272 ; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop16
9273 ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 10
9274 ; NO-SIMD128-FAST-NEXT: i32.add $push18=, $0, $pop17
9275 ; NO-SIMD128-FAST-NEXT: i32.xor $push19=, $14, $22
9276 ; NO-SIMD128-FAST-NEXT: i32.and $push20=, $pop19, $6
9277 ; NO-SIMD128-FAST-NEXT: i32.xor $push21=, $pop20, $22
9278 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop18), $pop21
9279 ; NO-SIMD128-FAST-NEXT: i32.const $push22=, 12
9280 ; NO-SIMD128-FAST-NEXT: i32.add $push23=, $0, $pop22
9281 ; NO-SIMD128-FAST-NEXT: i32.xor $push24=, $15, $23
9282 ; NO-SIMD128-FAST-NEXT: i32.and $push25=, $pop24, $7
9283 ; NO-SIMD128-FAST-NEXT: i32.xor $push26=, $pop25, $23
9284 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop23), $pop26
9285 ; NO-SIMD128-FAST-NEXT: i32.const $push27=, 14
9286 ; NO-SIMD128-FAST-NEXT: i32.add $push28=, $0, $pop27
9287 ; NO-SIMD128-FAST-NEXT: i32.xor $push29=, $16, $24
9288 ; NO-SIMD128-FAST-NEXT: i32.and $push30=, $pop29, $8
9289 ; NO-SIMD128-FAST-NEXT: i32.xor $push31=, $pop30, $24
9290 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop28), $pop31
9291 ; NO-SIMD128-FAST-NEXT: return
9292 %xor1 = xor <8 x i16> %v1, %v2
9293 %and = and <8 x i16> %xor1, %c
9294 %a = xor <8 x i16> %and, %v2
9298 define <8 x i16> @bitselect_xor_reversed_v8i16(<8 x i16> %c, <8 x i16> %v1, <8 x i16> %v2) {
9299 ; SIMD128-LABEL: bitselect_xor_reversed_v8i16:
9300 ; SIMD128: .functype bitselect_xor_reversed_v8i16 (v128, v128, v128) -> (v128)
9301 ; SIMD128-NEXT: # %bb.0:
9302 ; SIMD128-NEXT: v128.bitselect $push0=, $2, $1, $0
9303 ; SIMD128-NEXT: return $pop0
9305 ; SIMD128-FAST-LABEL: bitselect_xor_reversed_v8i16:
9306 ; SIMD128-FAST: .functype bitselect_xor_reversed_v8i16 (v128, v128, v128) -> (v128)
9307 ; SIMD128-FAST-NEXT: # %bb.0:
9308 ; SIMD128-FAST-NEXT: v128.xor $push1=, $1, $2
9309 ; SIMD128-FAST-NEXT: v128.not $push2=, $0
9310 ; SIMD128-FAST-NEXT: v128.and $push3=, $pop1, $pop2
9311 ; SIMD128-FAST-NEXT: v128.xor $push0=, $pop3, $2
9312 ; SIMD128-FAST-NEXT: return $pop0
9314 ; NO-SIMD128-LABEL: bitselect_xor_reversed_v8i16:
9315 ; NO-SIMD128: .functype bitselect_xor_reversed_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9316 ; NO-SIMD128-NEXT: # %bb.0:
9317 ; NO-SIMD128-NEXT: i32.const $push5=, 14
9318 ; NO-SIMD128-NEXT: i32.add $push6=, $0, $pop5
9319 ; NO-SIMD128-NEXT: i32.xor $push2=, $16, $24
9320 ; NO-SIMD128-NEXT: i32.const $push0=, -1
9321 ; NO-SIMD128-NEXT: i32.xor $push1=, $8, $pop0
9322 ; NO-SIMD128-NEXT: i32.and $push3=, $pop2, $pop1
9323 ; NO-SIMD128-NEXT: i32.xor $push4=, $pop3, $24
9324 ; NO-SIMD128-NEXT: i32.store16 0($pop6), $pop4
9325 ; NO-SIMD128-NEXT: i32.const $push11=, 12
9326 ; NO-SIMD128-NEXT: i32.add $push12=, $0, $pop11
9327 ; NO-SIMD128-NEXT: i32.xor $push8=, $15, $23
9328 ; NO-SIMD128-NEXT: i32.const $push47=, -1
9329 ; NO-SIMD128-NEXT: i32.xor $push7=, $7, $pop47
9330 ; NO-SIMD128-NEXT: i32.and $push9=, $pop8, $pop7
9331 ; NO-SIMD128-NEXT: i32.xor $push10=, $pop9, $23
9332 ; NO-SIMD128-NEXT: i32.store16 0($pop12), $pop10
9333 ; NO-SIMD128-NEXT: i32.const $push17=, 10
9334 ; NO-SIMD128-NEXT: i32.add $push18=, $0, $pop17
9335 ; NO-SIMD128-NEXT: i32.xor $push14=, $14, $22
9336 ; NO-SIMD128-NEXT: i32.const $push46=, -1
9337 ; NO-SIMD128-NEXT: i32.xor $push13=, $6, $pop46
9338 ; NO-SIMD128-NEXT: i32.and $push15=, $pop14, $pop13
9339 ; NO-SIMD128-NEXT: i32.xor $push16=, $pop15, $22
9340 ; NO-SIMD128-NEXT: i32.store16 0($pop18), $pop16
9341 ; NO-SIMD128-NEXT: i32.xor $push20=, $13, $21
9342 ; NO-SIMD128-NEXT: i32.const $push45=, -1
9343 ; NO-SIMD128-NEXT: i32.xor $push19=, $5, $pop45
9344 ; NO-SIMD128-NEXT: i32.and $push21=, $pop20, $pop19
9345 ; NO-SIMD128-NEXT: i32.xor $push22=, $pop21, $21
9346 ; NO-SIMD128-NEXT: i32.store16 8($0), $pop22
9347 ; NO-SIMD128-NEXT: i32.const $push27=, 6
9348 ; NO-SIMD128-NEXT: i32.add $push28=, $0, $pop27
9349 ; NO-SIMD128-NEXT: i32.xor $push24=, $12, $20
9350 ; NO-SIMD128-NEXT: i32.const $push44=, -1
9351 ; NO-SIMD128-NEXT: i32.xor $push23=, $4, $pop44
9352 ; NO-SIMD128-NEXT: i32.and $push25=, $pop24, $pop23
9353 ; NO-SIMD128-NEXT: i32.xor $push26=, $pop25, $20
9354 ; NO-SIMD128-NEXT: i32.store16 0($pop28), $pop26
9355 ; NO-SIMD128-NEXT: i32.xor $push30=, $11, $19
9356 ; NO-SIMD128-NEXT: i32.const $push43=, -1
9357 ; NO-SIMD128-NEXT: i32.xor $push29=, $3, $pop43
9358 ; NO-SIMD128-NEXT: i32.and $push31=, $pop30, $pop29
9359 ; NO-SIMD128-NEXT: i32.xor $push32=, $pop31, $19
9360 ; NO-SIMD128-NEXT: i32.store16 4($0), $pop32
9361 ; NO-SIMD128-NEXT: i32.xor $push34=, $10, $18
9362 ; NO-SIMD128-NEXT: i32.const $push42=, -1
9363 ; NO-SIMD128-NEXT: i32.xor $push33=, $2, $pop42
9364 ; NO-SIMD128-NEXT: i32.and $push35=, $pop34, $pop33
9365 ; NO-SIMD128-NEXT: i32.xor $push36=, $pop35, $18
9366 ; NO-SIMD128-NEXT: i32.store16 2($0), $pop36
9367 ; NO-SIMD128-NEXT: i32.xor $push38=, $9, $17
9368 ; NO-SIMD128-NEXT: i32.const $push41=, -1
9369 ; NO-SIMD128-NEXT: i32.xor $push37=, $1, $pop41
9370 ; NO-SIMD128-NEXT: i32.and $push39=, $pop38, $pop37
9371 ; NO-SIMD128-NEXT: i32.xor $push40=, $pop39, $17
9372 ; NO-SIMD128-NEXT: i32.store16 0($0), $pop40
9373 ; NO-SIMD128-NEXT: return
9375 ; NO-SIMD128-FAST-LABEL: bitselect_xor_reversed_v8i16:
9376 ; NO-SIMD128-FAST: .functype bitselect_xor_reversed_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9377 ; NO-SIMD128-FAST-NEXT: # %bb.0:
9378 ; NO-SIMD128-FAST-NEXT: i32.xor $push2=, $9, $17
9379 ; NO-SIMD128-FAST-NEXT: i32.const $push0=, -1
9380 ; NO-SIMD128-FAST-NEXT: i32.xor $push1=, $1, $pop0
9381 ; NO-SIMD128-FAST-NEXT: i32.and $push3=, $pop2, $pop1
9382 ; NO-SIMD128-FAST-NEXT: i32.xor $push4=, $pop3, $17
9383 ; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop4
9384 ; NO-SIMD128-FAST-NEXT: i32.xor $push6=, $10, $18
9385 ; NO-SIMD128-FAST-NEXT: i32.const $push47=, -1
9386 ; NO-SIMD128-FAST-NEXT: i32.xor $push5=, $2, $pop47
9387 ; NO-SIMD128-FAST-NEXT: i32.and $push7=, $pop6, $pop5
9388 ; NO-SIMD128-FAST-NEXT: i32.xor $push8=, $pop7, $18
9389 ; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop8
9390 ; NO-SIMD128-FAST-NEXT: i32.xor $push10=, $11, $19
9391 ; NO-SIMD128-FAST-NEXT: i32.const $push46=, -1
9392 ; NO-SIMD128-FAST-NEXT: i32.xor $push9=, $3, $pop46
9393 ; NO-SIMD128-FAST-NEXT: i32.and $push11=, $pop10, $pop9
9394 ; NO-SIMD128-FAST-NEXT: i32.xor $push12=, $pop11, $19
9395 ; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop12
9396 ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 6
9397 ; NO-SIMD128-FAST-NEXT: i32.add $push18=, $0, $pop17
9398 ; NO-SIMD128-FAST-NEXT: i32.xor $push14=, $12, $20
9399 ; NO-SIMD128-FAST-NEXT: i32.const $push45=, -1
9400 ; NO-SIMD128-FAST-NEXT: i32.xor $push13=, $4, $pop45
9401 ; NO-SIMD128-FAST-NEXT: i32.and $push15=, $pop14, $pop13
9402 ; NO-SIMD128-FAST-NEXT: i32.xor $push16=, $pop15, $20
9403 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop18), $pop16
9404 ; NO-SIMD128-FAST-NEXT: i32.xor $push20=, $13, $21
9405 ; NO-SIMD128-FAST-NEXT: i32.const $push44=, -1
9406 ; NO-SIMD128-FAST-NEXT: i32.xor $push19=, $5, $pop44
9407 ; NO-SIMD128-FAST-NEXT: i32.and $push21=, $pop20, $pop19
9408 ; NO-SIMD128-FAST-NEXT: i32.xor $push22=, $pop21, $21
9409 ; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop22
9410 ; NO-SIMD128-FAST-NEXT: i32.const $push27=, 10
9411 ; NO-SIMD128-FAST-NEXT: i32.add $push28=, $0, $pop27
9412 ; NO-SIMD128-FAST-NEXT: i32.xor $push24=, $14, $22
9413 ; NO-SIMD128-FAST-NEXT: i32.const $push43=, -1
9414 ; NO-SIMD128-FAST-NEXT: i32.xor $push23=, $6, $pop43
9415 ; NO-SIMD128-FAST-NEXT: i32.and $push25=, $pop24, $pop23
9416 ; NO-SIMD128-FAST-NEXT: i32.xor $push26=, $pop25, $22
9417 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop28), $pop26
9418 ; NO-SIMD128-FAST-NEXT: i32.const $push33=, 12
9419 ; NO-SIMD128-FAST-NEXT: i32.add $push34=, $0, $pop33
9420 ; NO-SIMD128-FAST-NEXT: i32.xor $push30=, $15, $23
9421 ; NO-SIMD128-FAST-NEXT: i32.const $push42=, -1
9422 ; NO-SIMD128-FAST-NEXT: i32.xor $push29=, $7, $pop42
9423 ; NO-SIMD128-FAST-NEXT: i32.and $push31=, $pop30, $pop29
9424 ; NO-SIMD128-FAST-NEXT: i32.xor $push32=, $pop31, $23
9425 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop34), $pop32
9426 ; NO-SIMD128-FAST-NEXT: i32.const $push39=, 14
9427 ; NO-SIMD128-FAST-NEXT: i32.add $push40=, $0, $pop39
9428 ; NO-SIMD128-FAST-NEXT: i32.xor $push36=, $16, $24
9429 ; NO-SIMD128-FAST-NEXT: i32.const $push41=, -1
9430 ; NO-SIMD128-FAST-NEXT: i32.xor $push35=, $8, $pop41
9431 ; NO-SIMD128-FAST-NEXT: i32.and $push37=, $pop36, $pop35
9432 ; NO-SIMD128-FAST-NEXT: i32.xor $push38=, $pop37, $24
9433 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop40), $pop38
9434 ; NO-SIMD128-FAST-NEXT: return
9435 %xor1 = xor <8 x i16> %v1, %v2
9436 %notc = xor <8 x i16> %c, <i16 -1, i16 -1, i16 -1, i16 -1,
9437 i16 -1, i16 -1, i16 -1, i16 -1>
9438 %and = and <8 x i16> %xor1, %notc
9439 %a = xor <8 x i16> %and, %v2
9443 define <8 x i16> @extmul_low_s_v8i16(<16 x i8> %v1, <16 x i8> %v2) {
9444 ; SIMD128-LABEL: extmul_low_s_v8i16:
9445 ; SIMD128: .functype extmul_low_s_v8i16 (v128, v128) -> (v128)
9446 ; SIMD128-NEXT: # %bb.0:
9447 ; SIMD128-NEXT: i16x8.extmul_low_i8x16_s $push0=, $0, $1
9448 ; SIMD128-NEXT: return $pop0
9450 ; SIMD128-FAST-LABEL: extmul_low_s_v8i16:
9451 ; SIMD128-FAST: .functype extmul_low_s_v8i16 (v128, v128) -> (v128)
9452 ; SIMD128-FAST-NEXT: # %bb.0:
9453 ; SIMD128-FAST-NEXT: i16x8.extend_low_i8x16_s $push0=, $0
9454 ; SIMD128-FAST-NEXT: i16x8.extend_low_i8x16_s $push1=, $1
9455 ; SIMD128-FAST-NEXT: i16x8.mul $push2=, $pop0, $pop1
9456 ; SIMD128-FAST-NEXT: return $pop2
9458 ; NO-SIMD128-LABEL: extmul_low_s_v8i16:
9459 ; NO-SIMD128: .functype extmul_low_s_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9460 ; NO-SIMD128-NEXT: # %bb.0:
9461 ; NO-SIMD128-NEXT: i32.extend8_s $push1=, $5
9462 ; NO-SIMD128-NEXT: i32.extend8_s $push0=, $21
9463 ; NO-SIMD128-NEXT: i32.mul $push2=, $pop1, $pop0
9464 ; NO-SIMD128-NEXT: i32.store16 8($0), $pop2
9465 ; NO-SIMD128-NEXT: i32.extend8_s $push4=, $3
9466 ; NO-SIMD128-NEXT: i32.extend8_s $push3=, $19
9467 ; NO-SIMD128-NEXT: i32.mul $push5=, $pop4, $pop3
9468 ; NO-SIMD128-NEXT: i32.store16 4($0), $pop5
9469 ; NO-SIMD128-NEXT: i32.extend8_s $push7=, $2
9470 ; NO-SIMD128-NEXT: i32.extend8_s $push6=, $18
9471 ; NO-SIMD128-NEXT: i32.mul $push8=, $pop7, $pop6
9472 ; NO-SIMD128-NEXT: i32.store16 2($0), $pop8
9473 ; NO-SIMD128-NEXT: i32.extend8_s $push10=, $1
9474 ; NO-SIMD128-NEXT: i32.extend8_s $push9=, $17
9475 ; NO-SIMD128-NEXT: i32.mul $push11=, $pop10, $pop9
9476 ; NO-SIMD128-NEXT: i32.store16 0($0), $pop11
9477 ; NO-SIMD128-NEXT: i32.const $push15=, 14
9478 ; NO-SIMD128-NEXT: i32.add $push16=, $0, $pop15
9479 ; NO-SIMD128-NEXT: i32.extend8_s $push13=, $8
9480 ; NO-SIMD128-NEXT: i32.extend8_s $push12=, $24
9481 ; NO-SIMD128-NEXT: i32.mul $push14=, $pop13, $pop12
9482 ; NO-SIMD128-NEXT: i32.store16 0($pop16), $pop14
9483 ; NO-SIMD128-NEXT: i32.const $push20=, 12
9484 ; NO-SIMD128-NEXT: i32.add $push21=, $0, $pop20
9485 ; NO-SIMD128-NEXT: i32.extend8_s $push18=, $7
9486 ; NO-SIMD128-NEXT: i32.extend8_s $push17=, $23
9487 ; NO-SIMD128-NEXT: i32.mul $push19=, $pop18, $pop17
9488 ; NO-SIMD128-NEXT: i32.store16 0($pop21), $pop19
9489 ; NO-SIMD128-NEXT: i32.const $push25=, 10
9490 ; NO-SIMD128-NEXT: i32.add $push26=, $0, $pop25
9491 ; NO-SIMD128-NEXT: i32.extend8_s $push23=, $6
9492 ; NO-SIMD128-NEXT: i32.extend8_s $push22=, $22
9493 ; NO-SIMD128-NEXT: i32.mul $push24=, $pop23, $pop22
9494 ; NO-SIMD128-NEXT: i32.store16 0($pop26), $pop24
9495 ; NO-SIMD128-NEXT: i32.const $push30=, 6
9496 ; NO-SIMD128-NEXT: i32.add $push31=, $0, $pop30
9497 ; NO-SIMD128-NEXT: i32.extend8_s $push28=, $4
9498 ; NO-SIMD128-NEXT: i32.extend8_s $push27=, $20
9499 ; NO-SIMD128-NEXT: i32.mul $push29=, $pop28, $pop27
9500 ; NO-SIMD128-NEXT: i32.store16 0($pop31), $pop29
9501 ; NO-SIMD128-NEXT: return
9503 ; NO-SIMD128-FAST-LABEL: extmul_low_s_v8i16:
9504 ; NO-SIMD128-FAST: .functype extmul_low_s_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9505 ; NO-SIMD128-FAST-NEXT: # %bb.0:
9506 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push1=, $1
9507 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push0=, $17
9508 ; NO-SIMD128-FAST-NEXT: i32.mul $push2=, $pop1, $pop0
9509 ; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop2
9510 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push4=, $2
9511 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push3=, $18
9512 ; NO-SIMD128-FAST-NEXT: i32.mul $push5=, $pop4, $pop3
9513 ; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop5
9514 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push7=, $3
9515 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push6=, $19
9516 ; NO-SIMD128-FAST-NEXT: i32.mul $push8=, $pop7, $pop6
9517 ; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop8
9518 ; NO-SIMD128-FAST-NEXT: i32.const $push9=, 6
9519 ; NO-SIMD128-FAST-NEXT: i32.add $push10=, $0, $pop9
9520 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push12=, $4
9521 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push11=, $20
9522 ; NO-SIMD128-FAST-NEXT: i32.mul $push13=, $pop12, $pop11
9523 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop10), $pop13
9524 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push15=, $5
9525 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push14=, $21
9526 ; NO-SIMD128-FAST-NEXT: i32.mul $push16=, $pop15, $pop14
9527 ; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop16
9528 ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 10
9529 ; NO-SIMD128-FAST-NEXT: i32.add $push18=, $0, $pop17
9530 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push20=, $6
9531 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push19=, $22
9532 ; NO-SIMD128-FAST-NEXT: i32.mul $push21=, $pop20, $pop19
9533 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop18), $pop21
9534 ; NO-SIMD128-FAST-NEXT: i32.const $push22=, 12
9535 ; NO-SIMD128-FAST-NEXT: i32.add $push23=, $0, $pop22
9536 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push25=, $7
9537 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push24=, $23
9538 ; NO-SIMD128-FAST-NEXT: i32.mul $push26=, $pop25, $pop24
9539 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop23), $pop26
9540 ; NO-SIMD128-FAST-NEXT: i32.const $push27=, 14
9541 ; NO-SIMD128-FAST-NEXT: i32.add $push28=, $0, $pop27
9542 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push30=, $8
9543 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push29=, $24
9544 ; NO-SIMD128-FAST-NEXT: i32.mul $push31=, $pop30, $pop29
9545 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop28), $pop31
9546 ; NO-SIMD128-FAST-NEXT: return
9547 %low1 = shufflevector <16 x i8> %v1, <16 x i8> undef,
9548 <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
9549 %low2 = shufflevector <16 x i8> %v2, <16 x i8> undef,
9550 <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
9551 %extended1 = sext <8 x i8> %low1 to <8 x i16>
9552 %extended2 = sext <8 x i8> %low2 to <8 x i16>
9553 %a = mul <8 x i16> %extended1, %extended2
9557 define <8 x i16> @extmul_high_s_v8i16(<16 x i8> %v1, <16 x i8> %v2) {
9558 ; SIMD128-LABEL: extmul_high_s_v8i16:
9559 ; SIMD128: .functype extmul_high_s_v8i16 (v128, v128) -> (v128)
9560 ; SIMD128-NEXT: # %bb.0:
9561 ; SIMD128-NEXT: i16x8.extmul_high_i8x16_s $push0=, $0, $1
9562 ; SIMD128-NEXT: return $pop0
9564 ; SIMD128-FAST-LABEL: extmul_high_s_v8i16:
9565 ; SIMD128-FAST: .functype extmul_high_s_v8i16 (v128, v128) -> (v128)
9566 ; SIMD128-FAST-NEXT: # %bb.0:
9567 ; SIMD128-FAST-NEXT: i16x8.extend_high_i8x16_s $push0=, $0
9568 ; SIMD128-FAST-NEXT: i16x8.extend_high_i8x16_s $push1=, $1
9569 ; SIMD128-FAST-NEXT: i16x8.mul $push2=, $pop0, $pop1
9570 ; SIMD128-FAST-NEXT: return $pop2
9572 ; NO-SIMD128-LABEL: extmul_high_s_v8i16:
9573 ; NO-SIMD128: .functype extmul_high_s_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9574 ; NO-SIMD128-NEXT: # %bb.0:
9575 ; NO-SIMD128-NEXT: i32.extend8_s $push1=, $13
9576 ; NO-SIMD128-NEXT: i32.extend8_s $push0=, $29
9577 ; NO-SIMD128-NEXT: i32.mul $push2=, $pop1, $pop0
9578 ; NO-SIMD128-NEXT: i32.store16 8($0), $pop2
9579 ; NO-SIMD128-NEXT: i32.extend8_s $push4=, $11
9580 ; NO-SIMD128-NEXT: i32.extend8_s $push3=, $27
9581 ; NO-SIMD128-NEXT: i32.mul $push5=, $pop4, $pop3
9582 ; NO-SIMD128-NEXT: i32.store16 4($0), $pop5
9583 ; NO-SIMD128-NEXT: i32.extend8_s $push7=, $10
9584 ; NO-SIMD128-NEXT: i32.extend8_s $push6=, $26
9585 ; NO-SIMD128-NEXT: i32.mul $push8=, $pop7, $pop6
9586 ; NO-SIMD128-NEXT: i32.store16 2($0), $pop8
9587 ; NO-SIMD128-NEXT: i32.extend8_s $push10=, $9
9588 ; NO-SIMD128-NEXT: i32.extend8_s $push9=, $25
9589 ; NO-SIMD128-NEXT: i32.mul $push11=, $pop10, $pop9
9590 ; NO-SIMD128-NEXT: i32.store16 0($0), $pop11
9591 ; NO-SIMD128-NEXT: i32.const $push15=, 14
9592 ; NO-SIMD128-NEXT: i32.add $push16=, $0, $pop15
9593 ; NO-SIMD128-NEXT: i32.extend8_s $push13=, $16
9594 ; NO-SIMD128-NEXT: i32.extend8_s $push12=, $32
9595 ; NO-SIMD128-NEXT: i32.mul $push14=, $pop13, $pop12
9596 ; NO-SIMD128-NEXT: i32.store16 0($pop16), $pop14
9597 ; NO-SIMD128-NEXT: i32.const $push20=, 12
9598 ; NO-SIMD128-NEXT: i32.add $push21=, $0, $pop20
9599 ; NO-SIMD128-NEXT: i32.extend8_s $push18=, $15
9600 ; NO-SIMD128-NEXT: i32.extend8_s $push17=, $31
9601 ; NO-SIMD128-NEXT: i32.mul $push19=, $pop18, $pop17
9602 ; NO-SIMD128-NEXT: i32.store16 0($pop21), $pop19
9603 ; NO-SIMD128-NEXT: i32.const $push25=, 10
9604 ; NO-SIMD128-NEXT: i32.add $push26=, $0, $pop25
9605 ; NO-SIMD128-NEXT: i32.extend8_s $push23=, $14
9606 ; NO-SIMD128-NEXT: i32.extend8_s $push22=, $30
9607 ; NO-SIMD128-NEXT: i32.mul $push24=, $pop23, $pop22
9608 ; NO-SIMD128-NEXT: i32.store16 0($pop26), $pop24
9609 ; NO-SIMD128-NEXT: i32.const $push30=, 6
9610 ; NO-SIMD128-NEXT: i32.add $push31=, $0, $pop30
9611 ; NO-SIMD128-NEXT: i32.extend8_s $push28=, $12
9612 ; NO-SIMD128-NEXT: i32.extend8_s $push27=, $28
9613 ; NO-SIMD128-NEXT: i32.mul $push29=, $pop28, $pop27
9614 ; NO-SIMD128-NEXT: i32.store16 0($pop31), $pop29
9615 ; NO-SIMD128-NEXT: return
9617 ; NO-SIMD128-FAST-LABEL: extmul_high_s_v8i16:
9618 ; NO-SIMD128-FAST: .functype extmul_high_s_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9619 ; NO-SIMD128-FAST-NEXT: # %bb.0:
9620 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push1=, $9
9621 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push0=, $25
9622 ; NO-SIMD128-FAST-NEXT: i32.mul $push2=, $pop1, $pop0
9623 ; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop2
9624 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push4=, $10
9625 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push3=, $26
9626 ; NO-SIMD128-FAST-NEXT: i32.mul $push5=, $pop4, $pop3
9627 ; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop5
9628 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push7=, $11
9629 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push6=, $27
9630 ; NO-SIMD128-FAST-NEXT: i32.mul $push8=, $pop7, $pop6
9631 ; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop8
9632 ; NO-SIMD128-FAST-NEXT: i32.const $push9=, 6
9633 ; NO-SIMD128-FAST-NEXT: i32.add $push10=, $0, $pop9
9634 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push12=, $12
9635 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push11=, $28
9636 ; NO-SIMD128-FAST-NEXT: i32.mul $push13=, $pop12, $pop11
9637 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop10), $pop13
9638 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push15=, $13
9639 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push14=, $29
9640 ; NO-SIMD128-FAST-NEXT: i32.mul $push16=, $pop15, $pop14
9641 ; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop16
9642 ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 10
9643 ; NO-SIMD128-FAST-NEXT: i32.add $push18=, $0, $pop17
9644 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push20=, $14
9645 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push19=, $30
9646 ; NO-SIMD128-FAST-NEXT: i32.mul $push21=, $pop20, $pop19
9647 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop18), $pop21
9648 ; NO-SIMD128-FAST-NEXT: i32.const $push22=, 12
9649 ; NO-SIMD128-FAST-NEXT: i32.add $push23=, $0, $pop22
9650 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push25=, $15
9651 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push24=, $31
9652 ; NO-SIMD128-FAST-NEXT: i32.mul $push26=, $pop25, $pop24
9653 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop23), $pop26
9654 ; NO-SIMD128-FAST-NEXT: i32.const $push27=, 14
9655 ; NO-SIMD128-FAST-NEXT: i32.add $push28=, $0, $pop27
9656 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push30=, $16
9657 ; NO-SIMD128-FAST-NEXT: i32.extend8_s $push29=, $32
9658 ; NO-SIMD128-FAST-NEXT: i32.mul $push31=, $pop30, $pop29
9659 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop28), $pop31
9660 ; NO-SIMD128-FAST-NEXT: return
9661 %high1 = shufflevector <16 x i8> %v1, <16 x i8> undef,
9662 <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
9663 %high2 = shufflevector <16 x i8> %v2, <16 x i8> undef,
9664 <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
9665 %extended1 = sext <8 x i8> %high1 to <8 x i16>
9666 %extended2 = sext <8 x i8> %high2 to <8 x i16>
9667 %a = mul <8 x i16> %extended1, %extended2
9671 define <8 x i16> @extmul_low_u_v8i16(<16 x i8> %v1, <16 x i8> %v2) {
9672 ; SIMD128-LABEL: extmul_low_u_v8i16:
9673 ; SIMD128: .functype extmul_low_u_v8i16 (v128, v128) -> (v128)
9674 ; SIMD128-NEXT: # %bb.0:
9675 ; SIMD128-NEXT: i16x8.extmul_low_i8x16_u $push0=, $0, $1
9676 ; SIMD128-NEXT: return $pop0
9678 ; SIMD128-FAST-LABEL: extmul_low_u_v8i16:
9679 ; SIMD128-FAST: .functype extmul_low_u_v8i16 (v128, v128) -> (v128)
9680 ; SIMD128-FAST-NEXT: # %bb.0:
9681 ; SIMD128-FAST-NEXT: i16x8.extend_low_i8x16_u $push0=, $0
9682 ; SIMD128-FAST-NEXT: i16x8.extend_low_i8x16_u $push1=, $1
9683 ; SIMD128-FAST-NEXT: i16x8.mul $push2=, $pop0, $pop1
9684 ; SIMD128-FAST-NEXT: return $pop2
9686 ; NO-SIMD128-LABEL: extmul_low_u_v8i16:
9687 ; NO-SIMD128: .functype extmul_low_u_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9688 ; NO-SIMD128-NEXT: # %bb.0:
9689 ; NO-SIMD128-NEXT: i32.const $push0=, 255
9690 ; NO-SIMD128-NEXT: i32.and $push2=, $5, $pop0
9691 ; NO-SIMD128-NEXT: i32.const $push47=, 255
9692 ; NO-SIMD128-NEXT: i32.and $push1=, $21, $pop47
9693 ; NO-SIMD128-NEXT: i32.mul $push3=, $pop2, $pop1
9694 ; NO-SIMD128-NEXT: i32.store16 8($0), $pop3
9695 ; NO-SIMD128-NEXT: i32.const $push46=, 255
9696 ; NO-SIMD128-NEXT: i32.and $push5=, $3, $pop46
9697 ; NO-SIMD128-NEXT: i32.const $push45=, 255
9698 ; NO-SIMD128-NEXT: i32.and $push4=, $19, $pop45
9699 ; NO-SIMD128-NEXT: i32.mul $push6=, $pop5, $pop4
9700 ; NO-SIMD128-NEXT: i32.store16 4($0), $pop6
9701 ; NO-SIMD128-NEXT: i32.const $push44=, 255
9702 ; NO-SIMD128-NEXT: i32.and $push8=, $2, $pop44
9703 ; NO-SIMD128-NEXT: i32.const $push43=, 255
9704 ; NO-SIMD128-NEXT: i32.and $push7=, $18, $pop43
9705 ; NO-SIMD128-NEXT: i32.mul $push9=, $pop8, $pop7
9706 ; NO-SIMD128-NEXT: i32.store16 2($0), $pop9
9707 ; NO-SIMD128-NEXT: i32.const $push42=, 255
9708 ; NO-SIMD128-NEXT: i32.and $push11=, $1, $pop42
9709 ; NO-SIMD128-NEXT: i32.const $push41=, 255
9710 ; NO-SIMD128-NEXT: i32.and $push10=, $17, $pop41
9711 ; NO-SIMD128-NEXT: i32.mul $push12=, $pop11, $pop10
9712 ; NO-SIMD128-NEXT: i32.store16 0($0), $pop12
9713 ; NO-SIMD128-NEXT: i32.const $push16=, 14
9714 ; NO-SIMD128-NEXT: i32.add $push17=, $0, $pop16
9715 ; NO-SIMD128-NEXT: i32.const $push40=, 255
9716 ; NO-SIMD128-NEXT: i32.and $push14=, $8, $pop40
9717 ; NO-SIMD128-NEXT: i32.const $push39=, 255
9718 ; NO-SIMD128-NEXT: i32.and $push13=, $24, $pop39
9719 ; NO-SIMD128-NEXT: i32.mul $push15=, $pop14, $pop13
9720 ; NO-SIMD128-NEXT: i32.store16 0($pop17), $pop15
9721 ; NO-SIMD128-NEXT: i32.const $push21=, 12
9722 ; NO-SIMD128-NEXT: i32.add $push22=, $0, $pop21
9723 ; NO-SIMD128-NEXT: i32.const $push38=, 255
9724 ; NO-SIMD128-NEXT: i32.and $push19=, $7, $pop38
9725 ; NO-SIMD128-NEXT: i32.const $push37=, 255
9726 ; NO-SIMD128-NEXT: i32.and $push18=, $23, $pop37
9727 ; NO-SIMD128-NEXT: i32.mul $push20=, $pop19, $pop18
9728 ; NO-SIMD128-NEXT: i32.store16 0($pop22), $pop20
9729 ; NO-SIMD128-NEXT: i32.const $push26=, 10
9730 ; NO-SIMD128-NEXT: i32.add $push27=, $0, $pop26
9731 ; NO-SIMD128-NEXT: i32.const $push36=, 255
9732 ; NO-SIMD128-NEXT: i32.and $push24=, $6, $pop36
9733 ; NO-SIMD128-NEXT: i32.const $push35=, 255
9734 ; NO-SIMD128-NEXT: i32.and $push23=, $22, $pop35
9735 ; NO-SIMD128-NEXT: i32.mul $push25=, $pop24, $pop23
9736 ; NO-SIMD128-NEXT: i32.store16 0($pop27), $pop25
9737 ; NO-SIMD128-NEXT: i32.const $push31=, 6
9738 ; NO-SIMD128-NEXT: i32.add $push32=, $0, $pop31
9739 ; NO-SIMD128-NEXT: i32.const $push34=, 255
9740 ; NO-SIMD128-NEXT: i32.and $push29=, $4, $pop34
9741 ; NO-SIMD128-NEXT: i32.const $push33=, 255
9742 ; NO-SIMD128-NEXT: i32.and $push28=, $20, $pop33
9743 ; NO-SIMD128-NEXT: i32.mul $push30=, $pop29, $pop28
9744 ; NO-SIMD128-NEXT: i32.store16 0($pop32), $pop30
9745 ; NO-SIMD128-NEXT: return
9747 ; NO-SIMD128-FAST-LABEL: extmul_low_u_v8i16:
9748 ; NO-SIMD128-FAST: .functype extmul_low_u_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9749 ; NO-SIMD128-FAST-NEXT: # %bb.0:
9750 ; NO-SIMD128-FAST-NEXT: i32.const $push0=, 255
9751 ; NO-SIMD128-FAST-NEXT: i32.and $push2=, $1, $pop0
9752 ; NO-SIMD128-FAST-NEXT: i32.const $push47=, 255
9753 ; NO-SIMD128-FAST-NEXT: i32.and $push1=, $17, $pop47
9754 ; NO-SIMD128-FAST-NEXT: i32.mul $push3=, $pop2, $pop1
9755 ; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop3
9756 ; NO-SIMD128-FAST-NEXT: i32.const $push46=, 255
9757 ; NO-SIMD128-FAST-NEXT: i32.and $push5=, $2, $pop46
9758 ; NO-SIMD128-FAST-NEXT: i32.const $push45=, 255
9759 ; NO-SIMD128-FAST-NEXT: i32.and $push4=, $18, $pop45
9760 ; NO-SIMD128-FAST-NEXT: i32.mul $push6=, $pop5, $pop4
9761 ; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop6
9762 ; NO-SIMD128-FAST-NEXT: i32.const $push44=, 255
9763 ; NO-SIMD128-FAST-NEXT: i32.and $push8=, $3, $pop44
9764 ; NO-SIMD128-FAST-NEXT: i32.const $push43=, 255
9765 ; NO-SIMD128-FAST-NEXT: i32.and $push7=, $19, $pop43
9766 ; NO-SIMD128-FAST-NEXT: i32.mul $push9=, $pop8, $pop7
9767 ; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop9
9768 ; NO-SIMD128-FAST-NEXT: i32.const $push13=, 6
9769 ; NO-SIMD128-FAST-NEXT: i32.add $push14=, $0, $pop13
9770 ; NO-SIMD128-FAST-NEXT: i32.const $push42=, 255
9771 ; NO-SIMD128-FAST-NEXT: i32.and $push11=, $4, $pop42
9772 ; NO-SIMD128-FAST-NEXT: i32.const $push41=, 255
9773 ; NO-SIMD128-FAST-NEXT: i32.and $push10=, $20, $pop41
9774 ; NO-SIMD128-FAST-NEXT: i32.mul $push12=, $pop11, $pop10
9775 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop14), $pop12
9776 ; NO-SIMD128-FAST-NEXT: i32.const $push40=, 255
9777 ; NO-SIMD128-FAST-NEXT: i32.and $push16=, $5, $pop40
9778 ; NO-SIMD128-FAST-NEXT: i32.const $push39=, 255
9779 ; NO-SIMD128-FAST-NEXT: i32.and $push15=, $21, $pop39
9780 ; NO-SIMD128-FAST-NEXT: i32.mul $push17=, $pop16, $pop15
9781 ; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop17
9782 ; NO-SIMD128-FAST-NEXT: i32.const $push21=, 10
9783 ; NO-SIMD128-FAST-NEXT: i32.add $push22=, $0, $pop21
9784 ; NO-SIMD128-FAST-NEXT: i32.const $push38=, 255
9785 ; NO-SIMD128-FAST-NEXT: i32.and $push19=, $6, $pop38
9786 ; NO-SIMD128-FAST-NEXT: i32.const $push37=, 255
9787 ; NO-SIMD128-FAST-NEXT: i32.and $push18=, $22, $pop37
9788 ; NO-SIMD128-FAST-NEXT: i32.mul $push20=, $pop19, $pop18
9789 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop22), $pop20
9790 ; NO-SIMD128-FAST-NEXT: i32.const $push26=, 12
9791 ; NO-SIMD128-FAST-NEXT: i32.add $push27=, $0, $pop26
9792 ; NO-SIMD128-FAST-NEXT: i32.const $push36=, 255
9793 ; NO-SIMD128-FAST-NEXT: i32.and $push24=, $7, $pop36
9794 ; NO-SIMD128-FAST-NEXT: i32.const $push35=, 255
9795 ; NO-SIMD128-FAST-NEXT: i32.and $push23=, $23, $pop35
9796 ; NO-SIMD128-FAST-NEXT: i32.mul $push25=, $pop24, $pop23
9797 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop27), $pop25
9798 ; NO-SIMD128-FAST-NEXT: i32.const $push31=, 14
9799 ; NO-SIMD128-FAST-NEXT: i32.add $push32=, $0, $pop31
9800 ; NO-SIMD128-FAST-NEXT: i32.const $push34=, 255
9801 ; NO-SIMD128-FAST-NEXT: i32.and $push29=, $8, $pop34
9802 ; NO-SIMD128-FAST-NEXT: i32.const $push33=, 255
9803 ; NO-SIMD128-FAST-NEXT: i32.and $push28=, $24, $pop33
9804 ; NO-SIMD128-FAST-NEXT: i32.mul $push30=, $pop29, $pop28
9805 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop32), $pop30
9806 ; NO-SIMD128-FAST-NEXT: return
9807 %low1 = shufflevector <16 x i8> %v1, <16 x i8> undef,
9808 <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
9809 %low2 = shufflevector <16 x i8> %v2, <16 x i8> undef,
9810 <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
9811 %extended1 = zext <8 x i8> %low1 to <8 x i16>
9812 %extended2 = zext <8 x i8> %low2 to <8 x i16>
9813 %a = mul <8 x i16> %extended1, %extended2
9817 define <8 x i16> @extmul_high_u_v8i16(<16 x i8> %v1, <16 x i8> %v2) {
9818 ; SIMD128-LABEL: extmul_high_u_v8i16:
9819 ; SIMD128: .functype extmul_high_u_v8i16 (v128, v128) -> (v128)
9820 ; SIMD128-NEXT: # %bb.0:
9821 ; SIMD128-NEXT: i16x8.extmul_high_i8x16_u $push0=, $0, $1
9822 ; SIMD128-NEXT: return $pop0
9824 ; SIMD128-FAST-LABEL: extmul_high_u_v8i16:
9825 ; SIMD128-FAST: .functype extmul_high_u_v8i16 (v128, v128) -> (v128)
9826 ; SIMD128-FAST-NEXT: # %bb.0:
9827 ; SIMD128-FAST-NEXT: i16x8.extend_high_i8x16_u $push0=, $0
9828 ; SIMD128-FAST-NEXT: i16x8.extend_high_i8x16_u $push1=, $1
9829 ; SIMD128-FAST-NEXT: i16x8.mul $push2=, $pop0, $pop1
9830 ; SIMD128-FAST-NEXT: return $pop2
9832 ; NO-SIMD128-LABEL: extmul_high_u_v8i16:
9833 ; NO-SIMD128: .functype extmul_high_u_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9834 ; NO-SIMD128-NEXT: # %bb.0:
9835 ; NO-SIMD128-NEXT: i32.const $push0=, 255
9836 ; NO-SIMD128-NEXT: i32.and $push2=, $13, $pop0
9837 ; NO-SIMD128-NEXT: i32.const $push47=, 255
9838 ; NO-SIMD128-NEXT: i32.and $push1=, $29, $pop47
9839 ; NO-SIMD128-NEXT: i32.mul $push3=, $pop2, $pop1
9840 ; NO-SIMD128-NEXT: i32.store16 8($0), $pop3
9841 ; NO-SIMD128-NEXT: i32.const $push46=, 255
9842 ; NO-SIMD128-NEXT: i32.and $push5=, $11, $pop46
9843 ; NO-SIMD128-NEXT: i32.const $push45=, 255
9844 ; NO-SIMD128-NEXT: i32.and $push4=, $27, $pop45
9845 ; NO-SIMD128-NEXT: i32.mul $push6=, $pop5, $pop4
9846 ; NO-SIMD128-NEXT: i32.store16 4($0), $pop6
9847 ; NO-SIMD128-NEXT: i32.const $push44=, 255
9848 ; NO-SIMD128-NEXT: i32.and $push8=, $10, $pop44
9849 ; NO-SIMD128-NEXT: i32.const $push43=, 255
9850 ; NO-SIMD128-NEXT: i32.and $push7=, $26, $pop43
9851 ; NO-SIMD128-NEXT: i32.mul $push9=, $pop8, $pop7
9852 ; NO-SIMD128-NEXT: i32.store16 2($0), $pop9
9853 ; NO-SIMD128-NEXT: i32.const $push42=, 255
9854 ; NO-SIMD128-NEXT: i32.and $push11=, $9, $pop42
9855 ; NO-SIMD128-NEXT: i32.const $push41=, 255
9856 ; NO-SIMD128-NEXT: i32.and $push10=, $25, $pop41
9857 ; NO-SIMD128-NEXT: i32.mul $push12=, $pop11, $pop10
9858 ; NO-SIMD128-NEXT: i32.store16 0($0), $pop12
9859 ; NO-SIMD128-NEXT: i32.const $push16=, 14
9860 ; NO-SIMD128-NEXT: i32.add $push17=, $0, $pop16
9861 ; NO-SIMD128-NEXT: i32.const $push40=, 255
9862 ; NO-SIMD128-NEXT: i32.and $push14=, $16, $pop40
9863 ; NO-SIMD128-NEXT: i32.const $push39=, 255
9864 ; NO-SIMD128-NEXT: i32.and $push13=, $32, $pop39
9865 ; NO-SIMD128-NEXT: i32.mul $push15=, $pop14, $pop13
9866 ; NO-SIMD128-NEXT: i32.store16 0($pop17), $pop15
9867 ; NO-SIMD128-NEXT: i32.const $push21=, 12
9868 ; NO-SIMD128-NEXT: i32.add $push22=, $0, $pop21
9869 ; NO-SIMD128-NEXT: i32.const $push38=, 255
9870 ; NO-SIMD128-NEXT: i32.and $push19=, $15, $pop38
9871 ; NO-SIMD128-NEXT: i32.const $push37=, 255
9872 ; NO-SIMD128-NEXT: i32.and $push18=, $31, $pop37
9873 ; NO-SIMD128-NEXT: i32.mul $push20=, $pop19, $pop18
9874 ; NO-SIMD128-NEXT: i32.store16 0($pop22), $pop20
9875 ; NO-SIMD128-NEXT: i32.const $push26=, 10
9876 ; NO-SIMD128-NEXT: i32.add $push27=, $0, $pop26
9877 ; NO-SIMD128-NEXT: i32.const $push36=, 255
9878 ; NO-SIMD128-NEXT: i32.and $push24=, $14, $pop36
9879 ; NO-SIMD128-NEXT: i32.const $push35=, 255
9880 ; NO-SIMD128-NEXT: i32.and $push23=, $30, $pop35
9881 ; NO-SIMD128-NEXT: i32.mul $push25=, $pop24, $pop23
9882 ; NO-SIMD128-NEXT: i32.store16 0($pop27), $pop25
9883 ; NO-SIMD128-NEXT: i32.const $push31=, 6
9884 ; NO-SIMD128-NEXT: i32.add $push32=, $0, $pop31
9885 ; NO-SIMD128-NEXT: i32.const $push34=, 255
9886 ; NO-SIMD128-NEXT: i32.and $push29=, $12, $pop34
9887 ; NO-SIMD128-NEXT: i32.const $push33=, 255
9888 ; NO-SIMD128-NEXT: i32.and $push28=, $28, $pop33
9889 ; NO-SIMD128-NEXT: i32.mul $push30=, $pop29, $pop28
9890 ; NO-SIMD128-NEXT: i32.store16 0($pop32), $pop30
9891 ; NO-SIMD128-NEXT: return
9893 ; NO-SIMD128-FAST-LABEL: extmul_high_u_v8i16:
9894 ; NO-SIMD128-FAST: .functype extmul_high_u_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9895 ; NO-SIMD128-FAST-NEXT: # %bb.0:
9896 ; NO-SIMD128-FAST-NEXT: i32.const $push0=, 255
9897 ; NO-SIMD128-FAST-NEXT: i32.and $push2=, $9, $pop0
9898 ; NO-SIMD128-FAST-NEXT: i32.const $push47=, 255
9899 ; NO-SIMD128-FAST-NEXT: i32.and $push1=, $25, $pop47
9900 ; NO-SIMD128-FAST-NEXT: i32.mul $push3=, $pop2, $pop1
9901 ; NO-SIMD128-FAST-NEXT: i32.store16 0($0), $pop3
9902 ; NO-SIMD128-FAST-NEXT: i32.const $push46=, 255
9903 ; NO-SIMD128-FAST-NEXT: i32.and $push5=, $10, $pop46
9904 ; NO-SIMD128-FAST-NEXT: i32.const $push45=, 255
9905 ; NO-SIMD128-FAST-NEXT: i32.and $push4=, $26, $pop45
9906 ; NO-SIMD128-FAST-NEXT: i32.mul $push6=, $pop5, $pop4
9907 ; NO-SIMD128-FAST-NEXT: i32.store16 2($0), $pop6
9908 ; NO-SIMD128-FAST-NEXT: i32.const $push44=, 255
9909 ; NO-SIMD128-FAST-NEXT: i32.and $push8=, $11, $pop44
9910 ; NO-SIMD128-FAST-NEXT: i32.const $push43=, 255
9911 ; NO-SIMD128-FAST-NEXT: i32.and $push7=, $27, $pop43
9912 ; NO-SIMD128-FAST-NEXT: i32.mul $push9=, $pop8, $pop7
9913 ; NO-SIMD128-FAST-NEXT: i32.store16 4($0), $pop9
9914 ; NO-SIMD128-FAST-NEXT: i32.const $push13=, 6
9915 ; NO-SIMD128-FAST-NEXT: i32.add $push14=, $0, $pop13
9916 ; NO-SIMD128-FAST-NEXT: i32.const $push42=, 255
9917 ; NO-SIMD128-FAST-NEXT: i32.and $push11=, $12, $pop42
9918 ; NO-SIMD128-FAST-NEXT: i32.const $push41=, 255
9919 ; NO-SIMD128-FAST-NEXT: i32.and $push10=, $28, $pop41
9920 ; NO-SIMD128-FAST-NEXT: i32.mul $push12=, $pop11, $pop10
9921 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop14), $pop12
9922 ; NO-SIMD128-FAST-NEXT: i32.const $push40=, 255
9923 ; NO-SIMD128-FAST-NEXT: i32.and $push16=, $13, $pop40
9924 ; NO-SIMD128-FAST-NEXT: i32.const $push39=, 255
9925 ; NO-SIMD128-FAST-NEXT: i32.and $push15=, $29, $pop39
9926 ; NO-SIMD128-FAST-NEXT: i32.mul $push17=, $pop16, $pop15
9927 ; NO-SIMD128-FAST-NEXT: i32.store16 8($0), $pop17
9928 ; NO-SIMD128-FAST-NEXT: i32.const $push21=, 10
9929 ; NO-SIMD128-FAST-NEXT: i32.add $push22=, $0, $pop21
9930 ; NO-SIMD128-FAST-NEXT: i32.const $push38=, 255
9931 ; NO-SIMD128-FAST-NEXT: i32.and $push19=, $14, $pop38
9932 ; NO-SIMD128-FAST-NEXT: i32.const $push37=, 255
9933 ; NO-SIMD128-FAST-NEXT: i32.and $push18=, $30, $pop37
9934 ; NO-SIMD128-FAST-NEXT: i32.mul $push20=, $pop19, $pop18
9935 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop22), $pop20
9936 ; NO-SIMD128-FAST-NEXT: i32.const $push26=, 12
9937 ; NO-SIMD128-FAST-NEXT: i32.add $push27=, $0, $pop26
9938 ; NO-SIMD128-FAST-NEXT: i32.const $push36=, 255
9939 ; NO-SIMD128-FAST-NEXT: i32.and $push24=, $15, $pop36
9940 ; NO-SIMD128-FAST-NEXT: i32.const $push35=, 255
9941 ; NO-SIMD128-FAST-NEXT: i32.and $push23=, $31, $pop35
9942 ; NO-SIMD128-FAST-NEXT: i32.mul $push25=, $pop24, $pop23
9943 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop27), $pop25
9944 ; NO-SIMD128-FAST-NEXT: i32.const $push31=, 14
9945 ; NO-SIMD128-FAST-NEXT: i32.add $push32=, $0, $pop31
9946 ; NO-SIMD128-FAST-NEXT: i32.const $push34=, 255
9947 ; NO-SIMD128-FAST-NEXT: i32.and $push29=, $16, $pop34
9948 ; NO-SIMD128-FAST-NEXT: i32.const $push33=, 255
9949 ; NO-SIMD128-FAST-NEXT: i32.and $push28=, $32, $pop33
9950 ; NO-SIMD128-FAST-NEXT: i32.mul $push30=, $pop29, $pop28
9951 ; NO-SIMD128-FAST-NEXT: i32.store16 0($pop32), $pop30
9952 ; NO-SIMD128-FAST-NEXT: return
9953 %high1 = shufflevector <16 x i8> %v1, <16 x i8> undef,
9954 <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
9955 %high2 = shufflevector <16 x i8> %v2, <16 x i8> undef,
9956 <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
9957 %extended1 = zext <8 x i8> %high1 to <8 x i16>
9958 %extended2 = zext <8 x i8> %high2 to <8 x i16>
9959 %a = mul <8 x i16> %extended1, %extended2
9963 ; ==============================================================================
9965 ; ==============================================================================
9966 define <4 x i32> @add_v4i32(<4 x i32> %x, <4 x i32> %y) {
9967 ; SIMD128-LABEL: add_v4i32:
9968 ; SIMD128: .functype add_v4i32 (v128, v128) -> (v128)
9969 ; SIMD128-NEXT: # %bb.0:
9970 ; SIMD128-NEXT: i32x4.add $push0=, $0, $1
9971 ; SIMD128-NEXT: return $pop0
9973 ; SIMD128-FAST-LABEL: add_v4i32:
9974 ; SIMD128-FAST: .functype add_v4i32 (v128, v128) -> (v128)
9975 ; SIMD128-FAST-NEXT: # %bb.0:
9976 ; SIMD128-FAST-NEXT: i32x4.add $push0=, $0, $1
9977 ; SIMD128-FAST-NEXT: return $pop0
9979 ; NO-SIMD128-LABEL: add_v4i32:
9980 ; NO-SIMD128: .functype add_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9981 ; NO-SIMD128-NEXT: # %bb.0:
9982 ; NO-SIMD128-NEXT: i32.add $push0=, $3, $7
9983 ; NO-SIMD128-NEXT: i32.store 8($0), $pop0
9984 ; NO-SIMD128-NEXT: i32.add $push1=, $2, $6
9985 ; NO-SIMD128-NEXT: i32.store 4($0), $pop1
9986 ; NO-SIMD128-NEXT: i32.add $push2=, $1, $5
9987 ; NO-SIMD128-NEXT: i32.store 0($0), $pop2
9988 ; NO-SIMD128-NEXT: i32.const $push4=, 12
9989 ; NO-SIMD128-NEXT: i32.add $push5=, $0, $pop4
9990 ; NO-SIMD128-NEXT: i32.add $push3=, $4, $8
9991 ; NO-SIMD128-NEXT: i32.store 0($pop5), $pop3
9992 ; NO-SIMD128-NEXT: return
9994 ; NO-SIMD128-FAST-LABEL: add_v4i32:
9995 ; NO-SIMD128-FAST: .functype add_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9996 ; NO-SIMD128-FAST-NEXT: # %bb.0:
9997 ; NO-SIMD128-FAST-NEXT: i32.add $push0=, $1, $5
9998 ; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop0
9999 ; NO-SIMD128-FAST-NEXT: i32.add $push1=, $2, $6
10000 ; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop1
10001 ; NO-SIMD128-FAST-NEXT: i32.add $push2=, $3, $7
10002 ; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop2
10003 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 12
10004 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
10005 ; NO-SIMD128-FAST-NEXT: i32.add $push5=, $4, $8
10006 ; NO-SIMD128-FAST-NEXT: i32.store 0($pop4), $pop5
10007 ; NO-SIMD128-FAST-NEXT: return
10008 %a = add <4 x i32> %x, %y
10012 define <4 x i32> @sub_v4i32(<4 x i32> %x, <4 x i32> %y) {
10013 ; SIMD128-LABEL: sub_v4i32:
10014 ; SIMD128: .functype sub_v4i32 (v128, v128) -> (v128)
10015 ; SIMD128-NEXT: # %bb.0:
10016 ; SIMD128-NEXT: i32x4.sub $push0=, $0, $1
10017 ; SIMD128-NEXT: return $pop0
10019 ; SIMD128-FAST-LABEL: sub_v4i32:
10020 ; SIMD128-FAST: .functype sub_v4i32 (v128, v128) -> (v128)
10021 ; SIMD128-FAST-NEXT: # %bb.0:
10022 ; SIMD128-FAST-NEXT: i32x4.sub $push0=, $0, $1
10023 ; SIMD128-FAST-NEXT: return $pop0
10025 ; NO-SIMD128-LABEL: sub_v4i32:
10026 ; NO-SIMD128: .functype sub_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
10027 ; NO-SIMD128-NEXT: # %bb.0:
10028 ; NO-SIMD128-NEXT: i32.sub $push0=, $3, $7
10029 ; NO-SIMD128-NEXT: i32.store 8($0), $pop0
10030 ; NO-SIMD128-NEXT: i32.sub $push1=, $2, $6
10031 ; NO-SIMD128-NEXT: i32.store 4($0), $pop1
10032 ; NO-SIMD128-NEXT: i32.sub $push2=, $1, $5
10033 ; NO-SIMD128-NEXT: i32.store 0($0), $pop2
10034 ; NO-SIMD128-NEXT: i32.const $push4=, 12
10035 ; NO-SIMD128-NEXT: i32.add $push5=, $0, $pop4
10036 ; NO-SIMD128-NEXT: i32.sub $push3=, $4, $8
10037 ; NO-SIMD128-NEXT: i32.store 0($pop5), $pop3
10038 ; NO-SIMD128-NEXT: return
10040 ; NO-SIMD128-FAST-LABEL: sub_v4i32:
10041 ; NO-SIMD128-FAST: .functype sub_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
10042 ; NO-SIMD128-FAST-NEXT: # %bb.0:
10043 ; NO-SIMD128-FAST-NEXT: i32.sub $push0=, $1, $5
10044 ; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop0
10045 ; NO-SIMD128-FAST-NEXT: i32.sub $push1=, $2, $6
10046 ; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop1
10047 ; NO-SIMD128-FAST-NEXT: i32.sub $push2=, $3, $7
10048 ; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop2
10049 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 12
10050 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
10051 ; NO-SIMD128-FAST-NEXT: i32.sub $push5=, $4, $8
10052 ; NO-SIMD128-FAST-NEXT: i32.store 0($pop4), $pop5
10053 ; NO-SIMD128-FAST-NEXT: return
10054 %a = sub <4 x i32> %x, %y
10058 define <4 x i32> @mul_v4i32(<4 x i32> %x, <4 x i32> %y) {
10059 ; SIMD128-LABEL: mul_v4i32:
10060 ; SIMD128: .functype mul_v4i32 (v128, v128) -> (v128)
10061 ; SIMD128-NEXT: # %bb.0:
10062 ; SIMD128-NEXT: i32x4.mul $push0=, $0, $1
10063 ; SIMD128-NEXT: return $pop0
10065 ; SIMD128-FAST-LABEL: mul_v4i32:
10066 ; SIMD128-FAST: .functype mul_v4i32 (v128, v128) -> (v128)
10067 ; SIMD128-FAST-NEXT: # %bb.0:
10068 ; SIMD128-FAST-NEXT: i32x4.mul $push0=, $0, $1
10069 ; SIMD128-FAST-NEXT: return $pop0
10071 ; NO-SIMD128-LABEL: mul_v4i32:
10072 ; NO-SIMD128: .functype mul_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
10073 ; NO-SIMD128-NEXT: # %bb.0:
10074 ; NO-SIMD128-NEXT: i32.mul $push0=, $3, $7
10075 ; NO-SIMD128-NEXT: i32.store 8($0), $pop0
10076 ; NO-SIMD128-NEXT: i32.mul $push1=, $2, $6
10077 ; NO-SIMD128-NEXT: i32.store 4($0), $pop1
10078 ; NO-SIMD128-NEXT: i32.mul $push2=, $1, $5
10079 ; NO-SIMD128-NEXT: i32.store 0($0), $pop2
10080 ; NO-SIMD128-NEXT: i32.const $push4=, 12
10081 ; NO-SIMD128-NEXT: i32.add $push5=, $0, $pop4
10082 ; NO-SIMD128-NEXT: i32.mul $push3=, $4, $8
10083 ; NO-SIMD128-NEXT: i32.store 0($pop5), $pop3
10084 ; NO-SIMD128-NEXT: return
10086 ; NO-SIMD128-FAST-LABEL: mul_v4i32:
10087 ; NO-SIMD128-FAST: .functype mul_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
10088 ; NO-SIMD128-FAST-NEXT: # %bb.0:
10089 ; NO-SIMD128-FAST-NEXT: i32.mul $push0=, $1, $5
10090 ; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop0
10091 ; NO-SIMD128-FAST-NEXT: i32.mul $push1=, $2, $6
10092 ; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop1
10093 ; NO-SIMD128-FAST-NEXT: i32.mul $push2=, $3, $7
10094 ; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop2
10095 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 12
10096 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
10097 ; NO-SIMD128-FAST-NEXT: i32.mul $push5=, $4, $8
10098 ; NO-SIMD128-FAST-NEXT: i32.store 0($pop4), $pop5
10099 ; NO-SIMD128-FAST-NEXT: return
10100 %a = mul <4 x i32> %x, %y
10104 define <4 x i32> @min_s_v4i32(<4 x i32> %x, <4 x i32> %y) {
10105 ; SIMD128-LABEL: min_s_v4i32:
10106 ; SIMD128: .functype min_s_v4i32 (v128, v128) -> (v128)
10107 ; SIMD128-NEXT: # %bb.0:
10108 ; SIMD128-NEXT: i32x4.min_s $push0=, $0, $1
10109 ; SIMD128-NEXT: return $pop0
10111 ; SIMD128-FAST-LABEL: min_s_v4i32:
10112 ; SIMD128-FAST: .functype min_s_v4i32 (v128, v128) -> (v128)
10113 ; SIMD128-FAST-NEXT: # %bb.0:
10114 ; SIMD128-FAST-NEXT: i32x4.min_s $push0=, $0, $1
10115 ; SIMD128-FAST-NEXT: return $pop0
10117 ; NO-SIMD128-LABEL: min_s_v4i32:
10118 ; NO-SIMD128: .functype min_s_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
10119 ; NO-SIMD128-NEXT: # %bb.0:
10120 ; NO-SIMD128-NEXT: i32.lt_s $push0=, $3, $7
10121 ; NO-SIMD128-NEXT: i32.select $push1=, $3, $7, $pop0
10122 ; NO-SIMD128-NEXT: i32.store 8($0), $pop1
10123 ; NO-SIMD128-NEXT: i32.lt_s $push2=, $2, $6
10124 ; NO-SIMD128-NEXT: i32.select $push3=, $2, $6, $pop2
10125 ; NO-SIMD128-NEXT: i32.store 4($0), $pop3
10126 ; NO-SIMD128-NEXT: i32.lt_s $push4=, $1, $5
10127 ; NO-SIMD128-NEXT: i32.select $push5=, $1, $5, $pop4
10128 ; NO-SIMD128-NEXT: i32.store 0($0), $pop5
10129 ; NO-SIMD128-NEXT: i32.const $push8=, 12
10130 ; NO-SIMD128-NEXT: i32.add $push9=, $0, $pop8
10131 ; NO-SIMD128-NEXT: i32.lt_s $push6=, $4, $8
10132 ; NO-SIMD128-NEXT: i32.select $push7=, $4, $8, $pop6
10133 ; NO-SIMD128-NEXT: i32.store 0($pop9), $pop7
10134 ; NO-SIMD128-NEXT: return
10136 ; NO-SIMD128-FAST-LABEL: min_s_v4i32:
10137 ; NO-SIMD128-FAST: .functype min_s_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
10138 ; NO-SIMD128-FAST-NEXT: # %bb.0:
10139 ; NO-SIMD128-FAST-NEXT: i32.lt_s $push0=, $1, $5
10140 ; NO-SIMD128-FAST-NEXT: i32.select $push1=, $1, $5, $pop0
10141 ; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop1
10142 ; NO-SIMD128-FAST-NEXT: i32.lt_s $push2=, $2, $6
10143 ; NO-SIMD128-FAST-NEXT: i32.select $push3=, $2, $6, $pop2
10144 ; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop3
10145 ; NO-SIMD128-FAST-NEXT: i32.lt_s $push4=, $3, $7
10146 ; NO-SIMD128-FAST-NEXT: i32.select $push5=, $3, $7, $pop4
10147 ; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop5
10148 ; NO-SIMD128-FAST-NEXT: i32.const $push8=, 12
10149 ; NO-SIMD128-FAST-NEXT: i32.add $push9=, $0, $pop8
10150 ; NO-SIMD128-FAST-NEXT: i32.lt_s $push6=, $4, $8
10151 ; NO-SIMD128-FAST-NEXT: i32.select $push7=, $4, $8, $pop6
10152 ; NO-SIMD128-FAST-NEXT: i32.store 0($pop9), $pop7
10153 ; NO-SIMD128-FAST-NEXT: return
10154 %c = icmp slt <4 x i32> %x, %y
10155 %a = select <4 x i1> %c, <4 x i32> %x, <4 x i32> %y
10159 define <4 x i32> @min_u_v4i32(<4 x i32> %x, <4 x i32> %y) {
10160 ; SIMD128-LABEL: min_u_v4i32:
10161 ; SIMD128: .functype min_u_v4i32 (v128, v128) -> (v128)
10162 ; SIMD128-NEXT: # %bb.0:
10163 ; SIMD128-NEXT: i32x4.min_u $push0=, $0, $1
10164 ; SIMD128-NEXT: return $pop0
10166 ; SIMD128-FAST-LABEL: min_u_v4i32:
10167 ; SIMD128-FAST: .functype min_u_v4i32 (v128, v128) -> (v128)
10168 ; SIMD128-FAST-NEXT: # %bb.0:
10169 ; SIMD128-FAST-NEXT: i32x4.min_u $push0=, $0, $1
10170 ; SIMD128-FAST-NEXT: return $pop0
10172 ; NO-SIMD128-LABEL: min_u_v4i32:
10173 ; NO-SIMD128: .functype min_u_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
10174 ; NO-SIMD128-NEXT: # %bb.0:
10175 ; NO-SIMD128-NEXT: i32.lt_u $push0=, $3, $7
10176 ; NO-SIMD128-NEXT: i32.select $push1=, $3, $7, $pop0
10177 ; NO-SIMD128-NEXT: i32.store 8($0), $pop1
10178 ; NO-SIMD128-NEXT: i32.lt_u $push2=, $2, $6
10179 ; NO-SIMD128-NEXT: i32.select $push3=, $2, $6, $pop2
10180 ; NO-SIMD128-NEXT: i32.store 4($0), $pop3
10181 ; NO-SIMD128-NEXT: i32.lt_u $push4=, $1, $5
10182 ; NO-SIMD128-NEXT: i32.select $push5=, $1, $5, $pop4
10183 ; NO-SIMD128-NEXT: i32.store 0($0), $pop5
10184 ; NO-SIMD128-NEXT: i32.const $push8=, 12
10185 ; NO-SIMD128-NEXT: i32.add $push9=, $0, $pop8
10186 ; NO-SIMD128-NEXT: i32.lt_u $push6=, $4, $8
10187 ; NO-SIMD128-NEXT: i32.select $push7=, $4, $8, $pop6
10188 ; NO-SIMD128-NEXT: i32.store 0($pop9), $pop7
10189 ; NO-SIMD128-NEXT: return
10191 ; NO-SIMD128-FAST-LABEL: min_u_v4i32:
10192 ; NO-SIMD128-FAST: .functype min_u_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
10193 ; NO-SIMD128-FAST-NEXT: # %bb.0:
10194 ; NO-SIMD128-FAST-NEXT: i32.lt_u $push0=, $1, $5
10195 ; NO-SIMD128-FAST-NEXT: i32.select $push1=, $1, $5, $pop0
10196 ; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop1
10197 ; NO-SIMD128-FAST-NEXT: i32.lt_u $push2=, $2, $6
10198 ; NO-SIMD128-FAST-NEXT: i32.select $push3=, $2, $6, $pop2
10199 ; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop3
10200 ; NO-SIMD128-FAST-NEXT: i32.lt_u $push4=, $3, $7
10201 ; NO-SIMD128-FAST-NEXT: i32.select $push5=, $3, $7, $pop4
10202 ; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop5
10203 ; NO-SIMD128-FAST-NEXT: i32.const $push8=, 12
10204 ; NO-SIMD128-FAST-NEXT: i32.add $push9=, $0, $pop8
10205 ; NO-SIMD128-FAST-NEXT: i32.lt_u $push6=, $4, $8
10206 ; NO-SIMD128-FAST-NEXT: i32.select $push7=, $4, $8, $pop6
10207 ; NO-SIMD128-FAST-NEXT: i32.store 0($pop9), $pop7
10208 ; NO-SIMD128-FAST-NEXT: return
10209 %c = icmp ult <4 x i32> %x, %y
10210 %a = select <4 x i1> %c, <4 x i32> %x, <4 x i32> %y
10214 define <4 x i32> @max_s_v4i32(<4 x i32> %x, <4 x i32> %y) {
10215 ; SIMD128-LABEL: max_s_v4i32:
10216 ; SIMD128: .functype max_s_v4i32 (v128, v128) -> (v128)
10217 ; SIMD128-NEXT: # %bb.0:
10218 ; SIMD128-NEXT: i32x4.max_s $push0=, $0, $1
10219 ; SIMD128-NEXT: return $pop0
10221 ; SIMD128-FAST-LABEL: max_s_v4i32:
10222 ; SIMD128-FAST: .functype max_s_v4i32 (v128, v128) -> (v128)
10223 ; SIMD128-FAST-NEXT: # %bb.0:
10224 ; SIMD128-FAST-NEXT: i32x4.max_s $push0=, $0, $1
10225 ; SIMD128-FAST-NEXT: return $pop0
10227 ; NO-SIMD128-LABEL: max_s_v4i32:
10228 ; NO-SIMD128: .functype max_s_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
10229 ; NO-SIMD128-NEXT: # %bb.0:
10230 ; NO-SIMD128-NEXT: i32.gt_s $push0=, $3, $7
10231 ; NO-SIMD128-NEXT: i32.select $push1=, $3, $7, $pop0
10232 ; NO-SIMD128-NEXT: i32.store 8($0), $pop1
10233 ; NO-SIMD128-NEXT: i32.gt_s $push2=, $2, $6
10234 ; NO-SIMD128-NEXT: i32.select $push3=, $2, $6, $pop2
10235 ; NO-SIMD128-NEXT: i32.store 4($0), $pop3
10236 ; NO-SIMD128-NEXT: i32.gt_s $push4=, $1, $5
10237 ; NO-SIMD128-NEXT: i32.select $push5=, $1, $5, $pop4
10238 ; NO-SIMD128-NEXT: i32.store 0($0), $pop5
10239 ; NO-SIMD128-NEXT: i32.const $push8=, 12
10240 ; NO-SIMD128-NEXT: i32.add $push9=, $0, $pop8
10241 ; NO-SIMD128-NEXT: i32.gt_s $push6=, $4, $8
10242 ; NO-SIMD128-NEXT: i32.select $push7=, $4, $8, $pop6
10243 ; NO-SIMD128-NEXT: i32.store 0($pop9), $pop7
10244 ; NO-SIMD128-NEXT: return
10246 ; NO-SIMD128-FAST-LABEL: max_s_v4i32:
10247 ; NO-SIMD128-FAST: .functype max_s_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
10248 ; NO-SIMD128-FAST-NEXT: # %bb.0:
10249 ; NO-SIMD128-FAST-NEXT: i32.gt_s $push0=, $1, $5
10250 ; NO-SIMD128-FAST-NEXT: i32.select $push1=, $1, $5, $pop0
10251 ; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop1
10252 ; NO-SIMD128-FAST-NEXT: i32.gt_s $push2=, $2, $6
10253 ; NO-SIMD128-FAST-NEXT: i32.select $push3=, $2, $6, $pop2
10254 ; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop3
10255 ; NO-SIMD128-FAST-NEXT: i32.gt_s $push4=, $3, $7
10256 ; NO-SIMD128-FAST-NEXT: i32.select $push5=, $3, $7, $pop4
10257 ; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop5
10258 ; NO-SIMD128-FAST-NEXT: i32.const $push8=, 12
10259 ; NO-SIMD128-FAST-NEXT: i32.add $push9=, $0, $pop8
10260 ; NO-SIMD128-FAST-NEXT: i32.gt_s $push6=, $4, $8
10261 ; NO-SIMD128-FAST-NEXT: i32.select $push7=, $4, $8, $pop6
10262 ; NO-SIMD128-FAST-NEXT: i32.store 0($pop9), $pop7
10263 ; NO-SIMD128-FAST-NEXT: return
10264 %c = icmp sgt <4 x i32> %x, %y
10265 %a = select <4 x i1> %c, <4 x i32> %x, <4 x i32> %y
10269 define <4 x i32> @max_u_v4i32(<4 x i32> %x, <4 x i32> %y) {
10270 ; SIMD128-LABEL: max_u_v4i32:
10271 ; SIMD128: .functype max_u_v4i32 (v128, v128) -> (v128)
10272 ; SIMD128-NEXT: # %bb.0:
10273 ; SIMD128-NEXT: i32x4.max_u $push0=, $0, $1
10274 ; SIMD128-NEXT: return $pop0
10276 ; SIMD128-FAST-LABEL: max_u_v4i32:
10277 ; SIMD128-FAST: .functype max_u_v4i32 (v128, v128) -> (v128)
10278 ; SIMD128-FAST-NEXT: # %bb.0:
10279 ; SIMD128-FAST-NEXT: i32x4.max_u $push0=, $0, $1
10280 ; SIMD128-FAST-NEXT: return $pop0
10282 ; NO-SIMD128-LABEL: max_u_v4i32:
10283 ; NO-SIMD128: .functype max_u_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
10284 ; NO-SIMD128-NEXT: # %bb.0:
10285 ; NO-SIMD128-NEXT: i32.gt_u $push0=, $3, $7
10286 ; NO-SIMD128-NEXT: i32.select $push1=, $3, $7, $pop0
10287 ; NO-SIMD128-NEXT: i32.store 8($0), $pop1
10288 ; NO-SIMD128-NEXT: i32.gt_u $push2=, $2, $6
10289 ; NO-SIMD128-NEXT: i32.select $push3=, $2, $6, $pop2
10290 ; NO-SIMD128-NEXT: i32.store 4($0), $pop3
10291 ; NO-SIMD128-NEXT: i32.gt_u $push4=, $1, $5
10292 ; NO-SIMD128-NEXT: i32.select $push5=, $1, $5, $pop4
10293 ; NO-SIMD128-NEXT: i32.store 0($0), $pop5
10294 ; NO-SIMD128-NEXT: i32.const $push8=, 12
10295 ; NO-SIMD128-NEXT: i32.add $push9=, $0, $pop8
10296 ; NO-SIMD128-NEXT: i32.gt_u $push6=, $4, $8
10297 ; NO-SIMD128-NEXT: i32.select $push7=, $4, $8, $pop6
10298 ; NO-SIMD128-NEXT: i32.store 0($pop9), $pop7
10299 ; NO-SIMD128-NEXT: return
10301 ; NO-SIMD128-FAST-LABEL: max_u_v4i32:
10302 ; NO-SIMD128-FAST: .functype max_u_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
10303 ; NO-SIMD128-FAST-NEXT: # %bb.0:
10304 ; NO-SIMD128-FAST-NEXT: i32.gt_u $push0=, $1, $5
10305 ; NO-SIMD128-FAST-NEXT: i32.select $push1=, $1, $5, $pop0
10306 ; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop1
10307 ; NO-SIMD128-FAST-NEXT: i32.gt_u $push2=, $2, $6
10308 ; NO-SIMD128-FAST-NEXT: i32.select $push3=, $2, $6, $pop2
10309 ; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop3
10310 ; NO-SIMD128-FAST-NEXT: i32.gt_u $push4=, $3, $7
10311 ; NO-SIMD128-FAST-NEXT: i32.select $push5=, $3, $7, $pop4
10312 ; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop5
10313 ; NO-SIMD128-FAST-NEXT: i32.const $push8=, 12
10314 ; NO-SIMD128-FAST-NEXT: i32.add $push9=, $0, $pop8
10315 ; NO-SIMD128-FAST-NEXT: i32.gt_u $push6=, $4, $8
10316 ; NO-SIMD128-FAST-NEXT: i32.select $push7=, $4, $8, $pop6
10317 ; NO-SIMD128-FAST-NEXT: i32.store 0($pop9), $pop7
10318 ; NO-SIMD128-FAST-NEXT: return
10319 %c = icmp ugt <4 x i32> %x, %y
10320 %a = select <4 x i1> %c, <4 x i32> %x, <4 x i32> %y
10324 define <4 x i32> @abs_v4i32(<4 x i32> %x) {
10325 ; SIMD128-LABEL: abs_v4i32:
10326 ; SIMD128: .functype abs_v4i32 (v128) -> (v128)
10327 ; SIMD128-NEXT: # %bb.0:
10328 ; SIMD128-NEXT: i32x4.abs $push0=, $0
10329 ; SIMD128-NEXT: return $pop0
10331 ; SIMD128-FAST-LABEL: abs_v4i32:
10332 ; SIMD128-FAST: .functype abs_v4i32 (v128) -> (v128)
10333 ; SIMD128-FAST-NEXT: # %bb.0:
10334 ; SIMD128-FAST-NEXT: i32x4.abs $push0=, $0
10335 ; SIMD128-FAST-NEXT: return $pop0
10337 ; NO-SIMD128-LABEL: abs_v4i32:
10338 ; NO-SIMD128: .functype abs_v4i32 (i32, i32, i32, i32, i32) -> ()
10339 ; NO-SIMD128-NEXT: # %bb.0:
10340 ; NO-SIMD128-NEXT: i32.const $push3=, 12
10341 ; NO-SIMD128-NEXT: i32.add $push4=, $0, $pop3
10342 ; NO-SIMD128-NEXT: i32.const $push0=, 31
10343 ; NO-SIMD128-NEXT: i32.shr_s $push21=, $4, $pop0
10344 ; NO-SIMD128-NEXT: local.tee $push20=, $5=, $pop21
10345 ; NO-SIMD128-NEXT: i32.xor $push1=, $4, $pop20
10346 ; NO-SIMD128-NEXT: i32.sub $push2=, $pop1, $5
10347 ; NO-SIMD128-NEXT: i32.store 0($pop4), $pop2
10348 ; NO-SIMD128-NEXT: i32.const $push19=, 31
10349 ; NO-SIMD128-NEXT: i32.shr_s $push18=, $3, $pop19
10350 ; NO-SIMD128-NEXT: local.tee $push17=, $4=, $pop18
10351 ; NO-SIMD128-NEXT: i32.xor $push5=, $3, $pop17
10352 ; NO-SIMD128-NEXT: i32.sub $push6=, $pop5, $4
10353 ; NO-SIMD128-NEXT: i32.store 8($0), $pop6
10354 ; NO-SIMD128-NEXT: i32.const $push16=, 31
10355 ; NO-SIMD128-NEXT: i32.shr_s $push15=, $2, $pop16
10356 ; NO-SIMD128-NEXT: local.tee $push14=, $4=, $pop15
10357 ; NO-SIMD128-NEXT: i32.xor $push7=, $2, $pop14
10358 ; NO-SIMD128-NEXT: i32.sub $push8=, $pop7, $4
10359 ; NO-SIMD128-NEXT: i32.store 4($0), $pop8
10360 ; NO-SIMD128-NEXT: i32.const $push13=, 31
10361 ; NO-SIMD128-NEXT: i32.shr_s $push12=, $1, $pop13
10362 ; NO-SIMD128-NEXT: local.tee $push11=, $4=, $pop12
10363 ; NO-SIMD128-NEXT: i32.xor $push9=, $1, $pop11
10364 ; NO-SIMD128-NEXT: i32.sub $push10=, $pop9, $4
10365 ; NO-SIMD128-NEXT: i32.store 0($0), $pop10
10366 ; NO-SIMD128-NEXT: return
10368 ; NO-SIMD128-FAST-LABEL: abs_v4i32:
10369 ; NO-SIMD128-FAST: .functype abs_v4i32 (i32, i32, i32, i32, i32) -> ()
10370 ; NO-SIMD128-FAST-NEXT: # %bb.0:
10371 ; NO-SIMD128-FAST-NEXT: i32.const $push0=, 31
10372 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push21=, $1, $pop0
10373 ; NO-SIMD128-FAST-NEXT: local.tee $push20=, $5=, $pop21
10374 ; NO-SIMD128-FAST-NEXT: i32.xor $push1=, $1, $pop20
10375 ; NO-SIMD128-FAST-NEXT: i32.sub $push2=, $pop1, $5
10376 ; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop2
10377 ; NO-SIMD128-FAST-NEXT: i32.const $push19=, 31
10378 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push18=, $2, $pop19
10379 ; NO-SIMD128-FAST-NEXT: local.tee $push17=, $1=, $pop18
10380 ; NO-SIMD128-FAST-NEXT: i32.xor $push3=, $2, $pop17
10381 ; NO-SIMD128-FAST-NEXT: i32.sub $push4=, $pop3, $1
10382 ; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop4
10383 ; NO-SIMD128-FAST-NEXT: i32.const $push16=, 31
10384 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push15=, $3, $pop16
10385 ; NO-SIMD128-FAST-NEXT: local.tee $push14=, $2=, $pop15
10386 ; NO-SIMD128-FAST-NEXT: i32.xor $push5=, $3, $pop14
10387 ; NO-SIMD128-FAST-NEXT: i32.sub $push6=, $pop5, $2
10388 ; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop6
10389 ; NO-SIMD128-FAST-NEXT: i32.const $push9=, 12
10390 ; NO-SIMD128-FAST-NEXT: i32.add $push10=, $0, $pop9
10391 ; NO-SIMD128-FAST-NEXT: i32.const $push13=, 31
10392 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push12=, $4, $pop13
10393 ; NO-SIMD128-FAST-NEXT: local.tee $push11=, $0=, $pop12
10394 ; NO-SIMD128-FAST-NEXT: i32.xor $push7=, $4, $pop11
10395 ; NO-SIMD128-FAST-NEXT: i32.sub $push8=, $pop7, $0
10396 ; NO-SIMD128-FAST-NEXT: i32.store 0($pop10), $pop8
10397 ; NO-SIMD128-FAST-NEXT: return
10398 %a = sub <4 x i32> zeroinitializer, %x
10399 %b = icmp slt <4 x i32> %x, zeroinitializer
10400 %c = select <4 x i1> %b, <4 x i32> %a, <4 x i32> %x
10404 define <4 x i32> @neg_v4i32(<4 x i32> %x) {
10405 ; SIMD128-LABEL: neg_v4i32:
10406 ; SIMD128: .functype neg_v4i32 (v128) -> (v128)
10407 ; SIMD128-NEXT: # %bb.0:
10408 ; SIMD128-NEXT: i32x4.neg $push0=, $0
10409 ; SIMD128-NEXT: return $pop0
10411 ; SIMD128-FAST-LABEL: neg_v4i32:
10412 ; SIMD128-FAST: .functype neg_v4i32 (v128) -> (v128)
10413 ; SIMD128-FAST-NEXT: # %bb.0:
10414 ; SIMD128-FAST-NEXT: i32x4.neg $push0=, $0
10415 ; SIMD128-FAST-NEXT: return $pop0
10417 ; NO-SIMD128-LABEL: neg_v4i32:
10418 ; NO-SIMD128: .functype neg_v4i32 (i32, i32, i32, i32, i32) -> ()
10419 ; NO-SIMD128-NEXT: # %bb.0:
10420 ; NO-SIMD128-NEXT: i32.const $push0=, 0
10421 ; NO-SIMD128-NEXT: i32.sub $push1=, $pop0, $3
10422 ; NO-SIMD128-NEXT: i32.store 8($0), $pop1
10423 ; NO-SIMD128-NEXT: i32.const $push9=, 0
10424 ; NO-SIMD128-NEXT: i32.sub $push2=, $pop9, $2
10425 ; NO-SIMD128-NEXT: i32.store 4($0), $pop2
10426 ; NO-SIMD128-NEXT: i32.const $push8=, 0
10427 ; NO-SIMD128-NEXT: i32.sub $push3=, $pop8, $1
10428 ; NO-SIMD128-NEXT: i32.store 0($0), $pop3
10429 ; NO-SIMD128-NEXT: i32.const $push5=, 12
10430 ; NO-SIMD128-NEXT: i32.add $push6=, $0, $pop5
10431 ; NO-SIMD128-NEXT: i32.const $push7=, 0
10432 ; NO-SIMD128-NEXT: i32.sub $push4=, $pop7, $4
10433 ; NO-SIMD128-NEXT: i32.store 0($pop6), $pop4
10434 ; NO-SIMD128-NEXT: return
10436 ; NO-SIMD128-FAST-LABEL: neg_v4i32:
10437 ; NO-SIMD128-FAST: .functype neg_v4i32 (i32, i32, i32, i32, i32) -> ()
10438 ; NO-SIMD128-FAST-NEXT: # %bb.0:
10439 ; NO-SIMD128-FAST-NEXT: i32.const $push0=, 0
10440 ; NO-SIMD128-FAST-NEXT: i32.sub $push1=, $pop0, $1
10441 ; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop1
10442 ; NO-SIMD128-FAST-NEXT: i32.const $push9=, 0
10443 ; NO-SIMD128-FAST-NEXT: i32.sub $push2=, $pop9, $2
10444 ; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop2
10445 ; NO-SIMD128-FAST-NEXT: i32.const $push8=, 0
10446 ; NO-SIMD128-FAST-NEXT: i32.sub $push3=, $pop8, $3
10447 ; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop3
10448 ; NO-SIMD128-FAST-NEXT: i32.const $push4=, 12
10449 ; NO-SIMD128-FAST-NEXT: i32.add $push5=, $0, $pop4
10450 ; NO-SIMD128-FAST-NEXT: i32.const $push7=, 0
10451 ; NO-SIMD128-FAST-NEXT: i32.sub $push6=, $pop7, $4
10452 ; NO-SIMD128-FAST-NEXT: i32.store 0($pop5), $pop6
10453 ; NO-SIMD128-FAST-NEXT: return
10454 %a = sub <4 x i32> <i32 0, i32 0, i32 0, i32 0>, %x
10458 define <4 x i32> @shl_v4i32(<4 x i32> %v, i32 %x) {
10459 ; SIMD128-LABEL: shl_v4i32:
10460 ; SIMD128: .functype shl_v4i32 (v128, i32) -> (v128)
10461 ; SIMD128-NEXT: # %bb.0:
10462 ; SIMD128-NEXT: i32x4.shl $push0=, $0, $1
10463 ; SIMD128-NEXT: return $pop0
10465 ; SIMD128-FAST-LABEL: shl_v4i32:
10466 ; SIMD128-FAST: .functype shl_v4i32 (v128, i32) -> (v128)
10467 ; SIMD128-FAST-NEXT: # %bb.0:
10468 ; SIMD128-FAST-NEXT: i32x4.shl $push0=, $0, $1
10469 ; SIMD128-FAST-NEXT: return $pop0
10471 ; NO-SIMD128-LABEL: shl_v4i32:
10472 ; NO-SIMD128: .functype shl_v4i32 (i32, i32, i32, i32, i32, i32) -> ()
10473 ; NO-SIMD128-NEXT: # %bb.0:
10474 ; NO-SIMD128-NEXT: i32.shl $push0=, $3, $5
10475 ; NO-SIMD128-NEXT: i32.store 8($0), $pop0
10476 ; NO-SIMD128-NEXT: i32.shl $push1=, $2, $5
10477 ; NO-SIMD128-NEXT: i32.store 4($0), $pop1
10478 ; NO-SIMD128-NEXT: i32.shl $push2=, $1, $5
10479 ; NO-SIMD128-NEXT: i32.store 0($0), $pop2
10480 ; NO-SIMD128-NEXT: i32.const $push4=, 12
10481 ; NO-SIMD128-NEXT: i32.add $push5=, $0, $pop4
10482 ; NO-SIMD128-NEXT: i32.shl $push3=, $4, $5
10483 ; NO-SIMD128-NEXT: i32.store 0($pop5), $pop3
10484 ; NO-SIMD128-NEXT: return
10486 ; NO-SIMD128-FAST-LABEL: shl_v4i32:
10487 ; NO-SIMD128-FAST: .functype shl_v4i32 (i32, i32, i32, i32, i32, i32) -> ()
10488 ; NO-SIMD128-FAST-NEXT: # %bb.0:
10489 ; NO-SIMD128-FAST-NEXT: i32.shl $push0=, $1, $5
10490 ; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop0
10491 ; NO-SIMD128-FAST-NEXT: i32.shl $push1=, $2, $5
10492 ; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop1
10493 ; NO-SIMD128-FAST-NEXT: i32.shl $push2=, $3, $5
10494 ; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop2
10495 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 12
10496 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
10497 ; NO-SIMD128-FAST-NEXT: i32.shl $push5=, $4, $5
10498 ; NO-SIMD128-FAST-NEXT: i32.store 0($pop4), $pop5
10499 ; NO-SIMD128-FAST-NEXT: return
10500 %t = insertelement <4 x i32> undef, i32 %x, i32 0
10501 %s = shufflevector <4 x i32> %t, <4 x i32> undef,
10502 <4 x i32> <i32 0, i32 0, i32 0, i32 0>
10503 %a = shl <4 x i32> %v, %s
10507 define <4 x i32> @shl_const_v4i32(<4 x i32> %v) {
10508 ; SIMD128-LABEL: shl_const_v4i32:
10509 ; SIMD128: .functype shl_const_v4i32 (v128) -> (v128)
10510 ; SIMD128-NEXT: # %bb.0:
10511 ; SIMD128-NEXT: i32.const $push0=, 5
10512 ; SIMD128-NEXT: i32x4.shl $push1=, $0, $pop0
10513 ; SIMD128-NEXT: return $pop1
10515 ; SIMD128-FAST-LABEL: shl_const_v4i32:
10516 ; SIMD128-FAST: .functype shl_const_v4i32 (v128) -> (v128)
10517 ; SIMD128-FAST-NEXT: # %bb.0:
10518 ; SIMD128-FAST-NEXT: i32.const $push1=, 5
10519 ; SIMD128-FAST-NEXT: i32x4.shl $push0=, $0, $pop1
10520 ; SIMD128-FAST-NEXT: return $pop0
10522 ; NO-SIMD128-LABEL: shl_const_v4i32:
10523 ; NO-SIMD128: .functype shl_const_v4i32 (i32, i32, i32, i32, i32) -> ()
10524 ; NO-SIMD128-NEXT: # %bb.0:
10525 ; NO-SIMD128-NEXT: i32.const $push0=, 5
10526 ; NO-SIMD128-NEXT: i32.shl $push1=, $3, $pop0
10527 ; NO-SIMD128-NEXT: i32.store 8($0), $pop1
10528 ; NO-SIMD128-NEXT: i32.const $push9=, 5
10529 ; NO-SIMD128-NEXT: i32.shl $push2=, $2, $pop9
10530 ; NO-SIMD128-NEXT: i32.store 4($0), $pop2
10531 ; NO-SIMD128-NEXT: i32.const $push8=, 5
10532 ; NO-SIMD128-NEXT: i32.shl $push3=, $1, $pop8
10533 ; NO-SIMD128-NEXT: i32.store 0($0), $pop3
10534 ; NO-SIMD128-NEXT: i32.const $push5=, 12
10535 ; NO-SIMD128-NEXT: i32.add $push6=, $0, $pop5
10536 ; NO-SIMD128-NEXT: i32.const $push7=, 5
10537 ; NO-SIMD128-NEXT: i32.shl $push4=, $4, $pop7
10538 ; NO-SIMD128-NEXT: i32.store 0($pop6), $pop4
10539 ; NO-SIMD128-NEXT: return
10541 ; NO-SIMD128-FAST-LABEL: shl_const_v4i32:
10542 ; NO-SIMD128-FAST: .functype shl_const_v4i32 (i32, i32, i32, i32, i32) -> ()
10543 ; NO-SIMD128-FAST-NEXT: # %bb.0:
10544 ; NO-SIMD128-FAST-NEXT: i32.const $push0=, 5
10545 ; NO-SIMD128-FAST-NEXT: i32.shl $push1=, $1, $pop0
10546 ; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop1
10547 ; NO-SIMD128-FAST-NEXT: i32.const $push9=, 5
10548 ; NO-SIMD128-FAST-NEXT: i32.shl $push2=, $2, $pop9
10549 ; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop2
10550 ; NO-SIMD128-FAST-NEXT: i32.const $push8=, 5
10551 ; NO-SIMD128-FAST-NEXT: i32.shl $push3=, $3, $pop8
10552 ; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop3
10553 ; NO-SIMD128-FAST-NEXT: i32.const $push4=, 12
10554 ; NO-SIMD128-FAST-NEXT: i32.add $push5=, $0, $pop4
10555 ; NO-SIMD128-FAST-NEXT: i32.const $push7=, 5
10556 ; NO-SIMD128-FAST-NEXT: i32.shl $push6=, $4, $pop7
10557 ; NO-SIMD128-FAST-NEXT: i32.store 0($pop5), $pop6
10558 ; NO-SIMD128-FAST-NEXT: return
10559 %a = shl <4 x i32> %v, <i32 5, i32 5, i32 5, i32 5>
10563 define <4 x i32> @shl_vec_v4i32(<4 x i32> %v, <4 x i32> %x) {
10564 ; SIMD128-LABEL: shl_vec_v4i32:
10565 ; SIMD128: .functype shl_vec_v4i32 (v128, v128) -> (v128)
10566 ; SIMD128-NEXT: # %bb.0:
10567 ; SIMD128-NEXT: i32x4.extract_lane $push4=, $0, 0
10568 ; SIMD128-NEXT: i32x4.extract_lane $push3=, $1, 0
10569 ; SIMD128-NEXT: i32.shl $push5=, $pop4, $pop3
10570 ; SIMD128-NEXT: i32x4.splat $push6=, $pop5
10571 ; SIMD128-NEXT: i32x4.extract_lane $push1=, $0, 1
10572 ; SIMD128-NEXT: i32x4.extract_lane $push0=, $1, 1
10573 ; SIMD128-NEXT: i32.shl $push2=, $pop1, $pop0
10574 ; SIMD128-NEXT: i32x4.replace_lane $push7=, $pop6, 1, $pop2
10575 ; SIMD128-NEXT: i32x4.extract_lane $push9=, $0, 2
10576 ; SIMD128-NEXT: i32x4.extract_lane $push8=, $1, 2
10577 ; SIMD128-NEXT: i32.shl $push10=, $pop9, $pop8
10578 ; SIMD128-NEXT: i32x4.replace_lane $push11=, $pop7, 2, $pop10
10579 ; SIMD128-NEXT: i32x4.extract_lane $push13=, $0, 3
10580 ; SIMD128-NEXT: i32x4.extract_lane $push12=, $1, 3
10581 ; SIMD128-NEXT: i32.shl $push14=, $pop13, $pop12
10582 ; SIMD128-NEXT: i32x4.replace_lane $push15=, $pop11, 3, $pop14
10583 ; SIMD128-NEXT: return $pop15
10585 ; SIMD128-FAST-LABEL: shl_vec_v4i32:
10586 ; SIMD128-FAST: .functype shl_vec_v4i32 (v128, v128) -> (v128)
10587 ; SIMD128-FAST-NEXT: # %bb.0:
10588 ; SIMD128-FAST-NEXT: i32x4.extract_lane $push5=, $0, 0
10589 ; SIMD128-FAST-NEXT: i32x4.extract_lane $push4=, $1, 0
10590 ; SIMD128-FAST-NEXT: i32.shl $push6=, $pop5, $pop4
10591 ; SIMD128-FAST-NEXT: i32x4.splat $push7=, $pop6
10592 ; SIMD128-FAST-NEXT: i32x4.extract_lane $push2=, $0, 1
10593 ; SIMD128-FAST-NEXT: i32x4.extract_lane $push1=, $1, 1
10594 ; SIMD128-FAST-NEXT: i32.shl $push3=, $pop2, $pop1
10595 ; SIMD128-FAST-NEXT: i32x4.replace_lane $push8=, $pop7, 1, $pop3
10596 ; SIMD128-FAST-NEXT: i32x4.extract_lane $push10=, $0, 2
10597 ; SIMD128-FAST-NEXT: i32x4.extract_lane $push9=, $1, 2
10598 ; SIMD128-FAST-NEXT: i32.shl $push11=, $pop10, $pop9
10599 ; SIMD128-FAST-NEXT: i32x4.replace_lane $push12=, $pop8, 2, $pop11
10600 ; SIMD128-FAST-NEXT: i32x4.extract_lane $push14=, $0, 3
10601 ; SIMD128-FAST-NEXT: i32x4.extract_lane $push13=, $1, 3
10602 ; SIMD128-FAST-NEXT: i32.shl $push15=, $pop14, $pop13
10603 ; SIMD128-FAST-NEXT: i32x4.replace_lane $push0=, $pop12, 3, $pop15
10604 ; SIMD128-FAST-NEXT: return $pop0
10606 ; NO-SIMD128-LABEL: shl_vec_v4i32:
10607 ; NO-SIMD128: .functype shl_vec_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
10608 ; NO-SIMD128-NEXT: # %bb.0:
10609 ; NO-SIMD128-NEXT: i32.shl $push0=, $3, $7
10610 ; NO-SIMD128-NEXT: i32.store 8($0), $pop0
10611 ; NO-SIMD128-NEXT: i32.shl $push1=, $2, $6
10612 ; NO-SIMD128-NEXT: i32.store 4($0), $pop1
10613 ; NO-SIMD128-NEXT: i32.shl $push2=, $1, $5
10614 ; NO-SIMD128-NEXT: i32.store 0($0), $pop2
10615 ; NO-SIMD128-NEXT: i32.const $push4=, 12
10616 ; NO-SIMD128-NEXT: i32.add $push5=, $0, $pop4
10617 ; NO-SIMD128-NEXT: i32.shl $push3=, $4, $8
10618 ; NO-SIMD128-NEXT: i32.store 0($pop5), $pop3
10619 ; NO-SIMD128-NEXT: return
10621 ; NO-SIMD128-FAST-LABEL: shl_vec_v4i32:
10622 ; NO-SIMD128-FAST: .functype shl_vec_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
10623 ; NO-SIMD128-FAST-NEXT: # %bb.0:
10624 ; NO-SIMD128-FAST-NEXT: i32.shl $push0=, $1, $5
10625 ; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop0
10626 ; NO-SIMD128-FAST-NEXT: i32.shl $push1=, $2, $6
10627 ; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop1
10628 ; NO-SIMD128-FAST-NEXT: i32.shl $push2=, $3, $7
10629 ; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop2
10630 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 12
10631 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
10632 ; NO-SIMD128-FAST-NEXT: i32.shl $push5=, $4, $8
10633 ; NO-SIMD128-FAST-NEXT: i32.store 0($pop4), $pop5
10634 ; NO-SIMD128-FAST-NEXT: return
10635 %a = shl <4 x i32> %v, %x
10639 define <4 x i32> @shr_s_v4i32(<4 x i32> %v, i32 %x) {
10640 ; SIMD128-LABEL: shr_s_v4i32:
10641 ; SIMD128: .functype shr_s_v4i32 (v128, i32) -> (v128)
10642 ; SIMD128-NEXT: # %bb.0:
10643 ; SIMD128-NEXT: i32x4.shr_s $push0=, $0, $1
10644 ; SIMD128-NEXT: return $pop0
10646 ; SIMD128-FAST-LABEL: shr_s_v4i32:
10647 ; SIMD128-FAST: .functype shr_s_v4i32 (v128, i32) -> (v128)
10648 ; SIMD128-FAST-NEXT: # %bb.0:
10649 ; SIMD128-FAST-NEXT: i32x4.shr_s $push0=, $0, $1
10650 ; SIMD128-FAST-NEXT: return $pop0
10652 ; NO-SIMD128-LABEL: shr_s_v4i32:
10653 ; NO-SIMD128: .functype shr_s_v4i32 (i32, i32, i32, i32, i32, i32) -> ()
10654 ; NO-SIMD128-NEXT: # %bb.0:
10655 ; NO-SIMD128-NEXT: i32.shr_s $push0=, $3, $5
10656 ; NO-SIMD128-NEXT: i32.store 8($0), $pop0
10657 ; NO-SIMD128-NEXT: i32.shr_s $push1=, $2, $5
10658 ; NO-SIMD128-NEXT: i32.store 4($0), $pop1
10659 ; NO-SIMD128-NEXT: i32.shr_s $push2=, $1, $5
10660 ; NO-SIMD128-NEXT: i32.store 0($0), $pop2
10661 ; NO-SIMD128-NEXT: i32.const $push4=, 12
10662 ; NO-SIMD128-NEXT: i32.add $push5=, $0, $pop4
10663 ; NO-SIMD128-NEXT: i32.shr_s $push3=, $4, $5
10664 ; NO-SIMD128-NEXT: i32.store 0($pop5), $pop3
10665 ; NO-SIMD128-NEXT: return
10667 ; NO-SIMD128-FAST-LABEL: shr_s_v4i32:
10668 ; NO-SIMD128-FAST: .functype shr_s_v4i32 (i32, i32, i32, i32, i32, i32) -> ()
10669 ; NO-SIMD128-FAST-NEXT: # %bb.0:
10670 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push0=, $1, $5
10671 ; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop0
10672 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push1=, $2, $5
10673 ; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop1
10674 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push2=, $3, $5
10675 ; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop2
10676 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 12
10677 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
10678 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push5=, $4, $5
10679 ; NO-SIMD128-FAST-NEXT: i32.store 0($pop4), $pop5
10680 ; NO-SIMD128-FAST-NEXT: return
10681 %t = insertelement <4 x i32> undef, i32 %x, i32 0
10682 %s = shufflevector <4 x i32> %t, <4 x i32> undef,
10683 <4 x i32> <i32 0, i32 0, i32 0, i32 0>
10684 %a = ashr <4 x i32> %v, %s
10688 define <4 x i32> @shr_s_vec_v4i32(<4 x i32> %v, <4 x i32> %x) {
10689 ; SIMD128-LABEL: shr_s_vec_v4i32:
10690 ; SIMD128: .functype shr_s_vec_v4i32 (v128, v128) -> (v128)
10691 ; SIMD128-NEXT: # %bb.0:
10692 ; SIMD128-NEXT: i32x4.extract_lane $push4=, $0, 0
10693 ; SIMD128-NEXT: i32x4.extract_lane $push3=, $1, 0
10694 ; SIMD128-NEXT: i32.shr_s $push5=, $pop4, $pop3
10695 ; SIMD128-NEXT: i32x4.splat $push6=, $pop5
10696 ; SIMD128-NEXT: i32x4.extract_lane $push1=, $0, 1
10697 ; SIMD128-NEXT: i32x4.extract_lane $push0=, $1, 1
10698 ; SIMD128-NEXT: i32.shr_s $push2=, $pop1, $pop0
10699 ; SIMD128-NEXT: i32x4.replace_lane $push7=, $pop6, 1, $pop2
10700 ; SIMD128-NEXT: i32x4.extract_lane $push9=, $0, 2
10701 ; SIMD128-NEXT: i32x4.extract_lane $push8=, $1, 2
10702 ; SIMD128-NEXT: i32.shr_s $push10=, $pop9, $pop8
10703 ; SIMD128-NEXT: i32x4.replace_lane $push11=, $pop7, 2, $pop10
10704 ; SIMD128-NEXT: i32x4.extract_lane $push13=, $0, 3
10705 ; SIMD128-NEXT: i32x4.extract_lane $push12=, $1, 3
10706 ; SIMD128-NEXT: i32.shr_s $push14=, $pop13, $pop12
10707 ; SIMD128-NEXT: i32x4.replace_lane $push15=, $pop11, 3, $pop14
10708 ; SIMD128-NEXT: return $pop15
10710 ; SIMD128-FAST-LABEL: shr_s_vec_v4i32:
10711 ; SIMD128-FAST: .functype shr_s_vec_v4i32 (v128, v128) -> (v128)
10712 ; SIMD128-FAST-NEXT: # %bb.0:
10713 ; SIMD128-FAST-NEXT: i32x4.extract_lane $push5=, $0, 0
10714 ; SIMD128-FAST-NEXT: i32x4.extract_lane $push4=, $1, 0
10715 ; SIMD128-FAST-NEXT: i32.shr_s $push6=, $pop5, $pop4
10716 ; SIMD128-FAST-NEXT: i32x4.splat $push7=, $pop6
10717 ; SIMD128-FAST-NEXT: i32x4.extract_lane $push2=, $0, 1
10718 ; SIMD128-FAST-NEXT: i32x4.extract_lane $push1=, $1, 1
10719 ; SIMD128-FAST-NEXT: i32.shr_s $push3=, $pop2, $pop1
10720 ; SIMD128-FAST-NEXT: i32x4.replace_lane $push8=, $pop7, 1, $pop3
10721 ; SIMD128-FAST-NEXT: i32x4.extract_lane $push10=, $0, 2
10722 ; SIMD128-FAST-NEXT: i32x4.extract_lane $push9=, $1, 2
10723 ; SIMD128-FAST-NEXT: i32.shr_s $push11=, $pop10, $pop9
10724 ; SIMD128-FAST-NEXT: i32x4.replace_lane $push12=, $pop8, 2, $pop11
10725 ; SIMD128-FAST-NEXT: i32x4.extract_lane $push14=, $0, 3
10726 ; SIMD128-FAST-NEXT: i32x4.extract_lane $push13=, $1, 3
10727 ; SIMD128-FAST-NEXT: i32.shr_s $push15=, $pop14, $pop13
10728 ; SIMD128-FAST-NEXT: i32x4.replace_lane $push0=, $pop12, 3, $pop15
10729 ; SIMD128-FAST-NEXT: return $pop0
10731 ; NO-SIMD128-LABEL: shr_s_vec_v4i32:
10732 ; NO-SIMD128: .functype shr_s_vec_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
10733 ; NO-SIMD128-NEXT: # %bb.0:
10734 ; NO-SIMD128-NEXT: i32.shr_s $push0=, $3, $7
10735 ; NO-SIMD128-NEXT: i32.store 8($0), $pop0
10736 ; NO-SIMD128-NEXT: i32.shr_s $push1=, $2, $6
10737 ; NO-SIMD128-NEXT: i32.store 4($0), $pop1
10738 ; NO-SIMD128-NEXT: i32.shr_s $push2=, $1, $5
10739 ; NO-SIMD128-NEXT: i32.store 0($0), $pop2
10740 ; NO-SIMD128-NEXT: i32.const $push4=, 12
10741 ; NO-SIMD128-NEXT: i32.add $push5=, $0, $pop4
10742 ; NO-SIMD128-NEXT: i32.shr_s $push3=, $4, $8
10743 ; NO-SIMD128-NEXT: i32.store 0($pop5), $pop3
10744 ; NO-SIMD128-NEXT: return
10746 ; NO-SIMD128-FAST-LABEL: shr_s_vec_v4i32:
10747 ; NO-SIMD128-FAST: .functype shr_s_vec_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
10748 ; NO-SIMD128-FAST-NEXT: # %bb.0:
10749 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push0=, $1, $5
10750 ; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop0
10751 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push1=, $2, $6
10752 ; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop1
10753 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push2=, $3, $7
10754 ; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop2
10755 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 12
10756 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
10757 ; NO-SIMD128-FAST-NEXT: i32.shr_s $push5=, $4, $8
10758 ; NO-SIMD128-FAST-NEXT: i32.store 0($pop4), $pop5
10759 ; NO-SIMD128-FAST-NEXT: return
10760 %a = ashr <4 x i32> %v, %x
10764 define <4 x i32> @shr_u_v4i32(<4 x i32> %v, i32 %x) {
10765 ; SIMD128-LABEL: shr_u_v4i32:
10766 ; SIMD128: .functype shr_u_v4i32 (v128, i32) -> (v128)
10767 ; SIMD128-NEXT: # %bb.0:
10768 ; SIMD128-NEXT: i32x4.shr_u $push0=, $0, $1
10769 ; SIMD128-NEXT: return $pop0
10771 ; SIMD128-FAST-LABEL: shr_u_v4i32:
10772 ; SIMD128-FAST: .functype shr_u_v4i32 (v128, i32) -> (v128)
10773 ; SIMD128-FAST-NEXT: # %bb.0:
10774 ; SIMD128-FAST-NEXT: i32x4.shr_u $push0=, $0, $1
10775 ; SIMD128-FAST-NEXT: return $pop0
10777 ; NO-SIMD128-LABEL: shr_u_v4i32:
10778 ; NO-SIMD128: .functype shr_u_v4i32 (i32, i32, i32, i32, i32, i32) -> ()
10779 ; NO-SIMD128-NEXT: # %bb.0:
10780 ; NO-SIMD128-NEXT: i32.shr_u $push0=, $3, $5
10781 ; NO-SIMD128-NEXT: i32.store 8($0), $pop0
10782 ; NO-SIMD128-NEXT: i32.shr_u $push1=, $2, $5
10783 ; NO-SIMD128-NEXT: i32.store 4($0), $pop1
10784 ; NO-SIMD128-NEXT: i32.shr_u $push2=, $1, $5
10785 ; NO-SIMD128-NEXT: i32.store 0($0), $pop2
10786 ; NO-SIMD128-NEXT: i32.const $push4=, 12
10787 ; NO-SIMD128-NEXT: i32.add $push5=, $0, $pop4
10788 ; NO-SIMD128-NEXT: i32.shr_u $push3=, $4, $5
10789 ; NO-SIMD128-NEXT: i32.store 0($pop5), $pop3
10790 ; NO-SIMD128-NEXT: return
10792 ; NO-SIMD128-FAST-LABEL: shr_u_v4i32:
10793 ; NO-SIMD128-FAST: .functype shr_u_v4i32 (i32, i32, i32, i32, i32, i32) -> ()
10794 ; NO-SIMD128-FAST-NEXT: # %bb.0:
10795 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push0=, $1, $5
10796 ; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop0
10797 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push1=, $2, $5
10798 ; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop1
10799 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push2=, $3, $5
10800 ; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop2
10801 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 12
10802 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
10803 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push5=, $4, $5
10804 ; NO-SIMD128-FAST-NEXT: i32.store 0($pop4), $pop5
10805 ; NO-SIMD128-FAST-NEXT: return
10806 %t = insertelement <4 x i32> undef, i32 %x, i32 0
10807 %s = shufflevector <4 x i32> %t, <4 x i32> undef,
10808 <4 x i32> <i32 0, i32 0, i32 0, i32 0>
10809 %a = lshr <4 x i32> %v, %s
10813 define <4 x i32> @shr_u_vec_v4i32(<4 x i32> %v, <4 x i32> %x) {
10814 ; SIMD128-LABEL: shr_u_vec_v4i32:
10815 ; SIMD128: .functype shr_u_vec_v4i32 (v128, v128) -> (v128)
10816 ; SIMD128-NEXT: # %bb.0:
10817 ; SIMD128-NEXT: i32x4.extract_lane $push4=, $0, 0
10818 ; SIMD128-NEXT: i32x4.extract_lane $push3=, $1, 0
10819 ; SIMD128-NEXT: i32.shr_u $push5=, $pop4, $pop3
10820 ; SIMD128-NEXT: i32x4.splat $push6=, $pop5
10821 ; SIMD128-NEXT: i32x4.extract_lane $push1=, $0, 1
10822 ; SIMD128-NEXT: i32x4.extract_lane $push0=, $1, 1
10823 ; SIMD128-NEXT: i32.shr_u $push2=, $pop1, $pop0
10824 ; SIMD128-NEXT: i32x4.replace_lane $push7=, $pop6, 1, $pop2
10825 ; SIMD128-NEXT: i32x4.extract_lane $push9=, $0, 2
10826 ; SIMD128-NEXT: i32x4.extract_lane $push8=, $1, 2
10827 ; SIMD128-NEXT: i32.shr_u $push10=, $pop9, $pop8
10828 ; SIMD128-NEXT: i32x4.replace_lane $push11=, $pop7, 2, $pop10
10829 ; SIMD128-NEXT: i32x4.extract_lane $push13=, $0, 3
10830 ; SIMD128-NEXT: i32x4.extract_lane $push12=, $1, 3
10831 ; SIMD128-NEXT: i32.shr_u $push14=, $pop13, $pop12
10832 ; SIMD128-NEXT: i32x4.replace_lane $push15=, $pop11, 3, $pop14
10833 ; SIMD128-NEXT: return $pop15
10835 ; SIMD128-FAST-LABEL: shr_u_vec_v4i32:
10836 ; SIMD128-FAST: .functype shr_u_vec_v4i32 (v128, v128) -> (v128)
10837 ; SIMD128-FAST-NEXT: # %bb.0:
10838 ; SIMD128-FAST-NEXT: i32x4.extract_lane $push5=, $0, 0
10839 ; SIMD128-FAST-NEXT: i32x4.extract_lane $push4=, $1, 0
10840 ; SIMD128-FAST-NEXT: i32.shr_u $push6=, $pop5, $pop4
10841 ; SIMD128-FAST-NEXT: i32x4.splat $push7=, $pop6
10842 ; SIMD128-FAST-NEXT: i32x4.extract_lane $push2=, $0, 1
10843 ; SIMD128-FAST-NEXT: i32x4.extract_lane $push1=, $1, 1
10844 ; SIMD128-FAST-NEXT: i32.shr_u $push3=, $pop2, $pop1
10845 ; SIMD128-FAST-NEXT: i32x4.replace_lane $push8=, $pop7, 1, $pop3
10846 ; SIMD128-FAST-NEXT: i32x4.extract_lane $push10=, $0, 2
10847 ; SIMD128-FAST-NEXT: i32x4.extract_lane $push9=, $1, 2
10848 ; SIMD128-FAST-NEXT: i32.shr_u $push11=, $pop10, $pop9
10849 ; SIMD128-FAST-NEXT: i32x4.replace_lane $push12=, $pop8, 2, $pop11
10850 ; SIMD128-FAST-NEXT: i32x4.extract_lane $push14=, $0, 3
10851 ; SIMD128-FAST-NEXT: i32x4.extract_lane $push13=, $1, 3
10852 ; SIMD128-FAST-NEXT: i32.shr_u $push15=, $pop14, $pop13
10853 ; SIMD128-FAST-NEXT: i32x4.replace_lane $push0=, $pop12, 3, $pop15
10854 ; SIMD128-FAST-NEXT: return $pop0
10856 ; NO-SIMD128-LABEL: shr_u_vec_v4i32:
10857 ; NO-SIMD128: .functype shr_u_vec_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
10858 ; NO-SIMD128-NEXT: # %bb.0:
10859 ; NO-SIMD128-NEXT: i32.shr_u $push0=, $3, $7
10860 ; NO-SIMD128-NEXT: i32.store 8($0), $pop0
10861 ; NO-SIMD128-NEXT: i32.shr_u $push1=, $2, $6
10862 ; NO-SIMD128-NEXT: i32.store 4($0), $pop1
10863 ; NO-SIMD128-NEXT: i32.shr_u $push2=, $1, $5
10864 ; NO-SIMD128-NEXT: i32.store 0($0), $pop2
10865 ; NO-SIMD128-NEXT: i32.const $push4=, 12
10866 ; NO-SIMD128-NEXT: i32.add $push5=, $0, $pop4
10867 ; NO-SIMD128-NEXT: i32.shr_u $push3=, $4, $8
10868 ; NO-SIMD128-NEXT: i32.store 0($pop5), $pop3
10869 ; NO-SIMD128-NEXT: return
10871 ; NO-SIMD128-FAST-LABEL: shr_u_vec_v4i32:
10872 ; NO-SIMD128-FAST: .functype shr_u_vec_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
10873 ; NO-SIMD128-FAST-NEXT: # %bb.0:
10874 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push0=, $1, $5
10875 ; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop0
10876 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push1=, $2, $6
10877 ; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop1
10878 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push2=, $3, $7
10879 ; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop2
10880 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 12
10881 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
10882 ; NO-SIMD128-FAST-NEXT: i32.shr_u $push5=, $4, $8
10883 ; NO-SIMD128-FAST-NEXT: i32.store 0($pop4), $pop5
10884 ; NO-SIMD128-FAST-NEXT: return
10885 %a = lshr <4 x i32> %v, %x
10889 define <4 x i32> @and_v4i32(<4 x i32> %x, <4 x i32> %y) {
10890 ; SIMD128-LABEL: and_v4i32:
10891 ; SIMD128: .functype and_v4i32 (v128, v128) -> (v128)
10892 ; SIMD128-NEXT: # %bb.0:
10893 ; SIMD128-NEXT: v128.and $push0=, $0, $1
10894 ; SIMD128-NEXT: return $pop0
10896 ; SIMD128-FAST-LABEL: and_v4i32:
10897 ; SIMD128-FAST: .functype and_v4i32 (v128, v128) -> (v128)
10898 ; SIMD128-FAST-NEXT: # %bb.0:
10899 ; SIMD128-FAST-NEXT: v128.and $push0=, $0, $1
10900 ; SIMD128-FAST-NEXT: return $pop0
10902 ; NO-SIMD128-LABEL: and_v4i32:
10903 ; NO-SIMD128: .functype and_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
10904 ; NO-SIMD128-NEXT: # %bb.0:
10905 ; NO-SIMD128-NEXT: i32.and $push0=, $3, $7
10906 ; NO-SIMD128-NEXT: i32.store 8($0), $pop0
10907 ; NO-SIMD128-NEXT: i32.and $push1=, $2, $6
10908 ; NO-SIMD128-NEXT: i32.store 4($0), $pop1
10909 ; NO-SIMD128-NEXT: i32.and $push2=, $1, $5
10910 ; NO-SIMD128-NEXT: i32.store 0($0), $pop2
10911 ; NO-SIMD128-NEXT: i32.const $push4=, 12
10912 ; NO-SIMD128-NEXT: i32.add $push5=, $0, $pop4
10913 ; NO-SIMD128-NEXT: i32.and $push3=, $4, $8
10914 ; NO-SIMD128-NEXT: i32.store 0($pop5), $pop3
10915 ; NO-SIMD128-NEXT: return
10917 ; NO-SIMD128-FAST-LABEL: and_v4i32:
10918 ; NO-SIMD128-FAST: .functype and_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
10919 ; NO-SIMD128-FAST-NEXT: # %bb.0:
10920 ; NO-SIMD128-FAST-NEXT: i32.and $push0=, $1, $5
10921 ; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop0
10922 ; NO-SIMD128-FAST-NEXT: i32.and $push1=, $2, $6
10923 ; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop1
10924 ; NO-SIMD128-FAST-NEXT: i32.and $push2=, $3, $7
10925 ; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop2
10926 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 12
10927 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
10928 ; NO-SIMD128-FAST-NEXT: i32.and $push5=, $4, $8
10929 ; NO-SIMD128-FAST-NEXT: i32.store 0($pop4), $pop5
10930 ; NO-SIMD128-FAST-NEXT: return
10931 %a = and <4 x i32> %x, %y
10935 define <4 x i32> @or_v4i32(<4 x i32> %x, <4 x i32> %y) {
10936 ; SIMD128-LABEL: or_v4i32:
10937 ; SIMD128: .functype or_v4i32 (v128, v128) -> (v128)
10938 ; SIMD128-NEXT: # %bb.0:
10939 ; SIMD128-NEXT: v128.or $push0=, $0, $1
10940 ; SIMD128-NEXT: return $pop0
10942 ; SIMD128-FAST-LABEL: or_v4i32:
10943 ; SIMD128-FAST: .functype or_v4i32 (v128, v128) -> (v128)
10944 ; SIMD128-FAST-NEXT: # %bb.0:
10945 ; SIMD128-FAST-NEXT: v128.or $push0=, $0, $1
10946 ; SIMD128-FAST-NEXT: return $pop0
10948 ; NO-SIMD128-LABEL: or_v4i32:
10949 ; NO-SIMD128: .functype or_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
10950 ; NO-SIMD128-NEXT: # %bb.0:
10951 ; NO-SIMD128-NEXT: i32.or $push0=, $3, $7
10952 ; NO-SIMD128-NEXT: i32.store 8($0), $pop0
10953 ; NO-SIMD128-NEXT: i32.or $push1=, $2, $6
10954 ; NO-SIMD128-NEXT: i32.store 4($0), $pop1
10955 ; NO-SIMD128-NEXT: i32.or $push2=, $1, $5
10956 ; NO-SIMD128-NEXT: i32.store 0($0), $pop2
10957 ; NO-SIMD128-NEXT: i32.const $push4=, 12
10958 ; NO-SIMD128-NEXT: i32.add $push5=, $0, $pop4
10959 ; NO-SIMD128-NEXT: i32.or $push3=, $4, $8
10960 ; NO-SIMD128-NEXT: i32.store 0($pop5), $pop3
10961 ; NO-SIMD128-NEXT: return
10963 ; NO-SIMD128-FAST-LABEL: or_v4i32:
10964 ; NO-SIMD128-FAST: .functype or_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
10965 ; NO-SIMD128-FAST-NEXT: # %bb.0:
10966 ; NO-SIMD128-FAST-NEXT: i32.or $push0=, $1, $5
10967 ; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop0
10968 ; NO-SIMD128-FAST-NEXT: i32.or $push1=, $2, $6
10969 ; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop1
10970 ; NO-SIMD128-FAST-NEXT: i32.or $push2=, $3, $7
10971 ; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop2
10972 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 12
10973 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
10974 ; NO-SIMD128-FAST-NEXT: i32.or $push5=, $4, $8
10975 ; NO-SIMD128-FAST-NEXT: i32.store 0($pop4), $pop5
10976 ; NO-SIMD128-FAST-NEXT: return
10977 %a = or <4 x i32> %x, %y
10981 define <4 x i32> @xor_v4i32(<4 x i32> %x, <4 x i32> %y) {
10982 ; SIMD128-LABEL: xor_v4i32:
10983 ; SIMD128: .functype xor_v4i32 (v128, v128) -> (v128)
10984 ; SIMD128-NEXT: # %bb.0:
10985 ; SIMD128-NEXT: v128.xor $push0=, $0, $1
10986 ; SIMD128-NEXT: return $pop0
10988 ; SIMD128-FAST-LABEL: xor_v4i32:
10989 ; SIMD128-FAST: .functype xor_v4i32 (v128, v128) -> (v128)
10990 ; SIMD128-FAST-NEXT: # %bb.0:
10991 ; SIMD128-FAST-NEXT: v128.xor $push0=, $0, $1
10992 ; SIMD128-FAST-NEXT: return $pop0
10994 ; NO-SIMD128-LABEL: xor_v4i32:
10995 ; NO-SIMD128: .functype xor_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
10996 ; NO-SIMD128-NEXT: # %bb.0:
10997 ; NO-SIMD128-NEXT: i32.xor $push0=, $3, $7
10998 ; NO-SIMD128-NEXT: i32.store 8($0), $pop0
10999 ; NO-SIMD128-NEXT: i32.xor $push1=, $2, $6
11000 ; NO-SIMD128-NEXT: i32.store 4($0), $pop1
11001 ; NO-SIMD128-NEXT: i32.xor $push2=, $1, $5
11002 ; NO-SIMD128-NEXT: i32.store 0($0), $pop2
11003 ; NO-SIMD128-NEXT: i32.const $push4=, 12
11004 ; NO-SIMD128-NEXT: i32.add $push5=, $0, $pop4
11005 ; NO-SIMD128-NEXT: i32.xor $push3=, $4, $8
11006 ; NO-SIMD128-NEXT: i32.store 0($pop5), $pop3
11007 ; NO-SIMD128-NEXT: return
11009 ; NO-SIMD128-FAST-LABEL: xor_v4i32:
11010 ; NO-SIMD128-FAST: .functype xor_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
11011 ; NO-SIMD128-FAST-NEXT: # %bb.0:
11012 ; NO-SIMD128-FAST-NEXT: i32.xor $push0=, $1, $5
11013 ; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop0
11014 ; NO-SIMD128-FAST-NEXT: i32.xor $push1=, $2, $6
11015 ; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop1
11016 ; NO-SIMD128-FAST-NEXT: i32.xor $push2=, $3, $7
11017 ; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop2
11018 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 12
11019 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
11020 ; NO-SIMD128-FAST-NEXT: i32.xor $push5=, $4, $8
11021 ; NO-SIMD128-FAST-NEXT: i32.store 0($pop4), $pop5
11022 ; NO-SIMD128-FAST-NEXT: return
11023 %a = xor <4 x i32> %x, %y
11027 define <4 x i32> @not_v4i32(<4 x i32> %x) {
11028 ; SIMD128-LABEL: not_v4i32:
11029 ; SIMD128: .functype not_v4i32 (v128) -> (v128)
11030 ; SIMD128-NEXT: # %bb.0:
11031 ; SIMD128-NEXT: v128.not $push0=, $0
11032 ; SIMD128-NEXT: return $pop0
11034 ; SIMD128-FAST-LABEL: not_v4i32:
11035 ; SIMD128-FAST: .functype not_v4i32 (v128) -> (v128)
11036 ; SIMD128-FAST-NEXT: # %bb.0:
11037 ; SIMD128-FAST-NEXT: v128.not $push0=, $0
11038 ; SIMD128-FAST-NEXT: return $pop0
11040 ; NO-SIMD128-LABEL: not_v4i32:
11041 ; NO-SIMD128: .functype not_v4i32 (i32, i32, i32, i32, i32) -> ()
11042 ; NO-SIMD128-NEXT: # %bb.0:
11043 ; NO-SIMD128-NEXT: i32.const $push0=, -1
11044 ; NO-SIMD128-NEXT: i32.xor $push1=, $3, $pop0
11045 ; NO-SIMD128-NEXT: i32.store 8($0), $pop1
11046 ; NO-SIMD128-NEXT: i32.const $push9=, -1
11047 ; NO-SIMD128-NEXT: i32.xor $push2=, $2, $pop9
11048 ; NO-SIMD128-NEXT: i32.store 4($0), $pop2
11049 ; NO-SIMD128-NEXT: i32.const $push8=, -1
11050 ; NO-SIMD128-NEXT: i32.xor $push3=, $1, $pop8
11051 ; NO-SIMD128-NEXT: i32.store 0($0), $pop3
11052 ; NO-SIMD128-NEXT: i32.const $push5=, 12
11053 ; NO-SIMD128-NEXT: i32.add $push6=, $0, $pop5
11054 ; NO-SIMD128-NEXT: i32.const $push7=, -1
11055 ; NO-SIMD128-NEXT: i32.xor $push4=, $4, $pop7
11056 ; NO-SIMD128-NEXT: i32.store 0($pop6), $pop4
11057 ; NO-SIMD128-NEXT: return
11059 ; NO-SIMD128-FAST-LABEL: not_v4i32:
11060 ; NO-SIMD128-FAST: .functype not_v4i32 (i32, i32, i32, i32, i32) -> ()
11061 ; NO-SIMD128-FAST-NEXT: # %bb.0:
11062 ; NO-SIMD128-FAST-NEXT: i32.const $push0=, -1
11063 ; NO-SIMD128-FAST-NEXT: i32.xor $push1=, $1, $pop0
11064 ; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop1
11065 ; NO-SIMD128-FAST-NEXT: i32.const $push9=, -1
11066 ; NO-SIMD128-FAST-NEXT: i32.xor $push2=, $2, $pop9
11067 ; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop2
11068 ; NO-SIMD128-FAST-NEXT: i32.const $push8=, -1
11069 ; NO-SIMD128-FAST-NEXT: i32.xor $push3=, $3, $pop8
11070 ; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop3
11071 ; NO-SIMD128-FAST-NEXT: i32.const $push4=, 12
11072 ; NO-SIMD128-FAST-NEXT: i32.add $push5=, $0, $pop4
11073 ; NO-SIMD128-FAST-NEXT: i32.const $push7=, -1
11074 ; NO-SIMD128-FAST-NEXT: i32.xor $push6=, $4, $pop7
11075 ; NO-SIMD128-FAST-NEXT: i32.store 0($pop5), $pop6
11076 ; NO-SIMD128-FAST-NEXT: return
11077 %a = xor <4 x i32> %x, <i32 -1, i32 -1, i32 -1, i32 -1>
11081 define <4 x i32> @andnot_v4i32(<4 x i32> %x, <4 x i32> %y) {
11082 ; SIMD128-LABEL: andnot_v4i32:
11083 ; SIMD128: .functype andnot_v4i32 (v128, v128) -> (v128)
11084 ; SIMD128-NEXT: # %bb.0:
11085 ; SIMD128-NEXT: v128.andnot $push0=, $0, $1
11086 ; SIMD128-NEXT: return $pop0
11088 ; SIMD128-FAST-LABEL: andnot_v4i32:
11089 ; SIMD128-FAST: .functype andnot_v4i32 (v128, v128) -> (v128)
11090 ; SIMD128-FAST-NEXT: # %bb.0:
11091 ; SIMD128-FAST-NEXT: v128.not $push0=, $1
11092 ; SIMD128-FAST-NEXT: v128.and $push1=, $0, $pop0
11093 ; SIMD128-FAST-NEXT: return $pop1
11095 ; NO-SIMD128-LABEL: andnot_v4i32:
11096 ; NO-SIMD128: .functype andnot_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
11097 ; NO-SIMD128-NEXT: # %bb.0:
11098 ; NO-SIMD128-NEXT: i32.const $push0=, -1
11099 ; NO-SIMD128-NEXT: i32.xor $push1=, $7, $pop0
11100 ; NO-SIMD128-NEXT: i32.and $push2=, $3, $pop1
11101 ; NO-SIMD128-NEXT: i32.store 8($0), $pop2
11102 ; NO-SIMD128-NEXT: i32.const $push13=, -1
11103 ; NO-SIMD128-NEXT: i32.xor $push3=, $6, $pop13
11104 ; NO-SIMD128-NEXT: i32.and $push4=, $2, $pop3
11105 ; NO-SIMD128-NEXT: i32.store 4($0), $pop4
11106 ; NO-SIMD128-NEXT: i32.const $push12=, -1
11107 ; NO-SIMD128-NEXT: i32.xor $push5=, $5, $pop12
11108 ; NO-SIMD128-NEXT: i32.and $push6=, $1, $pop5
11109 ; NO-SIMD128-NEXT: i32.store 0($0), $pop6
11110 ; NO-SIMD128-NEXT: i32.const $push9=, 12
11111 ; NO-SIMD128-NEXT: i32.add $push10=, $0, $pop9
11112 ; NO-SIMD128-NEXT: i32.const $push11=, -1
11113 ; NO-SIMD128-NEXT: i32.xor $push7=, $8, $pop11
11114 ; NO-SIMD128-NEXT: i32.and $push8=, $4, $pop7
11115 ; NO-SIMD128-NEXT: i32.store 0($pop10), $pop8
11116 ; NO-SIMD128-NEXT: return
11118 ; NO-SIMD128-FAST-LABEL: andnot_v4i32:
11119 ; NO-SIMD128-FAST: .functype andnot_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
11120 ; NO-SIMD128-FAST-NEXT: # %bb.0:
11121 ; NO-SIMD128-FAST-NEXT: i32.const $push0=, -1
11122 ; NO-SIMD128-FAST-NEXT: i32.xor $push1=, $5, $pop0
11123 ; NO-SIMD128-FAST-NEXT: i32.and $push2=, $1, $pop1
11124 ; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop2
11125 ; NO-SIMD128-FAST-NEXT: i32.const $push13=, -1
11126 ; NO-SIMD128-FAST-NEXT: i32.xor $push3=, $6, $pop13
11127 ; NO-SIMD128-FAST-NEXT: i32.and $push4=, $2, $pop3
11128 ; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop4
11129 ; NO-SIMD128-FAST-NEXT: i32.const $push12=, -1
11130 ; NO-SIMD128-FAST-NEXT: i32.xor $push5=, $7, $pop12
11131 ; NO-SIMD128-FAST-NEXT: i32.and $push6=, $3, $pop5
11132 ; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop6
11133 ; NO-SIMD128-FAST-NEXT: i32.const $push7=, 12
11134 ; NO-SIMD128-FAST-NEXT: i32.add $push8=, $0, $pop7
11135 ; NO-SIMD128-FAST-NEXT: i32.const $push11=, -1
11136 ; NO-SIMD128-FAST-NEXT: i32.xor $push9=, $8, $pop11
11137 ; NO-SIMD128-FAST-NEXT: i32.and $push10=, $4, $pop9
11138 ; NO-SIMD128-FAST-NEXT: i32.store 0($pop8), $pop10
11139 ; NO-SIMD128-FAST-NEXT: return
11140 %inv_y = xor <4 x i32> %y, <i32 -1, i32 -1, i32 -1, i32 -1>
11141 %a = and <4 x i32> %x, %inv_y
11145 define <4 x i32> @bitselect_v4i32(<4 x i32> %c, <4 x i32> %v1, <4 x i32> %v2) {
11146 ; SIMD128-LABEL: bitselect_v4i32:
11147 ; SIMD128: .functype bitselect_v4i32 (v128, v128, v128) -> (v128)
11148 ; SIMD128-NEXT: # %bb.0:
11149 ; SIMD128-NEXT: v128.bitselect $push0=, $1, $2, $0
11150 ; SIMD128-NEXT: return $pop0
11152 ; SIMD128-FAST-LABEL: bitselect_v4i32:
11153 ; SIMD128-FAST: .functype bitselect_v4i32 (v128, v128, v128) -> (v128)
11154 ; SIMD128-FAST-NEXT: # %bb.0:
11155 ; SIMD128-FAST-NEXT: v128.not $push2=, $0
11156 ; SIMD128-FAST-NEXT: v128.and $push3=, $pop2, $2
11157 ; SIMD128-FAST-NEXT: v128.and $push0=, $0, $1
11158 ; SIMD128-FAST-NEXT: v128.or $push1=, $pop3, $pop0
11159 ; SIMD128-FAST-NEXT: return $pop1
11161 ; NO-SIMD128-LABEL: bitselect_v4i32:
11162 ; NO-SIMD128: .functype bitselect_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
11163 ; NO-SIMD128-NEXT: # %bb.0:
11164 ; NO-SIMD128-NEXT: i32.const $push5=, 12
11165 ; NO-SIMD128-NEXT: i32.add $push6=, $0, $pop5
11166 ; NO-SIMD128-NEXT: i32.const $push1=, -1
11167 ; NO-SIMD128-NEXT: i32.xor $push2=, $4, $pop1
11168 ; NO-SIMD128-NEXT: i32.and $push3=, $pop2, $12
11169 ; NO-SIMD128-NEXT: i32.and $push0=, $4, $8
11170 ; NO-SIMD128-NEXT: i32.or $push4=, $pop3, $pop0
11171 ; NO-SIMD128-NEXT: i32.store 0($pop6), $pop4
11172 ; NO-SIMD128-NEXT: i32.const $push21=, -1
11173 ; NO-SIMD128-NEXT: i32.xor $push8=, $3, $pop21
11174 ; NO-SIMD128-NEXT: i32.and $push9=, $pop8, $11
11175 ; NO-SIMD128-NEXT: i32.and $push7=, $3, $7
11176 ; NO-SIMD128-NEXT: i32.or $push10=, $pop9, $pop7
11177 ; NO-SIMD128-NEXT: i32.store 8($0), $pop10
11178 ; NO-SIMD128-NEXT: i32.const $push20=, -1
11179 ; NO-SIMD128-NEXT: i32.xor $push12=, $2, $pop20
11180 ; NO-SIMD128-NEXT: i32.and $push13=, $pop12, $10
11181 ; NO-SIMD128-NEXT: i32.and $push11=, $2, $6
11182 ; NO-SIMD128-NEXT: i32.or $push14=, $pop13, $pop11
11183 ; NO-SIMD128-NEXT: i32.store 4($0), $pop14
11184 ; NO-SIMD128-NEXT: i32.const $push19=, -1
11185 ; NO-SIMD128-NEXT: i32.xor $push16=, $1, $pop19
11186 ; NO-SIMD128-NEXT: i32.and $push17=, $pop16, $9
11187 ; NO-SIMD128-NEXT: i32.and $push15=, $1, $5
11188 ; NO-SIMD128-NEXT: i32.or $push18=, $pop17, $pop15
11189 ; NO-SIMD128-NEXT: i32.store 0($0), $pop18
11190 ; NO-SIMD128-NEXT: return
11192 ; NO-SIMD128-FAST-LABEL: bitselect_v4i32:
11193 ; NO-SIMD128-FAST: .functype bitselect_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
11194 ; NO-SIMD128-FAST-NEXT: # %bb.0:
11195 ; NO-SIMD128-FAST-NEXT: i32.const $push1=, -1
11196 ; NO-SIMD128-FAST-NEXT: i32.xor $push2=, $1, $pop1
11197 ; NO-SIMD128-FAST-NEXT: i32.and $push3=, $pop2, $9
11198 ; NO-SIMD128-FAST-NEXT: i32.and $push0=, $1, $5
11199 ; NO-SIMD128-FAST-NEXT: i32.or $push4=, $pop3, $pop0
11200 ; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop4
11201 ; NO-SIMD128-FAST-NEXT: i32.const $push21=, -1
11202 ; NO-SIMD128-FAST-NEXT: i32.xor $push6=, $2, $pop21
11203 ; NO-SIMD128-FAST-NEXT: i32.and $push7=, $pop6, $10
11204 ; NO-SIMD128-FAST-NEXT: i32.and $push5=, $2, $6
11205 ; NO-SIMD128-FAST-NEXT: i32.or $push8=, $pop7, $pop5
11206 ; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop8
11207 ; NO-SIMD128-FAST-NEXT: i32.const $push20=, -1
11208 ; NO-SIMD128-FAST-NEXT: i32.xor $push10=, $3, $pop20
11209 ; NO-SIMD128-FAST-NEXT: i32.and $push11=, $pop10, $11
11210 ; NO-SIMD128-FAST-NEXT: i32.and $push9=, $3, $7
11211 ; NO-SIMD128-FAST-NEXT: i32.or $push12=, $pop11, $pop9
11212 ; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop12
11213 ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 12
11214 ; NO-SIMD128-FAST-NEXT: i32.add $push18=, $0, $pop17
11215 ; NO-SIMD128-FAST-NEXT: i32.const $push19=, -1
11216 ; NO-SIMD128-FAST-NEXT: i32.xor $push14=, $4, $pop19
11217 ; NO-SIMD128-FAST-NEXT: i32.and $push15=, $pop14, $12
11218 ; NO-SIMD128-FAST-NEXT: i32.and $push13=, $4, $8
11219 ; NO-SIMD128-FAST-NEXT: i32.or $push16=, $pop15, $pop13
11220 ; NO-SIMD128-FAST-NEXT: i32.store 0($pop18), $pop16
11221 ; NO-SIMD128-FAST-NEXT: return
11222 %masked_v1 = and <4 x i32> %c, %v1
11223 %inv_mask = xor <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>, %c
11224 %masked_v2 = and <4 x i32> %inv_mask, %v2
11225 %a = or <4 x i32> %masked_v2, %masked_v1
11229 define <4 x i32> @bitselect_xor_v4i32(<4 x i32> %c, <4 x i32> %v1, <4 x i32> %v2) {
11230 ; SIMD128-LABEL: bitselect_xor_v4i32:
11231 ; SIMD128: .functype bitselect_xor_v4i32 (v128, v128, v128) -> (v128)
11232 ; SIMD128-NEXT: # %bb.0:
11233 ; SIMD128-NEXT: v128.bitselect $push0=, $1, $2, $0
11234 ; SIMD128-NEXT: return $pop0
11236 ; SIMD128-FAST-LABEL: bitselect_xor_v4i32:
11237 ; SIMD128-FAST: .functype bitselect_xor_v4i32 (v128, v128, v128) -> (v128)
11238 ; SIMD128-FAST-NEXT: # %bb.0:
11239 ; SIMD128-FAST-NEXT: v128.xor $push2=, $1, $2
11240 ; SIMD128-FAST-NEXT: v128.and $push1=, $pop2, $0
11241 ; SIMD128-FAST-NEXT: v128.xor $push0=, $pop1, $2
11242 ; SIMD128-FAST-NEXT: return $pop0
11244 ; NO-SIMD128-LABEL: bitselect_xor_v4i32:
11245 ; NO-SIMD128: .functype bitselect_xor_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
11246 ; NO-SIMD128-NEXT: # %bb.0:
11247 ; NO-SIMD128-NEXT: i32.const $push3=, 12
11248 ; NO-SIMD128-NEXT: i32.add $push4=, $0, $pop3
11249 ; NO-SIMD128-NEXT: i32.xor $push0=, $8, $12
11250 ; NO-SIMD128-NEXT: i32.and $push1=, $pop0, $4
11251 ; NO-SIMD128-NEXT: i32.xor $push2=, $pop1, $12
11252 ; NO-SIMD128-NEXT: i32.store 0($pop4), $pop2
11253 ; NO-SIMD128-NEXT: i32.xor $push5=, $7, $11
11254 ; NO-SIMD128-NEXT: i32.and $push6=, $pop5, $3
11255 ; NO-SIMD128-NEXT: i32.xor $push7=, $pop6, $11
11256 ; NO-SIMD128-NEXT: i32.store 8($0), $pop7
11257 ; NO-SIMD128-NEXT: i32.xor $push8=, $6, $10
11258 ; NO-SIMD128-NEXT: i32.and $push9=, $pop8, $2
11259 ; NO-SIMD128-NEXT: i32.xor $push10=, $pop9, $10
11260 ; NO-SIMD128-NEXT: i32.store 4($0), $pop10
11261 ; NO-SIMD128-NEXT: i32.xor $push11=, $5, $9
11262 ; NO-SIMD128-NEXT: i32.and $push12=, $pop11, $1
11263 ; NO-SIMD128-NEXT: i32.xor $push13=, $pop12, $9
11264 ; NO-SIMD128-NEXT: i32.store 0($0), $pop13
11265 ; NO-SIMD128-NEXT: return
11267 ; NO-SIMD128-FAST-LABEL: bitselect_xor_v4i32:
11268 ; NO-SIMD128-FAST: .functype bitselect_xor_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
11269 ; NO-SIMD128-FAST-NEXT: # %bb.0:
11270 ; NO-SIMD128-FAST-NEXT: i32.xor $push0=, $5, $9
11271 ; NO-SIMD128-FAST-NEXT: i32.and $push1=, $pop0, $1
11272 ; NO-SIMD128-FAST-NEXT: i32.xor $push2=, $pop1, $9
11273 ; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop2
11274 ; NO-SIMD128-FAST-NEXT: i32.xor $push3=, $6, $10
11275 ; NO-SIMD128-FAST-NEXT: i32.and $push4=, $pop3, $2
11276 ; NO-SIMD128-FAST-NEXT: i32.xor $push5=, $pop4, $10
11277 ; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop5
11278 ; NO-SIMD128-FAST-NEXT: i32.xor $push6=, $7, $11
11279 ; NO-SIMD128-FAST-NEXT: i32.and $push7=, $pop6, $3
11280 ; NO-SIMD128-FAST-NEXT: i32.xor $push8=, $pop7, $11
11281 ; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop8
11282 ; NO-SIMD128-FAST-NEXT: i32.const $push9=, 12
11283 ; NO-SIMD128-FAST-NEXT: i32.add $push10=, $0, $pop9
11284 ; NO-SIMD128-FAST-NEXT: i32.xor $push11=, $8, $12
11285 ; NO-SIMD128-FAST-NEXT: i32.and $push12=, $pop11, $4
11286 ; NO-SIMD128-FAST-NEXT: i32.xor $push13=, $pop12, $12
11287 ; NO-SIMD128-FAST-NEXT: i32.store 0($pop10), $pop13
11288 ; NO-SIMD128-FAST-NEXT: return
11289 %xor1 = xor <4 x i32> %v1, %v2
11290 %and = and <4 x i32> %xor1, %c
11291 %a = xor <4 x i32> %and, %v2
11295 define <4 x i32> @bitselect_xor_reversed_v4i32(<4 x i32> %c, <4 x i32> %v1, <4 x i32> %v2) {
11296 ; SIMD128-LABEL: bitselect_xor_reversed_v4i32:
11297 ; SIMD128: .functype bitselect_xor_reversed_v4i32 (v128, v128, v128) -> (v128)
11298 ; SIMD128-NEXT: # %bb.0:
11299 ; SIMD128-NEXT: v128.bitselect $push0=, $2, $1, $0
11300 ; SIMD128-NEXT: return $pop0
11302 ; SIMD128-FAST-LABEL: bitselect_xor_reversed_v4i32:
11303 ; SIMD128-FAST: .functype bitselect_xor_reversed_v4i32 (v128, v128, v128) -> (v128)
11304 ; SIMD128-FAST-NEXT: # %bb.0:
11305 ; SIMD128-FAST-NEXT: v128.xor $push1=, $1, $2
11306 ; SIMD128-FAST-NEXT: v128.not $push2=, $0
11307 ; SIMD128-FAST-NEXT: v128.and $push3=, $pop1, $pop2
11308 ; SIMD128-FAST-NEXT: v128.xor $push0=, $pop3, $2
11309 ; SIMD128-FAST-NEXT: return $pop0
11311 ; NO-SIMD128-LABEL: bitselect_xor_reversed_v4i32:
11312 ; NO-SIMD128: .functype bitselect_xor_reversed_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
11313 ; NO-SIMD128-NEXT: # %bb.0:
11314 ; NO-SIMD128-NEXT: i32.const $push5=, 12
11315 ; NO-SIMD128-NEXT: i32.add $push6=, $0, $pop5
11316 ; NO-SIMD128-NEXT: i32.xor $push2=, $8, $12
11317 ; NO-SIMD128-NEXT: i32.const $push0=, -1
11318 ; NO-SIMD128-NEXT: i32.xor $push1=, $4, $pop0
11319 ; NO-SIMD128-NEXT: i32.and $push3=, $pop2, $pop1
11320 ; NO-SIMD128-NEXT: i32.xor $push4=, $pop3, $12
11321 ; NO-SIMD128-NEXT: i32.store 0($pop6), $pop4
11322 ; NO-SIMD128-NEXT: i32.xor $push8=, $7, $11
11323 ; NO-SIMD128-NEXT: i32.const $push21=, -1
11324 ; NO-SIMD128-NEXT: i32.xor $push7=, $3, $pop21
11325 ; NO-SIMD128-NEXT: i32.and $push9=, $pop8, $pop7
11326 ; NO-SIMD128-NEXT: i32.xor $push10=, $pop9, $11
11327 ; NO-SIMD128-NEXT: i32.store 8($0), $pop10
11328 ; NO-SIMD128-NEXT: i32.xor $push12=, $6, $10
11329 ; NO-SIMD128-NEXT: i32.const $push20=, -1
11330 ; NO-SIMD128-NEXT: i32.xor $push11=, $2, $pop20
11331 ; NO-SIMD128-NEXT: i32.and $push13=, $pop12, $pop11
11332 ; NO-SIMD128-NEXT: i32.xor $push14=, $pop13, $10
11333 ; NO-SIMD128-NEXT: i32.store 4($0), $pop14
11334 ; NO-SIMD128-NEXT: i32.xor $push16=, $5, $9
11335 ; NO-SIMD128-NEXT: i32.const $push19=, -1
11336 ; NO-SIMD128-NEXT: i32.xor $push15=, $1, $pop19
11337 ; NO-SIMD128-NEXT: i32.and $push17=, $pop16, $pop15
11338 ; NO-SIMD128-NEXT: i32.xor $push18=, $pop17, $9
11339 ; NO-SIMD128-NEXT: i32.store 0($0), $pop18
11340 ; NO-SIMD128-NEXT: return
11342 ; NO-SIMD128-FAST-LABEL: bitselect_xor_reversed_v4i32:
11343 ; NO-SIMD128-FAST: .functype bitselect_xor_reversed_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
11344 ; NO-SIMD128-FAST-NEXT: # %bb.0:
11345 ; NO-SIMD128-FAST-NEXT: i32.xor $push2=, $5, $9
11346 ; NO-SIMD128-FAST-NEXT: i32.const $push0=, -1
11347 ; NO-SIMD128-FAST-NEXT: i32.xor $push1=, $1, $pop0
11348 ; NO-SIMD128-FAST-NEXT: i32.and $push3=, $pop2, $pop1
11349 ; NO-SIMD128-FAST-NEXT: i32.xor $push4=, $pop3, $9
11350 ; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop4
11351 ; NO-SIMD128-FAST-NEXT: i32.xor $push6=, $6, $10
11352 ; NO-SIMD128-FAST-NEXT: i32.const $push21=, -1
11353 ; NO-SIMD128-FAST-NEXT: i32.xor $push5=, $2, $pop21
11354 ; NO-SIMD128-FAST-NEXT: i32.and $push7=, $pop6, $pop5
11355 ; NO-SIMD128-FAST-NEXT: i32.xor $push8=, $pop7, $10
11356 ; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop8
11357 ; NO-SIMD128-FAST-NEXT: i32.xor $push10=, $7, $11
11358 ; NO-SIMD128-FAST-NEXT: i32.const $push20=, -1
11359 ; NO-SIMD128-FAST-NEXT: i32.xor $push9=, $3, $pop20
11360 ; NO-SIMD128-FAST-NEXT: i32.and $push11=, $pop10, $pop9
11361 ; NO-SIMD128-FAST-NEXT: i32.xor $push12=, $pop11, $11
11362 ; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop12
11363 ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 12
11364 ; NO-SIMD128-FAST-NEXT: i32.add $push18=, $0, $pop17
11365 ; NO-SIMD128-FAST-NEXT: i32.xor $push14=, $8, $12
11366 ; NO-SIMD128-FAST-NEXT: i32.const $push19=, -1
11367 ; NO-SIMD128-FAST-NEXT: i32.xor $push13=, $4, $pop19
11368 ; NO-SIMD128-FAST-NEXT: i32.and $push15=, $pop14, $pop13
11369 ; NO-SIMD128-FAST-NEXT: i32.xor $push16=, $pop15, $12
11370 ; NO-SIMD128-FAST-NEXT: i32.store 0($pop18), $pop16
11371 ; NO-SIMD128-FAST-NEXT: return
11372 %xor1 = xor <4 x i32> %v1, %v2
11373 %notc = xor <4 x i32> %c, <i32 -1, i32 -1, i32 -1, i32 -1>
11374 %and = and <4 x i32> %xor1, %notc
11375 %a = xor <4 x i32> %and, %v2
11379 define <4 x i32> @extmul_low_s_v4i32(<8 x i16> %v1, <8 x i16> %v2) {
11380 ; SIMD128-LABEL: extmul_low_s_v4i32:
11381 ; SIMD128: .functype extmul_low_s_v4i32 (v128, v128) -> (v128)
11382 ; SIMD128-NEXT: # %bb.0:
11383 ; SIMD128-NEXT: i32x4.extmul_low_i16x8_s $push0=, $0, $1
11384 ; SIMD128-NEXT: return $pop0
11386 ; SIMD128-FAST-LABEL: extmul_low_s_v4i32:
11387 ; SIMD128-FAST: .functype extmul_low_s_v4i32 (v128, v128) -> (v128)
11388 ; SIMD128-FAST-NEXT: # %bb.0:
11389 ; SIMD128-FAST-NEXT: i32x4.extend_low_i16x8_s $push0=, $0
11390 ; SIMD128-FAST-NEXT: i32x4.extend_low_i16x8_s $push1=, $1
11391 ; SIMD128-FAST-NEXT: i32x4.mul $push2=, $pop0, $pop1
11392 ; SIMD128-FAST-NEXT: return $pop2
11394 ; NO-SIMD128-LABEL: extmul_low_s_v4i32:
11395 ; NO-SIMD128: .functype extmul_low_s_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
11396 ; NO-SIMD128-NEXT: # %bb.0:
11397 ; NO-SIMD128-NEXT: i32.extend16_s $push1=, $3
11398 ; NO-SIMD128-NEXT: i32.extend16_s $push0=, $11
11399 ; NO-SIMD128-NEXT: i32.mul $push2=, $pop1, $pop0
11400 ; NO-SIMD128-NEXT: i32.store 8($0), $pop2
11401 ; NO-SIMD128-NEXT: i32.extend16_s $push4=, $2
11402 ; NO-SIMD128-NEXT: i32.extend16_s $push3=, $10
11403 ; NO-SIMD128-NEXT: i32.mul $push5=, $pop4, $pop3
11404 ; NO-SIMD128-NEXT: i32.store 4($0), $pop5
11405 ; NO-SIMD128-NEXT: i32.extend16_s $push7=, $1
11406 ; NO-SIMD128-NEXT: i32.extend16_s $push6=, $9
11407 ; NO-SIMD128-NEXT: i32.mul $push8=, $pop7, $pop6
11408 ; NO-SIMD128-NEXT: i32.store 0($0), $pop8
11409 ; NO-SIMD128-NEXT: i32.const $push12=, 12
11410 ; NO-SIMD128-NEXT: i32.add $push13=, $0, $pop12
11411 ; NO-SIMD128-NEXT: i32.extend16_s $push10=, $4
11412 ; NO-SIMD128-NEXT: i32.extend16_s $push9=, $12
11413 ; NO-SIMD128-NEXT: i32.mul $push11=, $pop10, $pop9
11414 ; NO-SIMD128-NEXT: i32.store 0($pop13), $pop11
11415 ; NO-SIMD128-NEXT: return
11417 ; NO-SIMD128-FAST-LABEL: extmul_low_s_v4i32:
11418 ; NO-SIMD128-FAST: .functype extmul_low_s_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
11419 ; NO-SIMD128-FAST-NEXT: # %bb.0:
11420 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push1=, $1
11421 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push0=, $9
11422 ; NO-SIMD128-FAST-NEXT: i32.mul $push2=, $pop1, $pop0
11423 ; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop2
11424 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push4=, $2
11425 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push3=, $10
11426 ; NO-SIMD128-FAST-NEXT: i32.mul $push5=, $pop4, $pop3
11427 ; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop5
11428 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push7=, $3
11429 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push6=, $11
11430 ; NO-SIMD128-FAST-NEXT: i32.mul $push8=, $pop7, $pop6
11431 ; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop8
11432 ; NO-SIMD128-FAST-NEXT: i32.const $push9=, 12
11433 ; NO-SIMD128-FAST-NEXT: i32.add $push10=, $0, $pop9
11434 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push12=, $4
11435 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push11=, $12
11436 ; NO-SIMD128-FAST-NEXT: i32.mul $push13=, $pop12, $pop11
11437 ; NO-SIMD128-FAST-NEXT: i32.store 0($pop10), $pop13
11438 ; NO-SIMD128-FAST-NEXT: return
11439 %low1 = shufflevector <8 x i16> %v1, <8 x i16> undef,
11440 <4 x i32> <i32 0, i32 1, i32 2, i32 3>
11441 %low2 = shufflevector <8 x i16> %v2, <8 x i16> undef,
11442 <4 x i32> <i32 0, i32 1, i32 2, i32 3>
11443 %extended1 = sext <4 x i16> %low1 to <4 x i32>
11444 %extended2 = sext <4 x i16> %low2 to <4 x i32>
11445 %a = mul <4 x i32> %extended1, %extended2
11449 define <4 x i32> @extmul_high_s_v4i32(<8 x i16> %v1, <8 x i16> %v2) {
11450 ; SIMD128-LABEL: extmul_high_s_v4i32:
11451 ; SIMD128: .functype extmul_high_s_v4i32 (v128, v128) -> (v128)
11452 ; SIMD128-NEXT: # %bb.0:
11453 ; SIMD128-NEXT: i32x4.extmul_high_i16x8_s $push0=, $0, $1
11454 ; SIMD128-NEXT: return $pop0
11456 ; SIMD128-FAST-LABEL: extmul_high_s_v4i32:
11457 ; SIMD128-FAST: .functype extmul_high_s_v4i32 (v128, v128) -> (v128)
11458 ; SIMD128-FAST-NEXT: # %bb.0:
11459 ; SIMD128-FAST-NEXT: i32x4.extend_high_i16x8_s $push0=, $0
11460 ; SIMD128-FAST-NEXT: i32x4.extend_high_i16x8_s $push1=, $1
11461 ; SIMD128-FAST-NEXT: i32x4.mul $push2=, $pop0, $pop1
11462 ; SIMD128-FAST-NEXT: return $pop2
11464 ; NO-SIMD128-LABEL: extmul_high_s_v4i32:
11465 ; NO-SIMD128: .functype extmul_high_s_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
11466 ; NO-SIMD128-NEXT: # %bb.0:
11467 ; NO-SIMD128-NEXT: i32.extend16_s $push1=, $7
11468 ; NO-SIMD128-NEXT: i32.extend16_s $push0=, $15
11469 ; NO-SIMD128-NEXT: i32.mul $push2=, $pop1, $pop0
11470 ; NO-SIMD128-NEXT: i32.store 8($0), $pop2
11471 ; NO-SIMD128-NEXT: i32.extend16_s $push4=, $6
11472 ; NO-SIMD128-NEXT: i32.extend16_s $push3=, $14
11473 ; NO-SIMD128-NEXT: i32.mul $push5=, $pop4, $pop3
11474 ; NO-SIMD128-NEXT: i32.store 4($0), $pop5
11475 ; NO-SIMD128-NEXT: i32.extend16_s $push7=, $5
11476 ; NO-SIMD128-NEXT: i32.extend16_s $push6=, $13
11477 ; NO-SIMD128-NEXT: i32.mul $push8=, $pop7, $pop6
11478 ; NO-SIMD128-NEXT: i32.store 0($0), $pop8
11479 ; NO-SIMD128-NEXT: i32.const $push12=, 12
11480 ; NO-SIMD128-NEXT: i32.add $push13=, $0, $pop12
11481 ; NO-SIMD128-NEXT: i32.extend16_s $push10=, $8
11482 ; NO-SIMD128-NEXT: i32.extend16_s $push9=, $16
11483 ; NO-SIMD128-NEXT: i32.mul $push11=, $pop10, $pop9
11484 ; NO-SIMD128-NEXT: i32.store 0($pop13), $pop11
11485 ; NO-SIMD128-NEXT: return
11487 ; NO-SIMD128-FAST-LABEL: extmul_high_s_v4i32:
11488 ; NO-SIMD128-FAST: .functype extmul_high_s_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
11489 ; NO-SIMD128-FAST-NEXT: # %bb.0:
11490 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push1=, $5
11491 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push0=, $13
11492 ; NO-SIMD128-FAST-NEXT: i32.mul $push2=, $pop1, $pop0
11493 ; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop2
11494 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push4=, $6
11495 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push3=, $14
11496 ; NO-SIMD128-FAST-NEXT: i32.mul $push5=, $pop4, $pop3
11497 ; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop5
11498 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push7=, $7
11499 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push6=, $15
11500 ; NO-SIMD128-FAST-NEXT: i32.mul $push8=, $pop7, $pop6
11501 ; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop8
11502 ; NO-SIMD128-FAST-NEXT: i32.const $push9=, 12
11503 ; NO-SIMD128-FAST-NEXT: i32.add $push10=, $0, $pop9
11504 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push12=, $8
11505 ; NO-SIMD128-FAST-NEXT: i32.extend16_s $push11=, $16
11506 ; NO-SIMD128-FAST-NEXT: i32.mul $push13=, $pop12, $pop11
11507 ; NO-SIMD128-FAST-NEXT: i32.store 0($pop10), $pop13
11508 ; NO-SIMD128-FAST-NEXT: return
11509 %high1 = shufflevector <8 x i16> %v1, <8 x i16> undef,
11510 <4 x i32> <i32 4, i32 5, i32 6, i32 7>
11511 %high2 = shufflevector <8 x i16> %v2, <8 x i16> undef,
11512 <4 x i32> <i32 4, i32 5, i32 6, i32 7>
11513 %extended1 = sext <4 x i16> %high1 to <4 x i32>
11514 %extended2 = sext <4 x i16> %high2 to <4 x i32>
11515 %a = mul <4 x i32> %extended1, %extended2
11519 define <4 x i32> @extmul_low_u_v4i32(<8 x i16> %v1, <8 x i16> %v2) {
11520 ; SIMD128-LABEL: extmul_low_u_v4i32:
11521 ; SIMD128: .functype extmul_low_u_v4i32 (v128, v128) -> (v128)
11522 ; SIMD128-NEXT: # %bb.0:
11523 ; SIMD128-NEXT: i32x4.extmul_low_i16x8_u $push0=, $0, $1
11524 ; SIMD128-NEXT: return $pop0
11526 ; SIMD128-FAST-LABEL: extmul_low_u_v4i32:
11527 ; SIMD128-FAST: .functype extmul_low_u_v4i32 (v128, v128) -> (v128)
11528 ; SIMD128-FAST-NEXT: # %bb.0:
11529 ; SIMD128-FAST-NEXT: i32x4.extend_low_i16x8_u $push0=, $0
11530 ; SIMD128-FAST-NEXT: i32x4.extend_low_i16x8_u $push1=, $1
11531 ; SIMD128-FAST-NEXT: i32x4.mul $push2=, $pop0, $pop1
11532 ; SIMD128-FAST-NEXT: return $pop2
11534 ; NO-SIMD128-LABEL: extmul_low_u_v4i32:
11535 ; NO-SIMD128: .functype extmul_low_u_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
11536 ; NO-SIMD128-NEXT: # %bb.0:
11537 ; NO-SIMD128-NEXT: i32.const $push0=, 65535
11538 ; NO-SIMD128-NEXT: i32.and $push2=, $3, $pop0
11539 ; NO-SIMD128-NEXT: i32.const $push21=, 65535
11540 ; NO-SIMD128-NEXT: i32.and $push1=, $11, $pop21
11541 ; NO-SIMD128-NEXT: i32.mul $push3=, $pop2, $pop1
11542 ; NO-SIMD128-NEXT: i32.store 8($0), $pop3
11543 ; NO-SIMD128-NEXT: i32.const $push20=, 65535
11544 ; NO-SIMD128-NEXT: i32.and $push5=, $2, $pop20
11545 ; NO-SIMD128-NEXT: i32.const $push19=, 65535
11546 ; NO-SIMD128-NEXT: i32.and $push4=, $10, $pop19
11547 ; NO-SIMD128-NEXT: i32.mul $push6=, $pop5, $pop4
11548 ; NO-SIMD128-NEXT: i32.store 4($0), $pop6
11549 ; NO-SIMD128-NEXT: i32.const $push18=, 65535
11550 ; NO-SIMD128-NEXT: i32.and $push8=, $1, $pop18
11551 ; NO-SIMD128-NEXT: i32.const $push17=, 65535
11552 ; NO-SIMD128-NEXT: i32.and $push7=, $9, $pop17
11553 ; NO-SIMD128-NEXT: i32.mul $push9=, $pop8, $pop7
11554 ; NO-SIMD128-NEXT: i32.store 0($0), $pop9
11555 ; NO-SIMD128-NEXT: i32.const $push13=, 12
11556 ; NO-SIMD128-NEXT: i32.add $push14=, $0, $pop13
11557 ; NO-SIMD128-NEXT: i32.const $push16=, 65535
11558 ; NO-SIMD128-NEXT: i32.and $push11=, $4, $pop16
11559 ; NO-SIMD128-NEXT: i32.const $push15=, 65535
11560 ; NO-SIMD128-NEXT: i32.and $push10=, $12, $pop15
11561 ; NO-SIMD128-NEXT: i32.mul $push12=, $pop11, $pop10
11562 ; NO-SIMD128-NEXT: i32.store 0($pop14), $pop12
11563 ; NO-SIMD128-NEXT: return
11565 ; NO-SIMD128-FAST-LABEL: extmul_low_u_v4i32:
11566 ; NO-SIMD128-FAST: .functype extmul_low_u_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
11567 ; NO-SIMD128-FAST-NEXT: # %bb.0:
11568 ; NO-SIMD128-FAST-NEXT: i32.const $push0=, 65535
11569 ; NO-SIMD128-FAST-NEXT: i32.and $push2=, $1, $pop0
11570 ; NO-SIMD128-FAST-NEXT: i32.const $push21=, 65535
11571 ; NO-SIMD128-FAST-NEXT: i32.and $push1=, $9, $pop21
11572 ; NO-SIMD128-FAST-NEXT: i32.mul $push3=, $pop2, $pop1
11573 ; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop3
11574 ; NO-SIMD128-FAST-NEXT: i32.const $push20=, 65535
11575 ; NO-SIMD128-FAST-NEXT: i32.and $push5=, $2, $pop20
11576 ; NO-SIMD128-FAST-NEXT: i32.const $push19=, 65535
11577 ; NO-SIMD128-FAST-NEXT: i32.and $push4=, $10, $pop19
11578 ; NO-SIMD128-FAST-NEXT: i32.mul $push6=, $pop5, $pop4
11579 ; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop6
11580 ; NO-SIMD128-FAST-NEXT: i32.const $push18=, 65535
11581 ; NO-SIMD128-FAST-NEXT: i32.and $push8=, $3, $pop18
11582 ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 65535
11583 ; NO-SIMD128-FAST-NEXT: i32.and $push7=, $11, $pop17
11584 ; NO-SIMD128-FAST-NEXT: i32.mul $push9=, $pop8, $pop7
11585 ; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop9
11586 ; NO-SIMD128-FAST-NEXT: i32.const $push13=, 12
11587 ; NO-SIMD128-FAST-NEXT: i32.add $push14=, $0, $pop13
11588 ; NO-SIMD128-FAST-NEXT: i32.const $push16=, 65535
11589 ; NO-SIMD128-FAST-NEXT: i32.and $push11=, $4, $pop16
11590 ; NO-SIMD128-FAST-NEXT: i32.const $push15=, 65535
11591 ; NO-SIMD128-FAST-NEXT: i32.and $push10=, $12, $pop15
11592 ; NO-SIMD128-FAST-NEXT: i32.mul $push12=, $pop11, $pop10
11593 ; NO-SIMD128-FAST-NEXT: i32.store 0($pop14), $pop12
11594 ; NO-SIMD128-FAST-NEXT: return
11595 %low1 = shufflevector <8 x i16> %v1, <8 x i16> undef,
11596 <4 x i32> <i32 0, i32 1, i32 2, i32 3>
11597 %low2 = shufflevector <8 x i16> %v2, <8 x i16> undef,
11598 <4 x i32> <i32 0, i32 1, i32 2, i32 3>
11599 %extended1 = zext <4 x i16> %low1 to <4 x i32>
11600 %extended2 = zext <4 x i16> %low2 to <4 x i32>
11601 %a = mul <4 x i32> %extended1, %extended2
11605 define <4 x i32> @extmul_high_u_v4i32(<8 x i16> %v1, <8 x i16> %v2) {
11606 ; SIMD128-LABEL: extmul_high_u_v4i32:
11607 ; SIMD128: .functype extmul_high_u_v4i32 (v128, v128) -> (v128)
11608 ; SIMD128-NEXT: # %bb.0:
11609 ; SIMD128-NEXT: i32x4.extmul_high_i16x8_u $push0=, $0, $1
11610 ; SIMD128-NEXT: return $pop0
11612 ; SIMD128-FAST-LABEL: extmul_high_u_v4i32:
11613 ; SIMD128-FAST: .functype extmul_high_u_v4i32 (v128, v128) -> (v128)
11614 ; SIMD128-FAST-NEXT: # %bb.0:
11615 ; SIMD128-FAST-NEXT: i32x4.extend_high_i16x8_u $push0=, $0
11616 ; SIMD128-FAST-NEXT: i32x4.extend_high_i16x8_u $push1=, $1
11617 ; SIMD128-FAST-NEXT: i32x4.mul $push2=, $pop0, $pop1
11618 ; SIMD128-FAST-NEXT: return $pop2
11620 ; NO-SIMD128-LABEL: extmul_high_u_v4i32:
11621 ; NO-SIMD128: .functype extmul_high_u_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
11622 ; NO-SIMD128-NEXT: # %bb.0:
11623 ; NO-SIMD128-NEXT: i32.const $push0=, 65535
11624 ; NO-SIMD128-NEXT: i32.and $push2=, $7, $pop0
11625 ; NO-SIMD128-NEXT: i32.const $push21=, 65535
11626 ; NO-SIMD128-NEXT: i32.and $push1=, $15, $pop21
11627 ; NO-SIMD128-NEXT: i32.mul $push3=, $pop2, $pop1
11628 ; NO-SIMD128-NEXT: i32.store 8($0), $pop3
11629 ; NO-SIMD128-NEXT: i32.const $push20=, 65535
11630 ; NO-SIMD128-NEXT: i32.and $push5=, $6, $pop20
11631 ; NO-SIMD128-NEXT: i32.const $push19=, 65535
11632 ; NO-SIMD128-NEXT: i32.and $push4=, $14, $pop19
11633 ; NO-SIMD128-NEXT: i32.mul $push6=, $pop5, $pop4
11634 ; NO-SIMD128-NEXT: i32.store 4($0), $pop6
11635 ; NO-SIMD128-NEXT: i32.const $push18=, 65535
11636 ; NO-SIMD128-NEXT: i32.and $push8=, $5, $pop18
11637 ; NO-SIMD128-NEXT: i32.const $push17=, 65535
11638 ; NO-SIMD128-NEXT: i32.and $push7=, $13, $pop17
11639 ; NO-SIMD128-NEXT: i32.mul $push9=, $pop8, $pop7
11640 ; NO-SIMD128-NEXT: i32.store 0($0), $pop9
11641 ; NO-SIMD128-NEXT: i32.const $push13=, 12
11642 ; NO-SIMD128-NEXT: i32.add $push14=, $0, $pop13
11643 ; NO-SIMD128-NEXT: i32.const $push16=, 65535
11644 ; NO-SIMD128-NEXT: i32.and $push11=, $8, $pop16
11645 ; NO-SIMD128-NEXT: i32.const $push15=, 65535
11646 ; NO-SIMD128-NEXT: i32.and $push10=, $16, $pop15
11647 ; NO-SIMD128-NEXT: i32.mul $push12=, $pop11, $pop10
11648 ; NO-SIMD128-NEXT: i32.store 0($pop14), $pop12
11649 ; NO-SIMD128-NEXT: return
11651 ; NO-SIMD128-FAST-LABEL: extmul_high_u_v4i32:
11652 ; NO-SIMD128-FAST: .functype extmul_high_u_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
11653 ; NO-SIMD128-FAST-NEXT: # %bb.0:
11654 ; NO-SIMD128-FAST-NEXT: i32.const $push0=, 65535
11655 ; NO-SIMD128-FAST-NEXT: i32.and $push2=, $5, $pop0
11656 ; NO-SIMD128-FAST-NEXT: i32.const $push21=, 65535
11657 ; NO-SIMD128-FAST-NEXT: i32.and $push1=, $13, $pop21
11658 ; NO-SIMD128-FAST-NEXT: i32.mul $push3=, $pop2, $pop1
11659 ; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop3
11660 ; NO-SIMD128-FAST-NEXT: i32.const $push20=, 65535
11661 ; NO-SIMD128-FAST-NEXT: i32.and $push5=, $6, $pop20
11662 ; NO-SIMD128-FAST-NEXT: i32.const $push19=, 65535
11663 ; NO-SIMD128-FAST-NEXT: i32.and $push4=, $14, $pop19
11664 ; NO-SIMD128-FAST-NEXT: i32.mul $push6=, $pop5, $pop4
11665 ; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop6
11666 ; NO-SIMD128-FAST-NEXT: i32.const $push18=, 65535
11667 ; NO-SIMD128-FAST-NEXT: i32.and $push8=, $7, $pop18
11668 ; NO-SIMD128-FAST-NEXT: i32.const $push17=, 65535
11669 ; NO-SIMD128-FAST-NEXT: i32.and $push7=, $15, $pop17
11670 ; NO-SIMD128-FAST-NEXT: i32.mul $push9=, $pop8, $pop7
11671 ; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop9
11672 ; NO-SIMD128-FAST-NEXT: i32.const $push13=, 12
11673 ; NO-SIMD128-FAST-NEXT: i32.add $push14=, $0, $pop13
11674 ; NO-SIMD128-FAST-NEXT: i32.const $push16=, 65535
11675 ; NO-SIMD128-FAST-NEXT: i32.and $push11=, $8, $pop16
11676 ; NO-SIMD128-FAST-NEXT: i32.const $push15=, 65535
11677 ; NO-SIMD128-FAST-NEXT: i32.and $push10=, $16, $pop15
11678 ; NO-SIMD128-FAST-NEXT: i32.mul $push12=, $pop11, $pop10
11679 ; NO-SIMD128-FAST-NEXT: i32.store 0($pop14), $pop12
11680 ; NO-SIMD128-FAST-NEXT: return
11681 %high1 = shufflevector <8 x i16> %v1, <8 x i16> undef,
11682 <4 x i32> <i32 4, i32 5, i32 6, i32 7>
11683 %high2 = shufflevector <8 x i16> %v2, <8 x i16> undef,
11684 <4 x i32> <i32 4, i32 5, i32 6, i32 7>
11685 %extended1 = zext <4 x i16> %high1 to <4 x i32>
11686 %extended2 = zext <4 x i16> %high2 to <4 x i32>
11687 %a = mul <4 x i32> %extended1, %extended2
11691 ; ==============================================================================
11693 ; ==============================================================================
11694 define <2 x i64> @add_v2i64(<2 x i64> %x, <2 x i64> %y) {
11695 ; SIMD128-LABEL: add_v2i64:
11696 ; SIMD128: .functype add_v2i64 (v128, v128) -> (v128)
11697 ; SIMD128-NEXT: # %bb.0:
11698 ; SIMD128-NEXT: i64x2.add $push0=, $0, $1
11699 ; SIMD128-NEXT: return $pop0
11701 ; SIMD128-FAST-LABEL: add_v2i64:
11702 ; SIMD128-FAST: .functype add_v2i64 (v128, v128) -> (v128)
11703 ; SIMD128-FAST-NEXT: # %bb.0:
11704 ; SIMD128-FAST-NEXT: i64x2.add $push0=, $0, $1
11705 ; SIMD128-FAST-NEXT: return $pop0
11707 ; NO-SIMD128-LABEL: add_v2i64:
11708 ; NO-SIMD128: .functype add_v2i64 (i32, i64, i64, i64, i64) -> ()
11709 ; NO-SIMD128-NEXT: # %bb.0:
11710 ; NO-SIMD128-NEXT: i64.add $push0=, $2, $4
11711 ; NO-SIMD128-NEXT: i64.store 8($0), $pop0
11712 ; NO-SIMD128-NEXT: i64.add $push1=, $1, $3
11713 ; NO-SIMD128-NEXT: i64.store 0($0), $pop1
11714 ; NO-SIMD128-NEXT: return
11716 ; NO-SIMD128-FAST-LABEL: add_v2i64:
11717 ; NO-SIMD128-FAST: .functype add_v2i64 (i32, i64, i64, i64, i64) -> ()
11718 ; NO-SIMD128-FAST-NEXT: # %bb.0:
11719 ; NO-SIMD128-FAST-NEXT: i64.add $push0=, $1, $3
11720 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop0
11721 ; NO-SIMD128-FAST-NEXT: i64.add $push1=, $2, $4
11722 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop1
11723 ; NO-SIMD128-FAST-NEXT: return
11724 %a = add <2 x i64> %x, %y
11728 define <2 x i64> @sub_v2i64(<2 x i64> %x, <2 x i64> %y) {
11729 ; SIMD128-LABEL: sub_v2i64:
11730 ; SIMD128: .functype sub_v2i64 (v128, v128) -> (v128)
11731 ; SIMD128-NEXT: # %bb.0:
11732 ; SIMD128-NEXT: i64x2.sub $push0=, $0, $1
11733 ; SIMD128-NEXT: return $pop0
11735 ; SIMD128-FAST-LABEL: sub_v2i64:
11736 ; SIMD128-FAST: .functype sub_v2i64 (v128, v128) -> (v128)
11737 ; SIMD128-FAST-NEXT: # %bb.0:
11738 ; SIMD128-FAST-NEXT: i64x2.sub $push0=, $0, $1
11739 ; SIMD128-FAST-NEXT: return $pop0
11741 ; NO-SIMD128-LABEL: sub_v2i64:
11742 ; NO-SIMD128: .functype sub_v2i64 (i32, i64, i64, i64, i64) -> ()
11743 ; NO-SIMD128-NEXT: # %bb.0:
11744 ; NO-SIMD128-NEXT: i64.sub $push0=, $2, $4
11745 ; NO-SIMD128-NEXT: i64.store 8($0), $pop0
11746 ; NO-SIMD128-NEXT: i64.sub $push1=, $1, $3
11747 ; NO-SIMD128-NEXT: i64.store 0($0), $pop1
11748 ; NO-SIMD128-NEXT: return
11750 ; NO-SIMD128-FAST-LABEL: sub_v2i64:
11751 ; NO-SIMD128-FAST: .functype sub_v2i64 (i32, i64, i64, i64, i64) -> ()
11752 ; NO-SIMD128-FAST-NEXT: # %bb.0:
11753 ; NO-SIMD128-FAST-NEXT: i64.sub $push0=, $1, $3
11754 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop0
11755 ; NO-SIMD128-FAST-NEXT: i64.sub $push1=, $2, $4
11756 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop1
11757 ; NO-SIMD128-FAST-NEXT: return
11758 %a = sub <2 x i64> %x, %y
11762 define <2 x i64> @mul_v2i64(<2 x i64> %x, <2 x i64> %y) {
11763 ; SIMD128-LABEL: mul_v2i64:
11764 ; SIMD128: .functype mul_v2i64 (v128, v128) -> (v128)
11765 ; SIMD128-NEXT: # %bb.0:
11766 ; SIMD128-NEXT: i64x2.mul $push0=, $0, $1
11767 ; SIMD128-NEXT: return $pop0
11769 ; SIMD128-FAST-LABEL: mul_v2i64:
11770 ; SIMD128-FAST: .functype mul_v2i64 (v128, v128) -> (v128)
11771 ; SIMD128-FAST-NEXT: # %bb.0:
11772 ; SIMD128-FAST-NEXT: i64x2.mul $push0=, $0, $1
11773 ; SIMD128-FAST-NEXT: return $pop0
11775 ; NO-SIMD128-LABEL: mul_v2i64:
11776 ; NO-SIMD128: .functype mul_v2i64 (i32, i64, i64, i64, i64) -> ()
11777 ; NO-SIMD128-NEXT: # %bb.0:
11778 ; NO-SIMD128-NEXT: i64.mul $push0=, $2, $4
11779 ; NO-SIMD128-NEXT: i64.store 8($0), $pop0
11780 ; NO-SIMD128-NEXT: i64.mul $push1=, $1, $3
11781 ; NO-SIMD128-NEXT: i64.store 0($0), $pop1
11782 ; NO-SIMD128-NEXT: return
11784 ; NO-SIMD128-FAST-LABEL: mul_v2i64:
11785 ; NO-SIMD128-FAST: .functype mul_v2i64 (i32, i64, i64, i64, i64) -> ()
11786 ; NO-SIMD128-FAST-NEXT: # %bb.0:
11787 ; NO-SIMD128-FAST-NEXT: i64.mul $push0=, $1, $3
11788 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop0
11789 ; NO-SIMD128-FAST-NEXT: i64.mul $push1=, $2, $4
11790 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop1
11791 ; NO-SIMD128-FAST-NEXT: return
11792 %a = mul <2 x i64> %x, %y
11796 define <2 x i64> @abs_v2i64(<2 x i64> %x) {
11797 ; SIMD128-LABEL: abs_v2i64:
11798 ; SIMD128: .functype abs_v2i64 (v128) -> (v128)
11799 ; SIMD128-NEXT: # %bb.0:
11800 ; SIMD128-NEXT: i64x2.abs $push0=, $0
11801 ; SIMD128-NEXT: return $pop0
11803 ; SIMD128-FAST-LABEL: abs_v2i64:
11804 ; SIMD128-FAST: .functype abs_v2i64 (v128) -> (v128)
11805 ; SIMD128-FAST-NEXT: # %bb.0:
11806 ; SIMD128-FAST-NEXT: i64x2.abs $push0=, $0
11807 ; SIMD128-FAST-NEXT: return $pop0
11809 ; NO-SIMD128-LABEL: abs_v2i64:
11810 ; NO-SIMD128: .functype abs_v2i64 (i32, i64, i64) -> ()
11811 ; NO-SIMD128-NEXT: # %bb.0:
11812 ; NO-SIMD128-NEXT: i64.const $push0=, 63
11813 ; NO-SIMD128-NEXT: i64.shr_s $push9=, $2, $pop0
11814 ; NO-SIMD128-NEXT: local.tee $push8=, $3=, $pop9
11815 ; NO-SIMD128-NEXT: i64.xor $push1=, $2, $pop8
11816 ; NO-SIMD128-NEXT: i64.sub $push2=, $pop1, $3
11817 ; NO-SIMD128-NEXT: i64.store 8($0), $pop2
11818 ; NO-SIMD128-NEXT: i64.const $push7=, 63
11819 ; NO-SIMD128-NEXT: i64.shr_s $push6=, $1, $pop7
11820 ; NO-SIMD128-NEXT: local.tee $push5=, $2=, $pop6
11821 ; NO-SIMD128-NEXT: i64.xor $push3=, $1, $pop5
11822 ; NO-SIMD128-NEXT: i64.sub $push4=, $pop3, $2
11823 ; NO-SIMD128-NEXT: i64.store 0($0), $pop4
11824 ; NO-SIMD128-NEXT: return
11826 ; NO-SIMD128-FAST-LABEL: abs_v2i64:
11827 ; NO-SIMD128-FAST: .functype abs_v2i64 (i32, i64, i64) -> ()
11828 ; NO-SIMD128-FAST-NEXT: # %bb.0:
11829 ; NO-SIMD128-FAST-NEXT: i64.const $push0=, 63
11830 ; NO-SIMD128-FAST-NEXT: i64.shr_s $push9=, $1, $pop0
11831 ; NO-SIMD128-FAST-NEXT: local.tee $push8=, $3=, $pop9
11832 ; NO-SIMD128-FAST-NEXT: i64.xor $push1=, $1, $pop8
11833 ; NO-SIMD128-FAST-NEXT: i64.sub $push2=, $pop1, $3
11834 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop2
11835 ; NO-SIMD128-FAST-NEXT: i64.const $push7=, 63
11836 ; NO-SIMD128-FAST-NEXT: i64.shr_s $push6=, $2, $pop7
11837 ; NO-SIMD128-FAST-NEXT: local.tee $push5=, $1=, $pop6
11838 ; NO-SIMD128-FAST-NEXT: i64.xor $push3=, $2, $pop5
11839 ; NO-SIMD128-FAST-NEXT: i64.sub $push4=, $pop3, $1
11840 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop4
11841 ; NO-SIMD128-FAST-NEXT: return
11842 %a = sub <2 x i64> zeroinitializer, %x
11843 %b = icmp slt <2 x i64> %x, zeroinitializer
11844 %c = select <2 x i1> %b, <2 x i64> %a, <2 x i64> %x
11848 define <2 x i64> @neg_v2i64(<2 x i64> %x) {
11849 ; SIMD128-LABEL: neg_v2i64:
11850 ; SIMD128: .functype neg_v2i64 (v128) -> (v128)
11851 ; SIMD128-NEXT: # %bb.0:
11852 ; SIMD128-NEXT: i64x2.neg $push0=, $0
11853 ; SIMD128-NEXT: return $pop0
11855 ; SIMD128-FAST-LABEL: neg_v2i64:
11856 ; SIMD128-FAST: .functype neg_v2i64 (v128) -> (v128)
11857 ; SIMD128-FAST-NEXT: # %bb.0:
11858 ; SIMD128-FAST-NEXT: i64x2.neg $push0=, $0
11859 ; SIMD128-FAST-NEXT: return $pop0
11861 ; NO-SIMD128-LABEL: neg_v2i64:
11862 ; NO-SIMD128: .functype neg_v2i64 (i32, i64, i64) -> ()
11863 ; NO-SIMD128-NEXT: # %bb.0:
11864 ; NO-SIMD128-NEXT: i64.const $push0=, 0
11865 ; NO-SIMD128-NEXT: i64.sub $push1=, $pop0, $2
11866 ; NO-SIMD128-NEXT: i64.store 8($0), $pop1
11867 ; NO-SIMD128-NEXT: i64.const $push3=, 0
11868 ; NO-SIMD128-NEXT: i64.sub $push2=, $pop3, $1
11869 ; NO-SIMD128-NEXT: i64.store 0($0), $pop2
11870 ; NO-SIMD128-NEXT: return
11872 ; NO-SIMD128-FAST-LABEL: neg_v2i64:
11873 ; NO-SIMD128-FAST: .functype neg_v2i64 (i32, i64, i64) -> ()
11874 ; NO-SIMD128-FAST-NEXT: # %bb.0:
11875 ; NO-SIMD128-FAST-NEXT: i64.const $push0=, 0
11876 ; NO-SIMD128-FAST-NEXT: i64.sub $push1=, $pop0, $1
11877 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop1
11878 ; NO-SIMD128-FAST-NEXT: i64.const $push3=, 0
11879 ; NO-SIMD128-FAST-NEXT: i64.sub $push2=, $pop3, $2
11880 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop2
11881 ; NO-SIMD128-FAST-NEXT: return
11882 %a = sub <2 x i64> <i64 0, i64 0>, %x
11886 define <2 x i64> @shl_v2i64(<2 x i64> %v, i32 %x) {
11887 ; SIMD128-LABEL: shl_v2i64:
11888 ; SIMD128: .functype shl_v2i64 (v128, i32) -> (v128)
11889 ; SIMD128-NEXT: # %bb.0:
11890 ; SIMD128-NEXT: i64x2.shl $push0=, $0, $1
11891 ; SIMD128-NEXT: return $pop0
11893 ; SIMD128-FAST-LABEL: shl_v2i64:
11894 ; SIMD128-FAST: .functype shl_v2i64 (v128, i32) -> (v128)
11895 ; SIMD128-FAST-NEXT: # %bb.0:
11896 ; SIMD128-FAST-NEXT: i64x2.shl $push0=, $0, $1
11897 ; SIMD128-FAST-NEXT: return $pop0
11899 ; NO-SIMD128-LABEL: shl_v2i64:
11900 ; NO-SIMD128: .functype shl_v2i64 (i32, i64, i64, i32) -> ()
11901 ; NO-SIMD128-NEXT: # %bb.0:
11902 ; NO-SIMD128-NEXT: i64.extend_i32_u $push3=, $3
11903 ; NO-SIMD128-NEXT: local.tee $push2=, $4=, $pop3
11904 ; NO-SIMD128-NEXT: i64.shl $push0=, $2, $pop2
11905 ; NO-SIMD128-NEXT: i64.store 8($0), $pop0
11906 ; NO-SIMD128-NEXT: i64.shl $push1=, $1, $4
11907 ; NO-SIMD128-NEXT: i64.store 0($0), $pop1
11908 ; NO-SIMD128-NEXT: return
11910 ; NO-SIMD128-FAST-LABEL: shl_v2i64:
11911 ; NO-SIMD128-FAST: .functype shl_v2i64 (i32, i64, i64, i32) -> ()
11912 ; NO-SIMD128-FAST-NEXT: # %bb.0:
11913 ; NO-SIMD128-FAST-NEXT: i64.extend_i32_u $push3=, $3
11914 ; NO-SIMD128-FAST-NEXT: local.tee $push2=, $4=, $pop3
11915 ; NO-SIMD128-FAST-NEXT: i64.shl $push0=, $2, $pop2
11916 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop0
11917 ; NO-SIMD128-FAST-NEXT: i64.shl $push1=, $1, $4
11918 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop1
11919 ; NO-SIMD128-FAST-NEXT: return
11920 %x2 = zext i32 %x to i64
11921 %t = insertelement <2 x i64> undef, i64 %x2, i32 0
11922 %s = shufflevector <2 x i64> %t, <2 x i64> undef, <2 x i32> <i32 0, i32 0>
11923 %a = shl <2 x i64> %v, %s
11927 define <2 x i64> @shl_sext_v2i64(<2 x i64> %v, i32 %x) {
11928 ; SIMD128-LABEL: shl_sext_v2i64:
11929 ; SIMD128: .functype shl_sext_v2i64 (v128, i32) -> (v128)
11930 ; SIMD128-NEXT: # %bb.0:
11931 ; SIMD128-NEXT: i64x2.shl $push0=, $0, $1
11932 ; SIMD128-NEXT: return $pop0
11934 ; SIMD128-FAST-LABEL: shl_sext_v2i64:
11935 ; SIMD128-FAST: .functype shl_sext_v2i64 (v128, i32) -> (v128)
11936 ; SIMD128-FAST-NEXT: # %bb.0:
11937 ; SIMD128-FAST-NEXT: i64x2.shl $push0=, $0, $1
11938 ; SIMD128-FAST-NEXT: return $pop0
11940 ; NO-SIMD128-LABEL: shl_sext_v2i64:
11941 ; NO-SIMD128: .functype shl_sext_v2i64 (i32, i64, i64, i32) -> ()
11942 ; NO-SIMD128-NEXT: # %bb.0:
11943 ; NO-SIMD128-NEXT: i64.extend_i32_s $push3=, $3
11944 ; NO-SIMD128-NEXT: local.tee $push2=, $4=, $pop3
11945 ; NO-SIMD128-NEXT: i64.shl $push0=, $2, $pop2
11946 ; NO-SIMD128-NEXT: i64.store 8($0), $pop0
11947 ; NO-SIMD128-NEXT: i64.shl $push1=, $1, $4
11948 ; NO-SIMD128-NEXT: i64.store 0($0), $pop1
11949 ; NO-SIMD128-NEXT: return
11951 ; NO-SIMD128-FAST-LABEL: shl_sext_v2i64:
11952 ; NO-SIMD128-FAST: .functype shl_sext_v2i64 (i32, i64, i64, i32) -> ()
11953 ; NO-SIMD128-FAST-NEXT: # %bb.0:
11954 ; NO-SIMD128-FAST-NEXT: i64.extend_i32_s $push3=, $3
11955 ; NO-SIMD128-FAST-NEXT: local.tee $push2=, $4=, $pop3
11956 ; NO-SIMD128-FAST-NEXT: i64.shl $push0=, $2, $pop2
11957 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop0
11958 ; NO-SIMD128-FAST-NEXT: i64.shl $push1=, $1, $4
11959 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop1
11960 ; NO-SIMD128-FAST-NEXT: return
11961 %x2 = sext i32 %x to i64
11962 %t = insertelement <2 x i64> undef, i64 %x2, i32 0
11963 %s = shufflevector <2 x i64> %t, <2 x i64> undef, <2 x i32> <i32 0, i32 0>
11964 %a = shl <2 x i64> %v, %s
11968 define <2 x i64> @shl_noext_v2i64(<2 x i64> %v, i64 %x) {
11969 ; SIMD128-LABEL: shl_noext_v2i64:
11970 ; SIMD128: .functype shl_noext_v2i64 (v128, i64) -> (v128)
11971 ; SIMD128-NEXT: # %bb.0:
11972 ; SIMD128-NEXT: i32.wrap_i64 $push0=, $1
11973 ; SIMD128-NEXT: i64x2.shl $push1=, $0, $pop0
11974 ; SIMD128-NEXT: return $pop1
11976 ; SIMD128-FAST-LABEL: shl_noext_v2i64:
11977 ; SIMD128-FAST: .functype shl_noext_v2i64 (v128, i64) -> (v128)
11978 ; SIMD128-FAST-NEXT: # %bb.0:
11979 ; SIMD128-FAST-NEXT: i32.wrap_i64 $push1=, $1
11980 ; SIMD128-FAST-NEXT: i64x2.shl $push0=, $0, $pop1
11981 ; SIMD128-FAST-NEXT: return $pop0
11983 ; NO-SIMD128-LABEL: shl_noext_v2i64:
11984 ; NO-SIMD128: .functype shl_noext_v2i64 (i32, i64, i64, i64) -> ()
11985 ; NO-SIMD128-NEXT: # %bb.0:
11986 ; NO-SIMD128-NEXT: i64.shl $push0=, $2, $3
11987 ; NO-SIMD128-NEXT: i64.store 8($0), $pop0
11988 ; NO-SIMD128-NEXT: i64.shl $push1=, $1, $3
11989 ; NO-SIMD128-NEXT: i64.store 0($0), $pop1
11990 ; NO-SIMD128-NEXT: return
11992 ; NO-SIMD128-FAST-LABEL: shl_noext_v2i64:
11993 ; NO-SIMD128-FAST: .functype shl_noext_v2i64 (i32, i64, i64, i64) -> ()
11994 ; NO-SIMD128-FAST-NEXT: # %bb.0:
11995 ; NO-SIMD128-FAST-NEXT: i64.shl $push0=, $1, $3
11996 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop0
11997 ; NO-SIMD128-FAST-NEXT: i64.shl $push1=, $2, $3
11998 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop1
11999 ; NO-SIMD128-FAST-NEXT: return
12000 %t = insertelement <2 x i64> undef, i64 %x, i32 0
12001 %s = shufflevector <2 x i64> %t, <2 x i64> undef, <2 x i32> <i32 0, i32 0>
12002 %a = shl <2 x i64> %v, %s
12006 define <2 x i64> @shl_const_v2i64(<2 x i64> %v) {
12007 ; SIMD128-LABEL: shl_const_v2i64:
12008 ; SIMD128: .functype shl_const_v2i64 (v128) -> (v128)
12009 ; SIMD128-NEXT: # %bb.0:
12010 ; SIMD128-NEXT: i32.const $push0=, 5
12011 ; SIMD128-NEXT: i64x2.shl $push1=, $0, $pop0
12012 ; SIMD128-NEXT: return $pop1
12014 ; SIMD128-FAST-LABEL: shl_const_v2i64:
12015 ; SIMD128-FAST: .functype shl_const_v2i64 (v128) -> (v128)
12016 ; SIMD128-FAST-NEXT: # %bb.0:
12017 ; SIMD128-FAST-NEXT: i32.const $push1=, 5
12018 ; SIMD128-FAST-NEXT: i64x2.shl $push0=, $0, $pop1
12019 ; SIMD128-FAST-NEXT: return $pop0
12021 ; NO-SIMD128-LABEL: shl_const_v2i64:
12022 ; NO-SIMD128: .functype shl_const_v2i64 (i32, i64, i64) -> ()
12023 ; NO-SIMD128-NEXT: # %bb.0:
12024 ; NO-SIMD128-NEXT: i64.const $push0=, 5
12025 ; NO-SIMD128-NEXT: i64.shl $push1=, $2, $pop0
12026 ; NO-SIMD128-NEXT: i64.store 8($0), $pop1
12027 ; NO-SIMD128-NEXT: i64.const $push3=, 5
12028 ; NO-SIMD128-NEXT: i64.shl $push2=, $1, $pop3
12029 ; NO-SIMD128-NEXT: i64.store 0($0), $pop2
12030 ; NO-SIMD128-NEXT: return
12032 ; NO-SIMD128-FAST-LABEL: shl_const_v2i64:
12033 ; NO-SIMD128-FAST: .functype shl_const_v2i64 (i32, i64, i64) -> ()
12034 ; NO-SIMD128-FAST-NEXT: # %bb.0:
12035 ; NO-SIMD128-FAST-NEXT: i64.const $push0=, 5
12036 ; NO-SIMD128-FAST-NEXT: i64.shl $push1=, $1, $pop0
12037 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop1
12038 ; NO-SIMD128-FAST-NEXT: i64.const $push3=, 5
12039 ; NO-SIMD128-FAST-NEXT: i64.shl $push2=, $2, $pop3
12040 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop2
12041 ; NO-SIMD128-FAST-NEXT: return
12042 %a = shl <2 x i64> %v, <i64 5, i64 5>
12046 define <2 x i64> @shl_vec_v2i64(<2 x i64> %v, <2 x i64> %x) {
12047 ; SIMD128-LABEL: shl_vec_v2i64:
12048 ; SIMD128: .functype shl_vec_v2i64 (v128, v128) -> (v128)
12049 ; SIMD128-NEXT: # %bb.0:
12050 ; SIMD128-NEXT: i64x2.extract_lane $push4=, $0, 0
12051 ; SIMD128-NEXT: i64x2.extract_lane $push3=, $1, 0
12052 ; SIMD128-NEXT: i64.shl $push5=, $pop4, $pop3
12053 ; SIMD128-NEXT: i64x2.splat $push6=, $pop5
12054 ; SIMD128-NEXT: i64x2.extract_lane $push1=, $0, 1
12055 ; SIMD128-NEXT: i64x2.extract_lane $push0=, $1, 1
12056 ; SIMD128-NEXT: i64.shl $push2=, $pop1, $pop0
12057 ; SIMD128-NEXT: i64x2.replace_lane $push7=, $pop6, 1, $pop2
12058 ; SIMD128-NEXT: return $pop7
12060 ; SIMD128-FAST-LABEL: shl_vec_v2i64:
12061 ; SIMD128-FAST: .functype shl_vec_v2i64 (v128, v128) -> (v128)
12062 ; SIMD128-FAST-NEXT: # %bb.0:
12063 ; SIMD128-FAST-NEXT: i64x2.extract_lane $push5=, $0, 0
12064 ; SIMD128-FAST-NEXT: i64x2.extract_lane $push4=, $1, 0
12065 ; SIMD128-FAST-NEXT: i64.shl $push6=, $pop5, $pop4
12066 ; SIMD128-FAST-NEXT: i64x2.splat $push7=, $pop6
12067 ; SIMD128-FAST-NEXT: i64x2.extract_lane $push2=, $0, 1
12068 ; SIMD128-FAST-NEXT: i64x2.extract_lane $push1=, $1, 1
12069 ; SIMD128-FAST-NEXT: i64.shl $push3=, $pop2, $pop1
12070 ; SIMD128-FAST-NEXT: i64x2.replace_lane $push0=, $pop7, 1, $pop3
12071 ; SIMD128-FAST-NEXT: return $pop0
12073 ; NO-SIMD128-LABEL: shl_vec_v2i64:
12074 ; NO-SIMD128: .functype shl_vec_v2i64 (i32, i64, i64, i64, i64) -> ()
12075 ; NO-SIMD128-NEXT: # %bb.0:
12076 ; NO-SIMD128-NEXT: i64.shl $push0=, $2, $4
12077 ; NO-SIMD128-NEXT: i64.store 8($0), $pop0
12078 ; NO-SIMD128-NEXT: i64.shl $push1=, $1, $3
12079 ; NO-SIMD128-NEXT: i64.store 0($0), $pop1
12080 ; NO-SIMD128-NEXT: return
12082 ; NO-SIMD128-FAST-LABEL: shl_vec_v2i64:
12083 ; NO-SIMD128-FAST: .functype shl_vec_v2i64 (i32, i64, i64, i64, i64) -> ()
12084 ; NO-SIMD128-FAST-NEXT: # %bb.0:
12085 ; NO-SIMD128-FAST-NEXT: i64.shl $push0=, $1, $3
12086 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop0
12087 ; NO-SIMD128-FAST-NEXT: i64.shl $push1=, $2, $4
12088 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop1
12089 ; NO-SIMD128-FAST-NEXT: return
12090 %a = shl <2 x i64> %v, %x
12094 define <2 x i64> @shr_s_v2i64(<2 x i64> %v, i32 %x) {
12095 ; SIMD128-LABEL: shr_s_v2i64:
12096 ; SIMD128: .functype shr_s_v2i64 (v128, i32) -> (v128)
12097 ; SIMD128-NEXT: # %bb.0:
12098 ; SIMD128-NEXT: i64x2.shr_s $push0=, $0, $1
12099 ; SIMD128-NEXT: return $pop0
12101 ; SIMD128-FAST-LABEL: shr_s_v2i64:
12102 ; SIMD128-FAST: .functype shr_s_v2i64 (v128, i32) -> (v128)
12103 ; SIMD128-FAST-NEXT: # %bb.0:
12104 ; SIMD128-FAST-NEXT: i64x2.shr_s $push0=, $0, $1
12105 ; SIMD128-FAST-NEXT: return $pop0
12107 ; NO-SIMD128-LABEL: shr_s_v2i64:
12108 ; NO-SIMD128: .functype shr_s_v2i64 (i32, i64, i64, i32) -> ()
12109 ; NO-SIMD128-NEXT: # %bb.0:
12110 ; NO-SIMD128-NEXT: i64.extend_i32_u $push3=, $3
12111 ; NO-SIMD128-NEXT: local.tee $push2=, $4=, $pop3
12112 ; NO-SIMD128-NEXT: i64.shr_s $push0=, $2, $pop2
12113 ; NO-SIMD128-NEXT: i64.store 8($0), $pop0
12114 ; NO-SIMD128-NEXT: i64.shr_s $push1=, $1, $4
12115 ; NO-SIMD128-NEXT: i64.store 0($0), $pop1
12116 ; NO-SIMD128-NEXT: return
12118 ; NO-SIMD128-FAST-LABEL: shr_s_v2i64:
12119 ; NO-SIMD128-FAST: .functype shr_s_v2i64 (i32, i64, i64, i32) -> ()
12120 ; NO-SIMD128-FAST-NEXT: # %bb.0:
12121 ; NO-SIMD128-FAST-NEXT: i64.extend_i32_u $push3=, $3
12122 ; NO-SIMD128-FAST-NEXT: local.tee $push2=, $4=, $pop3
12123 ; NO-SIMD128-FAST-NEXT: i64.shr_s $push0=, $2, $pop2
12124 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop0
12125 ; NO-SIMD128-FAST-NEXT: i64.shr_s $push1=, $1, $4
12126 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop1
12127 ; NO-SIMD128-FAST-NEXT: return
12128 %x2 = zext i32 %x to i64
12129 %t = insertelement <2 x i64> undef, i64 %x2, i32 0
12130 %s = shufflevector <2 x i64> %t, <2 x i64> undef, <2 x i32> <i32 0, i32 0>
12131 %a = ashr <2 x i64> %v, %s
12135 define <2 x i64> @shr_s_sext_v2i64(<2 x i64> %v, i32 %x) {
12136 ; SIMD128-LABEL: shr_s_sext_v2i64:
12137 ; SIMD128: .functype shr_s_sext_v2i64 (v128, i32) -> (v128)
12138 ; SIMD128-NEXT: # %bb.0:
12139 ; SIMD128-NEXT: i64x2.shr_s $push0=, $0, $1
12140 ; SIMD128-NEXT: return $pop0
12142 ; SIMD128-FAST-LABEL: shr_s_sext_v2i64:
12143 ; SIMD128-FAST: .functype shr_s_sext_v2i64 (v128, i32) -> (v128)
12144 ; SIMD128-FAST-NEXT: # %bb.0:
12145 ; SIMD128-FAST-NEXT: i64x2.shr_s $push0=, $0, $1
12146 ; SIMD128-FAST-NEXT: return $pop0
12148 ; NO-SIMD128-LABEL: shr_s_sext_v2i64:
12149 ; NO-SIMD128: .functype shr_s_sext_v2i64 (i32, i64, i64, i32) -> ()
12150 ; NO-SIMD128-NEXT: # %bb.0:
12151 ; NO-SIMD128-NEXT: i64.extend_i32_s $push3=, $3
12152 ; NO-SIMD128-NEXT: local.tee $push2=, $4=, $pop3
12153 ; NO-SIMD128-NEXT: i64.shr_s $push0=, $2, $pop2
12154 ; NO-SIMD128-NEXT: i64.store 8($0), $pop0
12155 ; NO-SIMD128-NEXT: i64.shr_s $push1=, $1, $4
12156 ; NO-SIMD128-NEXT: i64.store 0($0), $pop1
12157 ; NO-SIMD128-NEXT: return
12159 ; NO-SIMD128-FAST-LABEL: shr_s_sext_v2i64:
12160 ; NO-SIMD128-FAST: .functype shr_s_sext_v2i64 (i32, i64, i64, i32) -> ()
12161 ; NO-SIMD128-FAST-NEXT: # %bb.0:
12162 ; NO-SIMD128-FAST-NEXT: i64.extend_i32_s $push3=, $3
12163 ; NO-SIMD128-FAST-NEXT: local.tee $push2=, $4=, $pop3
12164 ; NO-SIMD128-FAST-NEXT: i64.shr_s $push0=, $2, $pop2
12165 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop0
12166 ; NO-SIMD128-FAST-NEXT: i64.shr_s $push1=, $1, $4
12167 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop1
12168 ; NO-SIMD128-FAST-NEXT: return
12169 %x2 = sext i32 %x to i64
12170 %t = insertelement <2 x i64> undef, i64 %x2, i32 0
12171 %s = shufflevector <2 x i64> %t, <2 x i64> undef, <2 x i32> <i32 0, i32 0>
12172 %a = ashr <2 x i64> %v, %s
12176 define <2 x i64> @shr_s_noext_v2i64(<2 x i64> %v, i64 %x) {
12177 ; SIMD128-LABEL: shr_s_noext_v2i64:
12178 ; SIMD128: .functype shr_s_noext_v2i64 (v128, i64) -> (v128)
12179 ; SIMD128-NEXT: # %bb.0:
12180 ; SIMD128-NEXT: i32.wrap_i64 $push0=, $1
12181 ; SIMD128-NEXT: i64x2.shr_s $push1=, $0, $pop0
12182 ; SIMD128-NEXT: return $pop1
12184 ; SIMD128-FAST-LABEL: shr_s_noext_v2i64:
12185 ; SIMD128-FAST: .functype shr_s_noext_v2i64 (v128, i64) -> (v128)
12186 ; SIMD128-FAST-NEXT: # %bb.0:
12187 ; SIMD128-FAST-NEXT: i32.wrap_i64 $push1=, $1
12188 ; SIMD128-FAST-NEXT: i64x2.shr_s $push0=, $0, $pop1
12189 ; SIMD128-FAST-NEXT: return $pop0
12191 ; NO-SIMD128-LABEL: shr_s_noext_v2i64:
12192 ; NO-SIMD128: .functype shr_s_noext_v2i64 (i32, i64, i64, i64) -> ()
12193 ; NO-SIMD128-NEXT: # %bb.0:
12194 ; NO-SIMD128-NEXT: i64.shr_s $push0=, $2, $3
12195 ; NO-SIMD128-NEXT: i64.store 8($0), $pop0
12196 ; NO-SIMD128-NEXT: i64.shr_s $push1=, $1, $3
12197 ; NO-SIMD128-NEXT: i64.store 0($0), $pop1
12198 ; NO-SIMD128-NEXT: return
12200 ; NO-SIMD128-FAST-LABEL: shr_s_noext_v2i64:
12201 ; NO-SIMD128-FAST: .functype shr_s_noext_v2i64 (i32, i64, i64, i64) -> ()
12202 ; NO-SIMD128-FAST-NEXT: # %bb.0:
12203 ; NO-SIMD128-FAST-NEXT: i64.shr_s $push0=, $1, $3
12204 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop0
12205 ; NO-SIMD128-FAST-NEXT: i64.shr_s $push1=, $2, $3
12206 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop1
12207 ; NO-SIMD128-FAST-NEXT: return
12208 %t = insertelement <2 x i64> undef, i64 %x, i32 0
12209 %s = shufflevector <2 x i64> %t, <2 x i64> undef, <2 x i32> <i32 0, i32 0>
12210 %a = ashr <2 x i64> %v, %s
12214 define <2 x i64> @shr_s_const_v2i64(<2 x i64> %v) {
12215 ; SIMD128-LABEL: shr_s_const_v2i64:
12216 ; SIMD128: .functype shr_s_const_v2i64 (v128) -> (v128)
12217 ; SIMD128-NEXT: # %bb.0:
12218 ; SIMD128-NEXT: i32.const $push0=, 5
12219 ; SIMD128-NEXT: i64x2.shr_s $push1=, $0, $pop0
12220 ; SIMD128-NEXT: return $pop1
12222 ; SIMD128-FAST-LABEL: shr_s_const_v2i64:
12223 ; SIMD128-FAST: .functype shr_s_const_v2i64 (v128) -> (v128)
12224 ; SIMD128-FAST-NEXT: # %bb.0:
12225 ; SIMD128-FAST-NEXT: i32.const $push1=, 5
12226 ; SIMD128-FAST-NEXT: i64x2.shr_s $push0=, $0, $pop1
12227 ; SIMD128-FAST-NEXT: return $pop0
12229 ; NO-SIMD128-LABEL: shr_s_const_v2i64:
12230 ; NO-SIMD128: .functype shr_s_const_v2i64 (i32, i64, i64) -> ()
12231 ; NO-SIMD128-NEXT: # %bb.0:
12232 ; NO-SIMD128-NEXT: i64.const $push0=, 5
12233 ; NO-SIMD128-NEXT: i64.shr_s $push1=, $2, $pop0
12234 ; NO-SIMD128-NEXT: i64.store 8($0), $pop1
12235 ; NO-SIMD128-NEXT: i64.const $push3=, 5
12236 ; NO-SIMD128-NEXT: i64.shr_s $push2=, $1, $pop3
12237 ; NO-SIMD128-NEXT: i64.store 0($0), $pop2
12238 ; NO-SIMD128-NEXT: return
12240 ; NO-SIMD128-FAST-LABEL: shr_s_const_v2i64:
12241 ; NO-SIMD128-FAST: .functype shr_s_const_v2i64 (i32, i64, i64) -> ()
12242 ; NO-SIMD128-FAST-NEXT: # %bb.0:
12243 ; NO-SIMD128-FAST-NEXT: i64.const $push0=, 5
12244 ; NO-SIMD128-FAST-NEXT: i64.shr_s $push1=, $1, $pop0
12245 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop1
12246 ; NO-SIMD128-FAST-NEXT: i64.const $push3=, 5
12247 ; NO-SIMD128-FAST-NEXT: i64.shr_s $push2=, $2, $pop3
12248 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop2
12249 ; NO-SIMD128-FAST-NEXT: return
12250 %a = ashr <2 x i64> %v, <i64 5, i64 5>
12254 define <2 x i64> @shr_s_vec_v2i64(<2 x i64> %v, <2 x i64> %x) {
12255 ; SIMD128-LABEL: shr_s_vec_v2i64:
12256 ; SIMD128: .functype shr_s_vec_v2i64 (v128, v128) -> (v128)
12257 ; SIMD128-NEXT: # %bb.0:
12258 ; SIMD128-NEXT: i64x2.extract_lane $push4=, $0, 0
12259 ; SIMD128-NEXT: i64x2.extract_lane $push3=, $1, 0
12260 ; SIMD128-NEXT: i64.shr_s $push5=, $pop4, $pop3
12261 ; SIMD128-NEXT: i64x2.splat $push6=, $pop5
12262 ; SIMD128-NEXT: i64x2.extract_lane $push1=, $0, 1
12263 ; SIMD128-NEXT: i64x2.extract_lane $push0=, $1, 1
12264 ; SIMD128-NEXT: i64.shr_s $push2=, $pop1, $pop0
12265 ; SIMD128-NEXT: i64x2.replace_lane $push7=, $pop6, 1, $pop2
12266 ; SIMD128-NEXT: return $pop7
12268 ; SIMD128-FAST-LABEL: shr_s_vec_v2i64:
12269 ; SIMD128-FAST: .functype shr_s_vec_v2i64 (v128, v128) -> (v128)
12270 ; SIMD128-FAST-NEXT: # %bb.0:
12271 ; SIMD128-FAST-NEXT: i64x2.extract_lane $push5=, $0, 0
12272 ; SIMD128-FAST-NEXT: i64x2.extract_lane $push4=, $1, 0
12273 ; SIMD128-FAST-NEXT: i64.shr_s $push6=, $pop5, $pop4
12274 ; SIMD128-FAST-NEXT: i64x2.splat $push7=, $pop6
12275 ; SIMD128-FAST-NEXT: i64x2.extract_lane $push2=, $0, 1
12276 ; SIMD128-FAST-NEXT: i64x2.extract_lane $push1=, $1, 1
12277 ; SIMD128-FAST-NEXT: i64.shr_s $push3=, $pop2, $pop1
12278 ; SIMD128-FAST-NEXT: i64x2.replace_lane $push0=, $pop7, 1, $pop3
12279 ; SIMD128-FAST-NEXT: return $pop0
12281 ; NO-SIMD128-LABEL: shr_s_vec_v2i64:
12282 ; NO-SIMD128: .functype shr_s_vec_v2i64 (i32, i64, i64, i64, i64) -> ()
12283 ; NO-SIMD128-NEXT: # %bb.0:
12284 ; NO-SIMD128-NEXT: i64.shr_s $push0=, $2, $4
12285 ; NO-SIMD128-NEXT: i64.store 8($0), $pop0
12286 ; NO-SIMD128-NEXT: i64.shr_s $push1=, $1, $3
12287 ; NO-SIMD128-NEXT: i64.store 0($0), $pop1
12288 ; NO-SIMD128-NEXT: return
12290 ; NO-SIMD128-FAST-LABEL: shr_s_vec_v2i64:
12291 ; NO-SIMD128-FAST: .functype shr_s_vec_v2i64 (i32, i64, i64, i64, i64) -> ()
12292 ; NO-SIMD128-FAST-NEXT: # %bb.0:
12293 ; NO-SIMD128-FAST-NEXT: i64.shr_s $push0=, $1, $3
12294 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop0
12295 ; NO-SIMD128-FAST-NEXT: i64.shr_s $push1=, $2, $4
12296 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop1
12297 ; NO-SIMD128-FAST-NEXT: return
12298 %a = ashr <2 x i64> %v, %x
12302 define <2 x i64> @shr_u_v2i64(<2 x i64> %v, i32 %x) {
12303 ; SIMD128-LABEL: shr_u_v2i64:
12304 ; SIMD128: .functype shr_u_v2i64 (v128, i32) -> (v128)
12305 ; SIMD128-NEXT: # %bb.0:
12306 ; SIMD128-NEXT: i64x2.shr_u $push0=, $0, $1
12307 ; SIMD128-NEXT: return $pop0
12309 ; SIMD128-FAST-LABEL: shr_u_v2i64:
12310 ; SIMD128-FAST: .functype shr_u_v2i64 (v128, i32) -> (v128)
12311 ; SIMD128-FAST-NEXT: # %bb.0:
12312 ; SIMD128-FAST-NEXT: i64x2.shr_u $push0=, $0, $1
12313 ; SIMD128-FAST-NEXT: return $pop0
12315 ; NO-SIMD128-LABEL: shr_u_v2i64:
12316 ; NO-SIMD128: .functype shr_u_v2i64 (i32, i64, i64, i32) -> ()
12317 ; NO-SIMD128-NEXT: # %bb.0:
12318 ; NO-SIMD128-NEXT: i64.extend_i32_u $push3=, $3
12319 ; NO-SIMD128-NEXT: local.tee $push2=, $4=, $pop3
12320 ; NO-SIMD128-NEXT: i64.shr_u $push0=, $2, $pop2
12321 ; NO-SIMD128-NEXT: i64.store 8($0), $pop0
12322 ; NO-SIMD128-NEXT: i64.shr_u $push1=, $1, $4
12323 ; NO-SIMD128-NEXT: i64.store 0($0), $pop1
12324 ; NO-SIMD128-NEXT: return
12326 ; NO-SIMD128-FAST-LABEL: shr_u_v2i64:
12327 ; NO-SIMD128-FAST: .functype shr_u_v2i64 (i32, i64, i64, i32) -> ()
12328 ; NO-SIMD128-FAST-NEXT: # %bb.0:
12329 ; NO-SIMD128-FAST-NEXT: i64.extend_i32_u $push3=, $3
12330 ; NO-SIMD128-FAST-NEXT: local.tee $push2=, $4=, $pop3
12331 ; NO-SIMD128-FAST-NEXT: i64.shr_u $push0=, $2, $pop2
12332 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop0
12333 ; NO-SIMD128-FAST-NEXT: i64.shr_u $push1=, $1, $4
12334 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop1
12335 ; NO-SIMD128-FAST-NEXT: return
12336 %x2 = zext i32 %x to i64
12337 %t = insertelement <2 x i64> undef, i64 %x2, i32 0
12338 %s = shufflevector <2 x i64> %t, <2 x i64> undef, <2 x i32> <i32 0, i32 0>
12339 %a = lshr <2 x i64> %v, %s
12343 define <2 x i64> @shr_u_sext_v2i64(<2 x i64> %v, i32 %x) {
12344 ; SIMD128-LABEL: shr_u_sext_v2i64:
12345 ; SIMD128: .functype shr_u_sext_v2i64 (v128, i32) -> (v128)
12346 ; SIMD128-NEXT: # %bb.0:
12347 ; SIMD128-NEXT: i64x2.shr_u $push0=, $0, $1
12348 ; SIMD128-NEXT: return $pop0
12350 ; SIMD128-FAST-LABEL: shr_u_sext_v2i64:
12351 ; SIMD128-FAST: .functype shr_u_sext_v2i64 (v128, i32) -> (v128)
12352 ; SIMD128-FAST-NEXT: # %bb.0:
12353 ; SIMD128-FAST-NEXT: i64x2.shr_u $push0=, $0, $1
12354 ; SIMD128-FAST-NEXT: return $pop0
12356 ; NO-SIMD128-LABEL: shr_u_sext_v2i64:
12357 ; NO-SIMD128: .functype shr_u_sext_v2i64 (i32, i64, i64, i32) -> ()
12358 ; NO-SIMD128-NEXT: # %bb.0:
12359 ; NO-SIMD128-NEXT: i64.extend_i32_s $push3=, $3
12360 ; NO-SIMD128-NEXT: local.tee $push2=, $4=, $pop3
12361 ; NO-SIMD128-NEXT: i64.shr_u $push0=, $2, $pop2
12362 ; NO-SIMD128-NEXT: i64.store 8($0), $pop0
12363 ; NO-SIMD128-NEXT: i64.shr_u $push1=, $1, $4
12364 ; NO-SIMD128-NEXT: i64.store 0($0), $pop1
12365 ; NO-SIMD128-NEXT: return
12367 ; NO-SIMD128-FAST-LABEL: shr_u_sext_v2i64:
12368 ; NO-SIMD128-FAST: .functype shr_u_sext_v2i64 (i32, i64, i64, i32) -> ()
12369 ; NO-SIMD128-FAST-NEXT: # %bb.0:
12370 ; NO-SIMD128-FAST-NEXT: i64.extend_i32_s $push3=, $3
12371 ; NO-SIMD128-FAST-NEXT: local.tee $push2=, $4=, $pop3
12372 ; NO-SIMD128-FAST-NEXT: i64.shr_u $push0=, $2, $pop2
12373 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop0
12374 ; NO-SIMD128-FAST-NEXT: i64.shr_u $push1=, $1, $4
12375 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop1
12376 ; NO-SIMD128-FAST-NEXT: return
12377 %x2 = sext i32 %x to i64
12378 %t = insertelement <2 x i64> undef, i64 %x2, i32 0
12379 %s = shufflevector <2 x i64> %t, <2 x i64> undef, <2 x i32> <i32 0, i32 0>
12380 %a = lshr <2 x i64> %v, %s
12384 define <2 x i64> @shr_u_noext_v2i64(<2 x i64> %v, i64 %x) {
12385 ; SIMD128-LABEL: shr_u_noext_v2i64:
12386 ; SIMD128: .functype shr_u_noext_v2i64 (v128, i64) -> (v128)
12387 ; SIMD128-NEXT: # %bb.0:
12388 ; SIMD128-NEXT: i32.wrap_i64 $push0=, $1
12389 ; SIMD128-NEXT: i64x2.shr_u $push1=, $0, $pop0
12390 ; SIMD128-NEXT: return $pop1
12392 ; SIMD128-FAST-LABEL: shr_u_noext_v2i64:
12393 ; SIMD128-FAST: .functype shr_u_noext_v2i64 (v128, i64) -> (v128)
12394 ; SIMD128-FAST-NEXT: # %bb.0:
12395 ; SIMD128-FAST-NEXT: i32.wrap_i64 $push1=, $1
12396 ; SIMD128-FAST-NEXT: i64x2.shr_u $push0=, $0, $pop1
12397 ; SIMD128-FAST-NEXT: return $pop0
12399 ; NO-SIMD128-LABEL: shr_u_noext_v2i64:
12400 ; NO-SIMD128: .functype shr_u_noext_v2i64 (i32, i64, i64, i64) -> ()
12401 ; NO-SIMD128-NEXT: # %bb.0:
12402 ; NO-SIMD128-NEXT: i64.shr_u $push0=, $2, $3
12403 ; NO-SIMD128-NEXT: i64.store 8($0), $pop0
12404 ; NO-SIMD128-NEXT: i64.shr_u $push1=, $1, $3
12405 ; NO-SIMD128-NEXT: i64.store 0($0), $pop1
12406 ; NO-SIMD128-NEXT: return
12408 ; NO-SIMD128-FAST-LABEL: shr_u_noext_v2i64:
12409 ; NO-SIMD128-FAST: .functype shr_u_noext_v2i64 (i32, i64, i64, i64) -> ()
12410 ; NO-SIMD128-FAST-NEXT: # %bb.0:
12411 ; NO-SIMD128-FAST-NEXT: i64.shr_u $push0=, $1, $3
12412 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop0
12413 ; NO-SIMD128-FAST-NEXT: i64.shr_u $push1=, $2, $3
12414 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop1
12415 ; NO-SIMD128-FAST-NEXT: return
12416 %t = insertelement <2 x i64> undef, i64 %x, i32 0
12417 %s = shufflevector <2 x i64> %t, <2 x i64> undef, <2 x i32> <i32 0, i32 0>
12418 %a = lshr <2 x i64> %v, %s
12422 define <2 x i64> @shr_u_const_v2i64(<2 x i64> %v) {
12423 ; SIMD128-LABEL: shr_u_const_v2i64:
12424 ; SIMD128: .functype shr_u_const_v2i64 (v128) -> (v128)
12425 ; SIMD128-NEXT: # %bb.0:
12426 ; SIMD128-NEXT: i32.const $push0=, 5
12427 ; SIMD128-NEXT: i64x2.shr_u $push1=, $0, $pop0
12428 ; SIMD128-NEXT: return $pop1
12430 ; SIMD128-FAST-LABEL: shr_u_const_v2i64:
12431 ; SIMD128-FAST: .functype shr_u_const_v2i64 (v128) -> (v128)
12432 ; SIMD128-FAST-NEXT: # %bb.0:
12433 ; SIMD128-FAST-NEXT: i32.const $push1=, 5
12434 ; SIMD128-FAST-NEXT: i64x2.shr_u $push0=, $0, $pop1
12435 ; SIMD128-FAST-NEXT: return $pop0
12437 ; NO-SIMD128-LABEL: shr_u_const_v2i64:
12438 ; NO-SIMD128: .functype shr_u_const_v2i64 (i32, i64, i64) -> ()
12439 ; NO-SIMD128-NEXT: # %bb.0:
12440 ; NO-SIMD128-NEXT: i64.const $push0=, 5
12441 ; NO-SIMD128-NEXT: i64.shr_u $push1=, $2, $pop0
12442 ; NO-SIMD128-NEXT: i64.store 8($0), $pop1
12443 ; NO-SIMD128-NEXT: i64.const $push3=, 5
12444 ; NO-SIMD128-NEXT: i64.shr_u $push2=, $1, $pop3
12445 ; NO-SIMD128-NEXT: i64.store 0($0), $pop2
12446 ; NO-SIMD128-NEXT: return
12448 ; NO-SIMD128-FAST-LABEL: shr_u_const_v2i64:
12449 ; NO-SIMD128-FAST: .functype shr_u_const_v2i64 (i32, i64, i64) -> ()
12450 ; NO-SIMD128-FAST-NEXT: # %bb.0:
12451 ; NO-SIMD128-FAST-NEXT: i64.const $push0=, 5
12452 ; NO-SIMD128-FAST-NEXT: i64.shr_u $push1=, $1, $pop0
12453 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop1
12454 ; NO-SIMD128-FAST-NEXT: i64.const $push3=, 5
12455 ; NO-SIMD128-FAST-NEXT: i64.shr_u $push2=, $2, $pop3
12456 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop2
12457 ; NO-SIMD128-FAST-NEXT: return
12458 %a = lshr <2 x i64> %v, <i64 5, i64 5>
12462 define <2 x i64> @shr_u_vec_v2i64(<2 x i64> %v, <2 x i64> %x) {
12463 ; SIMD128-LABEL: shr_u_vec_v2i64:
12464 ; SIMD128: .functype shr_u_vec_v2i64 (v128, v128) -> (v128)
12465 ; SIMD128-NEXT: # %bb.0:
12466 ; SIMD128-NEXT: i64x2.extract_lane $push4=, $0, 0
12467 ; SIMD128-NEXT: i64x2.extract_lane $push3=, $1, 0
12468 ; SIMD128-NEXT: i64.shr_u $push5=, $pop4, $pop3
12469 ; SIMD128-NEXT: i64x2.splat $push6=, $pop5
12470 ; SIMD128-NEXT: i64x2.extract_lane $push1=, $0, 1
12471 ; SIMD128-NEXT: i64x2.extract_lane $push0=, $1, 1
12472 ; SIMD128-NEXT: i64.shr_u $push2=, $pop1, $pop0
12473 ; SIMD128-NEXT: i64x2.replace_lane $push7=, $pop6, 1, $pop2
12474 ; SIMD128-NEXT: return $pop7
12476 ; SIMD128-FAST-LABEL: shr_u_vec_v2i64:
12477 ; SIMD128-FAST: .functype shr_u_vec_v2i64 (v128, v128) -> (v128)
12478 ; SIMD128-FAST-NEXT: # %bb.0:
12479 ; SIMD128-FAST-NEXT: i64x2.extract_lane $push5=, $0, 0
12480 ; SIMD128-FAST-NEXT: i64x2.extract_lane $push4=, $1, 0
12481 ; SIMD128-FAST-NEXT: i64.shr_u $push6=, $pop5, $pop4
12482 ; SIMD128-FAST-NEXT: i64x2.splat $push7=, $pop6
12483 ; SIMD128-FAST-NEXT: i64x2.extract_lane $push2=, $0, 1
12484 ; SIMD128-FAST-NEXT: i64x2.extract_lane $push1=, $1, 1
12485 ; SIMD128-FAST-NEXT: i64.shr_u $push3=, $pop2, $pop1
12486 ; SIMD128-FAST-NEXT: i64x2.replace_lane $push0=, $pop7, 1, $pop3
12487 ; SIMD128-FAST-NEXT: return $pop0
12489 ; NO-SIMD128-LABEL: shr_u_vec_v2i64:
12490 ; NO-SIMD128: .functype shr_u_vec_v2i64 (i32, i64, i64, i64, i64) -> ()
12491 ; NO-SIMD128-NEXT: # %bb.0:
12492 ; NO-SIMD128-NEXT: i64.shr_u $push0=, $2, $4
12493 ; NO-SIMD128-NEXT: i64.store 8($0), $pop0
12494 ; NO-SIMD128-NEXT: i64.shr_u $push1=, $1, $3
12495 ; NO-SIMD128-NEXT: i64.store 0($0), $pop1
12496 ; NO-SIMD128-NEXT: return
12498 ; NO-SIMD128-FAST-LABEL: shr_u_vec_v2i64:
12499 ; NO-SIMD128-FAST: .functype shr_u_vec_v2i64 (i32, i64, i64, i64, i64) -> ()
12500 ; NO-SIMD128-FAST-NEXT: # %bb.0:
12501 ; NO-SIMD128-FAST-NEXT: i64.shr_u $push0=, $1, $3
12502 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop0
12503 ; NO-SIMD128-FAST-NEXT: i64.shr_u $push1=, $2, $4
12504 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop1
12505 ; NO-SIMD128-FAST-NEXT: return
12506 %a = lshr <2 x i64> %v, %x
12510 define <2 x i64> @and_v2i64(<2 x i64> %x, <2 x i64> %y) {
12511 ; SIMD128-LABEL: and_v2i64:
12512 ; SIMD128: .functype and_v2i64 (v128, v128) -> (v128)
12513 ; SIMD128-NEXT: # %bb.0:
12514 ; SIMD128-NEXT: v128.and $push0=, $0, $1
12515 ; SIMD128-NEXT: return $pop0
12517 ; SIMD128-FAST-LABEL: and_v2i64:
12518 ; SIMD128-FAST: .functype and_v2i64 (v128, v128) -> (v128)
12519 ; SIMD128-FAST-NEXT: # %bb.0:
12520 ; SIMD128-FAST-NEXT: v128.and $push0=, $0, $1
12521 ; SIMD128-FAST-NEXT: return $pop0
12523 ; NO-SIMD128-LABEL: and_v2i64:
12524 ; NO-SIMD128: .functype and_v2i64 (i32, i64, i64, i64, i64) -> ()
12525 ; NO-SIMD128-NEXT: # %bb.0:
12526 ; NO-SIMD128-NEXT: i64.and $push0=, $2, $4
12527 ; NO-SIMD128-NEXT: i64.store 8($0), $pop0
12528 ; NO-SIMD128-NEXT: i64.and $push1=, $1, $3
12529 ; NO-SIMD128-NEXT: i64.store 0($0), $pop1
12530 ; NO-SIMD128-NEXT: return
12532 ; NO-SIMD128-FAST-LABEL: and_v2i64:
12533 ; NO-SIMD128-FAST: .functype and_v2i64 (i32, i64, i64, i64, i64) -> ()
12534 ; NO-SIMD128-FAST-NEXT: # %bb.0:
12535 ; NO-SIMD128-FAST-NEXT: i64.and $push0=, $1, $3
12536 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop0
12537 ; NO-SIMD128-FAST-NEXT: i64.and $push1=, $2, $4
12538 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop1
12539 ; NO-SIMD128-FAST-NEXT: return
12540 %a = and <2 x i64> %x, %y
12544 define <2 x i64> @or_v2i64(<2 x i64> %x, <2 x i64> %y) {
12545 ; SIMD128-LABEL: or_v2i64:
12546 ; SIMD128: .functype or_v2i64 (v128, v128) -> (v128)
12547 ; SIMD128-NEXT: # %bb.0:
12548 ; SIMD128-NEXT: v128.or $push0=, $0, $1
12549 ; SIMD128-NEXT: return $pop0
12551 ; SIMD128-FAST-LABEL: or_v2i64:
12552 ; SIMD128-FAST: .functype or_v2i64 (v128, v128) -> (v128)
12553 ; SIMD128-FAST-NEXT: # %bb.0:
12554 ; SIMD128-FAST-NEXT: v128.or $push0=, $0, $1
12555 ; SIMD128-FAST-NEXT: return $pop0
12557 ; NO-SIMD128-LABEL: or_v2i64:
12558 ; NO-SIMD128: .functype or_v2i64 (i32, i64, i64, i64, i64) -> ()
12559 ; NO-SIMD128-NEXT: # %bb.0:
12560 ; NO-SIMD128-NEXT: i64.or $push0=, $2, $4
12561 ; NO-SIMD128-NEXT: i64.store 8($0), $pop0
12562 ; NO-SIMD128-NEXT: i64.or $push1=, $1, $3
12563 ; NO-SIMD128-NEXT: i64.store 0($0), $pop1
12564 ; NO-SIMD128-NEXT: return
12566 ; NO-SIMD128-FAST-LABEL: or_v2i64:
12567 ; NO-SIMD128-FAST: .functype or_v2i64 (i32, i64, i64, i64, i64) -> ()
12568 ; NO-SIMD128-FAST-NEXT: # %bb.0:
12569 ; NO-SIMD128-FAST-NEXT: i64.or $push0=, $1, $3
12570 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop0
12571 ; NO-SIMD128-FAST-NEXT: i64.or $push1=, $2, $4
12572 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop1
12573 ; NO-SIMD128-FAST-NEXT: return
12574 %a = or <2 x i64> %x, %y
12578 define <2 x i64> @xor_v2i64(<2 x i64> %x, <2 x i64> %y) {
12579 ; SIMD128-LABEL: xor_v2i64:
12580 ; SIMD128: .functype xor_v2i64 (v128, v128) -> (v128)
12581 ; SIMD128-NEXT: # %bb.0:
12582 ; SIMD128-NEXT: v128.xor $push0=, $0, $1
12583 ; SIMD128-NEXT: return $pop0
12585 ; SIMD128-FAST-LABEL: xor_v2i64:
12586 ; SIMD128-FAST: .functype xor_v2i64 (v128, v128) -> (v128)
12587 ; SIMD128-FAST-NEXT: # %bb.0:
12588 ; SIMD128-FAST-NEXT: v128.xor $push0=, $0, $1
12589 ; SIMD128-FAST-NEXT: return $pop0
12591 ; NO-SIMD128-LABEL: xor_v2i64:
12592 ; NO-SIMD128: .functype xor_v2i64 (i32, i64, i64, i64, i64) -> ()
12593 ; NO-SIMD128-NEXT: # %bb.0:
12594 ; NO-SIMD128-NEXT: i64.xor $push0=, $2, $4
12595 ; NO-SIMD128-NEXT: i64.store 8($0), $pop0
12596 ; NO-SIMD128-NEXT: i64.xor $push1=, $1, $3
12597 ; NO-SIMD128-NEXT: i64.store 0($0), $pop1
12598 ; NO-SIMD128-NEXT: return
12600 ; NO-SIMD128-FAST-LABEL: xor_v2i64:
12601 ; NO-SIMD128-FAST: .functype xor_v2i64 (i32, i64, i64, i64, i64) -> ()
12602 ; NO-SIMD128-FAST-NEXT: # %bb.0:
12603 ; NO-SIMD128-FAST-NEXT: i64.xor $push0=, $1, $3
12604 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop0
12605 ; NO-SIMD128-FAST-NEXT: i64.xor $push1=, $2, $4
12606 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop1
12607 ; NO-SIMD128-FAST-NEXT: return
12608 %a = xor <2 x i64> %x, %y
12612 define <2 x i64> @not_v2i64(<2 x i64> %x) {
12613 ; SIMD128-LABEL: not_v2i64:
12614 ; SIMD128: .functype not_v2i64 (v128) -> (v128)
12615 ; SIMD128-NEXT: # %bb.0:
12616 ; SIMD128-NEXT: v128.not $push0=, $0
12617 ; SIMD128-NEXT: return $pop0
12619 ; SIMD128-FAST-LABEL: not_v2i64:
12620 ; SIMD128-FAST: .functype not_v2i64 (v128) -> (v128)
12621 ; SIMD128-FAST-NEXT: # %bb.0:
12622 ; SIMD128-FAST-NEXT: v128.not $push0=, $0
12623 ; SIMD128-FAST-NEXT: return $pop0
12625 ; NO-SIMD128-LABEL: not_v2i64:
12626 ; NO-SIMD128: .functype not_v2i64 (i32, i64, i64) -> ()
12627 ; NO-SIMD128-NEXT: # %bb.0:
12628 ; NO-SIMD128-NEXT: i64.const $push0=, -1
12629 ; NO-SIMD128-NEXT: i64.xor $push1=, $2, $pop0
12630 ; NO-SIMD128-NEXT: i64.store 8($0), $pop1
12631 ; NO-SIMD128-NEXT: i64.const $push3=, -1
12632 ; NO-SIMD128-NEXT: i64.xor $push2=, $1, $pop3
12633 ; NO-SIMD128-NEXT: i64.store 0($0), $pop2
12634 ; NO-SIMD128-NEXT: return
12636 ; NO-SIMD128-FAST-LABEL: not_v2i64:
12637 ; NO-SIMD128-FAST: .functype not_v2i64 (i32, i64, i64) -> ()
12638 ; NO-SIMD128-FAST-NEXT: # %bb.0:
12639 ; NO-SIMD128-FAST-NEXT: i64.const $push0=, -1
12640 ; NO-SIMD128-FAST-NEXT: i64.xor $push1=, $1, $pop0
12641 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop1
12642 ; NO-SIMD128-FAST-NEXT: i64.const $push3=, -1
12643 ; NO-SIMD128-FAST-NEXT: i64.xor $push2=, $2, $pop3
12644 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop2
12645 ; NO-SIMD128-FAST-NEXT: return
12646 %a = xor <2 x i64> %x, <i64 -1, i64 -1>
12650 define <2 x i64> @andnot_v2i64(<2 x i64> %x, <2 x i64> %y) {
12651 ; SIMD128-LABEL: andnot_v2i64:
12652 ; SIMD128: .functype andnot_v2i64 (v128, v128) -> (v128)
12653 ; SIMD128-NEXT: # %bb.0:
12654 ; SIMD128-NEXT: v128.andnot $push0=, $0, $1
12655 ; SIMD128-NEXT: return $pop0
12657 ; SIMD128-FAST-LABEL: andnot_v2i64:
12658 ; SIMD128-FAST: .functype andnot_v2i64 (v128, v128) -> (v128)
12659 ; SIMD128-FAST-NEXT: # %bb.0:
12660 ; SIMD128-FAST-NEXT: v128.not $push0=, $1
12661 ; SIMD128-FAST-NEXT: v128.and $push1=, $0, $pop0
12662 ; SIMD128-FAST-NEXT: return $pop1
12664 ; NO-SIMD128-LABEL: andnot_v2i64:
12665 ; NO-SIMD128: .functype andnot_v2i64 (i32, i64, i64, i64, i64) -> ()
12666 ; NO-SIMD128-NEXT: # %bb.0:
12667 ; NO-SIMD128-NEXT: i64.const $push0=, -1
12668 ; NO-SIMD128-NEXT: i64.xor $push1=, $4, $pop0
12669 ; NO-SIMD128-NEXT: i64.and $push2=, $2, $pop1
12670 ; NO-SIMD128-NEXT: i64.store 8($0), $pop2
12671 ; NO-SIMD128-NEXT: i64.const $push5=, -1
12672 ; NO-SIMD128-NEXT: i64.xor $push3=, $3, $pop5
12673 ; NO-SIMD128-NEXT: i64.and $push4=, $1, $pop3
12674 ; NO-SIMD128-NEXT: i64.store 0($0), $pop4
12675 ; NO-SIMD128-NEXT: return
12677 ; NO-SIMD128-FAST-LABEL: andnot_v2i64:
12678 ; NO-SIMD128-FAST: .functype andnot_v2i64 (i32, i64, i64, i64, i64) -> ()
12679 ; NO-SIMD128-FAST-NEXT: # %bb.0:
12680 ; NO-SIMD128-FAST-NEXT: i64.const $push0=, -1
12681 ; NO-SIMD128-FAST-NEXT: i64.xor $push1=, $3, $pop0
12682 ; NO-SIMD128-FAST-NEXT: i64.and $push2=, $1, $pop1
12683 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop2
12684 ; NO-SIMD128-FAST-NEXT: i64.const $push5=, -1
12685 ; NO-SIMD128-FAST-NEXT: i64.xor $push3=, $4, $pop5
12686 ; NO-SIMD128-FAST-NEXT: i64.and $push4=, $2, $pop3
12687 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop4
12688 ; NO-SIMD128-FAST-NEXT: return
12689 %inv_y = xor <2 x i64> %y, <i64 -1, i64 -1>
12690 %a = and <2 x i64> %x, %inv_y
12694 define <2 x i64> @bitselect_v2i64(<2 x i64> %c, <2 x i64> %v1, <2 x i64> %v2) {
12695 ; SIMD128-LABEL: bitselect_v2i64:
12696 ; SIMD128: .functype bitselect_v2i64 (v128, v128, v128) -> (v128)
12697 ; SIMD128-NEXT: # %bb.0:
12698 ; SIMD128-NEXT: v128.bitselect $push0=, $1, $2, $0
12699 ; SIMD128-NEXT: return $pop0
12701 ; SIMD128-FAST-LABEL: bitselect_v2i64:
12702 ; SIMD128-FAST: .functype bitselect_v2i64 (v128, v128, v128) -> (v128)
12703 ; SIMD128-FAST-NEXT: # %bb.0:
12704 ; SIMD128-FAST-NEXT: v128.not $push2=, $0
12705 ; SIMD128-FAST-NEXT: v128.and $push3=, $2, $pop2
12706 ; SIMD128-FAST-NEXT: v128.and $push0=, $1, $0
12707 ; SIMD128-FAST-NEXT: v128.or $push1=, $pop3, $pop0
12708 ; SIMD128-FAST-NEXT: return $pop1
12710 ; NO-SIMD128-LABEL: bitselect_v2i64:
12711 ; NO-SIMD128: .functype bitselect_v2i64 (i32, i64, i64, i64, i64, i64, i64) -> ()
12712 ; NO-SIMD128-NEXT: # %bb.0:
12713 ; NO-SIMD128-NEXT: i64.const $push1=, -1
12714 ; NO-SIMD128-NEXT: i64.xor $push2=, $2, $pop1
12715 ; NO-SIMD128-NEXT: i64.and $push3=, $6, $pop2
12716 ; NO-SIMD128-NEXT: i64.and $push0=, $4, $2
12717 ; NO-SIMD128-NEXT: i64.or $push4=, $pop3, $pop0
12718 ; NO-SIMD128-NEXT: i64.store 8($0), $pop4
12719 ; NO-SIMD128-NEXT: i64.const $push9=, -1
12720 ; NO-SIMD128-NEXT: i64.xor $push6=, $1, $pop9
12721 ; NO-SIMD128-NEXT: i64.and $push7=, $5, $pop6
12722 ; NO-SIMD128-NEXT: i64.and $push5=, $3, $1
12723 ; NO-SIMD128-NEXT: i64.or $push8=, $pop7, $pop5
12724 ; NO-SIMD128-NEXT: i64.store 0($0), $pop8
12725 ; NO-SIMD128-NEXT: return
12727 ; NO-SIMD128-FAST-LABEL: bitselect_v2i64:
12728 ; NO-SIMD128-FAST: .functype bitselect_v2i64 (i32, i64, i64, i64, i64, i64, i64) -> ()
12729 ; NO-SIMD128-FAST-NEXT: # %bb.0:
12730 ; NO-SIMD128-FAST-NEXT: i64.const $push1=, -1
12731 ; NO-SIMD128-FAST-NEXT: i64.xor $push2=, $1, $pop1
12732 ; NO-SIMD128-FAST-NEXT: i64.and $push3=, $5, $pop2
12733 ; NO-SIMD128-FAST-NEXT: i64.and $push0=, $3, $1
12734 ; NO-SIMD128-FAST-NEXT: i64.or $push4=, $pop3, $pop0
12735 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop4
12736 ; NO-SIMD128-FAST-NEXT: i64.const $push9=, -1
12737 ; NO-SIMD128-FAST-NEXT: i64.xor $push6=, $2, $pop9
12738 ; NO-SIMD128-FAST-NEXT: i64.and $push7=, $6, $pop6
12739 ; NO-SIMD128-FAST-NEXT: i64.and $push5=, $4, $2
12740 ; NO-SIMD128-FAST-NEXT: i64.or $push8=, $pop7, $pop5
12741 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop8
12742 ; NO-SIMD128-FAST-NEXT: return
12743 %masked_v1 = and <2 x i64> %v1, %c
12744 %inv_mask = xor <2 x i64> <i64 -1, i64 -1>, %c
12745 %masked_v2 = and <2 x i64> %v2, %inv_mask
12746 %a = or <2 x i64> %masked_v2, %masked_v1
12750 define <2 x i64> @bitselect_xor_v2i64(<2 x i64> %c, <2 x i64> %v1, <2 x i64> %v2) {
12751 ; SIMD128-LABEL: bitselect_xor_v2i64:
12752 ; SIMD128: .functype bitselect_xor_v2i64 (v128, v128, v128) -> (v128)
12753 ; SIMD128-NEXT: # %bb.0:
12754 ; SIMD128-NEXT: v128.bitselect $push0=, $1, $2, $0
12755 ; SIMD128-NEXT: return $pop0
12757 ; SIMD128-FAST-LABEL: bitselect_xor_v2i64:
12758 ; SIMD128-FAST: .functype bitselect_xor_v2i64 (v128, v128, v128) -> (v128)
12759 ; SIMD128-FAST-NEXT: # %bb.0:
12760 ; SIMD128-FAST-NEXT: v128.xor $push2=, $1, $2
12761 ; SIMD128-FAST-NEXT: v128.and $push1=, $pop2, $0
12762 ; SIMD128-FAST-NEXT: v128.xor $push0=, $pop1, $2
12763 ; SIMD128-FAST-NEXT: return $pop0
12765 ; NO-SIMD128-LABEL: bitselect_xor_v2i64:
12766 ; NO-SIMD128: .functype bitselect_xor_v2i64 (i32, i64, i64, i64, i64, i64, i64) -> ()
12767 ; NO-SIMD128-NEXT: # %bb.0:
12768 ; NO-SIMD128-NEXT: i64.xor $push0=, $4, $6
12769 ; NO-SIMD128-NEXT: i64.and $push1=, $pop0, $2
12770 ; NO-SIMD128-NEXT: i64.xor $push2=, $pop1, $6
12771 ; NO-SIMD128-NEXT: i64.store 8($0), $pop2
12772 ; NO-SIMD128-NEXT: i64.xor $push3=, $3, $5
12773 ; NO-SIMD128-NEXT: i64.and $push4=, $pop3, $1
12774 ; NO-SIMD128-NEXT: i64.xor $push5=, $pop4, $5
12775 ; NO-SIMD128-NEXT: i64.store 0($0), $pop5
12776 ; NO-SIMD128-NEXT: return
12778 ; NO-SIMD128-FAST-LABEL: bitselect_xor_v2i64:
12779 ; NO-SIMD128-FAST: .functype bitselect_xor_v2i64 (i32, i64, i64, i64, i64, i64, i64) -> ()
12780 ; NO-SIMD128-FAST-NEXT: # %bb.0:
12781 ; NO-SIMD128-FAST-NEXT: i64.xor $push0=, $3, $5
12782 ; NO-SIMD128-FAST-NEXT: i64.and $push1=, $pop0, $1
12783 ; NO-SIMD128-FAST-NEXT: i64.xor $push2=, $pop1, $5
12784 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop2
12785 ; NO-SIMD128-FAST-NEXT: i64.xor $push3=, $4, $6
12786 ; NO-SIMD128-FAST-NEXT: i64.and $push4=, $pop3, $2
12787 ; NO-SIMD128-FAST-NEXT: i64.xor $push5=, $pop4, $6
12788 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop5
12789 ; NO-SIMD128-FAST-NEXT: return
12790 %xor1 = xor <2 x i64> %v1, %v2
12791 %and = and <2 x i64> %xor1, %c
12792 %a = xor <2 x i64> %and, %v2
12796 define <2 x i64> @bitselect_xor_reversed_v2i64(<2 x i64> %c, <2 x i64> %v1, <2 x i64> %v2) {
12797 ; SIMD128-LABEL: bitselect_xor_reversed_v2i64:
12798 ; SIMD128: .functype bitselect_xor_reversed_v2i64 (v128, v128, v128) -> (v128)
12799 ; SIMD128-NEXT: # %bb.0:
12800 ; SIMD128-NEXT: v128.bitselect $push0=, $2, $1, $0
12801 ; SIMD128-NEXT: return $pop0
12803 ; SIMD128-FAST-LABEL: bitselect_xor_reversed_v2i64:
12804 ; SIMD128-FAST: .functype bitselect_xor_reversed_v2i64 (v128, v128, v128) -> (v128)
12805 ; SIMD128-FAST-NEXT: # %bb.0:
12806 ; SIMD128-FAST-NEXT: v128.xor $push1=, $1, $2
12807 ; SIMD128-FAST-NEXT: v128.not $push2=, $0
12808 ; SIMD128-FAST-NEXT: v128.and $push3=, $pop1, $pop2
12809 ; SIMD128-FAST-NEXT: v128.xor $push0=, $pop3, $2
12810 ; SIMD128-FAST-NEXT: return $pop0
12812 ; NO-SIMD128-LABEL: bitselect_xor_reversed_v2i64:
12813 ; NO-SIMD128: .functype bitselect_xor_reversed_v2i64 (i32, i64, i64, i64, i64, i64, i64) -> ()
12814 ; NO-SIMD128-NEXT: # %bb.0:
12815 ; NO-SIMD128-NEXT: i64.xor $push2=, $4, $6
12816 ; NO-SIMD128-NEXT: i64.const $push0=, -1
12817 ; NO-SIMD128-NEXT: i64.xor $push1=, $2, $pop0
12818 ; NO-SIMD128-NEXT: i64.and $push3=, $pop2, $pop1
12819 ; NO-SIMD128-NEXT: i64.xor $push4=, $pop3, $6
12820 ; NO-SIMD128-NEXT: i64.store 8($0), $pop4
12821 ; NO-SIMD128-NEXT: i64.xor $push6=, $3, $5
12822 ; NO-SIMD128-NEXT: i64.const $push9=, -1
12823 ; NO-SIMD128-NEXT: i64.xor $push5=, $1, $pop9
12824 ; NO-SIMD128-NEXT: i64.and $push7=, $pop6, $pop5
12825 ; NO-SIMD128-NEXT: i64.xor $push8=, $pop7, $5
12826 ; NO-SIMD128-NEXT: i64.store 0($0), $pop8
12827 ; NO-SIMD128-NEXT: return
12829 ; NO-SIMD128-FAST-LABEL: bitselect_xor_reversed_v2i64:
12830 ; NO-SIMD128-FAST: .functype bitselect_xor_reversed_v2i64 (i32, i64, i64, i64, i64, i64, i64) -> ()
12831 ; NO-SIMD128-FAST-NEXT: # %bb.0:
12832 ; NO-SIMD128-FAST-NEXT: i64.xor $push2=, $3, $5
12833 ; NO-SIMD128-FAST-NEXT: i64.const $push0=, -1
12834 ; NO-SIMD128-FAST-NEXT: i64.xor $push1=, $1, $pop0
12835 ; NO-SIMD128-FAST-NEXT: i64.and $push3=, $pop2, $pop1
12836 ; NO-SIMD128-FAST-NEXT: i64.xor $push4=, $pop3, $5
12837 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop4
12838 ; NO-SIMD128-FAST-NEXT: i64.xor $push6=, $4, $6
12839 ; NO-SIMD128-FAST-NEXT: i64.const $push9=, -1
12840 ; NO-SIMD128-FAST-NEXT: i64.xor $push5=, $2, $pop9
12841 ; NO-SIMD128-FAST-NEXT: i64.and $push7=, $pop6, $pop5
12842 ; NO-SIMD128-FAST-NEXT: i64.xor $push8=, $pop7, $6
12843 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop8
12844 ; NO-SIMD128-FAST-NEXT: return
12845 %xor1 = xor <2 x i64> %v1, %v2
12846 %notc = xor <2 x i64> %c, <i64 -1, i64 -1>
12847 %and = and <2 x i64> %xor1, %notc
12848 %a = xor <2 x i64> %and, %v2
12852 define <2 x i64> @extmul_low_s_v2i64(<4 x i32> %v1, <4 x i32> %v2) {
12853 ; SIMD128-LABEL: extmul_low_s_v2i64:
12854 ; SIMD128: .functype extmul_low_s_v2i64 (v128, v128) -> (v128)
12855 ; SIMD128-NEXT: # %bb.0:
12856 ; SIMD128-NEXT: i64x2.extmul_low_i32x4_s $push0=, $0, $1
12857 ; SIMD128-NEXT: return $pop0
12859 ; SIMD128-FAST-LABEL: extmul_low_s_v2i64:
12860 ; SIMD128-FAST: .functype extmul_low_s_v2i64 (v128, v128) -> (v128)
12861 ; SIMD128-FAST-NEXT: # %bb.0:
12862 ; SIMD128-FAST-NEXT: i64x2.extend_low_i32x4_s $push0=, $0
12863 ; SIMD128-FAST-NEXT: i64x2.extend_low_i32x4_s $push1=, $1
12864 ; SIMD128-FAST-NEXT: i64x2.mul $push2=, $pop0, $pop1
12865 ; SIMD128-FAST-NEXT: return $pop2
12867 ; NO-SIMD128-LABEL: extmul_low_s_v2i64:
12868 ; NO-SIMD128: .functype extmul_low_s_v2i64 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
12869 ; NO-SIMD128-NEXT: # %bb.0:
12870 ; NO-SIMD128-NEXT: i64.extend_i32_s $push1=, $2
12871 ; NO-SIMD128-NEXT: i64.extend_i32_s $push0=, $6
12872 ; NO-SIMD128-NEXT: i64.mul $push2=, $pop1, $pop0
12873 ; NO-SIMD128-NEXT: i64.store 8($0), $pop2
12874 ; NO-SIMD128-NEXT: i64.extend_i32_s $push4=, $1
12875 ; NO-SIMD128-NEXT: i64.extend_i32_s $push3=, $5
12876 ; NO-SIMD128-NEXT: i64.mul $push5=, $pop4, $pop3
12877 ; NO-SIMD128-NEXT: i64.store 0($0), $pop5
12878 ; NO-SIMD128-NEXT: return
12880 ; NO-SIMD128-FAST-LABEL: extmul_low_s_v2i64:
12881 ; NO-SIMD128-FAST: .functype extmul_low_s_v2i64 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
12882 ; NO-SIMD128-FAST-NEXT: # %bb.0:
12883 ; NO-SIMD128-FAST-NEXT: i64.extend_i32_s $push1=, $1
12884 ; NO-SIMD128-FAST-NEXT: i64.extend_i32_s $push0=, $5
12885 ; NO-SIMD128-FAST-NEXT: i64.mul $push2=, $pop1, $pop0
12886 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop2
12887 ; NO-SIMD128-FAST-NEXT: i64.extend_i32_s $push4=, $2
12888 ; NO-SIMD128-FAST-NEXT: i64.extend_i32_s $push3=, $6
12889 ; NO-SIMD128-FAST-NEXT: i64.mul $push5=, $pop4, $pop3
12890 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop5
12891 ; NO-SIMD128-FAST-NEXT: return
12892 %low1 = shufflevector <4 x i32> %v1, <4 x i32> undef, <2 x i32> <i32 0, i32 1>
12893 %low2 = shufflevector <4 x i32> %v2, <4 x i32> undef, <2 x i32> <i32 0, i32 1>
12894 %extended1 = sext <2 x i32> %low1 to <2 x i64>
12895 %extended2 = sext <2 x i32> %low2 to <2 x i64>
12896 %a = mul <2 x i64> %extended1, %extended2
12900 define <2 x i64> @extmul_high_s_v2i64(<4 x i32> %v1, <4 x i32> %v2) {
12901 ; SIMD128-LABEL: extmul_high_s_v2i64:
12902 ; SIMD128: .functype extmul_high_s_v2i64 (v128, v128) -> (v128)
12903 ; SIMD128-NEXT: # %bb.0:
12904 ; SIMD128-NEXT: i64x2.extmul_high_i32x4_s $push0=, $0, $1
12905 ; SIMD128-NEXT: return $pop0
12907 ; SIMD128-FAST-LABEL: extmul_high_s_v2i64:
12908 ; SIMD128-FAST: .functype extmul_high_s_v2i64 (v128, v128) -> (v128)
12909 ; SIMD128-FAST-NEXT: # %bb.0:
12910 ; SIMD128-FAST-NEXT: i64x2.extend_high_i32x4_s $push0=, $0
12911 ; SIMD128-FAST-NEXT: i64x2.extend_high_i32x4_s $push1=, $1
12912 ; SIMD128-FAST-NEXT: i64x2.mul $push2=, $pop0, $pop1
12913 ; SIMD128-FAST-NEXT: return $pop2
12915 ; NO-SIMD128-LABEL: extmul_high_s_v2i64:
12916 ; NO-SIMD128: .functype extmul_high_s_v2i64 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
12917 ; NO-SIMD128-NEXT: # %bb.0:
12918 ; NO-SIMD128-NEXT: i64.extend_i32_s $push1=, $4
12919 ; NO-SIMD128-NEXT: i64.extend_i32_s $push0=, $8
12920 ; NO-SIMD128-NEXT: i64.mul $push2=, $pop1, $pop0
12921 ; NO-SIMD128-NEXT: i64.store 8($0), $pop2
12922 ; NO-SIMD128-NEXT: i64.extend_i32_s $push4=, $3
12923 ; NO-SIMD128-NEXT: i64.extend_i32_s $push3=, $7
12924 ; NO-SIMD128-NEXT: i64.mul $push5=, $pop4, $pop3
12925 ; NO-SIMD128-NEXT: i64.store 0($0), $pop5
12926 ; NO-SIMD128-NEXT: return
12928 ; NO-SIMD128-FAST-LABEL: extmul_high_s_v2i64:
12929 ; NO-SIMD128-FAST: .functype extmul_high_s_v2i64 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
12930 ; NO-SIMD128-FAST-NEXT: # %bb.0:
12931 ; NO-SIMD128-FAST-NEXT: i64.extend_i32_s $push1=, $3
12932 ; NO-SIMD128-FAST-NEXT: i64.extend_i32_s $push0=, $7
12933 ; NO-SIMD128-FAST-NEXT: i64.mul $push2=, $pop1, $pop0
12934 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop2
12935 ; NO-SIMD128-FAST-NEXT: i64.extend_i32_s $push4=, $4
12936 ; NO-SIMD128-FAST-NEXT: i64.extend_i32_s $push3=, $8
12937 ; NO-SIMD128-FAST-NEXT: i64.mul $push5=, $pop4, $pop3
12938 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop5
12939 ; NO-SIMD128-FAST-NEXT: return
12940 %high1 = shufflevector <4 x i32> %v1, <4 x i32> undef, <2 x i32> <i32 2, i32 3>
12941 %high2 = shufflevector <4 x i32> %v2, <4 x i32> undef, <2 x i32> <i32 2, i32 3>
12942 %extended1 = sext <2 x i32> %high1 to <2 x i64>
12943 %extended2 = sext <2 x i32> %high2 to <2 x i64>
12944 %a = mul <2 x i64> %extended1, %extended2
12948 define <2 x i64> @extmul_low_u_v2i64(<4 x i32> %v1, <4 x i32> %v2) {
12949 ; SIMD128-LABEL: extmul_low_u_v2i64:
12950 ; SIMD128: .functype extmul_low_u_v2i64 (v128, v128) -> (v128)
12951 ; SIMD128-NEXT: # %bb.0:
12952 ; SIMD128-NEXT: i64x2.extmul_low_i32x4_u $push0=, $0, $1
12953 ; SIMD128-NEXT: return $pop0
12955 ; SIMD128-FAST-LABEL: extmul_low_u_v2i64:
12956 ; SIMD128-FAST: .functype extmul_low_u_v2i64 (v128, v128) -> (v128)
12957 ; SIMD128-FAST-NEXT: # %bb.0:
12958 ; SIMD128-FAST-NEXT: i64x2.extend_low_i32x4_u $push0=, $0
12959 ; SIMD128-FAST-NEXT: i64x2.extend_low_i32x4_u $push1=, $1
12960 ; SIMD128-FAST-NEXT: i64x2.mul $push2=, $pop0, $pop1
12961 ; SIMD128-FAST-NEXT: return $pop2
12963 ; NO-SIMD128-LABEL: extmul_low_u_v2i64:
12964 ; NO-SIMD128: .functype extmul_low_u_v2i64 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
12965 ; NO-SIMD128-NEXT: # %bb.0:
12966 ; NO-SIMD128-NEXT: i64.extend_i32_u $push1=, $2
12967 ; NO-SIMD128-NEXT: i64.extend_i32_u $push0=, $6
12968 ; NO-SIMD128-NEXT: i64.mul $push2=, $pop1, $pop0
12969 ; NO-SIMD128-NEXT: i64.store 8($0), $pop2
12970 ; NO-SIMD128-NEXT: i64.extend_i32_u $push4=, $1
12971 ; NO-SIMD128-NEXT: i64.extend_i32_u $push3=, $5
12972 ; NO-SIMD128-NEXT: i64.mul $push5=, $pop4, $pop3
12973 ; NO-SIMD128-NEXT: i64.store 0($0), $pop5
12974 ; NO-SIMD128-NEXT: return
12976 ; NO-SIMD128-FAST-LABEL: extmul_low_u_v2i64:
12977 ; NO-SIMD128-FAST: .functype extmul_low_u_v2i64 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
12978 ; NO-SIMD128-FAST-NEXT: # %bb.0:
12979 ; NO-SIMD128-FAST-NEXT: i64.extend_i32_u $push1=, $1
12980 ; NO-SIMD128-FAST-NEXT: i64.extend_i32_u $push0=, $5
12981 ; NO-SIMD128-FAST-NEXT: i64.mul $push2=, $pop1, $pop0
12982 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop2
12983 ; NO-SIMD128-FAST-NEXT: i64.extend_i32_u $push4=, $2
12984 ; NO-SIMD128-FAST-NEXT: i64.extend_i32_u $push3=, $6
12985 ; NO-SIMD128-FAST-NEXT: i64.mul $push5=, $pop4, $pop3
12986 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop5
12987 ; NO-SIMD128-FAST-NEXT: return
12988 %low1 = shufflevector <4 x i32> %v1, <4 x i32> undef, <2 x i32> <i32 0, i32 1>
12989 %low2 = shufflevector <4 x i32> %v2, <4 x i32> undef, <2 x i32> <i32 0, i32 1>
12990 %extended1 = zext <2 x i32> %low1 to <2 x i64>
12991 %extended2 = zext <2 x i32> %low2 to <2 x i64>
12992 %a = mul <2 x i64> %extended1, %extended2
12996 define <2 x i64> @extmul_high_u_v2i64(<4 x i32> %v1, <4 x i32> %v2) {
12997 ; SIMD128-LABEL: extmul_high_u_v2i64:
12998 ; SIMD128: .functype extmul_high_u_v2i64 (v128, v128) -> (v128)
12999 ; SIMD128-NEXT: # %bb.0:
13000 ; SIMD128-NEXT: i64x2.extmul_high_i32x4_u $push0=, $0, $1
13001 ; SIMD128-NEXT: return $pop0
13003 ; SIMD128-FAST-LABEL: extmul_high_u_v2i64:
13004 ; SIMD128-FAST: .functype extmul_high_u_v2i64 (v128, v128) -> (v128)
13005 ; SIMD128-FAST-NEXT: # %bb.0:
13006 ; SIMD128-FAST-NEXT: i64x2.extend_high_i32x4_u $push0=, $0
13007 ; SIMD128-FAST-NEXT: i64x2.extend_high_i32x4_u $push1=, $1
13008 ; SIMD128-FAST-NEXT: i64x2.mul $push2=, $pop0, $pop1
13009 ; SIMD128-FAST-NEXT: return $pop2
13011 ; NO-SIMD128-LABEL: extmul_high_u_v2i64:
13012 ; NO-SIMD128: .functype extmul_high_u_v2i64 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
13013 ; NO-SIMD128-NEXT: # %bb.0:
13014 ; NO-SIMD128-NEXT: i64.extend_i32_u $push1=, $4
13015 ; NO-SIMD128-NEXT: i64.extend_i32_u $push0=, $8
13016 ; NO-SIMD128-NEXT: i64.mul $push2=, $pop1, $pop0
13017 ; NO-SIMD128-NEXT: i64.store 8($0), $pop2
13018 ; NO-SIMD128-NEXT: i64.extend_i32_u $push4=, $3
13019 ; NO-SIMD128-NEXT: i64.extend_i32_u $push3=, $7
13020 ; NO-SIMD128-NEXT: i64.mul $push5=, $pop4, $pop3
13021 ; NO-SIMD128-NEXT: i64.store 0($0), $pop5
13022 ; NO-SIMD128-NEXT: return
13024 ; NO-SIMD128-FAST-LABEL: extmul_high_u_v2i64:
13025 ; NO-SIMD128-FAST: .functype extmul_high_u_v2i64 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
13026 ; NO-SIMD128-FAST-NEXT: # %bb.0:
13027 ; NO-SIMD128-FAST-NEXT: i64.extend_i32_u $push1=, $3
13028 ; NO-SIMD128-FAST-NEXT: i64.extend_i32_u $push0=, $7
13029 ; NO-SIMD128-FAST-NEXT: i64.mul $push2=, $pop1, $pop0
13030 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop2
13031 ; NO-SIMD128-FAST-NEXT: i64.extend_i32_u $push4=, $4
13032 ; NO-SIMD128-FAST-NEXT: i64.extend_i32_u $push3=, $8
13033 ; NO-SIMD128-FAST-NEXT: i64.mul $push5=, $pop4, $pop3
13034 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop5
13035 ; NO-SIMD128-FAST-NEXT: return
13036 %high1 = shufflevector <4 x i32> %v1, <4 x i32> undef, <2 x i32> <i32 2, i32 3>
13037 %high2 = shufflevector <4 x i32> %v2, <4 x i32> undef, <2 x i32> <i32 2, i32 3>
13038 %extended1 = zext <2 x i32> %high1 to <2 x i64>
13039 %extended2 = zext <2 x i32> %high2 to <2 x i64>
13040 %a = mul <2 x i64> %extended1, %extended2
13044 ; ==============================================================================
13046 ; ==============================================================================
13047 define <4 x float> @neg_v4f32(<4 x float> %x) {
13048 ; nsz makes this semantically equivalent to flipping sign bit
13049 ; SIMD128-LABEL: neg_v4f32:
13050 ; SIMD128: .functype neg_v4f32 (v128) -> (v128)
13051 ; SIMD128-NEXT: # %bb.0:
13052 ; SIMD128-NEXT: f32x4.neg $push0=, $0
13053 ; SIMD128-NEXT: return $pop0
13055 ; SIMD128-FAST-LABEL: neg_v4f32:
13056 ; SIMD128-FAST: .functype neg_v4f32 (v128) -> (v128)
13057 ; SIMD128-FAST-NEXT: # %bb.0:
13058 ; SIMD128-FAST-NEXT: f32x4.neg $push0=, $0
13059 ; SIMD128-FAST-NEXT: return $pop0
13061 ; NO-SIMD128-LABEL: neg_v4f32:
13062 ; NO-SIMD128: .functype neg_v4f32 (i32, f32, f32, f32, f32) -> ()
13063 ; NO-SIMD128-NEXT: # %bb.0:
13064 ; NO-SIMD128-NEXT: f32.neg $push0=, $3
13065 ; NO-SIMD128-NEXT: f32.store 8($0), $pop0
13066 ; NO-SIMD128-NEXT: f32.neg $push1=, $2
13067 ; NO-SIMD128-NEXT: f32.store 4($0), $pop1
13068 ; NO-SIMD128-NEXT: f32.neg $push2=, $1
13069 ; NO-SIMD128-NEXT: f32.store 0($0), $pop2
13070 ; NO-SIMD128-NEXT: i32.const $push3=, 12
13071 ; NO-SIMD128-NEXT: i32.add $push4=, $0, $pop3
13072 ; NO-SIMD128-NEXT: f32.neg $push5=, $4
13073 ; NO-SIMD128-NEXT: f32.store 0($pop4), $pop5
13074 ; NO-SIMD128-NEXT: return
13076 ; NO-SIMD128-FAST-LABEL: neg_v4f32:
13077 ; NO-SIMD128-FAST: .functype neg_v4f32 (i32, f32, f32, f32, f32) -> ()
13078 ; NO-SIMD128-FAST-NEXT: # %bb.0:
13079 ; NO-SIMD128-FAST-NEXT: f32.neg $push0=, $1
13080 ; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop0
13081 ; NO-SIMD128-FAST-NEXT: f32.neg $push1=, $2
13082 ; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop1
13083 ; NO-SIMD128-FAST-NEXT: f32.neg $push2=, $3
13084 ; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop2
13085 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 12
13086 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
13087 ; NO-SIMD128-FAST-NEXT: f32.neg $push5=, $4
13088 ; NO-SIMD128-FAST-NEXT: f32.store 0($pop4), $pop5
13089 ; NO-SIMD128-FAST-NEXT: return
13090 %a = fsub nsz <4 x float> <float 0.0, float 0.0, float 0.0, float 0.0>, %x
13094 declare <4 x float> @llvm.fabs.v4f32(<4 x float>) nounwind readnone
13095 define <4 x float> @abs_v4f32(<4 x float> %x) {
13096 ; SIMD128-LABEL: abs_v4f32:
13097 ; SIMD128: .functype abs_v4f32 (v128) -> (v128)
13098 ; SIMD128-NEXT: # %bb.0:
13099 ; SIMD128-NEXT: f32x4.abs $push0=, $0
13100 ; SIMD128-NEXT: return $pop0
13102 ; SIMD128-FAST-LABEL: abs_v4f32:
13103 ; SIMD128-FAST: .functype abs_v4f32 (v128) -> (v128)
13104 ; SIMD128-FAST-NEXT: # %bb.0:
13105 ; SIMD128-FAST-NEXT: f32x4.abs $push0=, $0
13106 ; SIMD128-FAST-NEXT: return $pop0
13108 ; NO-SIMD128-LABEL: abs_v4f32:
13109 ; NO-SIMD128: .functype abs_v4f32 (i32, f32, f32, f32, f32) -> ()
13110 ; NO-SIMD128-NEXT: # %bb.0:
13111 ; NO-SIMD128-NEXT: f32.abs $push0=, $3
13112 ; NO-SIMD128-NEXT: f32.store 8($0), $pop0
13113 ; NO-SIMD128-NEXT: f32.abs $push1=, $2
13114 ; NO-SIMD128-NEXT: f32.store 4($0), $pop1
13115 ; NO-SIMD128-NEXT: f32.abs $push2=, $1
13116 ; NO-SIMD128-NEXT: f32.store 0($0), $pop2
13117 ; NO-SIMD128-NEXT: i32.const $push3=, 12
13118 ; NO-SIMD128-NEXT: i32.add $push4=, $0, $pop3
13119 ; NO-SIMD128-NEXT: f32.abs $push5=, $4
13120 ; NO-SIMD128-NEXT: f32.store 0($pop4), $pop5
13121 ; NO-SIMD128-NEXT: return
13123 ; NO-SIMD128-FAST-LABEL: abs_v4f32:
13124 ; NO-SIMD128-FAST: .functype abs_v4f32 (i32, f32, f32, f32, f32) -> ()
13125 ; NO-SIMD128-FAST-NEXT: # %bb.0:
13126 ; NO-SIMD128-FAST-NEXT: f32.abs $push0=, $1
13127 ; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop0
13128 ; NO-SIMD128-FAST-NEXT: f32.abs $push1=, $2
13129 ; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop1
13130 ; NO-SIMD128-FAST-NEXT: f32.abs $push2=, $3
13131 ; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop2
13132 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 12
13133 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
13134 ; NO-SIMD128-FAST-NEXT: f32.abs $push5=, $4
13135 ; NO-SIMD128-FAST-NEXT: f32.store 0($pop4), $pop5
13136 ; NO-SIMD128-FAST-NEXT: return
13137 %a = call <4 x float> @llvm.fabs.v4f32(<4 x float> %x)
13141 define <4 x float> @min_unordered_v4f32(<4 x float> %x) {
13142 ; SIMD128-LABEL: min_unordered_v4f32:
13143 ; SIMD128: .functype min_unordered_v4f32 (v128) -> (v128)
13144 ; SIMD128-NEXT: # %bb.0:
13145 ; SIMD128-NEXT: v128.const $push0=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2
13146 ; SIMD128-NEXT: f32x4.pmin $push1=, $0, $pop0
13147 ; SIMD128-NEXT: return $pop1
13149 ; SIMD128-FAST-LABEL: min_unordered_v4f32:
13150 ; SIMD128-FAST: .functype min_unordered_v4f32 (v128) -> (v128)
13151 ; SIMD128-FAST-NEXT: # %bb.0:
13152 ; SIMD128-FAST-NEXT: v128.const $push1=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2
13153 ; SIMD128-FAST-NEXT: f32x4.pmin $push0=, $0, $pop1
13154 ; SIMD128-FAST-NEXT: return $pop0
13156 ; NO-SIMD128-LABEL: min_unordered_v4f32:
13157 ; NO-SIMD128: .functype min_unordered_v4f32 (i32, f32, f32, f32, f32) -> ()
13158 ; NO-SIMD128-NEXT: # %bb.0:
13159 ; NO-SIMD128-NEXT: f32.const $push0=, 0x1.4p2
13160 ; NO-SIMD128-NEXT: f32.const $push17=, 0x1.4p2
13161 ; NO-SIMD128-NEXT: f32.gt $push1=, $3, $pop17
13162 ; NO-SIMD128-NEXT: f32.select $push2=, $pop0, $3, $pop1
13163 ; NO-SIMD128-NEXT: f32.store 8($0), $pop2
13164 ; NO-SIMD128-NEXT: f32.const $push16=, 0x1.4p2
13165 ; NO-SIMD128-NEXT: f32.const $push15=, 0x1.4p2
13166 ; NO-SIMD128-NEXT: f32.gt $push3=, $2, $pop15
13167 ; NO-SIMD128-NEXT: f32.select $push4=, $pop16, $2, $pop3
13168 ; NO-SIMD128-NEXT: f32.store 4($0), $pop4
13169 ; NO-SIMD128-NEXT: f32.const $push14=, 0x1.4p2
13170 ; NO-SIMD128-NEXT: f32.const $push13=, 0x1.4p2
13171 ; NO-SIMD128-NEXT: f32.gt $push5=, $1, $pop13
13172 ; NO-SIMD128-NEXT: f32.select $push6=, $pop14, $1, $pop5
13173 ; NO-SIMD128-NEXT: f32.store 0($0), $pop6
13174 ; NO-SIMD128-NEXT: i32.const $push9=, 12
13175 ; NO-SIMD128-NEXT: i32.add $push10=, $0, $pop9
13176 ; NO-SIMD128-NEXT: f32.const $push12=, 0x1.4p2
13177 ; NO-SIMD128-NEXT: f32.const $push11=, 0x1.4p2
13178 ; NO-SIMD128-NEXT: f32.gt $push7=, $4, $pop11
13179 ; NO-SIMD128-NEXT: f32.select $push8=, $pop12, $4, $pop7
13180 ; NO-SIMD128-NEXT: f32.store 0($pop10), $pop8
13181 ; NO-SIMD128-NEXT: return
13183 ; NO-SIMD128-FAST-LABEL: min_unordered_v4f32:
13184 ; NO-SIMD128-FAST: .functype min_unordered_v4f32 (i32, f32, f32, f32, f32) -> ()
13185 ; NO-SIMD128-FAST-NEXT: # %bb.0:
13186 ; NO-SIMD128-FAST-NEXT: f32.const $push0=, 0x1.4p2
13187 ; NO-SIMD128-FAST-NEXT: f32.const $push17=, 0x1.4p2
13188 ; NO-SIMD128-FAST-NEXT: f32.gt $push1=, $1, $pop17
13189 ; NO-SIMD128-FAST-NEXT: f32.select $push2=, $pop0, $1, $pop1
13190 ; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop2
13191 ; NO-SIMD128-FAST-NEXT: f32.const $push16=, 0x1.4p2
13192 ; NO-SIMD128-FAST-NEXT: f32.const $push15=, 0x1.4p2
13193 ; NO-SIMD128-FAST-NEXT: f32.gt $push3=, $2, $pop15
13194 ; NO-SIMD128-FAST-NEXT: f32.select $push4=, $pop16, $2, $pop3
13195 ; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop4
13196 ; NO-SIMD128-FAST-NEXT: f32.const $push14=, 0x1.4p2
13197 ; NO-SIMD128-FAST-NEXT: f32.const $push13=, 0x1.4p2
13198 ; NO-SIMD128-FAST-NEXT: f32.gt $push5=, $3, $pop13
13199 ; NO-SIMD128-FAST-NEXT: f32.select $push6=, $pop14, $3, $pop5
13200 ; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop6
13201 ; NO-SIMD128-FAST-NEXT: i32.const $push9=, 12
13202 ; NO-SIMD128-FAST-NEXT: i32.add $push10=, $0, $pop9
13203 ; NO-SIMD128-FAST-NEXT: f32.const $push12=, 0x1.4p2
13204 ; NO-SIMD128-FAST-NEXT: f32.const $push11=, 0x1.4p2
13205 ; NO-SIMD128-FAST-NEXT: f32.gt $push7=, $4, $pop11
13206 ; NO-SIMD128-FAST-NEXT: f32.select $push8=, $pop12, $4, $pop7
13207 ; NO-SIMD128-FAST-NEXT: f32.store 0($pop10), $pop8
13208 ; NO-SIMD128-FAST-NEXT: return
13209 %cmps = fcmp ule <4 x float> %x, <float 5., float 5., float 5., float 5.>
13210 %a = select <4 x i1> %cmps, <4 x float> %x,
13211 <4 x float> <float 5., float 5., float 5., float 5.>
13215 define <4 x float> @max_unordered_v4f32(<4 x float> %x) {
13216 ; SIMD128-LABEL: max_unordered_v4f32:
13217 ; SIMD128: .functype max_unordered_v4f32 (v128) -> (v128)
13218 ; SIMD128-NEXT: # %bb.0:
13219 ; SIMD128-NEXT: v128.const $push0=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2
13220 ; SIMD128-NEXT: f32x4.pmax $push1=, $0, $pop0
13221 ; SIMD128-NEXT: return $pop1
13223 ; SIMD128-FAST-LABEL: max_unordered_v4f32:
13224 ; SIMD128-FAST: .functype max_unordered_v4f32 (v128) -> (v128)
13225 ; SIMD128-FAST-NEXT: # %bb.0:
13226 ; SIMD128-FAST-NEXT: v128.const $push1=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2
13227 ; SIMD128-FAST-NEXT: f32x4.pmax $push0=, $0, $pop1
13228 ; SIMD128-FAST-NEXT: return $pop0
13230 ; NO-SIMD128-LABEL: max_unordered_v4f32:
13231 ; NO-SIMD128: .functype max_unordered_v4f32 (i32, f32, f32, f32, f32) -> ()
13232 ; NO-SIMD128-NEXT: # %bb.0:
13233 ; NO-SIMD128-NEXT: f32.const $push0=, 0x1.4p2
13234 ; NO-SIMD128-NEXT: f32.const $push17=, 0x1.4p2
13235 ; NO-SIMD128-NEXT: f32.lt $push1=, $3, $pop17
13236 ; NO-SIMD128-NEXT: f32.select $push2=, $pop0, $3, $pop1
13237 ; NO-SIMD128-NEXT: f32.store 8($0), $pop2
13238 ; NO-SIMD128-NEXT: f32.const $push16=, 0x1.4p2
13239 ; NO-SIMD128-NEXT: f32.const $push15=, 0x1.4p2
13240 ; NO-SIMD128-NEXT: f32.lt $push3=, $2, $pop15
13241 ; NO-SIMD128-NEXT: f32.select $push4=, $pop16, $2, $pop3
13242 ; NO-SIMD128-NEXT: f32.store 4($0), $pop4
13243 ; NO-SIMD128-NEXT: f32.const $push14=, 0x1.4p2
13244 ; NO-SIMD128-NEXT: f32.const $push13=, 0x1.4p2
13245 ; NO-SIMD128-NEXT: f32.lt $push5=, $1, $pop13
13246 ; NO-SIMD128-NEXT: f32.select $push6=, $pop14, $1, $pop5
13247 ; NO-SIMD128-NEXT: f32.store 0($0), $pop6
13248 ; NO-SIMD128-NEXT: i32.const $push9=, 12
13249 ; NO-SIMD128-NEXT: i32.add $push10=, $0, $pop9
13250 ; NO-SIMD128-NEXT: f32.const $push12=, 0x1.4p2
13251 ; NO-SIMD128-NEXT: f32.const $push11=, 0x1.4p2
13252 ; NO-SIMD128-NEXT: f32.lt $push7=, $4, $pop11
13253 ; NO-SIMD128-NEXT: f32.select $push8=, $pop12, $4, $pop7
13254 ; NO-SIMD128-NEXT: f32.store 0($pop10), $pop8
13255 ; NO-SIMD128-NEXT: return
13257 ; NO-SIMD128-FAST-LABEL: max_unordered_v4f32:
13258 ; NO-SIMD128-FAST: .functype max_unordered_v4f32 (i32, f32, f32, f32, f32) -> ()
13259 ; NO-SIMD128-FAST-NEXT: # %bb.0:
13260 ; NO-SIMD128-FAST-NEXT: f32.const $push0=, 0x1.4p2
13261 ; NO-SIMD128-FAST-NEXT: f32.const $push17=, 0x1.4p2
13262 ; NO-SIMD128-FAST-NEXT: f32.lt $push1=, $1, $pop17
13263 ; NO-SIMD128-FAST-NEXT: f32.select $push2=, $pop0, $1, $pop1
13264 ; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop2
13265 ; NO-SIMD128-FAST-NEXT: f32.const $push16=, 0x1.4p2
13266 ; NO-SIMD128-FAST-NEXT: f32.const $push15=, 0x1.4p2
13267 ; NO-SIMD128-FAST-NEXT: f32.lt $push3=, $2, $pop15
13268 ; NO-SIMD128-FAST-NEXT: f32.select $push4=, $pop16, $2, $pop3
13269 ; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop4
13270 ; NO-SIMD128-FAST-NEXT: f32.const $push14=, 0x1.4p2
13271 ; NO-SIMD128-FAST-NEXT: f32.const $push13=, 0x1.4p2
13272 ; NO-SIMD128-FAST-NEXT: f32.lt $push5=, $3, $pop13
13273 ; NO-SIMD128-FAST-NEXT: f32.select $push6=, $pop14, $3, $pop5
13274 ; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop6
13275 ; NO-SIMD128-FAST-NEXT: i32.const $push9=, 12
13276 ; NO-SIMD128-FAST-NEXT: i32.add $push10=, $0, $pop9
13277 ; NO-SIMD128-FAST-NEXT: f32.const $push12=, 0x1.4p2
13278 ; NO-SIMD128-FAST-NEXT: f32.const $push11=, 0x1.4p2
13279 ; NO-SIMD128-FAST-NEXT: f32.lt $push7=, $4, $pop11
13280 ; NO-SIMD128-FAST-NEXT: f32.select $push8=, $pop12, $4, $pop7
13281 ; NO-SIMD128-FAST-NEXT: f32.store 0($pop10), $pop8
13282 ; NO-SIMD128-FAST-NEXT: return
13283 %cmps = fcmp uge <4 x float> %x, <float 5., float 5., float 5., float 5.>
13284 %a = select <4 x i1> %cmps, <4 x float> %x,
13285 <4 x float> <float 5., float 5., float 5., float 5.>
13289 define <4 x float> @min_ordered_v4f32(<4 x float> %x) {
13290 ; SIMD128-LABEL: min_ordered_v4f32:
13291 ; SIMD128: .functype min_ordered_v4f32 (v128) -> (v128)
13292 ; SIMD128-NEXT: # %bb.0:
13293 ; SIMD128-NEXT: v128.const $push0=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2
13294 ; SIMD128-NEXT: f32x4.pmin $push1=, $0, $pop0
13295 ; SIMD128-NEXT: return $pop1
13297 ; SIMD128-FAST-LABEL: min_ordered_v4f32:
13298 ; SIMD128-FAST: .functype min_ordered_v4f32 (v128) -> (v128)
13299 ; SIMD128-FAST-NEXT: # %bb.0:
13300 ; SIMD128-FAST-NEXT: v128.const $push1=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2
13301 ; SIMD128-FAST-NEXT: f32x4.pmin $push0=, $0, $pop1
13302 ; SIMD128-FAST-NEXT: return $pop0
13304 ; NO-SIMD128-LABEL: min_ordered_v4f32:
13305 ; NO-SIMD128: .functype min_ordered_v4f32 (i32, f32, f32, f32, f32) -> ()
13306 ; NO-SIMD128-NEXT: # %bb.0:
13307 ; NO-SIMD128-NEXT: f32.const $push0=, 0x1.4p2
13308 ; NO-SIMD128-NEXT: f32.const $push17=, 0x1.4p2
13309 ; NO-SIMD128-NEXT: f32.ge $push1=, $3, $pop17
13310 ; NO-SIMD128-NEXT: f32.select $push2=, $pop0, $3, $pop1
13311 ; NO-SIMD128-NEXT: f32.store 8($0), $pop2
13312 ; NO-SIMD128-NEXT: f32.const $push16=, 0x1.4p2
13313 ; NO-SIMD128-NEXT: f32.const $push15=, 0x1.4p2
13314 ; NO-SIMD128-NEXT: f32.ge $push3=, $2, $pop15
13315 ; NO-SIMD128-NEXT: f32.select $push4=, $pop16, $2, $pop3
13316 ; NO-SIMD128-NEXT: f32.store 4($0), $pop4
13317 ; NO-SIMD128-NEXT: f32.const $push14=, 0x1.4p2
13318 ; NO-SIMD128-NEXT: f32.const $push13=, 0x1.4p2
13319 ; NO-SIMD128-NEXT: f32.ge $push5=, $1, $pop13
13320 ; NO-SIMD128-NEXT: f32.select $push6=, $pop14, $1, $pop5
13321 ; NO-SIMD128-NEXT: f32.store 0($0), $pop6
13322 ; NO-SIMD128-NEXT: i32.const $push9=, 12
13323 ; NO-SIMD128-NEXT: i32.add $push10=, $0, $pop9
13324 ; NO-SIMD128-NEXT: f32.const $push12=, 0x1.4p2
13325 ; NO-SIMD128-NEXT: f32.const $push11=, 0x1.4p2
13326 ; NO-SIMD128-NEXT: f32.ge $push7=, $4, $pop11
13327 ; NO-SIMD128-NEXT: f32.select $push8=, $pop12, $4, $pop7
13328 ; NO-SIMD128-NEXT: f32.store 0($pop10), $pop8
13329 ; NO-SIMD128-NEXT: return
13331 ; NO-SIMD128-FAST-LABEL: min_ordered_v4f32:
13332 ; NO-SIMD128-FAST: .functype min_ordered_v4f32 (i32, f32, f32, f32, f32) -> ()
13333 ; NO-SIMD128-FAST-NEXT: # %bb.0:
13334 ; NO-SIMD128-FAST-NEXT: f32.const $push0=, 0x1.4p2
13335 ; NO-SIMD128-FAST-NEXT: f32.const $push17=, 0x1.4p2
13336 ; NO-SIMD128-FAST-NEXT: f32.ge $push1=, $1, $pop17
13337 ; NO-SIMD128-FAST-NEXT: f32.select $push2=, $pop0, $1, $pop1
13338 ; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop2
13339 ; NO-SIMD128-FAST-NEXT: f32.const $push16=, 0x1.4p2
13340 ; NO-SIMD128-FAST-NEXT: f32.const $push15=, 0x1.4p2
13341 ; NO-SIMD128-FAST-NEXT: f32.ge $push3=, $2, $pop15
13342 ; NO-SIMD128-FAST-NEXT: f32.select $push4=, $pop16, $2, $pop3
13343 ; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop4
13344 ; NO-SIMD128-FAST-NEXT: f32.const $push14=, 0x1.4p2
13345 ; NO-SIMD128-FAST-NEXT: f32.const $push13=, 0x1.4p2
13346 ; NO-SIMD128-FAST-NEXT: f32.ge $push5=, $3, $pop13
13347 ; NO-SIMD128-FAST-NEXT: f32.select $push6=, $pop14, $3, $pop5
13348 ; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop6
13349 ; NO-SIMD128-FAST-NEXT: i32.const $push9=, 12
13350 ; NO-SIMD128-FAST-NEXT: i32.add $push10=, $0, $pop9
13351 ; NO-SIMD128-FAST-NEXT: f32.const $push12=, 0x1.4p2
13352 ; NO-SIMD128-FAST-NEXT: f32.const $push11=, 0x1.4p2
13353 ; NO-SIMD128-FAST-NEXT: f32.ge $push7=, $4, $pop11
13354 ; NO-SIMD128-FAST-NEXT: f32.select $push8=, $pop12, $4, $pop7
13355 ; NO-SIMD128-FAST-NEXT: f32.store 0($pop10), $pop8
13356 ; NO-SIMD128-FAST-NEXT: return
13357 %cmps = fcmp ole <4 x float> <float 5., float 5., float 5., float 5.>, %x
13358 %a = select <4 x i1> %cmps,
13359 <4 x float> <float 5., float 5., float 5., float 5.>, <4 x float> %x
13363 define <4 x float> @max_ordered_v4f32(<4 x float> %x) {
13364 ; SIMD128-LABEL: max_ordered_v4f32:
13365 ; SIMD128: .functype max_ordered_v4f32 (v128) -> (v128)
13366 ; SIMD128-NEXT: # %bb.0:
13367 ; SIMD128-NEXT: v128.const $push0=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2
13368 ; SIMD128-NEXT: f32x4.pmax $push1=, $0, $pop0
13369 ; SIMD128-NEXT: return $pop1
13371 ; SIMD128-FAST-LABEL: max_ordered_v4f32:
13372 ; SIMD128-FAST: .functype max_ordered_v4f32 (v128) -> (v128)
13373 ; SIMD128-FAST-NEXT: # %bb.0:
13374 ; SIMD128-FAST-NEXT: v128.const $push1=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2
13375 ; SIMD128-FAST-NEXT: f32x4.pmax $push0=, $0, $pop1
13376 ; SIMD128-FAST-NEXT: return $pop0
13378 ; NO-SIMD128-LABEL: max_ordered_v4f32:
13379 ; NO-SIMD128: .functype max_ordered_v4f32 (i32, f32, f32, f32, f32) -> ()
13380 ; NO-SIMD128-NEXT: # %bb.0:
13381 ; NO-SIMD128-NEXT: f32.const $push0=, 0x1.4p2
13382 ; NO-SIMD128-NEXT: f32.const $push17=, 0x1.4p2
13383 ; NO-SIMD128-NEXT: f32.le $push1=, $3, $pop17
13384 ; NO-SIMD128-NEXT: f32.select $push2=, $pop0, $3, $pop1
13385 ; NO-SIMD128-NEXT: f32.store 8($0), $pop2
13386 ; NO-SIMD128-NEXT: f32.const $push16=, 0x1.4p2
13387 ; NO-SIMD128-NEXT: f32.const $push15=, 0x1.4p2
13388 ; NO-SIMD128-NEXT: f32.le $push3=, $2, $pop15
13389 ; NO-SIMD128-NEXT: f32.select $push4=, $pop16, $2, $pop3
13390 ; NO-SIMD128-NEXT: f32.store 4($0), $pop4
13391 ; NO-SIMD128-NEXT: f32.const $push14=, 0x1.4p2
13392 ; NO-SIMD128-NEXT: f32.const $push13=, 0x1.4p2
13393 ; NO-SIMD128-NEXT: f32.le $push5=, $1, $pop13
13394 ; NO-SIMD128-NEXT: f32.select $push6=, $pop14, $1, $pop5
13395 ; NO-SIMD128-NEXT: f32.store 0($0), $pop6
13396 ; NO-SIMD128-NEXT: i32.const $push9=, 12
13397 ; NO-SIMD128-NEXT: i32.add $push10=, $0, $pop9
13398 ; NO-SIMD128-NEXT: f32.const $push12=, 0x1.4p2
13399 ; NO-SIMD128-NEXT: f32.const $push11=, 0x1.4p2
13400 ; NO-SIMD128-NEXT: f32.le $push7=, $4, $pop11
13401 ; NO-SIMD128-NEXT: f32.select $push8=, $pop12, $4, $pop7
13402 ; NO-SIMD128-NEXT: f32.store 0($pop10), $pop8
13403 ; NO-SIMD128-NEXT: return
13405 ; NO-SIMD128-FAST-LABEL: max_ordered_v4f32:
13406 ; NO-SIMD128-FAST: .functype max_ordered_v4f32 (i32, f32, f32, f32, f32) -> ()
13407 ; NO-SIMD128-FAST-NEXT: # %bb.0:
13408 ; NO-SIMD128-FAST-NEXT: f32.const $push0=, 0x1.4p2
13409 ; NO-SIMD128-FAST-NEXT: f32.const $push17=, 0x1.4p2
13410 ; NO-SIMD128-FAST-NEXT: f32.le $push1=, $1, $pop17
13411 ; NO-SIMD128-FAST-NEXT: f32.select $push2=, $pop0, $1, $pop1
13412 ; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop2
13413 ; NO-SIMD128-FAST-NEXT: f32.const $push16=, 0x1.4p2
13414 ; NO-SIMD128-FAST-NEXT: f32.const $push15=, 0x1.4p2
13415 ; NO-SIMD128-FAST-NEXT: f32.le $push3=, $2, $pop15
13416 ; NO-SIMD128-FAST-NEXT: f32.select $push4=, $pop16, $2, $pop3
13417 ; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop4
13418 ; NO-SIMD128-FAST-NEXT: f32.const $push14=, 0x1.4p2
13419 ; NO-SIMD128-FAST-NEXT: f32.const $push13=, 0x1.4p2
13420 ; NO-SIMD128-FAST-NEXT: f32.le $push5=, $3, $pop13
13421 ; NO-SIMD128-FAST-NEXT: f32.select $push6=, $pop14, $3, $pop5
13422 ; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop6
13423 ; NO-SIMD128-FAST-NEXT: i32.const $push9=, 12
13424 ; NO-SIMD128-FAST-NEXT: i32.add $push10=, $0, $pop9
13425 ; NO-SIMD128-FAST-NEXT: f32.const $push12=, 0x1.4p2
13426 ; NO-SIMD128-FAST-NEXT: f32.const $push11=, 0x1.4p2
13427 ; NO-SIMD128-FAST-NEXT: f32.le $push7=, $4, $pop11
13428 ; NO-SIMD128-FAST-NEXT: f32.select $push8=, $pop12, $4, $pop7
13429 ; NO-SIMD128-FAST-NEXT: f32.store 0($pop10), $pop8
13430 ; NO-SIMD128-FAST-NEXT: return
13431 %cmps = fcmp oge <4 x float> <float 5., float 5., float 5., float 5.>, %x
13432 %a = select <4 x i1> %cmps,
13433 <4 x float> <float 5., float 5., float 5., float 5.>, <4 x float> %x
13437 declare <4 x float> @llvm.minimum.v4f32(<4 x float>, <4 x float>)
13438 define <4 x float> @min_intrinsic_v4f32(<4 x float> %x, <4 x float> %y) {
13439 ; SIMD128-LABEL: min_intrinsic_v4f32:
13440 ; SIMD128: .functype min_intrinsic_v4f32 (v128, v128) -> (v128)
13441 ; SIMD128-NEXT: # %bb.0:
13442 ; SIMD128-NEXT: f32x4.min $push0=, $0, $1
13443 ; SIMD128-NEXT: return $pop0
13445 ; SIMD128-FAST-LABEL: min_intrinsic_v4f32:
13446 ; SIMD128-FAST: .functype min_intrinsic_v4f32 (v128, v128) -> (v128)
13447 ; SIMD128-FAST-NEXT: # %bb.0:
13448 ; SIMD128-FAST-NEXT: f32x4.min $push0=, $0, $1
13449 ; SIMD128-FAST-NEXT: return $pop0
13451 ; NO-SIMD128-LABEL: min_intrinsic_v4f32:
13452 ; NO-SIMD128: .functype min_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
13453 ; NO-SIMD128-NEXT: # %bb.0:
13454 ; NO-SIMD128-NEXT: f32.min $push0=, $3, $7
13455 ; NO-SIMD128-NEXT: f32.store 8($0), $pop0
13456 ; NO-SIMD128-NEXT: f32.min $push1=, $2, $6
13457 ; NO-SIMD128-NEXT: f32.store 4($0), $pop1
13458 ; NO-SIMD128-NEXT: f32.min $push2=, $1, $5
13459 ; NO-SIMD128-NEXT: f32.store 0($0), $pop2
13460 ; NO-SIMD128-NEXT: i32.const $push4=, 12
13461 ; NO-SIMD128-NEXT: i32.add $push5=, $0, $pop4
13462 ; NO-SIMD128-NEXT: f32.min $push3=, $4, $8
13463 ; NO-SIMD128-NEXT: f32.store 0($pop5), $pop3
13464 ; NO-SIMD128-NEXT: return
13466 ; NO-SIMD128-FAST-LABEL: min_intrinsic_v4f32:
13467 ; NO-SIMD128-FAST: .functype min_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
13468 ; NO-SIMD128-FAST-NEXT: # %bb.0:
13469 ; NO-SIMD128-FAST-NEXT: f32.min $push0=, $1, $5
13470 ; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop0
13471 ; NO-SIMD128-FAST-NEXT: f32.min $push1=, $2, $6
13472 ; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop1
13473 ; NO-SIMD128-FAST-NEXT: f32.min $push2=, $3, $7
13474 ; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop2
13475 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 12
13476 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
13477 ; NO-SIMD128-FAST-NEXT: f32.min $push5=, $4, $8
13478 ; NO-SIMD128-FAST-NEXT: f32.store 0($pop4), $pop5
13479 ; NO-SIMD128-FAST-NEXT: return
13480 %a = call <4 x float> @llvm.minimum.v4f32(<4 x float> %x, <4 x float> %y)
13484 declare <4 x float> @llvm.minnum.v4f32(<4 x float>, <4 x float>)
13485 define <4 x float> @minnum_intrinsic_v4f32(<4 x float> %x, <4 x float> %y) {
13486 ; SIMD128-LABEL: minnum_intrinsic_v4f32:
13487 ; SIMD128: .functype minnum_intrinsic_v4f32 (v128, v128) -> (v128)
13488 ; SIMD128-NEXT: # %bb.0:
13489 ; SIMD128-NEXT: f32x4.extract_lane $push27=, $0, 0
13490 ; SIMD128-NEXT: local.tee $push26=, $3=, $pop27
13491 ; SIMD128-NEXT: f32x4.extract_lane $push25=, $1, 0
13492 ; SIMD128-NEXT: local.tee $push24=, $2=, $pop25
13493 ; SIMD128-NEXT: f32.lt $push2=, $3, $2
13494 ; SIMD128-NEXT: f32.select $push3=, $pop26, $pop24, $pop2
13495 ; SIMD128-NEXT: f32x4.splat $push4=, $pop3
13496 ; SIMD128-NEXT: f32x4.extract_lane $push23=, $0, 1
13497 ; SIMD128-NEXT: local.tee $push22=, $3=, $pop23
13498 ; SIMD128-NEXT: f32x4.extract_lane $push21=, $1, 1
13499 ; SIMD128-NEXT: local.tee $push20=, $2=, $pop21
13500 ; SIMD128-NEXT: f32.lt $push0=, $3, $2
13501 ; SIMD128-NEXT: f32.select $push1=, $pop22, $pop20, $pop0
13502 ; SIMD128-NEXT: f32x4.replace_lane $push5=, $pop4, 1, $pop1
13503 ; SIMD128-NEXT: f32x4.extract_lane $push19=, $0, 2
13504 ; SIMD128-NEXT: local.tee $push18=, $3=, $pop19
13505 ; SIMD128-NEXT: f32x4.extract_lane $push17=, $1, 2
13506 ; SIMD128-NEXT: local.tee $push16=, $2=, $pop17
13507 ; SIMD128-NEXT: f32.lt $push6=, $3, $2
13508 ; SIMD128-NEXT: f32.select $push7=, $pop18, $pop16, $pop6
13509 ; SIMD128-NEXT: f32x4.replace_lane $push8=, $pop5, 2, $pop7
13510 ; SIMD128-NEXT: f32x4.extract_lane $push15=, $0, 3
13511 ; SIMD128-NEXT: local.tee $push14=, $3=, $pop15
13512 ; SIMD128-NEXT: f32x4.extract_lane $push13=, $1, 3
13513 ; SIMD128-NEXT: local.tee $push12=, $2=, $pop13
13514 ; SIMD128-NEXT: f32.lt $push9=, $3, $2
13515 ; SIMD128-NEXT: f32.select $push10=, $pop14, $pop12, $pop9
13516 ; SIMD128-NEXT: f32x4.replace_lane $push11=, $pop8, 3, $pop10
13517 ; SIMD128-NEXT: return $pop11
13519 ; SIMD128-FAST-LABEL: minnum_intrinsic_v4f32:
13520 ; SIMD128-FAST: .functype minnum_intrinsic_v4f32 (v128, v128) -> (v128)
13521 ; SIMD128-FAST-NEXT: # %bb.0:
13522 ; SIMD128-FAST-NEXT: f32x4.extract_lane $push27=, $0, 0
13523 ; SIMD128-FAST-NEXT: local.tee $push26=, $3=, $pop27
13524 ; SIMD128-FAST-NEXT: f32x4.extract_lane $push25=, $1, 0
13525 ; SIMD128-FAST-NEXT: local.tee $push24=, $2=, $pop25
13526 ; SIMD128-FAST-NEXT: f32.lt $push3=, $3, $2
13527 ; SIMD128-FAST-NEXT: f32.select $push4=, $pop26, $pop24, $pop3
13528 ; SIMD128-FAST-NEXT: f32x4.splat $push5=, $pop4
13529 ; SIMD128-FAST-NEXT: f32x4.extract_lane $push23=, $0, 1
13530 ; SIMD128-FAST-NEXT: local.tee $push22=, $3=, $pop23
13531 ; SIMD128-FAST-NEXT: f32x4.extract_lane $push21=, $1, 1
13532 ; SIMD128-FAST-NEXT: local.tee $push20=, $2=, $pop21
13533 ; SIMD128-FAST-NEXT: f32.lt $push1=, $3, $2
13534 ; SIMD128-FAST-NEXT: f32.select $push2=, $pop22, $pop20, $pop1
13535 ; SIMD128-FAST-NEXT: f32x4.replace_lane $push6=, $pop5, 1, $pop2
13536 ; SIMD128-FAST-NEXT: f32x4.extract_lane $push19=, $0, 2
13537 ; SIMD128-FAST-NEXT: local.tee $push18=, $3=, $pop19
13538 ; SIMD128-FAST-NEXT: f32x4.extract_lane $push17=, $1, 2
13539 ; SIMD128-FAST-NEXT: local.tee $push16=, $2=, $pop17
13540 ; SIMD128-FAST-NEXT: f32.lt $push7=, $3, $2
13541 ; SIMD128-FAST-NEXT: f32.select $push8=, $pop18, $pop16, $pop7
13542 ; SIMD128-FAST-NEXT: f32x4.replace_lane $push9=, $pop6, 2, $pop8
13543 ; SIMD128-FAST-NEXT: f32x4.extract_lane $push15=, $0, 3
13544 ; SIMD128-FAST-NEXT: local.tee $push14=, $3=, $pop15
13545 ; SIMD128-FAST-NEXT: f32x4.extract_lane $push13=, $1, 3
13546 ; SIMD128-FAST-NEXT: local.tee $push12=, $2=, $pop13
13547 ; SIMD128-FAST-NEXT: f32.lt $push10=, $3, $2
13548 ; SIMD128-FAST-NEXT: f32.select $push11=, $pop14, $pop12, $pop10
13549 ; SIMD128-FAST-NEXT: f32x4.replace_lane $push0=, $pop9, 3, $pop11
13550 ; SIMD128-FAST-NEXT: return $pop0
13552 ; NO-SIMD128-LABEL: minnum_intrinsic_v4f32:
13553 ; NO-SIMD128: .functype minnum_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
13554 ; NO-SIMD128-NEXT: # %bb.0:
13555 ; NO-SIMD128-NEXT: call $push0=, fminf, $3, $7
13556 ; NO-SIMD128-NEXT: f32.store 8($0), $pop0
13557 ; NO-SIMD128-NEXT: call $push1=, fminf, $2, $6
13558 ; NO-SIMD128-NEXT: f32.store 4($0), $pop1
13559 ; NO-SIMD128-NEXT: call $push2=, fminf, $1, $5
13560 ; NO-SIMD128-NEXT: f32.store 0($0), $pop2
13561 ; NO-SIMD128-NEXT: i32.const $push3=, 12
13562 ; NO-SIMD128-NEXT: i32.add $push4=, $0, $pop3
13563 ; NO-SIMD128-NEXT: call $push5=, fminf, $4, $8
13564 ; NO-SIMD128-NEXT: f32.store 0($pop4), $pop5
13565 ; NO-SIMD128-NEXT: return
13567 ; NO-SIMD128-FAST-LABEL: minnum_intrinsic_v4f32:
13568 ; NO-SIMD128-FAST: .functype minnum_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
13569 ; NO-SIMD128-FAST-NEXT: # %bb.0:
13570 ; NO-SIMD128-FAST-NEXT: call $push0=, fminf, $1, $5
13571 ; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop0
13572 ; NO-SIMD128-FAST-NEXT: call $push1=, fminf, $2, $6
13573 ; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop1
13574 ; NO-SIMD128-FAST-NEXT: call $push2=, fminf, $3, $7
13575 ; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop2
13576 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 12
13577 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
13578 ; NO-SIMD128-FAST-NEXT: call $push5=, fminf, $4, $8
13579 ; NO-SIMD128-FAST-NEXT: f32.store 0($pop4), $pop5
13580 ; NO-SIMD128-FAST-NEXT: return
13581 %a = call nnan <4 x float> @llvm.minnum.v4f32(<4 x float> %x, <4 x float> %y)
13585 define <4 x float> @minnum_nsz_intrinsic_v4f32(<4 x float> %x, <4 x float> %y) {
13586 ; SIMD128-LABEL: minnum_nsz_intrinsic_v4f32:
13587 ; SIMD128: .functype minnum_nsz_intrinsic_v4f32 (v128, v128) -> (v128)
13588 ; SIMD128-NEXT: # %bb.0:
13589 ; SIMD128-NEXT: f32x4.min $push0=, $0, $1
13590 ; SIMD128-NEXT: return $pop0
13592 ; SIMD128-FAST-LABEL: minnum_nsz_intrinsic_v4f32:
13593 ; SIMD128-FAST: .functype minnum_nsz_intrinsic_v4f32 (v128, v128) -> (v128)
13594 ; SIMD128-FAST-NEXT: # %bb.0:
13595 ; SIMD128-FAST-NEXT: f32x4.min $push0=, $0, $1
13596 ; SIMD128-FAST-NEXT: return $pop0
13598 ; NO-SIMD128-LABEL: minnum_nsz_intrinsic_v4f32:
13599 ; NO-SIMD128: .functype minnum_nsz_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
13600 ; NO-SIMD128-NEXT: # %bb.0:
13601 ; NO-SIMD128-NEXT: call $push0=, fminf, $3, $7
13602 ; NO-SIMD128-NEXT: f32.store 8($0), $pop0
13603 ; NO-SIMD128-NEXT: call $push1=, fminf, $2, $6
13604 ; NO-SIMD128-NEXT: f32.store 4($0), $pop1
13605 ; NO-SIMD128-NEXT: call $push2=, fminf, $1, $5
13606 ; NO-SIMD128-NEXT: f32.store 0($0), $pop2
13607 ; NO-SIMD128-NEXT: i32.const $push3=, 12
13608 ; NO-SIMD128-NEXT: i32.add $push4=, $0, $pop3
13609 ; NO-SIMD128-NEXT: call $push5=, fminf, $4, $8
13610 ; NO-SIMD128-NEXT: f32.store 0($pop4), $pop5
13611 ; NO-SIMD128-NEXT: return
13613 ; NO-SIMD128-FAST-LABEL: minnum_nsz_intrinsic_v4f32:
13614 ; NO-SIMD128-FAST: .functype minnum_nsz_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
13615 ; NO-SIMD128-FAST-NEXT: # %bb.0:
13616 ; NO-SIMD128-FAST-NEXT: call $push0=, fminf, $1, $5
13617 ; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop0
13618 ; NO-SIMD128-FAST-NEXT: call $push1=, fminf, $2, $6
13619 ; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop1
13620 ; NO-SIMD128-FAST-NEXT: call $push2=, fminf, $3, $7
13621 ; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop2
13622 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 12
13623 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
13624 ; NO-SIMD128-FAST-NEXT: call $push5=, fminf, $4, $8
13625 ; NO-SIMD128-FAST-NEXT: f32.store 0($pop4), $pop5
13626 ; NO-SIMD128-FAST-NEXT: return
13627 %a = call nnan nsz <4 x float> @llvm.minnum.v4f32(<4 x float> %x, <4 x float> %y)
13631 define <4 x float> @fminnumv432_non_zero_intrinsic(<4 x float> %x) {
13632 ; SIMD128-LABEL: fminnumv432_non_zero_intrinsic:
13633 ; SIMD128: .functype fminnumv432_non_zero_intrinsic (v128) -> (v128)
13634 ; SIMD128-NEXT: # %bb.0:
13635 ; SIMD128-NEXT: v128.const $push0=, -0x1p0, -0x1p0, -0x1p0, -0x1p0
13636 ; SIMD128-NEXT: f32x4.min $push1=, $0, $pop0
13637 ; SIMD128-NEXT: return $pop1
13639 ; SIMD128-FAST-LABEL: fminnumv432_non_zero_intrinsic:
13640 ; SIMD128-FAST: .functype fminnumv432_non_zero_intrinsic (v128) -> (v128)
13641 ; SIMD128-FAST-NEXT: # %bb.0:
13642 ; SIMD128-FAST-NEXT: v128.const $push1=, -0x1p0, -0x1p0, -0x1p0, -0x1p0
13643 ; SIMD128-FAST-NEXT: f32x4.min $push0=, $0, $pop1
13644 ; SIMD128-FAST-NEXT: return $pop0
13646 ; NO-SIMD128-LABEL: fminnumv432_non_zero_intrinsic:
13647 ; NO-SIMD128: .functype fminnumv432_non_zero_intrinsic (i32, f32, f32, f32, f32) -> ()
13648 ; NO-SIMD128-NEXT: # %bb.0:
13649 ; NO-SIMD128-NEXT: f32.const $push0=, -0x1p0
13650 ; NO-SIMD128-NEXT: call $push1=, fminf, $3, $pop0
13651 ; NO-SIMD128-NEXT: f32.store 8($0), $pop1
13652 ; NO-SIMD128-NEXT: f32.const $push9=, -0x1p0
13653 ; NO-SIMD128-NEXT: call $push2=, fminf, $2, $pop9
13654 ; NO-SIMD128-NEXT: f32.store 4($0), $pop2
13655 ; NO-SIMD128-NEXT: f32.const $push8=, -0x1p0
13656 ; NO-SIMD128-NEXT: call $push3=, fminf, $1, $pop8
13657 ; NO-SIMD128-NEXT: f32.store 0($0), $pop3
13658 ; NO-SIMD128-NEXT: i32.const $push4=, 12
13659 ; NO-SIMD128-NEXT: i32.add $push5=, $0, $pop4
13660 ; NO-SIMD128-NEXT: f32.const $push7=, -0x1p0
13661 ; NO-SIMD128-NEXT: call $push6=, fminf, $4, $pop7
13662 ; NO-SIMD128-NEXT: f32.store 0($pop5), $pop6
13663 ; NO-SIMD128-NEXT: return
13665 ; NO-SIMD128-FAST-LABEL: fminnumv432_non_zero_intrinsic:
13666 ; NO-SIMD128-FAST: .functype fminnumv432_non_zero_intrinsic (i32, f32, f32, f32, f32) -> ()
13667 ; NO-SIMD128-FAST-NEXT: # %bb.0:
13668 ; NO-SIMD128-FAST-NEXT: f32.const $push0=, -0x1p0
13669 ; NO-SIMD128-FAST-NEXT: call $push1=, fminf, $1, $pop0
13670 ; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop1
13671 ; NO-SIMD128-FAST-NEXT: f32.const $push9=, -0x1p0
13672 ; NO-SIMD128-FAST-NEXT: call $push2=, fminf, $2, $pop9
13673 ; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop2
13674 ; NO-SIMD128-FAST-NEXT: f32.const $push8=, -0x1p0
13675 ; NO-SIMD128-FAST-NEXT: call $push3=, fminf, $3, $pop8
13676 ; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop3
13677 ; NO-SIMD128-FAST-NEXT: i32.const $push4=, 12
13678 ; NO-SIMD128-FAST-NEXT: i32.add $push5=, $0, $pop4
13679 ; NO-SIMD128-FAST-NEXT: f32.const $push7=, -0x1p0
13680 ; NO-SIMD128-FAST-NEXT: call $push6=, fminf, $4, $pop7
13681 ; NO-SIMD128-FAST-NEXT: f32.store 0($pop5), $pop6
13682 ; NO-SIMD128-FAST-NEXT: return
13683 %a = call nnan <4 x float> @llvm.minnum.v4f32(<4 x float> %x, <4 x float><float -1.0, float -1.0, float -1.0, float -1.0>)
13687 define <4 x float> @fminnumv432_one_zero_intrinsic(<4 x float> %x) {
13688 ; SIMD128-LABEL: fminnumv432_one_zero_intrinsic:
13689 ; SIMD128: .functype fminnumv432_one_zero_intrinsic (v128) -> (v128)
13690 ; SIMD128-NEXT: # %bb.0:
13691 ; SIMD128-NEXT: f32x4.extract_lane $push27=, $0, 0
13692 ; SIMD128-NEXT: local.tee $push26=, $1=, $pop27
13693 ; SIMD128-NEXT: f32.const $push3=, -0x1p0
13694 ; SIMD128-NEXT: f32.const $push25=, -0x1p0
13695 ; SIMD128-NEXT: f32.lt $push4=, $1, $pop25
13696 ; SIMD128-NEXT: f32.select $push5=, $pop26, $pop3, $pop4
13697 ; SIMD128-NEXT: f32x4.splat $push6=, $pop5
13698 ; SIMD128-NEXT: f32x4.extract_lane $push24=, $0, 1
13699 ; SIMD128-NEXT: local.tee $push23=, $1=, $pop24
13700 ; SIMD128-NEXT: f32.const $push0=, 0x0p0
13701 ; SIMD128-NEXT: f32.const $push22=, 0x0p0
13702 ; SIMD128-NEXT: f32.lt $push1=, $1, $pop22
13703 ; SIMD128-NEXT: f32.select $push2=, $pop23, $pop0, $pop1
13704 ; SIMD128-NEXT: f32x4.replace_lane $push7=, $pop6, 1, $pop2
13705 ; SIMD128-NEXT: f32x4.extract_lane $push21=, $0, 2
13706 ; SIMD128-NEXT: local.tee $push20=, $1=, $pop21
13707 ; SIMD128-NEXT: f32.const $push19=, -0x1p0
13708 ; SIMD128-NEXT: f32.const $push18=, -0x1p0
13709 ; SIMD128-NEXT: f32.lt $push8=, $1, $pop18
13710 ; SIMD128-NEXT: f32.select $push9=, $pop20, $pop19, $pop8
13711 ; SIMD128-NEXT: f32x4.replace_lane $push10=, $pop7, 2, $pop9
13712 ; SIMD128-NEXT: f32x4.extract_lane $push17=, $0, 3
13713 ; SIMD128-NEXT: local.tee $push16=, $1=, $pop17
13714 ; SIMD128-NEXT: f32.const $push15=, -0x1p0
13715 ; SIMD128-NEXT: f32.const $push14=, -0x1p0
13716 ; SIMD128-NEXT: f32.lt $push11=, $1, $pop14
13717 ; SIMD128-NEXT: f32.select $push12=, $pop16, $pop15, $pop11
13718 ; SIMD128-NEXT: f32x4.replace_lane $push13=, $pop10, 3, $pop12
13719 ; SIMD128-NEXT: return $pop13
13721 ; SIMD128-FAST-LABEL: fminnumv432_one_zero_intrinsic:
13722 ; SIMD128-FAST: .functype fminnumv432_one_zero_intrinsic (v128) -> (v128)
13723 ; SIMD128-FAST-NEXT: # %bb.0:
13724 ; SIMD128-FAST-NEXT: f32x4.extract_lane $push27=, $0, 0
13725 ; SIMD128-FAST-NEXT: local.tee $push26=, $1=, $pop27
13726 ; SIMD128-FAST-NEXT: f32.const $push4=, -0x1p0
13727 ; SIMD128-FAST-NEXT: f32.const $push25=, -0x1p0
13728 ; SIMD128-FAST-NEXT: f32.lt $push5=, $1, $pop25
13729 ; SIMD128-FAST-NEXT: f32.select $push6=, $pop26, $pop4, $pop5
13730 ; SIMD128-FAST-NEXT: f32x4.splat $push7=, $pop6
13731 ; SIMD128-FAST-NEXT: f32x4.extract_lane $push24=, $0, 1
13732 ; SIMD128-FAST-NEXT: local.tee $push23=, $1=, $pop24
13733 ; SIMD128-FAST-NEXT: f32.const $push1=, 0x0p0
13734 ; SIMD128-FAST-NEXT: f32.const $push22=, 0x0p0
13735 ; SIMD128-FAST-NEXT: f32.lt $push2=, $1, $pop22
13736 ; SIMD128-FAST-NEXT: f32.select $push3=, $pop23, $pop1, $pop2
13737 ; SIMD128-FAST-NEXT: f32x4.replace_lane $push8=, $pop7, 1, $pop3
13738 ; SIMD128-FAST-NEXT: f32x4.extract_lane $push21=, $0, 2
13739 ; SIMD128-FAST-NEXT: local.tee $push20=, $1=, $pop21
13740 ; SIMD128-FAST-NEXT: f32.const $push19=, -0x1p0
13741 ; SIMD128-FAST-NEXT: f32.const $push18=, -0x1p0
13742 ; SIMD128-FAST-NEXT: f32.lt $push9=, $1, $pop18
13743 ; SIMD128-FAST-NEXT: f32.select $push10=, $pop20, $pop19, $pop9
13744 ; SIMD128-FAST-NEXT: f32x4.replace_lane $push11=, $pop8, 2, $pop10
13745 ; SIMD128-FAST-NEXT: f32x4.extract_lane $push17=, $0, 3
13746 ; SIMD128-FAST-NEXT: local.tee $push16=, $1=, $pop17
13747 ; SIMD128-FAST-NEXT: f32.const $push15=, -0x1p0
13748 ; SIMD128-FAST-NEXT: f32.const $push14=, -0x1p0
13749 ; SIMD128-FAST-NEXT: f32.lt $push12=, $1, $pop14
13750 ; SIMD128-FAST-NEXT: f32.select $push13=, $pop16, $pop15, $pop12
13751 ; SIMD128-FAST-NEXT: f32x4.replace_lane $push0=, $pop11, 3, $pop13
13752 ; SIMD128-FAST-NEXT: return $pop0
13754 ; NO-SIMD128-LABEL: fminnumv432_one_zero_intrinsic:
13755 ; NO-SIMD128: .functype fminnumv432_one_zero_intrinsic (i32, f32, f32, f32, f32) -> ()
13756 ; NO-SIMD128-NEXT: # %bb.0:
13757 ; NO-SIMD128-NEXT: f32.const $push0=, -0x1p0
13758 ; NO-SIMD128-NEXT: call $push1=, fminf, $3, $pop0
13759 ; NO-SIMD128-NEXT: f32.store 8($0), $pop1
13760 ; NO-SIMD128-NEXT: f32.const $push2=, 0x0p0
13761 ; NO-SIMD128-NEXT: call $push3=, fminf, $2, $pop2
13762 ; NO-SIMD128-NEXT: f32.store 4($0), $pop3
13763 ; NO-SIMD128-NEXT: f32.const $push9=, -0x1p0
13764 ; NO-SIMD128-NEXT: call $push4=, fminf, $1, $pop9
13765 ; NO-SIMD128-NEXT: f32.store 0($0), $pop4
13766 ; NO-SIMD128-NEXT: i32.const $push5=, 12
13767 ; NO-SIMD128-NEXT: i32.add $push6=, $0, $pop5
13768 ; NO-SIMD128-NEXT: f32.const $push8=, -0x1p0
13769 ; NO-SIMD128-NEXT: call $push7=, fminf, $4, $pop8
13770 ; NO-SIMD128-NEXT: f32.store 0($pop6), $pop7
13771 ; NO-SIMD128-NEXT: return
13773 ; NO-SIMD128-FAST-LABEL: fminnumv432_one_zero_intrinsic:
13774 ; NO-SIMD128-FAST: .functype fminnumv432_one_zero_intrinsic (i32, f32, f32, f32, f32) -> ()
13775 ; NO-SIMD128-FAST-NEXT: # %bb.0:
13776 ; NO-SIMD128-FAST-NEXT: f32.const $push0=, -0x1p0
13777 ; NO-SIMD128-FAST-NEXT: call $push1=, fminf, $1, $pop0
13778 ; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop1
13779 ; NO-SIMD128-FAST-NEXT: f32.const $push2=, 0x0p0
13780 ; NO-SIMD128-FAST-NEXT: call $push3=, fminf, $2, $pop2
13781 ; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop3
13782 ; NO-SIMD128-FAST-NEXT: f32.const $push9=, -0x1p0
13783 ; NO-SIMD128-FAST-NEXT: call $push4=, fminf, $3, $pop9
13784 ; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop4
13785 ; NO-SIMD128-FAST-NEXT: i32.const $push5=, 12
13786 ; NO-SIMD128-FAST-NEXT: i32.add $push6=, $0, $pop5
13787 ; NO-SIMD128-FAST-NEXT: f32.const $push8=, -0x1p0
13788 ; NO-SIMD128-FAST-NEXT: call $push7=, fminf, $4, $pop8
13789 ; NO-SIMD128-FAST-NEXT: f32.store 0($pop6), $pop7
13790 ; NO-SIMD128-FAST-NEXT: return
13791 %a = call nnan <4 x float> @llvm.minnum.v4f32(<4 x float> %x, <4 x float><float -1.0, float 0.0, float -1.0, float -1.0>)
13795 declare <4 x float> @llvm.maximum.v4f32(<4 x float>, <4 x float>)
13796 define <4 x float> @max_intrinsic_v4f32(<4 x float> %x, <4 x float> %y) {
13797 ; SIMD128-LABEL: max_intrinsic_v4f32:
13798 ; SIMD128: .functype max_intrinsic_v4f32 (v128, v128) -> (v128)
13799 ; SIMD128-NEXT: # %bb.0:
13800 ; SIMD128-NEXT: f32x4.max $push0=, $0, $1
13801 ; SIMD128-NEXT: return $pop0
13803 ; SIMD128-FAST-LABEL: max_intrinsic_v4f32:
13804 ; SIMD128-FAST: .functype max_intrinsic_v4f32 (v128, v128) -> (v128)
13805 ; SIMD128-FAST-NEXT: # %bb.0:
13806 ; SIMD128-FAST-NEXT: f32x4.max $push0=, $0, $1
13807 ; SIMD128-FAST-NEXT: return $pop0
13809 ; NO-SIMD128-LABEL: max_intrinsic_v4f32:
13810 ; NO-SIMD128: .functype max_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
13811 ; NO-SIMD128-NEXT: # %bb.0:
13812 ; NO-SIMD128-NEXT: f32.max $push0=, $3, $7
13813 ; NO-SIMD128-NEXT: f32.store 8($0), $pop0
13814 ; NO-SIMD128-NEXT: f32.max $push1=, $2, $6
13815 ; NO-SIMD128-NEXT: f32.store 4($0), $pop1
13816 ; NO-SIMD128-NEXT: f32.max $push2=, $1, $5
13817 ; NO-SIMD128-NEXT: f32.store 0($0), $pop2
13818 ; NO-SIMD128-NEXT: i32.const $push4=, 12
13819 ; NO-SIMD128-NEXT: i32.add $push5=, $0, $pop4
13820 ; NO-SIMD128-NEXT: f32.max $push3=, $4, $8
13821 ; NO-SIMD128-NEXT: f32.store 0($pop5), $pop3
13822 ; NO-SIMD128-NEXT: return
13824 ; NO-SIMD128-FAST-LABEL: max_intrinsic_v4f32:
13825 ; NO-SIMD128-FAST: .functype max_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
13826 ; NO-SIMD128-FAST-NEXT: # %bb.0:
13827 ; NO-SIMD128-FAST-NEXT: f32.max $push0=, $1, $5
13828 ; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop0
13829 ; NO-SIMD128-FAST-NEXT: f32.max $push1=, $2, $6
13830 ; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop1
13831 ; NO-SIMD128-FAST-NEXT: f32.max $push2=, $3, $7
13832 ; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop2
13833 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 12
13834 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
13835 ; NO-SIMD128-FAST-NEXT: f32.max $push5=, $4, $8
13836 ; NO-SIMD128-FAST-NEXT: f32.store 0($pop4), $pop5
13837 ; NO-SIMD128-FAST-NEXT: return
13838 %a = call <4 x float> @llvm.maximum.v4f32(<4 x float> %x, <4 x float> %y)
13842 declare <4 x float> @llvm.maxnum.v4f32(<4 x float>, <4 x float>)
13843 define <4 x float> @maxnum_intrinsic_v4f32(<4 x float> %x, <4 x float> %y) {
13844 ; SIMD128-LABEL: maxnum_intrinsic_v4f32:
13845 ; SIMD128: .functype maxnum_intrinsic_v4f32 (v128, v128) -> (v128)
13846 ; SIMD128-NEXT: # %bb.0:
13847 ; SIMD128-NEXT: f32x4.extract_lane $push27=, $0, 0
13848 ; SIMD128-NEXT: local.tee $push26=, $3=, $pop27
13849 ; SIMD128-NEXT: f32x4.extract_lane $push25=, $1, 0
13850 ; SIMD128-NEXT: local.tee $push24=, $2=, $pop25
13851 ; SIMD128-NEXT: f32.gt $push2=, $3, $2
13852 ; SIMD128-NEXT: f32.select $push3=, $pop26, $pop24, $pop2
13853 ; SIMD128-NEXT: f32x4.splat $push4=, $pop3
13854 ; SIMD128-NEXT: f32x4.extract_lane $push23=, $0, 1
13855 ; SIMD128-NEXT: local.tee $push22=, $3=, $pop23
13856 ; SIMD128-NEXT: f32x4.extract_lane $push21=, $1, 1
13857 ; SIMD128-NEXT: local.tee $push20=, $2=, $pop21
13858 ; SIMD128-NEXT: f32.gt $push0=, $3, $2
13859 ; SIMD128-NEXT: f32.select $push1=, $pop22, $pop20, $pop0
13860 ; SIMD128-NEXT: f32x4.replace_lane $push5=, $pop4, 1, $pop1
13861 ; SIMD128-NEXT: f32x4.extract_lane $push19=, $0, 2
13862 ; SIMD128-NEXT: local.tee $push18=, $3=, $pop19
13863 ; SIMD128-NEXT: f32x4.extract_lane $push17=, $1, 2
13864 ; SIMD128-NEXT: local.tee $push16=, $2=, $pop17
13865 ; SIMD128-NEXT: f32.gt $push6=, $3, $2
13866 ; SIMD128-NEXT: f32.select $push7=, $pop18, $pop16, $pop6
13867 ; SIMD128-NEXT: f32x4.replace_lane $push8=, $pop5, 2, $pop7
13868 ; SIMD128-NEXT: f32x4.extract_lane $push15=, $0, 3
13869 ; SIMD128-NEXT: local.tee $push14=, $3=, $pop15
13870 ; SIMD128-NEXT: f32x4.extract_lane $push13=, $1, 3
13871 ; SIMD128-NEXT: local.tee $push12=, $2=, $pop13
13872 ; SIMD128-NEXT: f32.gt $push9=, $3, $2
13873 ; SIMD128-NEXT: f32.select $push10=, $pop14, $pop12, $pop9
13874 ; SIMD128-NEXT: f32x4.replace_lane $push11=, $pop8, 3, $pop10
13875 ; SIMD128-NEXT: return $pop11
13877 ; SIMD128-FAST-LABEL: maxnum_intrinsic_v4f32:
13878 ; SIMD128-FAST: .functype maxnum_intrinsic_v4f32 (v128, v128) -> (v128)
13879 ; SIMD128-FAST-NEXT: # %bb.0:
13880 ; SIMD128-FAST-NEXT: f32x4.extract_lane $push27=, $0, 0
13881 ; SIMD128-FAST-NEXT: local.tee $push26=, $3=, $pop27
13882 ; SIMD128-FAST-NEXT: f32x4.extract_lane $push25=, $1, 0
13883 ; SIMD128-FAST-NEXT: local.tee $push24=, $2=, $pop25
13884 ; SIMD128-FAST-NEXT: f32.gt $push3=, $3, $2
13885 ; SIMD128-FAST-NEXT: f32.select $push4=, $pop26, $pop24, $pop3
13886 ; SIMD128-FAST-NEXT: f32x4.splat $push5=, $pop4
13887 ; SIMD128-FAST-NEXT: f32x4.extract_lane $push23=, $0, 1
13888 ; SIMD128-FAST-NEXT: local.tee $push22=, $3=, $pop23
13889 ; SIMD128-FAST-NEXT: f32x4.extract_lane $push21=, $1, 1
13890 ; SIMD128-FAST-NEXT: local.tee $push20=, $2=, $pop21
13891 ; SIMD128-FAST-NEXT: f32.gt $push1=, $3, $2
13892 ; SIMD128-FAST-NEXT: f32.select $push2=, $pop22, $pop20, $pop1
13893 ; SIMD128-FAST-NEXT: f32x4.replace_lane $push6=, $pop5, 1, $pop2
13894 ; SIMD128-FAST-NEXT: f32x4.extract_lane $push19=, $0, 2
13895 ; SIMD128-FAST-NEXT: local.tee $push18=, $3=, $pop19
13896 ; SIMD128-FAST-NEXT: f32x4.extract_lane $push17=, $1, 2
13897 ; SIMD128-FAST-NEXT: local.tee $push16=, $2=, $pop17
13898 ; SIMD128-FAST-NEXT: f32.gt $push7=, $3, $2
13899 ; SIMD128-FAST-NEXT: f32.select $push8=, $pop18, $pop16, $pop7
13900 ; SIMD128-FAST-NEXT: f32x4.replace_lane $push9=, $pop6, 2, $pop8
13901 ; SIMD128-FAST-NEXT: f32x4.extract_lane $push15=, $0, 3
13902 ; SIMD128-FAST-NEXT: local.tee $push14=, $3=, $pop15
13903 ; SIMD128-FAST-NEXT: f32x4.extract_lane $push13=, $1, 3
13904 ; SIMD128-FAST-NEXT: local.tee $push12=, $2=, $pop13
13905 ; SIMD128-FAST-NEXT: f32.gt $push10=, $3, $2
13906 ; SIMD128-FAST-NEXT: f32.select $push11=, $pop14, $pop12, $pop10
13907 ; SIMD128-FAST-NEXT: f32x4.replace_lane $push0=, $pop9, 3, $pop11
13908 ; SIMD128-FAST-NEXT: return $pop0
13910 ; NO-SIMD128-LABEL: maxnum_intrinsic_v4f32:
13911 ; NO-SIMD128: .functype maxnum_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
13912 ; NO-SIMD128-NEXT: # %bb.0:
13913 ; NO-SIMD128-NEXT: call $push0=, fmaxf, $3, $7
13914 ; NO-SIMD128-NEXT: f32.store 8($0), $pop0
13915 ; NO-SIMD128-NEXT: call $push1=, fmaxf, $2, $6
13916 ; NO-SIMD128-NEXT: f32.store 4($0), $pop1
13917 ; NO-SIMD128-NEXT: call $push2=, fmaxf, $1, $5
13918 ; NO-SIMD128-NEXT: f32.store 0($0), $pop2
13919 ; NO-SIMD128-NEXT: i32.const $push3=, 12
13920 ; NO-SIMD128-NEXT: i32.add $push4=, $0, $pop3
13921 ; NO-SIMD128-NEXT: call $push5=, fmaxf, $4, $8
13922 ; NO-SIMD128-NEXT: f32.store 0($pop4), $pop5
13923 ; NO-SIMD128-NEXT: return
13925 ; NO-SIMD128-FAST-LABEL: maxnum_intrinsic_v4f32:
13926 ; NO-SIMD128-FAST: .functype maxnum_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
13927 ; NO-SIMD128-FAST-NEXT: # %bb.0:
13928 ; NO-SIMD128-FAST-NEXT: call $push0=, fmaxf, $1, $5
13929 ; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop0
13930 ; NO-SIMD128-FAST-NEXT: call $push1=, fmaxf, $2, $6
13931 ; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop1
13932 ; NO-SIMD128-FAST-NEXT: call $push2=, fmaxf, $3, $7
13933 ; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop2
13934 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 12
13935 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
13936 ; NO-SIMD128-FAST-NEXT: call $push5=, fmaxf, $4, $8
13937 ; NO-SIMD128-FAST-NEXT: f32.store 0($pop4), $pop5
13938 ; NO-SIMD128-FAST-NEXT: return
13939 %a = call nnan <4 x float> @llvm.maxnum.v4f32(<4 x float> %x, <4 x float> %y)
13943 define <4 x float> @maxnum_nsz_intrinsic_v4f32(<4 x float> %x, <4 x float> %y) {
13944 ; SIMD128-LABEL: maxnum_nsz_intrinsic_v4f32:
13945 ; SIMD128: .functype maxnum_nsz_intrinsic_v4f32 (v128, v128) -> (v128)
13946 ; SIMD128-NEXT: # %bb.0:
13947 ; SIMD128-NEXT: f32x4.max $push0=, $0, $1
13948 ; SIMD128-NEXT: return $pop0
13950 ; SIMD128-FAST-LABEL: maxnum_nsz_intrinsic_v4f32:
13951 ; SIMD128-FAST: .functype maxnum_nsz_intrinsic_v4f32 (v128, v128) -> (v128)
13952 ; SIMD128-FAST-NEXT: # %bb.0:
13953 ; SIMD128-FAST-NEXT: f32x4.max $push0=, $0, $1
13954 ; SIMD128-FAST-NEXT: return $pop0
13956 ; NO-SIMD128-LABEL: maxnum_nsz_intrinsic_v4f32:
13957 ; NO-SIMD128: .functype maxnum_nsz_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
13958 ; NO-SIMD128-NEXT: # %bb.0:
13959 ; NO-SIMD128-NEXT: call $push0=, fmaxf, $3, $7
13960 ; NO-SIMD128-NEXT: f32.store 8($0), $pop0
13961 ; NO-SIMD128-NEXT: call $push1=, fmaxf, $2, $6
13962 ; NO-SIMD128-NEXT: f32.store 4($0), $pop1
13963 ; NO-SIMD128-NEXT: call $push2=, fmaxf, $1, $5
13964 ; NO-SIMD128-NEXT: f32.store 0($0), $pop2
13965 ; NO-SIMD128-NEXT: i32.const $push3=, 12
13966 ; NO-SIMD128-NEXT: i32.add $push4=, $0, $pop3
13967 ; NO-SIMD128-NEXT: call $push5=, fmaxf, $4, $8
13968 ; NO-SIMD128-NEXT: f32.store 0($pop4), $pop5
13969 ; NO-SIMD128-NEXT: return
13971 ; NO-SIMD128-FAST-LABEL: maxnum_nsz_intrinsic_v4f32:
13972 ; NO-SIMD128-FAST: .functype maxnum_nsz_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
13973 ; NO-SIMD128-FAST-NEXT: # %bb.0:
13974 ; NO-SIMD128-FAST-NEXT: call $push0=, fmaxf, $1, $5
13975 ; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop0
13976 ; NO-SIMD128-FAST-NEXT: call $push1=, fmaxf, $2, $6
13977 ; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop1
13978 ; NO-SIMD128-FAST-NEXT: call $push2=, fmaxf, $3, $7
13979 ; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop2
13980 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 12
13981 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
13982 ; NO-SIMD128-FAST-NEXT: call $push5=, fmaxf, $4, $8
13983 ; NO-SIMD128-FAST-NEXT: f32.store 0($pop4), $pop5
13984 ; NO-SIMD128-FAST-NEXT: return
13985 %a = call nnan nsz <4 x float> @llvm.maxnum.v4f32(<4 x float> %x, <4 x float> %y)
13989 define <4 x float> @maxnum_one_zero_intrinsic_v4f32(<4 x float> %x, <4 x float> %y) {
13990 ; SIMD128-LABEL: maxnum_one_zero_intrinsic_v4f32:
13991 ; SIMD128: .functype maxnum_one_zero_intrinsic_v4f32 (v128, v128) -> (v128)
13992 ; SIMD128-NEXT: # %bb.0:
13993 ; SIMD128-NEXT: f32x4.extract_lane $push27=, $0, 0
13994 ; SIMD128-NEXT: local.tee $push26=, $2=, $pop27
13995 ; SIMD128-NEXT: f32.const $push3=, -0x1p0
13996 ; SIMD128-NEXT: f32.const $push25=, -0x1p0
13997 ; SIMD128-NEXT: f32.gt $push4=, $2, $pop25
13998 ; SIMD128-NEXT: f32.select $push5=, $pop26, $pop3, $pop4
13999 ; SIMD128-NEXT: f32x4.splat $push6=, $pop5
14000 ; SIMD128-NEXT: f32x4.extract_lane $push24=, $0, 1
14001 ; SIMD128-NEXT: local.tee $push23=, $2=, $pop24
14002 ; SIMD128-NEXT: f32.const $push0=, 0x0p0
14003 ; SIMD128-NEXT: f32.const $push22=, 0x0p0
14004 ; SIMD128-NEXT: f32.gt $push1=, $2, $pop22
14005 ; SIMD128-NEXT: f32.select $push2=, $pop23, $pop0, $pop1
14006 ; SIMD128-NEXT: f32x4.replace_lane $push7=, $pop6, 1, $pop2
14007 ; SIMD128-NEXT: f32x4.extract_lane $push21=, $0, 2
14008 ; SIMD128-NEXT: local.tee $push20=, $2=, $pop21
14009 ; SIMD128-NEXT: f32.const $push19=, -0x1p0
14010 ; SIMD128-NEXT: f32.const $push18=, -0x1p0
14011 ; SIMD128-NEXT: f32.gt $push8=, $2, $pop18
14012 ; SIMD128-NEXT: f32.select $push9=, $pop20, $pop19, $pop8
14013 ; SIMD128-NEXT: f32x4.replace_lane $push10=, $pop7, 2, $pop9
14014 ; SIMD128-NEXT: f32x4.extract_lane $push17=, $0, 3
14015 ; SIMD128-NEXT: local.tee $push16=, $2=, $pop17
14016 ; SIMD128-NEXT: f32.const $push15=, -0x1p0
14017 ; SIMD128-NEXT: f32.const $push14=, -0x1p0
14018 ; SIMD128-NEXT: f32.gt $push11=, $2, $pop14
14019 ; SIMD128-NEXT: f32.select $push12=, $pop16, $pop15, $pop11
14020 ; SIMD128-NEXT: f32x4.replace_lane $push13=, $pop10, 3, $pop12
14021 ; SIMD128-NEXT: return $pop13
14023 ; SIMD128-FAST-LABEL: maxnum_one_zero_intrinsic_v4f32:
14024 ; SIMD128-FAST: .functype maxnum_one_zero_intrinsic_v4f32 (v128, v128) -> (v128)
14025 ; SIMD128-FAST-NEXT: # %bb.0:
14026 ; SIMD128-FAST-NEXT: f32x4.extract_lane $push27=, $0, 0
14027 ; SIMD128-FAST-NEXT: local.tee $push26=, $2=, $pop27
14028 ; SIMD128-FAST-NEXT: f32.const $push4=, -0x1p0
14029 ; SIMD128-FAST-NEXT: f32.const $push25=, -0x1p0
14030 ; SIMD128-FAST-NEXT: f32.gt $push5=, $2, $pop25
14031 ; SIMD128-FAST-NEXT: f32.select $push6=, $pop26, $pop4, $pop5
14032 ; SIMD128-FAST-NEXT: f32x4.splat $push7=, $pop6
14033 ; SIMD128-FAST-NEXT: f32x4.extract_lane $push24=, $0, 1
14034 ; SIMD128-FAST-NEXT: local.tee $push23=, $2=, $pop24
14035 ; SIMD128-FAST-NEXT: f32.const $push1=, 0x0p0
14036 ; SIMD128-FAST-NEXT: f32.const $push22=, 0x0p0
14037 ; SIMD128-FAST-NEXT: f32.gt $push2=, $2, $pop22
14038 ; SIMD128-FAST-NEXT: f32.select $push3=, $pop23, $pop1, $pop2
14039 ; SIMD128-FAST-NEXT: f32x4.replace_lane $push8=, $pop7, 1, $pop3
14040 ; SIMD128-FAST-NEXT: f32x4.extract_lane $push21=, $0, 2
14041 ; SIMD128-FAST-NEXT: local.tee $push20=, $2=, $pop21
14042 ; SIMD128-FAST-NEXT: f32.const $push19=, -0x1p0
14043 ; SIMD128-FAST-NEXT: f32.const $push18=, -0x1p0
14044 ; SIMD128-FAST-NEXT: f32.gt $push9=, $2, $pop18
14045 ; SIMD128-FAST-NEXT: f32.select $push10=, $pop20, $pop19, $pop9
14046 ; SIMD128-FAST-NEXT: f32x4.replace_lane $push11=, $pop8, 2, $pop10
14047 ; SIMD128-FAST-NEXT: f32x4.extract_lane $push17=, $0, 3
14048 ; SIMD128-FAST-NEXT: local.tee $push16=, $2=, $pop17
14049 ; SIMD128-FAST-NEXT: f32.const $push15=, -0x1p0
14050 ; SIMD128-FAST-NEXT: f32.const $push14=, -0x1p0
14051 ; SIMD128-FAST-NEXT: f32.gt $push12=, $2, $pop14
14052 ; SIMD128-FAST-NEXT: f32.select $push13=, $pop16, $pop15, $pop12
14053 ; SIMD128-FAST-NEXT: f32x4.replace_lane $push0=, $pop11, 3, $pop13
14054 ; SIMD128-FAST-NEXT: return $pop0
14056 ; NO-SIMD128-LABEL: maxnum_one_zero_intrinsic_v4f32:
14057 ; NO-SIMD128: .functype maxnum_one_zero_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
14058 ; NO-SIMD128-NEXT: # %bb.0:
14059 ; NO-SIMD128-NEXT: f32.const $push0=, -0x1p0
14060 ; NO-SIMD128-NEXT: call $push1=, fmaxf, $3, $pop0
14061 ; NO-SIMD128-NEXT: f32.store 8($0), $pop1
14062 ; NO-SIMD128-NEXT: f32.const $push2=, 0x0p0
14063 ; NO-SIMD128-NEXT: call $push3=, fmaxf, $2, $pop2
14064 ; NO-SIMD128-NEXT: f32.store 4($0), $pop3
14065 ; NO-SIMD128-NEXT: f32.const $push9=, -0x1p0
14066 ; NO-SIMD128-NEXT: call $push4=, fmaxf, $1, $pop9
14067 ; NO-SIMD128-NEXT: f32.store 0($0), $pop4
14068 ; NO-SIMD128-NEXT: i32.const $push5=, 12
14069 ; NO-SIMD128-NEXT: i32.add $push6=, $0, $pop5
14070 ; NO-SIMD128-NEXT: f32.const $push8=, -0x1p0
14071 ; NO-SIMD128-NEXT: call $push7=, fmaxf, $4, $pop8
14072 ; NO-SIMD128-NEXT: f32.store 0($pop6), $pop7
14073 ; NO-SIMD128-NEXT: return
14075 ; NO-SIMD128-FAST-LABEL: maxnum_one_zero_intrinsic_v4f32:
14076 ; NO-SIMD128-FAST: .functype maxnum_one_zero_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
14077 ; NO-SIMD128-FAST-NEXT: # %bb.0:
14078 ; NO-SIMD128-FAST-NEXT: f32.const $push0=, -0x1p0
14079 ; NO-SIMD128-FAST-NEXT: call $push1=, fmaxf, $1, $pop0
14080 ; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop1
14081 ; NO-SIMD128-FAST-NEXT: f32.const $push2=, 0x0p0
14082 ; NO-SIMD128-FAST-NEXT: call $push3=, fmaxf, $2, $pop2
14083 ; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop3
14084 ; NO-SIMD128-FAST-NEXT: f32.const $push9=, -0x1p0
14085 ; NO-SIMD128-FAST-NEXT: call $push4=, fmaxf, $3, $pop9
14086 ; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop4
14087 ; NO-SIMD128-FAST-NEXT: i32.const $push5=, 12
14088 ; NO-SIMD128-FAST-NEXT: i32.add $push6=, $0, $pop5
14089 ; NO-SIMD128-FAST-NEXT: f32.const $push8=, -0x1p0
14090 ; NO-SIMD128-FAST-NEXT: call $push7=, fmaxf, $4, $pop8
14091 ; NO-SIMD128-FAST-NEXT: f32.store 0($pop6), $pop7
14092 ; NO-SIMD128-FAST-NEXT: return
14093 %a = call nnan <4 x float> @llvm.maxnum.v4f32(<4 x float> %x, <4 x float><float -1.0, float 0.0, float -1.0, float -1.0>)
14097 define <4 x float> @maxnum_non_zero_intrinsic_v4f32(<4 x float> %x, <4 x float> %y) {
14098 ; SIMD128-LABEL: maxnum_non_zero_intrinsic_v4f32:
14099 ; SIMD128: .functype maxnum_non_zero_intrinsic_v4f32 (v128, v128) -> (v128)
14100 ; SIMD128-NEXT: # %bb.0:
14101 ; SIMD128-NEXT: v128.const $push0=, -0x1p0, 0x1p0, -0x1p0, -0x1p0
14102 ; SIMD128-NEXT: f32x4.max $push1=, $0, $pop0
14103 ; SIMD128-NEXT: return $pop1
14105 ; SIMD128-FAST-LABEL: maxnum_non_zero_intrinsic_v4f32:
14106 ; SIMD128-FAST: .functype maxnum_non_zero_intrinsic_v4f32 (v128, v128) -> (v128)
14107 ; SIMD128-FAST-NEXT: # %bb.0:
14108 ; SIMD128-FAST-NEXT: v128.const $push1=, -0x1p0, 0x1p0, -0x1p0, -0x1p0
14109 ; SIMD128-FAST-NEXT: f32x4.max $push0=, $0, $pop1
14110 ; SIMD128-FAST-NEXT: return $pop0
14112 ; NO-SIMD128-LABEL: maxnum_non_zero_intrinsic_v4f32:
14113 ; NO-SIMD128: .functype maxnum_non_zero_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
14114 ; NO-SIMD128-NEXT: # %bb.0:
14115 ; NO-SIMD128-NEXT: f32.const $push0=, -0x1p0
14116 ; NO-SIMD128-NEXT: call $push1=, fmaxf, $3, $pop0
14117 ; NO-SIMD128-NEXT: f32.store 8($0), $pop1
14118 ; NO-SIMD128-NEXT: f32.const $push2=, 0x1p0
14119 ; NO-SIMD128-NEXT: call $push3=, fmaxf, $2, $pop2
14120 ; NO-SIMD128-NEXT: f32.store 4($0), $pop3
14121 ; NO-SIMD128-NEXT: f32.const $push9=, -0x1p0
14122 ; NO-SIMD128-NEXT: call $push4=, fmaxf, $1, $pop9
14123 ; NO-SIMD128-NEXT: f32.store 0($0), $pop4
14124 ; NO-SIMD128-NEXT: i32.const $push5=, 12
14125 ; NO-SIMD128-NEXT: i32.add $push6=, $0, $pop5
14126 ; NO-SIMD128-NEXT: f32.const $push8=, -0x1p0
14127 ; NO-SIMD128-NEXT: call $push7=, fmaxf, $4, $pop8
14128 ; NO-SIMD128-NEXT: f32.store 0($pop6), $pop7
14129 ; NO-SIMD128-NEXT: return
14131 ; NO-SIMD128-FAST-LABEL: maxnum_non_zero_intrinsic_v4f32:
14132 ; NO-SIMD128-FAST: .functype maxnum_non_zero_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
14133 ; NO-SIMD128-FAST-NEXT: # %bb.0:
14134 ; NO-SIMD128-FAST-NEXT: f32.const $push0=, -0x1p0
14135 ; NO-SIMD128-FAST-NEXT: call $push1=, fmaxf, $1, $pop0
14136 ; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop1
14137 ; NO-SIMD128-FAST-NEXT: f32.const $push2=, 0x1p0
14138 ; NO-SIMD128-FAST-NEXT: call $push3=, fmaxf, $2, $pop2
14139 ; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop3
14140 ; NO-SIMD128-FAST-NEXT: f32.const $push9=, -0x1p0
14141 ; NO-SIMD128-FAST-NEXT: call $push4=, fmaxf, $3, $pop9
14142 ; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop4
14143 ; NO-SIMD128-FAST-NEXT: i32.const $push5=, 12
14144 ; NO-SIMD128-FAST-NEXT: i32.add $push6=, $0, $pop5
14145 ; NO-SIMD128-FAST-NEXT: f32.const $push8=, -0x1p0
14146 ; NO-SIMD128-FAST-NEXT: call $push7=, fmaxf, $4, $pop8
14147 ; NO-SIMD128-FAST-NEXT: f32.store 0($pop6), $pop7
14148 ; NO-SIMD128-FAST-NEXT: return
14149 %a = call nnan <4 x float> @llvm.maxnum.v4f32(<4 x float> %x, <4 x float><float -1.0, float 1.0, float -1.0, float -1.0>)
14153 define <4 x float> @min_const_intrinsic_v4f32() {
14154 ; SIMD128-LABEL: min_const_intrinsic_v4f32:
14155 ; SIMD128: .functype min_const_intrinsic_v4f32 () -> (v128)
14156 ; SIMD128-NEXT: # %bb.0:
14157 ; SIMD128-NEXT: v128.const $push0=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2
14158 ; SIMD128-NEXT: return $pop0
14160 ; SIMD128-FAST-LABEL: min_const_intrinsic_v4f32:
14161 ; SIMD128-FAST: .functype min_const_intrinsic_v4f32 () -> (v128)
14162 ; SIMD128-FAST-NEXT: # %bb.0:
14163 ; SIMD128-FAST-NEXT: v128.const $push0=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2
14164 ; SIMD128-FAST-NEXT: return $pop0
14166 ; NO-SIMD128-LABEL: min_const_intrinsic_v4f32:
14167 ; NO-SIMD128: .functype min_const_intrinsic_v4f32 (i32) -> ()
14168 ; NO-SIMD128-NEXT: # %bb.0:
14169 ; NO-SIMD128-NEXT: i64.const $push0=, 4656722015785320448
14170 ; NO-SIMD128-NEXT: i64.store 8($0), $pop0
14171 ; NO-SIMD128-NEXT: i64.const $push1=, 4656722015785320448
14172 ; NO-SIMD128-NEXT: i64.store 0($0), $pop1
14173 ; NO-SIMD128-NEXT: return
14175 ; NO-SIMD128-FAST-LABEL: min_const_intrinsic_v4f32:
14176 ; NO-SIMD128-FAST: .functype min_const_intrinsic_v4f32 (i32) -> ()
14177 ; NO-SIMD128-FAST-NEXT: # %bb.0:
14178 ; NO-SIMD128-FAST-NEXT: i64.const $push0=, 4656722015785320448
14179 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop0
14180 ; NO-SIMD128-FAST-NEXT: i64.const $push1=, 4656722015785320448
14181 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop1
14182 ; NO-SIMD128-FAST-NEXT: return
14183 %a = call <4 x float> @llvm.minimum.v4f32(
14184 <4 x float> <float 42., float 42., float 42., float 42.>,
14185 <4 x float> <float 5., float 5., float 5., float 5.>
14190 define <4 x float> @max_const_intrinsic_v4f32() {
14191 ; SIMD128-LABEL: max_const_intrinsic_v4f32:
14192 ; SIMD128: .functype max_const_intrinsic_v4f32 () -> (v128)
14193 ; SIMD128-NEXT: # %bb.0:
14194 ; SIMD128-NEXT: v128.const $push0=, 0x1.5p5, 0x1.5p5, 0x1.5p5, 0x1.5p5
14195 ; SIMD128-NEXT: return $pop0
14197 ; SIMD128-FAST-LABEL: max_const_intrinsic_v4f32:
14198 ; SIMD128-FAST: .functype max_const_intrinsic_v4f32 () -> (v128)
14199 ; SIMD128-FAST-NEXT: # %bb.0:
14200 ; SIMD128-FAST-NEXT: v128.const $push0=, 0x1.5p5, 0x1.5p5, 0x1.5p5, 0x1.5p5
14201 ; SIMD128-FAST-NEXT: return $pop0
14203 ; NO-SIMD128-LABEL: max_const_intrinsic_v4f32:
14204 ; NO-SIMD128: .functype max_const_intrinsic_v4f32 (i32) -> ()
14205 ; NO-SIMD128-NEXT: # %bb.0:
14206 ; NO-SIMD128-NEXT: i64.const $push0=, 4767060206681587712
14207 ; NO-SIMD128-NEXT: i64.store 8($0), $pop0
14208 ; NO-SIMD128-NEXT: i64.const $push1=, 4767060206681587712
14209 ; NO-SIMD128-NEXT: i64.store 0($0), $pop1
14210 ; NO-SIMD128-NEXT: return
14212 ; NO-SIMD128-FAST-LABEL: max_const_intrinsic_v4f32:
14213 ; NO-SIMD128-FAST: .functype max_const_intrinsic_v4f32 (i32) -> ()
14214 ; NO-SIMD128-FAST-NEXT: # %bb.0:
14215 ; NO-SIMD128-FAST-NEXT: i64.const $push0=, 4767060206681587712
14216 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop0
14217 ; NO-SIMD128-FAST-NEXT: i64.const $push1=, 4767060206681587712
14218 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop1
14219 ; NO-SIMD128-FAST-NEXT: return
14220 %a = call <4 x float> @llvm.maximum.v4f32(
14221 <4 x float> <float 42., float 42., float 42., float 42.>,
14222 <4 x float> <float 5., float 5., float 5., float 5.>
14227 define <4 x float> @pmin_v4f32(<4 x float> %x, <4 x float> %y) {
14228 ; SIMD128-LABEL: pmin_v4f32:
14229 ; SIMD128: .functype pmin_v4f32 (v128, v128) -> (v128)
14230 ; SIMD128-NEXT: # %bb.0:
14231 ; SIMD128-NEXT: f32x4.pmin $push0=, $0, $1
14232 ; SIMD128-NEXT: return $pop0
14234 ; SIMD128-FAST-LABEL: pmin_v4f32:
14235 ; SIMD128-FAST: .functype pmin_v4f32 (v128, v128) -> (v128)
14236 ; SIMD128-FAST-NEXT: # %bb.0:
14237 ; SIMD128-FAST-NEXT: f32x4.pmin $push0=, $0, $1
14238 ; SIMD128-FAST-NEXT: return $pop0
14240 ; NO-SIMD128-LABEL: pmin_v4f32:
14241 ; NO-SIMD128: .functype pmin_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
14242 ; NO-SIMD128-NEXT: # %bb.0:
14243 ; NO-SIMD128-NEXT: f32.lt $push0=, $7, $3
14244 ; NO-SIMD128-NEXT: f32.select $push1=, $7, $3, $pop0
14245 ; NO-SIMD128-NEXT: f32.store 8($0), $pop1
14246 ; NO-SIMD128-NEXT: f32.lt $push2=, $6, $2
14247 ; NO-SIMD128-NEXT: f32.select $push3=, $6, $2, $pop2
14248 ; NO-SIMD128-NEXT: f32.store 4($0), $pop3
14249 ; NO-SIMD128-NEXT: f32.lt $push4=, $5, $1
14250 ; NO-SIMD128-NEXT: f32.select $push5=, $5, $1, $pop4
14251 ; NO-SIMD128-NEXT: f32.store 0($0), $pop5
14252 ; NO-SIMD128-NEXT: i32.const $push8=, 12
14253 ; NO-SIMD128-NEXT: i32.add $push9=, $0, $pop8
14254 ; NO-SIMD128-NEXT: f32.lt $push6=, $8, $4
14255 ; NO-SIMD128-NEXT: f32.select $push7=, $8, $4, $pop6
14256 ; NO-SIMD128-NEXT: f32.store 0($pop9), $pop7
14257 ; NO-SIMD128-NEXT: return
14259 ; NO-SIMD128-FAST-LABEL: pmin_v4f32:
14260 ; NO-SIMD128-FAST: .functype pmin_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
14261 ; NO-SIMD128-FAST-NEXT: # %bb.0:
14262 ; NO-SIMD128-FAST-NEXT: f32.lt $push0=, $5, $1
14263 ; NO-SIMD128-FAST-NEXT: f32.select $push1=, $5, $1, $pop0
14264 ; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop1
14265 ; NO-SIMD128-FAST-NEXT: f32.lt $push2=, $6, $2
14266 ; NO-SIMD128-FAST-NEXT: f32.select $push3=, $6, $2, $pop2
14267 ; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop3
14268 ; NO-SIMD128-FAST-NEXT: f32.lt $push4=, $7, $3
14269 ; NO-SIMD128-FAST-NEXT: f32.select $push5=, $7, $3, $pop4
14270 ; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop5
14271 ; NO-SIMD128-FAST-NEXT: i32.const $push8=, 12
14272 ; NO-SIMD128-FAST-NEXT: i32.add $push9=, $0, $pop8
14273 ; NO-SIMD128-FAST-NEXT: f32.lt $push6=, $8, $4
14274 ; NO-SIMD128-FAST-NEXT: f32.select $push7=, $8, $4, $pop6
14275 ; NO-SIMD128-FAST-NEXT: f32.store 0($pop9), $pop7
14276 ; NO-SIMD128-FAST-NEXT: return
14277 %c = fcmp olt <4 x float> %y, %x
14278 %a = select <4 x i1> %c, <4 x float> %y, <4 x float> %x
14282 define <4 x i32> @pmin_int_v4f32(<4 x i32> %x, <4 x i32> %y) {
14283 ; SIMD128-LABEL: pmin_int_v4f32:
14284 ; SIMD128: .functype pmin_int_v4f32 (v128, v128) -> (v128)
14285 ; SIMD128-NEXT: # %bb.0:
14286 ; SIMD128-NEXT: f32x4.pmin $push0=, $0, $1
14287 ; SIMD128-NEXT: return $pop0
14289 ; SIMD128-FAST-LABEL: pmin_int_v4f32:
14290 ; SIMD128-FAST: .functype pmin_int_v4f32 (v128, v128) -> (v128)
14291 ; SIMD128-FAST-NEXT: # %bb.0:
14292 ; SIMD128-FAST-NEXT: f32x4.pmin $push0=, $0, $1
14293 ; SIMD128-FAST-NEXT: return $pop0
14295 ; NO-SIMD128-LABEL: pmin_int_v4f32:
14296 ; NO-SIMD128: .functype pmin_int_v4f32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
14297 ; NO-SIMD128-NEXT: # %bb.0:
14298 ; NO-SIMD128-NEXT: i32.const $push4=, 12
14299 ; NO-SIMD128-NEXT: i32.add $push5=, $0, $pop4
14300 ; NO-SIMD128-NEXT: f32.reinterpret_i32 $push1=, $8
14301 ; NO-SIMD128-NEXT: f32.reinterpret_i32 $push0=, $4
14302 ; NO-SIMD128-NEXT: f32.lt $push2=, $pop1, $pop0
14303 ; NO-SIMD128-NEXT: i32.select $push3=, $8, $4, $pop2
14304 ; NO-SIMD128-NEXT: i32.store 0($pop5), $pop3
14305 ; NO-SIMD128-NEXT: f32.reinterpret_i32 $push7=, $7
14306 ; NO-SIMD128-NEXT: f32.reinterpret_i32 $push6=, $3
14307 ; NO-SIMD128-NEXT: f32.lt $push8=, $pop7, $pop6
14308 ; NO-SIMD128-NEXT: i32.select $push9=, $7, $3, $pop8
14309 ; NO-SIMD128-NEXT: i32.store 8($0), $pop9
14310 ; NO-SIMD128-NEXT: f32.reinterpret_i32 $push11=, $6
14311 ; NO-SIMD128-NEXT: f32.reinterpret_i32 $push10=, $2
14312 ; NO-SIMD128-NEXT: f32.lt $push12=, $pop11, $pop10
14313 ; NO-SIMD128-NEXT: i32.select $push13=, $6, $2, $pop12
14314 ; NO-SIMD128-NEXT: i32.store 4($0), $pop13
14315 ; NO-SIMD128-NEXT: f32.reinterpret_i32 $push15=, $5
14316 ; NO-SIMD128-NEXT: f32.reinterpret_i32 $push14=, $1
14317 ; NO-SIMD128-NEXT: f32.lt $push16=, $pop15, $pop14
14318 ; NO-SIMD128-NEXT: i32.select $push17=, $5, $1, $pop16
14319 ; NO-SIMD128-NEXT: i32.store 0($0), $pop17
14320 ; NO-SIMD128-NEXT: return
14322 ; NO-SIMD128-FAST-LABEL: pmin_int_v4f32:
14323 ; NO-SIMD128-FAST: .functype pmin_int_v4f32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
14324 ; NO-SIMD128-FAST-NEXT: # %bb.0:
14325 ; NO-SIMD128-FAST-NEXT: f32.reinterpret_i32 $push1=, $5
14326 ; NO-SIMD128-FAST-NEXT: f32.reinterpret_i32 $push0=, $1
14327 ; NO-SIMD128-FAST-NEXT: f32.lt $push2=, $pop1, $pop0
14328 ; NO-SIMD128-FAST-NEXT: i32.select $push3=, $5, $1, $pop2
14329 ; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop3
14330 ; NO-SIMD128-FAST-NEXT: f32.reinterpret_i32 $push5=, $6
14331 ; NO-SIMD128-FAST-NEXT: f32.reinterpret_i32 $push4=, $2
14332 ; NO-SIMD128-FAST-NEXT: f32.lt $push6=, $pop5, $pop4
14333 ; NO-SIMD128-FAST-NEXT: i32.select $push7=, $6, $2, $pop6
14334 ; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop7
14335 ; NO-SIMD128-FAST-NEXT: f32.reinterpret_i32 $push9=, $7
14336 ; NO-SIMD128-FAST-NEXT: f32.reinterpret_i32 $push8=, $3
14337 ; NO-SIMD128-FAST-NEXT: f32.lt $push10=, $pop9, $pop8
14338 ; NO-SIMD128-FAST-NEXT: i32.select $push11=, $7, $3, $pop10
14339 ; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop11
14340 ; NO-SIMD128-FAST-NEXT: i32.const $push16=, 12
14341 ; NO-SIMD128-FAST-NEXT: i32.add $push17=, $0, $pop16
14342 ; NO-SIMD128-FAST-NEXT: f32.reinterpret_i32 $push13=, $8
14343 ; NO-SIMD128-FAST-NEXT: f32.reinterpret_i32 $push12=, $4
14344 ; NO-SIMD128-FAST-NEXT: f32.lt $push14=, $pop13, $pop12
14345 ; NO-SIMD128-FAST-NEXT: i32.select $push15=, $8, $4, $pop14
14346 ; NO-SIMD128-FAST-NEXT: i32.store 0($pop17), $pop15
14347 ; NO-SIMD128-FAST-NEXT: return
14348 %fx = bitcast <4 x i32> %x to <4 x float>
14349 %fy = bitcast <4 x i32> %y to <4 x float>
14350 %c = fcmp olt <4 x float> %fy, %fx
14351 %a = select <4 x i1> %c, <4 x i32> %y, <4 x i32> %x
14355 define <4 x float> @pmax_v4f32(<4 x float> %x, <4 x float> %y) {
14356 ; SIMD128-LABEL: pmax_v4f32:
14357 ; SIMD128: .functype pmax_v4f32 (v128, v128) -> (v128)
14358 ; SIMD128-NEXT: # %bb.0:
14359 ; SIMD128-NEXT: f32x4.pmax $push0=, $0, $1
14360 ; SIMD128-NEXT: return $pop0
14362 ; SIMD128-FAST-LABEL: pmax_v4f32:
14363 ; SIMD128-FAST: .functype pmax_v4f32 (v128, v128) -> (v128)
14364 ; SIMD128-FAST-NEXT: # %bb.0:
14365 ; SIMD128-FAST-NEXT: f32x4.pmax $push0=, $0, $1
14366 ; SIMD128-FAST-NEXT: return $pop0
14368 ; NO-SIMD128-LABEL: pmax_v4f32:
14369 ; NO-SIMD128: .functype pmax_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
14370 ; NO-SIMD128-NEXT: # %bb.0:
14371 ; NO-SIMD128-NEXT: f32.lt $push0=, $3, $7
14372 ; NO-SIMD128-NEXT: f32.select $push1=, $7, $3, $pop0
14373 ; NO-SIMD128-NEXT: f32.store 8($0), $pop1
14374 ; NO-SIMD128-NEXT: f32.lt $push2=, $2, $6
14375 ; NO-SIMD128-NEXT: f32.select $push3=, $6, $2, $pop2
14376 ; NO-SIMD128-NEXT: f32.store 4($0), $pop3
14377 ; NO-SIMD128-NEXT: f32.lt $push4=, $1, $5
14378 ; NO-SIMD128-NEXT: f32.select $push5=, $5, $1, $pop4
14379 ; NO-SIMD128-NEXT: f32.store 0($0), $pop5
14380 ; NO-SIMD128-NEXT: i32.const $push8=, 12
14381 ; NO-SIMD128-NEXT: i32.add $push9=, $0, $pop8
14382 ; NO-SIMD128-NEXT: f32.lt $push6=, $4, $8
14383 ; NO-SIMD128-NEXT: f32.select $push7=, $8, $4, $pop6
14384 ; NO-SIMD128-NEXT: f32.store 0($pop9), $pop7
14385 ; NO-SIMD128-NEXT: return
14387 ; NO-SIMD128-FAST-LABEL: pmax_v4f32:
14388 ; NO-SIMD128-FAST: .functype pmax_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
14389 ; NO-SIMD128-FAST-NEXT: # %bb.0:
14390 ; NO-SIMD128-FAST-NEXT: f32.lt $push0=, $1, $5
14391 ; NO-SIMD128-FAST-NEXT: f32.select $push1=, $5, $1, $pop0
14392 ; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop1
14393 ; NO-SIMD128-FAST-NEXT: f32.lt $push2=, $2, $6
14394 ; NO-SIMD128-FAST-NEXT: f32.select $push3=, $6, $2, $pop2
14395 ; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop3
14396 ; NO-SIMD128-FAST-NEXT: f32.lt $push4=, $3, $7
14397 ; NO-SIMD128-FAST-NEXT: f32.select $push5=, $7, $3, $pop4
14398 ; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop5
14399 ; NO-SIMD128-FAST-NEXT: i32.const $push8=, 12
14400 ; NO-SIMD128-FAST-NEXT: i32.add $push9=, $0, $pop8
14401 ; NO-SIMD128-FAST-NEXT: f32.lt $push6=, $4, $8
14402 ; NO-SIMD128-FAST-NEXT: f32.select $push7=, $8, $4, $pop6
14403 ; NO-SIMD128-FAST-NEXT: f32.store 0($pop9), $pop7
14404 ; NO-SIMD128-FAST-NEXT: return
14405 %c = fcmp olt <4 x float> %x, %y
14406 %a = select <4 x i1> %c, <4 x float> %y, <4 x float> %x
14410 define <4 x i32> @pmax_int_v4f32(<4 x i32> %x, <4 x i32> %y) {
14411 ; SIMD128-LABEL: pmax_int_v4f32:
14412 ; SIMD128: .functype pmax_int_v4f32 (v128, v128) -> (v128)
14413 ; SIMD128-NEXT: # %bb.0:
14414 ; SIMD128-NEXT: f32x4.pmax $push0=, $0, $1
14415 ; SIMD128-NEXT: return $pop0
14417 ; SIMD128-FAST-LABEL: pmax_int_v4f32:
14418 ; SIMD128-FAST: .functype pmax_int_v4f32 (v128, v128) -> (v128)
14419 ; SIMD128-FAST-NEXT: # %bb.0:
14420 ; SIMD128-FAST-NEXT: f32x4.pmax $push0=, $0, $1
14421 ; SIMD128-FAST-NEXT: return $pop0
14423 ; NO-SIMD128-LABEL: pmax_int_v4f32:
14424 ; NO-SIMD128: .functype pmax_int_v4f32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
14425 ; NO-SIMD128-NEXT: # %bb.0:
14426 ; NO-SIMD128-NEXT: i32.const $push4=, 12
14427 ; NO-SIMD128-NEXT: i32.add $push5=, $0, $pop4
14428 ; NO-SIMD128-NEXT: f32.reinterpret_i32 $push1=, $4
14429 ; NO-SIMD128-NEXT: f32.reinterpret_i32 $push0=, $8
14430 ; NO-SIMD128-NEXT: f32.lt $push2=, $pop1, $pop0
14431 ; NO-SIMD128-NEXT: i32.select $push3=, $8, $4, $pop2
14432 ; NO-SIMD128-NEXT: i32.store 0($pop5), $pop3
14433 ; NO-SIMD128-NEXT: f32.reinterpret_i32 $push7=, $3
14434 ; NO-SIMD128-NEXT: f32.reinterpret_i32 $push6=, $7
14435 ; NO-SIMD128-NEXT: f32.lt $push8=, $pop7, $pop6
14436 ; NO-SIMD128-NEXT: i32.select $push9=, $7, $3, $pop8
14437 ; NO-SIMD128-NEXT: i32.store 8($0), $pop9
14438 ; NO-SIMD128-NEXT: f32.reinterpret_i32 $push11=, $2
14439 ; NO-SIMD128-NEXT: f32.reinterpret_i32 $push10=, $6
14440 ; NO-SIMD128-NEXT: f32.lt $push12=, $pop11, $pop10
14441 ; NO-SIMD128-NEXT: i32.select $push13=, $6, $2, $pop12
14442 ; NO-SIMD128-NEXT: i32.store 4($0), $pop13
14443 ; NO-SIMD128-NEXT: f32.reinterpret_i32 $push15=, $1
14444 ; NO-SIMD128-NEXT: f32.reinterpret_i32 $push14=, $5
14445 ; NO-SIMD128-NEXT: f32.lt $push16=, $pop15, $pop14
14446 ; NO-SIMD128-NEXT: i32.select $push17=, $5, $1, $pop16
14447 ; NO-SIMD128-NEXT: i32.store 0($0), $pop17
14448 ; NO-SIMD128-NEXT: return
14450 ; NO-SIMD128-FAST-LABEL: pmax_int_v4f32:
14451 ; NO-SIMD128-FAST: .functype pmax_int_v4f32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
14452 ; NO-SIMD128-FAST-NEXT: # %bb.0:
14453 ; NO-SIMD128-FAST-NEXT: f32.reinterpret_i32 $push1=, $1
14454 ; NO-SIMD128-FAST-NEXT: f32.reinterpret_i32 $push0=, $5
14455 ; NO-SIMD128-FAST-NEXT: f32.lt $push2=, $pop1, $pop0
14456 ; NO-SIMD128-FAST-NEXT: i32.select $push3=, $5, $1, $pop2
14457 ; NO-SIMD128-FAST-NEXT: i32.store 0($0), $pop3
14458 ; NO-SIMD128-FAST-NEXT: f32.reinterpret_i32 $push5=, $2
14459 ; NO-SIMD128-FAST-NEXT: f32.reinterpret_i32 $push4=, $6
14460 ; NO-SIMD128-FAST-NEXT: f32.lt $push6=, $pop5, $pop4
14461 ; NO-SIMD128-FAST-NEXT: i32.select $push7=, $6, $2, $pop6
14462 ; NO-SIMD128-FAST-NEXT: i32.store 4($0), $pop7
14463 ; NO-SIMD128-FAST-NEXT: f32.reinterpret_i32 $push9=, $3
14464 ; NO-SIMD128-FAST-NEXT: f32.reinterpret_i32 $push8=, $7
14465 ; NO-SIMD128-FAST-NEXT: f32.lt $push10=, $pop9, $pop8
14466 ; NO-SIMD128-FAST-NEXT: i32.select $push11=, $7, $3, $pop10
14467 ; NO-SIMD128-FAST-NEXT: i32.store 8($0), $pop11
14468 ; NO-SIMD128-FAST-NEXT: i32.const $push16=, 12
14469 ; NO-SIMD128-FAST-NEXT: i32.add $push17=, $0, $pop16
14470 ; NO-SIMD128-FAST-NEXT: f32.reinterpret_i32 $push13=, $4
14471 ; NO-SIMD128-FAST-NEXT: f32.reinterpret_i32 $push12=, $8
14472 ; NO-SIMD128-FAST-NEXT: f32.lt $push14=, $pop13, $pop12
14473 ; NO-SIMD128-FAST-NEXT: i32.select $push15=, $8, $4, $pop14
14474 ; NO-SIMD128-FAST-NEXT: i32.store 0($pop17), $pop15
14475 ; NO-SIMD128-FAST-NEXT: return
14476 %fx = bitcast <4 x i32> %x to <4 x float>
14477 %fy = bitcast <4 x i32> %y to <4 x float>
14478 %c = fcmp olt <4 x float> %fx, %fy
14479 %a = select <4 x i1> %c, <4 x i32> %y, <4 x i32> %x
14483 define <4 x float> @add_v4f32(<4 x float> %x, <4 x float> %y) {
14484 ; SIMD128-LABEL: add_v4f32:
14485 ; SIMD128: .functype add_v4f32 (v128, v128) -> (v128)
14486 ; SIMD128-NEXT: # %bb.0:
14487 ; SIMD128-NEXT: f32x4.add $push0=, $0, $1
14488 ; SIMD128-NEXT: return $pop0
14490 ; SIMD128-FAST-LABEL: add_v4f32:
14491 ; SIMD128-FAST: .functype add_v4f32 (v128, v128) -> (v128)
14492 ; SIMD128-FAST-NEXT: # %bb.0:
14493 ; SIMD128-FAST-NEXT: f32x4.add $push0=, $0, $1
14494 ; SIMD128-FAST-NEXT: return $pop0
14496 ; NO-SIMD128-LABEL: add_v4f32:
14497 ; NO-SIMD128: .functype add_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
14498 ; NO-SIMD128-NEXT: # %bb.0:
14499 ; NO-SIMD128-NEXT: f32.add $push0=, $3, $7
14500 ; NO-SIMD128-NEXT: f32.store 8($0), $pop0
14501 ; NO-SIMD128-NEXT: f32.add $push1=, $2, $6
14502 ; NO-SIMD128-NEXT: f32.store 4($0), $pop1
14503 ; NO-SIMD128-NEXT: f32.add $push2=, $1, $5
14504 ; NO-SIMD128-NEXT: f32.store 0($0), $pop2
14505 ; NO-SIMD128-NEXT: i32.const $push4=, 12
14506 ; NO-SIMD128-NEXT: i32.add $push5=, $0, $pop4
14507 ; NO-SIMD128-NEXT: f32.add $push3=, $4, $8
14508 ; NO-SIMD128-NEXT: f32.store 0($pop5), $pop3
14509 ; NO-SIMD128-NEXT: return
14511 ; NO-SIMD128-FAST-LABEL: add_v4f32:
14512 ; NO-SIMD128-FAST: .functype add_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
14513 ; NO-SIMD128-FAST-NEXT: # %bb.0:
14514 ; NO-SIMD128-FAST-NEXT: f32.add $push0=, $1, $5
14515 ; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop0
14516 ; NO-SIMD128-FAST-NEXT: f32.add $push1=, $2, $6
14517 ; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop1
14518 ; NO-SIMD128-FAST-NEXT: f32.add $push2=, $3, $7
14519 ; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop2
14520 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 12
14521 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
14522 ; NO-SIMD128-FAST-NEXT: f32.add $push5=, $4, $8
14523 ; NO-SIMD128-FAST-NEXT: f32.store 0($pop4), $pop5
14524 ; NO-SIMD128-FAST-NEXT: return
14525 %a = fadd <4 x float> %x, %y
14529 define <4 x float> @sub_v4f32(<4 x float> %x, <4 x float> %y) {
14530 ; SIMD128-LABEL: sub_v4f32:
14531 ; SIMD128: .functype sub_v4f32 (v128, v128) -> (v128)
14532 ; SIMD128-NEXT: # %bb.0:
14533 ; SIMD128-NEXT: f32x4.sub $push0=, $0, $1
14534 ; SIMD128-NEXT: return $pop0
14536 ; SIMD128-FAST-LABEL: sub_v4f32:
14537 ; SIMD128-FAST: .functype sub_v4f32 (v128, v128) -> (v128)
14538 ; SIMD128-FAST-NEXT: # %bb.0:
14539 ; SIMD128-FAST-NEXT: f32x4.sub $push0=, $0, $1
14540 ; SIMD128-FAST-NEXT: return $pop0
14542 ; NO-SIMD128-LABEL: sub_v4f32:
14543 ; NO-SIMD128: .functype sub_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
14544 ; NO-SIMD128-NEXT: # %bb.0:
14545 ; NO-SIMD128-NEXT: f32.sub $push0=, $3, $7
14546 ; NO-SIMD128-NEXT: f32.store 8($0), $pop0
14547 ; NO-SIMD128-NEXT: f32.sub $push1=, $2, $6
14548 ; NO-SIMD128-NEXT: f32.store 4($0), $pop1
14549 ; NO-SIMD128-NEXT: f32.sub $push2=, $1, $5
14550 ; NO-SIMD128-NEXT: f32.store 0($0), $pop2
14551 ; NO-SIMD128-NEXT: i32.const $push4=, 12
14552 ; NO-SIMD128-NEXT: i32.add $push5=, $0, $pop4
14553 ; NO-SIMD128-NEXT: f32.sub $push3=, $4, $8
14554 ; NO-SIMD128-NEXT: f32.store 0($pop5), $pop3
14555 ; NO-SIMD128-NEXT: return
14557 ; NO-SIMD128-FAST-LABEL: sub_v4f32:
14558 ; NO-SIMD128-FAST: .functype sub_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
14559 ; NO-SIMD128-FAST-NEXT: # %bb.0:
14560 ; NO-SIMD128-FAST-NEXT: f32.sub $push0=, $1, $5
14561 ; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop0
14562 ; NO-SIMD128-FAST-NEXT: f32.sub $push1=, $2, $6
14563 ; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop1
14564 ; NO-SIMD128-FAST-NEXT: f32.sub $push2=, $3, $7
14565 ; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop2
14566 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 12
14567 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
14568 ; NO-SIMD128-FAST-NEXT: f32.sub $push5=, $4, $8
14569 ; NO-SIMD128-FAST-NEXT: f32.store 0($pop4), $pop5
14570 ; NO-SIMD128-FAST-NEXT: return
14571 %a = fsub <4 x float> %x, %y
14575 define <4 x float> @div_v4f32(<4 x float> %x, <4 x float> %y) {
14576 ; SIMD128-LABEL: div_v4f32:
14577 ; SIMD128: .functype div_v4f32 (v128, v128) -> (v128)
14578 ; SIMD128-NEXT: # %bb.0:
14579 ; SIMD128-NEXT: f32x4.div $push0=, $0, $1
14580 ; SIMD128-NEXT: return $pop0
14582 ; SIMD128-FAST-LABEL: div_v4f32:
14583 ; SIMD128-FAST: .functype div_v4f32 (v128, v128) -> (v128)
14584 ; SIMD128-FAST-NEXT: # %bb.0:
14585 ; SIMD128-FAST-NEXT: f32x4.div $push0=, $0, $1
14586 ; SIMD128-FAST-NEXT: return $pop0
14588 ; NO-SIMD128-LABEL: div_v4f32:
14589 ; NO-SIMD128: .functype div_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
14590 ; NO-SIMD128-NEXT: # %bb.0:
14591 ; NO-SIMD128-NEXT: f32.div $push0=, $3, $7
14592 ; NO-SIMD128-NEXT: f32.store 8($0), $pop0
14593 ; NO-SIMD128-NEXT: f32.div $push1=, $2, $6
14594 ; NO-SIMD128-NEXT: f32.store 4($0), $pop1
14595 ; NO-SIMD128-NEXT: f32.div $push2=, $1, $5
14596 ; NO-SIMD128-NEXT: f32.store 0($0), $pop2
14597 ; NO-SIMD128-NEXT: i32.const $push4=, 12
14598 ; NO-SIMD128-NEXT: i32.add $push5=, $0, $pop4
14599 ; NO-SIMD128-NEXT: f32.div $push3=, $4, $8
14600 ; NO-SIMD128-NEXT: f32.store 0($pop5), $pop3
14601 ; NO-SIMD128-NEXT: return
14603 ; NO-SIMD128-FAST-LABEL: div_v4f32:
14604 ; NO-SIMD128-FAST: .functype div_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
14605 ; NO-SIMD128-FAST-NEXT: # %bb.0:
14606 ; NO-SIMD128-FAST-NEXT: f32.div $push0=, $1, $5
14607 ; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop0
14608 ; NO-SIMD128-FAST-NEXT: f32.div $push1=, $2, $6
14609 ; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop1
14610 ; NO-SIMD128-FAST-NEXT: f32.div $push2=, $3, $7
14611 ; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop2
14612 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 12
14613 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
14614 ; NO-SIMD128-FAST-NEXT: f32.div $push5=, $4, $8
14615 ; NO-SIMD128-FAST-NEXT: f32.store 0($pop4), $pop5
14616 ; NO-SIMD128-FAST-NEXT: return
14617 %a = fdiv <4 x float> %x, %y
14621 define <4 x float> @mul_v4f32(<4 x float> %x, <4 x float> %y) {
14622 ; SIMD128-LABEL: mul_v4f32:
14623 ; SIMD128: .functype mul_v4f32 (v128, v128) -> (v128)
14624 ; SIMD128-NEXT: # %bb.0:
14625 ; SIMD128-NEXT: f32x4.mul $push0=, $0, $1
14626 ; SIMD128-NEXT: return $pop0
14628 ; SIMD128-FAST-LABEL: mul_v4f32:
14629 ; SIMD128-FAST: .functype mul_v4f32 (v128, v128) -> (v128)
14630 ; SIMD128-FAST-NEXT: # %bb.0:
14631 ; SIMD128-FAST-NEXT: f32x4.mul $push0=, $0, $1
14632 ; SIMD128-FAST-NEXT: return $pop0
14634 ; NO-SIMD128-LABEL: mul_v4f32:
14635 ; NO-SIMD128: .functype mul_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
14636 ; NO-SIMD128-NEXT: # %bb.0:
14637 ; NO-SIMD128-NEXT: f32.mul $push0=, $3, $7
14638 ; NO-SIMD128-NEXT: f32.store 8($0), $pop0
14639 ; NO-SIMD128-NEXT: f32.mul $push1=, $2, $6
14640 ; NO-SIMD128-NEXT: f32.store 4($0), $pop1
14641 ; NO-SIMD128-NEXT: f32.mul $push2=, $1, $5
14642 ; NO-SIMD128-NEXT: f32.store 0($0), $pop2
14643 ; NO-SIMD128-NEXT: i32.const $push4=, 12
14644 ; NO-SIMD128-NEXT: i32.add $push5=, $0, $pop4
14645 ; NO-SIMD128-NEXT: f32.mul $push3=, $4, $8
14646 ; NO-SIMD128-NEXT: f32.store 0($pop5), $pop3
14647 ; NO-SIMD128-NEXT: return
14649 ; NO-SIMD128-FAST-LABEL: mul_v4f32:
14650 ; NO-SIMD128-FAST: .functype mul_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
14651 ; NO-SIMD128-FAST-NEXT: # %bb.0:
14652 ; NO-SIMD128-FAST-NEXT: f32.mul $push0=, $1, $5
14653 ; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop0
14654 ; NO-SIMD128-FAST-NEXT: f32.mul $push1=, $2, $6
14655 ; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop1
14656 ; NO-SIMD128-FAST-NEXT: f32.mul $push2=, $3, $7
14657 ; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop2
14658 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 12
14659 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
14660 ; NO-SIMD128-FAST-NEXT: f32.mul $push5=, $4, $8
14661 ; NO-SIMD128-FAST-NEXT: f32.store 0($pop4), $pop5
14662 ; NO-SIMD128-FAST-NEXT: return
14663 %a = fmul <4 x float> %x, %y
14667 declare <4 x float> @llvm.sqrt.v4f32(<4 x float> %x)
14668 define <4 x float> @sqrt_v4f32(<4 x float> %x) {
14669 ; SIMD128-LABEL: sqrt_v4f32:
14670 ; SIMD128: .functype sqrt_v4f32 (v128) -> (v128)
14671 ; SIMD128-NEXT: # %bb.0:
14672 ; SIMD128-NEXT: f32x4.sqrt $push0=, $0
14673 ; SIMD128-NEXT: return $pop0
14675 ; SIMD128-FAST-LABEL: sqrt_v4f32:
14676 ; SIMD128-FAST: .functype sqrt_v4f32 (v128) -> (v128)
14677 ; SIMD128-FAST-NEXT: # %bb.0:
14678 ; SIMD128-FAST-NEXT: f32x4.sqrt $push0=, $0
14679 ; SIMD128-FAST-NEXT: return $pop0
14681 ; NO-SIMD128-LABEL: sqrt_v4f32:
14682 ; NO-SIMD128: .functype sqrt_v4f32 (i32, f32, f32, f32, f32) -> ()
14683 ; NO-SIMD128-NEXT: # %bb.0:
14684 ; NO-SIMD128-NEXT: f32.sqrt $push0=, $3
14685 ; NO-SIMD128-NEXT: f32.store 8($0), $pop0
14686 ; NO-SIMD128-NEXT: f32.sqrt $push1=, $2
14687 ; NO-SIMD128-NEXT: f32.store 4($0), $pop1
14688 ; NO-SIMD128-NEXT: f32.sqrt $push2=, $1
14689 ; NO-SIMD128-NEXT: f32.store 0($0), $pop2
14690 ; NO-SIMD128-NEXT: i32.const $push3=, 12
14691 ; NO-SIMD128-NEXT: i32.add $push4=, $0, $pop3
14692 ; NO-SIMD128-NEXT: f32.sqrt $push5=, $4
14693 ; NO-SIMD128-NEXT: f32.store 0($pop4), $pop5
14694 ; NO-SIMD128-NEXT: return
14696 ; NO-SIMD128-FAST-LABEL: sqrt_v4f32:
14697 ; NO-SIMD128-FAST: .functype sqrt_v4f32 (i32, f32, f32, f32, f32) -> ()
14698 ; NO-SIMD128-FAST-NEXT: # %bb.0:
14699 ; NO-SIMD128-FAST-NEXT: f32.sqrt $push0=, $1
14700 ; NO-SIMD128-FAST-NEXT: f32.store 0($0), $pop0
14701 ; NO-SIMD128-FAST-NEXT: f32.sqrt $push1=, $2
14702 ; NO-SIMD128-FAST-NEXT: f32.store 4($0), $pop1
14703 ; NO-SIMD128-FAST-NEXT: f32.sqrt $push2=, $3
14704 ; NO-SIMD128-FAST-NEXT: f32.store 8($0), $pop2
14705 ; NO-SIMD128-FAST-NEXT: i32.const $push3=, 12
14706 ; NO-SIMD128-FAST-NEXT: i32.add $push4=, $0, $pop3
14707 ; NO-SIMD128-FAST-NEXT: f32.sqrt $push5=, $4
14708 ; NO-SIMD128-FAST-NEXT: f32.store 0($pop4), $pop5
14709 ; NO-SIMD128-FAST-NEXT: return
14710 %a = call <4 x float> @llvm.sqrt.v4f32(<4 x float> %x)
14714 ; ==============================================================================
14716 ; ==============================================================================
14717 define <2 x double> @neg_v2f64(<2 x double> %x) {
14718 ; nsz makes this semantically equivalent to flipping sign bit
14719 ; SIMD128-LABEL: neg_v2f64:
14720 ; SIMD128: .functype neg_v2f64 (v128) -> (v128)
14721 ; SIMD128-NEXT: # %bb.0:
14722 ; SIMD128-NEXT: f64x2.neg $push0=, $0
14723 ; SIMD128-NEXT: return $pop0
14725 ; SIMD128-FAST-LABEL: neg_v2f64:
14726 ; SIMD128-FAST: .functype neg_v2f64 (v128) -> (v128)
14727 ; SIMD128-FAST-NEXT: # %bb.0:
14728 ; SIMD128-FAST-NEXT: f64x2.neg $push0=, $0
14729 ; SIMD128-FAST-NEXT: return $pop0
14731 ; NO-SIMD128-LABEL: neg_v2f64:
14732 ; NO-SIMD128: .functype neg_v2f64 (i32, f64, f64) -> ()
14733 ; NO-SIMD128-NEXT: # %bb.0:
14734 ; NO-SIMD128-NEXT: f64.neg $push0=, $2
14735 ; NO-SIMD128-NEXT: f64.store 8($0), $pop0
14736 ; NO-SIMD128-NEXT: f64.neg $push1=, $1
14737 ; NO-SIMD128-NEXT: f64.store 0($0), $pop1
14738 ; NO-SIMD128-NEXT: return
14740 ; NO-SIMD128-FAST-LABEL: neg_v2f64:
14741 ; NO-SIMD128-FAST: .functype neg_v2f64 (i32, f64, f64) -> ()
14742 ; NO-SIMD128-FAST-NEXT: # %bb.0:
14743 ; NO-SIMD128-FAST-NEXT: f64.neg $push0=, $1
14744 ; NO-SIMD128-FAST-NEXT: f64.store 0($0), $pop0
14745 ; NO-SIMD128-FAST-NEXT: f64.neg $push1=, $2
14746 ; NO-SIMD128-FAST-NEXT: f64.store 8($0), $pop1
14747 ; NO-SIMD128-FAST-NEXT: return
14748 %a = fsub nsz <2 x double> <double 0., double 0.>, %x
14749 ret <2 x double> %a
14752 declare <2 x double> @llvm.fabs.v2f64(<2 x double>) nounwind readnone
14753 define <2 x double> @abs_v2f64(<2 x double> %x) {
14754 ; SIMD128-LABEL: abs_v2f64:
14755 ; SIMD128: .functype abs_v2f64 (v128) -> (v128)
14756 ; SIMD128-NEXT: # %bb.0:
14757 ; SIMD128-NEXT: f64x2.abs $push0=, $0
14758 ; SIMD128-NEXT: return $pop0
14760 ; SIMD128-FAST-LABEL: abs_v2f64:
14761 ; SIMD128-FAST: .functype abs_v2f64 (v128) -> (v128)
14762 ; SIMD128-FAST-NEXT: # %bb.0:
14763 ; SIMD128-FAST-NEXT: f64x2.abs $push0=, $0
14764 ; SIMD128-FAST-NEXT: return $pop0
14766 ; NO-SIMD128-LABEL: abs_v2f64:
14767 ; NO-SIMD128: .functype abs_v2f64 (i32, f64, f64) -> ()
14768 ; NO-SIMD128-NEXT: # %bb.0:
14769 ; NO-SIMD128-NEXT: f64.abs $push0=, $2
14770 ; NO-SIMD128-NEXT: f64.store 8($0), $pop0
14771 ; NO-SIMD128-NEXT: f64.abs $push1=, $1
14772 ; NO-SIMD128-NEXT: f64.store 0($0), $pop1
14773 ; NO-SIMD128-NEXT: return
14775 ; NO-SIMD128-FAST-LABEL: abs_v2f64:
14776 ; NO-SIMD128-FAST: .functype abs_v2f64 (i32, f64, f64) -> ()
14777 ; NO-SIMD128-FAST-NEXT: # %bb.0:
14778 ; NO-SIMD128-FAST-NEXT: f64.abs $push0=, $1
14779 ; NO-SIMD128-FAST-NEXT: f64.store 0($0), $pop0
14780 ; NO-SIMD128-FAST-NEXT: f64.abs $push1=, $2
14781 ; NO-SIMD128-FAST-NEXT: f64.store 8($0), $pop1
14782 ; NO-SIMD128-FAST-NEXT: return
14783 %a = call <2 x double> @llvm.fabs.v2f64(<2 x double> %x)
14784 ret <2 x double> %a
14787 define <2 x double> @min_unordered_v2f64(<2 x double> %x) {
14788 ; SIMD128-LABEL: min_unordered_v2f64:
14789 ; SIMD128: .functype min_unordered_v2f64 (v128) -> (v128)
14790 ; SIMD128-NEXT: # %bb.0:
14791 ; SIMD128-NEXT: v128.const $push0=, 0x1.4p2, 0x1.4p2
14792 ; SIMD128-NEXT: f64x2.pmin $push1=, $0, $pop0
14793 ; SIMD128-NEXT: return $pop1
14795 ; SIMD128-FAST-LABEL: min_unordered_v2f64:
14796 ; SIMD128-FAST: .functype min_unordered_v2f64 (v128) -> (v128)
14797 ; SIMD128-FAST-NEXT: # %bb.0:
14798 ; SIMD128-FAST-NEXT: v128.const $push1=, 0x1.4p2, 0x1.4p2
14799 ; SIMD128-FAST-NEXT: f64x2.pmin $push0=, $0, $pop1
14800 ; SIMD128-FAST-NEXT: return $pop0
14802 ; NO-SIMD128-LABEL: min_unordered_v2f64:
14803 ; NO-SIMD128: .functype min_unordered_v2f64 (i32, f64, f64) -> ()
14804 ; NO-SIMD128-NEXT: # %bb.0:
14805 ; NO-SIMD128-NEXT: f64.const $push0=, 0x1.4p2
14806 ; NO-SIMD128-NEXT: f64.const $push7=, 0x1.4p2
14807 ; NO-SIMD128-NEXT: f64.gt $push1=, $2, $pop7
14808 ; NO-SIMD128-NEXT: f64.select $push2=, $pop0, $2, $pop1
14809 ; NO-SIMD128-NEXT: f64.store 8($0), $pop2
14810 ; NO-SIMD128-NEXT: f64.const $push6=, 0x1.4p2
14811 ; NO-SIMD128-NEXT: f64.const $push5=, 0x1.4p2
14812 ; NO-SIMD128-NEXT: f64.gt $push3=, $1, $pop5
14813 ; NO-SIMD128-NEXT: f64.select $push4=, $pop6, $1, $pop3
14814 ; NO-SIMD128-NEXT: f64.store 0($0), $pop4
14815 ; NO-SIMD128-NEXT: return
14817 ; NO-SIMD128-FAST-LABEL: min_unordered_v2f64:
14818 ; NO-SIMD128-FAST: .functype min_unordered_v2f64 (i32, f64, f64) -> ()
14819 ; NO-SIMD128-FAST-NEXT: # %bb.0:
14820 ; NO-SIMD128-FAST-NEXT: f64.const $push0=, 0x1.4p2
14821 ; NO-SIMD128-FAST-NEXT: f64.const $push7=, 0x1.4p2
14822 ; NO-SIMD128-FAST-NEXT: f64.gt $push1=, $1, $pop7
14823 ; NO-SIMD128-FAST-NEXT: f64.select $push2=, $pop0, $1, $pop1
14824 ; NO-SIMD128-FAST-NEXT: f64.store 0($0), $pop2
14825 ; NO-SIMD128-FAST-NEXT: f64.const $push6=, 0x1.4p2
14826 ; NO-SIMD128-FAST-NEXT: f64.const $push5=, 0x1.4p2
14827 ; NO-SIMD128-FAST-NEXT: f64.gt $push3=, $2, $pop5
14828 ; NO-SIMD128-FAST-NEXT: f64.select $push4=, $pop6, $2, $pop3
14829 ; NO-SIMD128-FAST-NEXT: f64.store 8($0), $pop4
14830 ; NO-SIMD128-FAST-NEXT: return
14831 %cmps = fcmp ule <2 x double> %x, <double 5., double 5.>
14832 %a = select <2 x i1> %cmps, <2 x double> %x,
14833 <2 x double> <double 5., double 5.>
14834 ret <2 x double> %a
14837 define <2 x double> @max_unordered_v2f64(<2 x double> %x) {
14838 ; SIMD128-LABEL: max_unordered_v2f64:
14839 ; SIMD128: .functype max_unordered_v2f64 (v128) -> (v128)
14840 ; SIMD128-NEXT: # %bb.0:
14841 ; SIMD128-NEXT: v128.const $push0=, 0x1.4p2, 0x1.4p2
14842 ; SIMD128-NEXT: f64x2.pmax $push1=, $0, $pop0
14843 ; SIMD128-NEXT: return $pop1
14845 ; SIMD128-FAST-LABEL: max_unordered_v2f64:
14846 ; SIMD128-FAST: .functype max_unordered_v2f64 (v128) -> (v128)
14847 ; SIMD128-FAST-NEXT: # %bb.0:
14848 ; SIMD128-FAST-NEXT: v128.const $push1=, 0x1.4p2, 0x1.4p2
14849 ; SIMD128-FAST-NEXT: f64x2.pmax $push0=, $0, $pop1
14850 ; SIMD128-FAST-NEXT: return $pop0
14852 ; NO-SIMD128-LABEL: max_unordered_v2f64:
14853 ; NO-SIMD128: .functype max_unordered_v2f64 (i32, f64, f64) -> ()
14854 ; NO-SIMD128-NEXT: # %bb.0:
14855 ; NO-SIMD128-NEXT: f64.const $push0=, 0x1.4p2
14856 ; NO-SIMD128-NEXT: f64.const $push7=, 0x1.4p2
14857 ; NO-SIMD128-NEXT: f64.lt $push1=, $2, $pop7
14858 ; NO-SIMD128-NEXT: f64.select $push2=, $pop0, $2, $pop1
14859 ; NO-SIMD128-NEXT: f64.store 8($0), $pop2
14860 ; NO-SIMD128-NEXT: f64.const $push6=, 0x1.4p2
14861 ; NO-SIMD128-NEXT: f64.const $push5=, 0x1.4p2
14862 ; NO-SIMD128-NEXT: f64.lt $push3=, $1, $pop5
14863 ; NO-SIMD128-NEXT: f64.select $push4=, $pop6, $1, $pop3
14864 ; NO-SIMD128-NEXT: f64.store 0($0), $pop4
14865 ; NO-SIMD128-NEXT: return
14867 ; NO-SIMD128-FAST-LABEL: max_unordered_v2f64:
14868 ; NO-SIMD128-FAST: .functype max_unordered_v2f64 (i32, f64, f64) -> ()
14869 ; NO-SIMD128-FAST-NEXT: # %bb.0:
14870 ; NO-SIMD128-FAST-NEXT: f64.const $push0=, 0x1.4p2
14871 ; NO-SIMD128-FAST-NEXT: f64.const $push7=, 0x1.4p2
14872 ; NO-SIMD128-FAST-NEXT: f64.lt $push1=, $1, $pop7
14873 ; NO-SIMD128-FAST-NEXT: f64.select $push2=, $pop0, $1, $pop1
14874 ; NO-SIMD128-FAST-NEXT: f64.store 0($0), $pop2
14875 ; NO-SIMD128-FAST-NEXT: f64.const $push6=, 0x1.4p2
14876 ; NO-SIMD128-FAST-NEXT: f64.const $push5=, 0x1.4p2
14877 ; NO-SIMD128-FAST-NEXT: f64.lt $push3=, $2, $pop5
14878 ; NO-SIMD128-FAST-NEXT: f64.select $push4=, $pop6, $2, $pop3
14879 ; NO-SIMD128-FAST-NEXT: f64.store 8($0), $pop4
14880 ; NO-SIMD128-FAST-NEXT: return
14881 %cmps = fcmp uge <2 x double> %x, <double 5., double 5.>
14882 %a = select <2 x i1> %cmps, <2 x double> %x,
14883 <2 x double> <double 5., double 5.>
14884 ret <2 x double> %a
14887 define <2 x double> @min_ordered_v2f64(<2 x double> %x) {
14888 ; SIMD128-LABEL: min_ordered_v2f64:
14889 ; SIMD128: .functype min_ordered_v2f64 (v128) -> (v128)
14890 ; SIMD128-NEXT: # %bb.0:
14891 ; SIMD128-NEXT: v128.const $push0=, 0x1.4p2, 0x1.4p2
14892 ; SIMD128-NEXT: f64x2.pmin $push1=, $0, $pop0
14893 ; SIMD128-NEXT: return $pop1
14895 ; SIMD128-FAST-LABEL: min_ordered_v2f64:
14896 ; SIMD128-FAST: .functype min_ordered_v2f64 (v128) -> (v128)
14897 ; SIMD128-FAST-NEXT: # %bb.0:
14898 ; SIMD128-FAST-NEXT: v128.const $push1=, 0x1.4p2, 0x1.4p2
14899 ; SIMD128-FAST-NEXT: f64x2.pmin $push0=, $0, $pop1
14900 ; SIMD128-FAST-NEXT: return $pop0
14902 ; NO-SIMD128-LABEL: min_ordered_v2f64:
14903 ; NO-SIMD128: .functype min_ordered_v2f64 (i32, f64, f64) -> ()
14904 ; NO-SIMD128-NEXT: # %bb.0:
14905 ; NO-SIMD128-NEXT: f64.const $push0=, 0x1.4p2
14906 ; NO-SIMD128-NEXT: f64.const $push7=, 0x1.4p2
14907 ; NO-SIMD128-NEXT: f64.ge $push1=, $2, $pop7
14908 ; NO-SIMD128-NEXT: f64.select $push2=, $pop0, $2, $pop1
14909 ; NO-SIMD128-NEXT: f64.store 8($0), $pop2
14910 ; NO-SIMD128-NEXT: f64.const $push6=, 0x1.4p2
14911 ; NO-SIMD128-NEXT: f64.const $push5=, 0x1.4p2
14912 ; NO-SIMD128-NEXT: f64.ge $push3=, $1, $pop5
14913 ; NO-SIMD128-NEXT: f64.select $push4=, $pop6, $1, $pop3
14914 ; NO-SIMD128-NEXT: f64.store 0($0), $pop4
14915 ; NO-SIMD128-NEXT: return
14917 ; NO-SIMD128-FAST-LABEL: min_ordered_v2f64:
14918 ; NO-SIMD128-FAST: .functype min_ordered_v2f64 (i32, f64, f64) -> ()
14919 ; NO-SIMD128-FAST-NEXT: # %bb.0:
14920 ; NO-SIMD128-FAST-NEXT: f64.const $push0=, 0x1.4p2
14921 ; NO-SIMD128-FAST-NEXT: f64.const $push7=, 0x1.4p2
14922 ; NO-SIMD128-FAST-NEXT: f64.ge $push1=, $1, $pop7
14923 ; NO-SIMD128-FAST-NEXT: f64.select $push2=, $pop0, $1, $pop1
14924 ; NO-SIMD128-FAST-NEXT: f64.store 0($0), $pop2
14925 ; NO-SIMD128-FAST-NEXT: f64.const $push6=, 0x1.4p2
14926 ; NO-SIMD128-FAST-NEXT: f64.const $push5=, 0x1.4p2
14927 ; NO-SIMD128-FAST-NEXT: f64.ge $push3=, $2, $pop5
14928 ; NO-SIMD128-FAST-NEXT: f64.select $push4=, $pop6, $2, $pop3
14929 ; NO-SIMD128-FAST-NEXT: f64.store 8($0), $pop4
14930 ; NO-SIMD128-FAST-NEXT: return
14931 %cmps = fcmp ole <2 x double> <double 5., double 5.>, %x
14932 %a = select <2 x i1> %cmps, <2 x double> <double 5., double 5.>,
14934 ret <2 x double> %a
14937 define <2 x double> @max_ordered_v2f64(<2 x double> %x) {
14938 ; SIMD128-LABEL: max_ordered_v2f64:
14939 ; SIMD128: .functype max_ordered_v2f64 (v128) -> (v128)
14940 ; SIMD128-NEXT: # %bb.0:
14941 ; SIMD128-NEXT: v128.const $push0=, 0x1.4p2, 0x1.4p2
14942 ; SIMD128-NEXT: f64x2.pmax $push1=, $0, $pop0
14943 ; SIMD128-NEXT: return $pop1
14945 ; SIMD128-FAST-LABEL: max_ordered_v2f64:
14946 ; SIMD128-FAST: .functype max_ordered_v2f64 (v128) -> (v128)
14947 ; SIMD128-FAST-NEXT: # %bb.0:
14948 ; SIMD128-FAST-NEXT: v128.const $push1=, 0x1.4p2, 0x1.4p2
14949 ; SIMD128-FAST-NEXT: f64x2.pmax $push0=, $0, $pop1
14950 ; SIMD128-FAST-NEXT: return $pop0
14952 ; NO-SIMD128-LABEL: max_ordered_v2f64:
14953 ; NO-SIMD128: .functype max_ordered_v2f64 (i32, f64, f64) -> ()
14954 ; NO-SIMD128-NEXT: # %bb.0:
14955 ; NO-SIMD128-NEXT: f64.const $push0=, 0x1.4p2
14956 ; NO-SIMD128-NEXT: f64.const $push7=, 0x1.4p2
14957 ; NO-SIMD128-NEXT: f64.le $push1=, $2, $pop7
14958 ; NO-SIMD128-NEXT: f64.select $push2=, $pop0, $2, $pop1
14959 ; NO-SIMD128-NEXT: f64.store 8($0), $pop2
14960 ; NO-SIMD128-NEXT: f64.const $push6=, 0x1.4p2
14961 ; NO-SIMD128-NEXT: f64.const $push5=, 0x1.4p2
14962 ; NO-SIMD128-NEXT: f64.le $push3=, $1, $pop5
14963 ; NO-SIMD128-NEXT: f64.select $push4=, $pop6, $1, $pop3
14964 ; NO-SIMD128-NEXT: f64.store 0($0), $pop4
14965 ; NO-SIMD128-NEXT: return
14967 ; NO-SIMD128-FAST-LABEL: max_ordered_v2f64:
14968 ; NO-SIMD128-FAST: .functype max_ordered_v2f64 (i32, f64, f64) -> ()
14969 ; NO-SIMD128-FAST-NEXT: # %bb.0:
14970 ; NO-SIMD128-FAST-NEXT: f64.const $push0=, 0x1.4p2
14971 ; NO-SIMD128-FAST-NEXT: f64.const $push7=, 0x1.4p2
14972 ; NO-SIMD128-FAST-NEXT: f64.le $push1=, $1, $pop7
14973 ; NO-SIMD128-FAST-NEXT: f64.select $push2=, $pop0, $1, $pop1
14974 ; NO-SIMD128-FAST-NEXT: f64.store 0($0), $pop2
14975 ; NO-SIMD128-FAST-NEXT: f64.const $push6=, 0x1.4p2
14976 ; NO-SIMD128-FAST-NEXT: f64.const $push5=, 0x1.4p2
14977 ; NO-SIMD128-FAST-NEXT: f64.le $push3=, $2, $pop5
14978 ; NO-SIMD128-FAST-NEXT: f64.select $push4=, $pop6, $2, $pop3
14979 ; NO-SIMD128-FAST-NEXT: f64.store 8($0), $pop4
14980 ; NO-SIMD128-FAST-NEXT: return
14981 %cmps = fcmp oge <2 x double> <double 5., double 5.>, %x
14982 %a = select <2 x i1> %cmps, <2 x double> <double 5., double 5.>,
14984 ret <2 x double> %a
14987 declare <2 x double> @llvm.minimum.v2f64(<2 x double>, <2 x double>)
14988 define <2 x double> @min_intrinsic_v2f64(<2 x double> %x, <2 x double> %y) {
14989 ; SIMD128-LABEL: min_intrinsic_v2f64:
14990 ; SIMD128: .functype min_intrinsic_v2f64 (v128, v128) -> (v128)
14991 ; SIMD128-NEXT: # %bb.0:
14992 ; SIMD128-NEXT: f64x2.min $push0=, $0, $1
14993 ; SIMD128-NEXT: return $pop0
14995 ; SIMD128-FAST-LABEL: min_intrinsic_v2f64:
14996 ; SIMD128-FAST: .functype min_intrinsic_v2f64 (v128, v128) -> (v128)
14997 ; SIMD128-FAST-NEXT: # %bb.0:
14998 ; SIMD128-FAST-NEXT: f64x2.min $push0=, $0, $1
14999 ; SIMD128-FAST-NEXT: return $pop0
15001 ; NO-SIMD128-LABEL: min_intrinsic_v2f64:
15002 ; NO-SIMD128: .functype min_intrinsic_v2f64 (i32, f64, f64, f64, f64) -> ()
15003 ; NO-SIMD128-NEXT: # %bb.0:
15004 ; NO-SIMD128-NEXT: f64.min $push0=, $2, $4
15005 ; NO-SIMD128-NEXT: f64.store 8($0), $pop0
15006 ; NO-SIMD128-NEXT: f64.min $push1=, $1, $3
15007 ; NO-SIMD128-NEXT: f64.store 0($0), $pop1
15008 ; NO-SIMD128-NEXT: return
15010 ; NO-SIMD128-FAST-LABEL: min_intrinsic_v2f64:
15011 ; NO-SIMD128-FAST: .functype min_intrinsic_v2f64 (i32, f64, f64, f64, f64) -> ()
15012 ; NO-SIMD128-FAST-NEXT: # %bb.0:
15013 ; NO-SIMD128-FAST-NEXT: f64.min $push0=, $1, $3
15014 ; NO-SIMD128-FAST-NEXT: f64.store 0($0), $pop0
15015 ; NO-SIMD128-FAST-NEXT: f64.min $push1=, $2, $4
15016 ; NO-SIMD128-FAST-NEXT: f64.store 8($0), $pop1
15017 ; NO-SIMD128-FAST-NEXT: return
15018 %a = call <2 x double> @llvm.minimum.v2f64(<2 x double> %x, <2 x double> %y)
15019 ret <2 x double> %a
15022 declare <2 x double> @llvm.maximum.v2f64(<2 x double>, <2 x double>)
15023 define <2 x double> @max_intrinsic_v2f64(<2 x double> %x, <2 x double> %y) {
15024 ; SIMD128-LABEL: max_intrinsic_v2f64:
15025 ; SIMD128: .functype max_intrinsic_v2f64 (v128, v128) -> (v128)
15026 ; SIMD128-NEXT: # %bb.0:
15027 ; SIMD128-NEXT: f64x2.max $push0=, $0, $1
15028 ; SIMD128-NEXT: return $pop0
15030 ; SIMD128-FAST-LABEL: max_intrinsic_v2f64:
15031 ; SIMD128-FAST: .functype max_intrinsic_v2f64 (v128, v128) -> (v128)
15032 ; SIMD128-FAST-NEXT: # %bb.0:
15033 ; SIMD128-FAST-NEXT: f64x2.max $push0=, $0, $1
15034 ; SIMD128-FAST-NEXT: return $pop0
15036 ; NO-SIMD128-LABEL: max_intrinsic_v2f64:
15037 ; NO-SIMD128: .functype max_intrinsic_v2f64 (i32, f64, f64, f64, f64) -> ()
15038 ; NO-SIMD128-NEXT: # %bb.0:
15039 ; NO-SIMD128-NEXT: f64.max $push0=, $2, $4
15040 ; NO-SIMD128-NEXT: f64.store 8($0), $pop0
15041 ; NO-SIMD128-NEXT: f64.max $push1=, $1, $3
15042 ; NO-SIMD128-NEXT: f64.store 0($0), $pop1
15043 ; NO-SIMD128-NEXT: return
15045 ; NO-SIMD128-FAST-LABEL: max_intrinsic_v2f64:
15046 ; NO-SIMD128-FAST: .functype max_intrinsic_v2f64 (i32, f64, f64, f64, f64) -> ()
15047 ; NO-SIMD128-FAST-NEXT: # %bb.0:
15048 ; NO-SIMD128-FAST-NEXT: f64.max $push0=, $1, $3
15049 ; NO-SIMD128-FAST-NEXT: f64.store 0($0), $pop0
15050 ; NO-SIMD128-FAST-NEXT: f64.max $push1=, $2, $4
15051 ; NO-SIMD128-FAST-NEXT: f64.store 8($0), $pop1
15052 ; NO-SIMD128-FAST-NEXT: return
15053 %a = call <2 x double> @llvm.maximum.v2f64(<2 x double> %x, <2 x double> %y)
15054 ret <2 x double> %a
15057 define <2 x double> @min_const_intrinsic_v2f64() {
15058 ; SIMD128-LABEL: min_const_intrinsic_v2f64:
15059 ; SIMD128: .functype min_const_intrinsic_v2f64 () -> (v128)
15060 ; SIMD128-NEXT: # %bb.0:
15061 ; SIMD128-NEXT: v128.const $push0=, 0x1.4p2, 0x1.4p2
15062 ; SIMD128-NEXT: return $pop0
15064 ; SIMD128-FAST-LABEL: min_const_intrinsic_v2f64:
15065 ; SIMD128-FAST: .functype min_const_intrinsic_v2f64 () -> (v128)
15066 ; SIMD128-FAST-NEXT: # %bb.0:
15067 ; SIMD128-FAST-NEXT: v128.const $push0=, 0x1.4p2, 0x1.4p2
15068 ; SIMD128-FAST-NEXT: return $pop0
15070 ; NO-SIMD128-LABEL: min_const_intrinsic_v2f64:
15071 ; NO-SIMD128: .functype min_const_intrinsic_v2f64 (i32) -> ()
15072 ; NO-SIMD128-NEXT: # %bb.0:
15073 ; NO-SIMD128-NEXT: i64.const $push0=, 4617315517961601024
15074 ; NO-SIMD128-NEXT: i64.store 8($0), $pop0
15075 ; NO-SIMD128-NEXT: i64.const $push1=, 4617315517961601024
15076 ; NO-SIMD128-NEXT: i64.store 0($0), $pop1
15077 ; NO-SIMD128-NEXT: return
15079 ; NO-SIMD128-FAST-LABEL: min_const_intrinsic_v2f64:
15080 ; NO-SIMD128-FAST: .functype min_const_intrinsic_v2f64 (i32) -> ()
15081 ; NO-SIMD128-FAST-NEXT: # %bb.0:
15082 ; NO-SIMD128-FAST-NEXT: i64.const $push0=, 4617315517961601024
15083 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop0
15084 ; NO-SIMD128-FAST-NEXT: i64.const $push1=, 4617315517961601024
15085 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop1
15086 ; NO-SIMD128-FAST-NEXT: return
15087 %a = call <2 x double> @llvm.minimum.v2f64(
15088 <2 x double> <double 42., double 42.>,
15089 <2 x double> <double 5., double 5.>
15091 ret <2 x double> %a
15094 define <2 x double> @max_const_intrinsic_v2f64() {
15095 ; SIMD128-LABEL: max_const_intrinsic_v2f64:
15096 ; SIMD128: .functype max_const_intrinsic_v2f64 () -> (v128)
15097 ; SIMD128-NEXT: # %bb.0:
15098 ; SIMD128-NEXT: v128.const $push0=, 0x1.5p5, 0x1.5p5
15099 ; SIMD128-NEXT: return $pop0
15101 ; SIMD128-FAST-LABEL: max_const_intrinsic_v2f64:
15102 ; SIMD128-FAST: .functype max_const_intrinsic_v2f64 () -> (v128)
15103 ; SIMD128-FAST-NEXT: # %bb.0:
15104 ; SIMD128-FAST-NEXT: v128.const $push0=, 0x1.5p5, 0x1.5p5
15105 ; SIMD128-FAST-NEXT: return $pop0
15107 ; NO-SIMD128-LABEL: max_const_intrinsic_v2f64:
15108 ; NO-SIMD128: .functype max_const_intrinsic_v2f64 (i32) -> ()
15109 ; NO-SIMD128-NEXT: # %bb.0:
15110 ; NO-SIMD128-NEXT: i64.const $push0=, 4631107791820423168
15111 ; NO-SIMD128-NEXT: i64.store 8($0), $pop0
15112 ; NO-SIMD128-NEXT: i64.const $push1=, 4631107791820423168
15113 ; NO-SIMD128-NEXT: i64.store 0($0), $pop1
15114 ; NO-SIMD128-NEXT: return
15116 ; NO-SIMD128-FAST-LABEL: max_const_intrinsic_v2f64:
15117 ; NO-SIMD128-FAST: .functype max_const_intrinsic_v2f64 (i32) -> ()
15118 ; NO-SIMD128-FAST-NEXT: # %bb.0:
15119 ; NO-SIMD128-FAST-NEXT: i64.const $push0=, 4631107791820423168
15120 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop0
15121 ; NO-SIMD128-FAST-NEXT: i64.const $push1=, 4631107791820423168
15122 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop1
15123 ; NO-SIMD128-FAST-NEXT: return
15124 %a = call <2 x double> @llvm.maximum.v2f64(
15125 <2 x double> <double 42., double 42.>,
15126 <2 x double> <double 5., double 5.>
15128 ret <2 x double> %a
15131 define <2 x double> @pmin_v2f64(<2 x double> %x, <2 x double> %y) {
15132 ; SIMD128-LABEL: pmin_v2f64:
15133 ; SIMD128: .functype pmin_v2f64 (v128, v128) -> (v128)
15134 ; SIMD128-NEXT: # %bb.0:
15135 ; SIMD128-NEXT: f64x2.pmin $push0=, $0, $1
15136 ; SIMD128-NEXT: return $pop0
15138 ; SIMD128-FAST-LABEL: pmin_v2f64:
15139 ; SIMD128-FAST: .functype pmin_v2f64 (v128, v128) -> (v128)
15140 ; SIMD128-FAST-NEXT: # %bb.0:
15141 ; SIMD128-FAST-NEXT: f64x2.pmin $push0=, $0, $1
15142 ; SIMD128-FAST-NEXT: return $pop0
15144 ; NO-SIMD128-LABEL: pmin_v2f64:
15145 ; NO-SIMD128: .functype pmin_v2f64 (i32, f64, f64, f64, f64) -> ()
15146 ; NO-SIMD128-NEXT: # %bb.0:
15147 ; NO-SIMD128-NEXT: f64.lt $push0=, $4, $2
15148 ; NO-SIMD128-NEXT: f64.select $push1=, $4, $2, $pop0
15149 ; NO-SIMD128-NEXT: f64.store 8($0), $pop1
15150 ; NO-SIMD128-NEXT: f64.lt $push2=, $3, $1
15151 ; NO-SIMD128-NEXT: f64.select $push3=, $3, $1, $pop2
15152 ; NO-SIMD128-NEXT: f64.store 0($0), $pop3
15153 ; NO-SIMD128-NEXT: return
15155 ; NO-SIMD128-FAST-LABEL: pmin_v2f64:
15156 ; NO-SIMD128-FAST: .functype pmin_v2f64 (i32, f64, f64, f64, f64) -> ()
15157 ; NO-SIMD128-FAST-NEXT: # %bb.0:
15158 ; NO-SIMD128-FAST-NEXT: f64.lt $push0=, $3, $1
15159 ; NO-SIMD128-FAST-NEXT: f64.select $push1=, $3, $1, $pop0
15160 ; NO-SIMD128-FAST-NEXT: f64.store 0($0), $pop1
15161 ; NO-SIMD128-FAST-NEXT: f64.lt $push2=, $4, $2
15162 ; NO-SIMD128-FAST-NEXT: f64.select $push3=, $4, $2, $pop2
15163 ; NO-SIMD128-FAST-NEXT: f64.store 8($0), $pop3
15164 ; NO-SIMD128-FAST-NEXT: return
15165 %c = fcmp olt <2 x double> %y, %x
15166 %a = select <2 x i1> %c, <2 x double> %y, <2 x double> %x
15167 ret <2 x double> %a
15170 define <2 x i64> @pmin_int_v2f64(<2 x i64> %x, <2 x i64> %y) {
15171 ; SIMD128-LABEL: pmin_int_v2f64:
15172 ; SIMD128: .functype pmin_int_v2f64 (v128, v128) -> (v128)
15173 ; SIMD128-NEXT: # %bb.0:
15174 ; SIMD128-NEXT: f64x2.pmin $push0=, $0, $1
15175 ; SIMD128-NEXT: return $pop0
15177 ; SIMD128-FAST-LABEL: pmin_int_v2f64:
15178 ; SIMD128-FAST: .functype pmin_int_v2f64 (v128, v128) -> (v128)
15179 ; SIMD128-FAST-NEXT: # %bb.0:
15180 ; SIMD128-FAST-NEXT: f64x2.pmin $push0=, $0, $1
15181 ; SIMD128-FAST-NEXT: return $pop0
15183 ; NO-SIMD128-LABEL: pmin_int_v2f64:
15184 ; NO-SIMD128: .functype pmin_int_v2f64 (i32, i64, i64, i64, i64) -> ()
15185 ; NO-SIMD128-NEXT: # %bb.0:
15186 ; NO-SIMD128-NEXT: f64.reinterpret_i64 $push1=, $4
15187 ; NO-SIMD128-NEXT: f64.reinterpret_i64 $push0=, $2
15188 ; NO-SIMD128-NEXT: f64.lt $push2=, $pop1, $pop0
15189 ; NO-SIMD128-NEXT: i64.select $push3=, $4, $2, $pop2
15190 ; NO-SIMD128-NEXT: i64.store 8($0), $pop3
15191 ; NO-SIMD128-NEXT: f64.reinterpret_i64 $push5=, $3
15192 ; NO-SIMD128-NEXT: f64.reinterpret_i64 $push4=, $1
15193 ; NO-SIMD128-NEXT: f64.lt $push6=, $pop5, $pop4
15194 ; NO-SIMD128-NEXT: i64.select $push7=, $3, $1, $pop6
15195 ; NO-SIMD128-NEXT: i64.store 0($0), $pop7
15196 ; NO-SIMD128-NEXT: return
15198 ; NO-SIMD128-FAST-LABEL: pmin_int_v2f64:
15199 ; NO-SIMD128-FAST: .functype pmin_int_v2f64 (i32, i64, i64, i64, i64) -> ()
15200 ; NO-SIMD128-FAST-NEXT: # %bb.0:
15201 ; NO-SIMD128-FAST-NEXT: f64.reinterpret_i64 $push1=, $3
15202 ; NO-SIMD128-FAST-NEXT: f64.reinterpret_i64 $push0=, $1
15203 ; NO-SIMD128-FAST-NEXT: f64.lt $push2=, $pop1, $pop0
15204 ; NO-SIMD128-FAST-NEXT: i64.select $push3=, $3, $1, $pop2
15205 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop3
15206 ; NO-SIMD128-FAST-NEXT: f64.reinterpret_i64 $push5=, $4
15207 ; NO-SIMD128-FAST-NEXT: f64.reinterpret_i64 $push4=, $2
15208 ; NO-SIMD128-FAST-NEXT: f64.lt $push6=, $pop5, $pop4
15209 ; NO-SIMD128-FAST-NEXT: i64.select $push7=, $4, $2, $pop6
15210 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop7
15211 ; NO-SIMD128-FAST-NEXT: return
15212 %fx = bitcast <2 x i64> %x to <2 x double>
15213 %fy = bitcast <2 x i64> %y to <2 x double>
15214 %c = fcmp olt <2 x double> %fy, %fx
15215 %a = select <2 x i1> %c, <2 x i64> %y, <2 x i64> %x
15219 define <2 x double> @pmax_v2f64(<2 x double> %x, <2 x double> %y) {
15220 ; SIMD128-LABEL: pmax_v2f64:
15221 ; SIMD128: .functype pmax_v2f64 (v128, v128) -> (v128)
15222 ; SIMD128-NEXT: # %bb.0:
15223 ; SIMD128-NEXT: f64x2.pmax $push0=, $0, $1
15224 ; SIMD128-NEXT: return $pop0
15226 ; SIMD128-FAST-LABEL: pmax_v2f64:
15227 ; SIMD128-FAST: .functype pmax_v2f64 (v128, v128) -> (v128)
15228 ; SIMD128-FAST-NEXT: # %bb.0:
15229 ; SIMD128-FAST-NEXT: f64x2.pmax $push0=, $0, $1
15230 ; SIMD128-FAST-NEXT: return $pop0
15232 ; NO-SIMD128-LABEL: pmax_v2f64:
15233 ; NO-SIMD128: .functype pmax_v2f64 (i32, f64, f64, f64, f64) -> ()
15234 ; NO-SIMD128-NEXT: # %bb.0:
15235 ; NO-SIMD128-NEXT: f64.lt $push0=, $2, $4
15236 ; NO-SIMD128-NEXT: f64.select $push1=, $4, $2, $pop0
15237 ; NO-SIMD128-NEXT: f64.store 8($0), $pop1
15238 ; NO-SIMD128-NEXT: f64.lt $push2=, $1, $3
15239 ; NO-SIMD128-NEXT: f64.select $push3=, $3, $1, $pop2
15240 ; NO-SIMD128-NEXT: f64.store 0($0), $pop3
15241 ; NO-SIMD128-NEXT: return
15243 ; NO-SIMD128-FAST-LABEL: pmax_v2f64:
15244 ; NO-SIMD128-FAST: .functype pmax_v2f64 (i32, f64, f64, f64, f64) -> ()
15245 ; NO-SIMD128-FAST-NEXT: # %bb.0:
15246 ; NO-SIMD128-FAST-NEXT: f64.lt $push0=, $1, $3
15247 ; NO-SIMD128-FAST-NEXT: f64.select $push1=, $3, $1, $pop0
15248 ; NO-SIMD128-FAST-NEXT: f64.store 0($0), $pop1
15249 ; NO-SIMD128-FAST-NEXT: f64.lt $push2=, $2, $4
15250 ; NO-SIMD128-FAST-NEXT: f64.select $push3=, $4, $2, $pop2
15251 ; NO-SIMD128-FAST-NEXT: f64.store 8($0), $pop3
15252 ; NO-SIMD128-FAST-NEXT: return
15253 %c = fcmp olt <2 x double> %x, %y
15254 %a = select <2 x i1> %c, <2 x double> %y, <2 x double> %x
15255 ret <2 x double> %a
15258 define <2 x i64> @pmax_int_v2f64(<2 x i64> %x, <2 x i64> %y) {
15259 ; SIMD128-LABEL: pmax_int_v2f64:
15260 ; SIMD128: .functype pmax_int_v2f64 (v128, v128) -> (v128)
15261 ; SIMD128-NEXT: # %bb.0:
15262 ; SIMD128-NEXT: f64x2.pmax $push0=, $0, $1
15263 ; SIMD128-NEXT: return $pop0
15265 ; SIMD128-FAST-LABEL: pmax_int_v2f64:
15266 ; SIMD128-FAST: .functype pmax_int_v2f64 (v128, v128) -> (v128)
15267 ; SIMD128-FAST-NEXT: # %bb.0:
15268 ; SIMD128-FAST-NEXT: f64x2.pmax $push0=, $0, $1
15269 ; SIMD128-FAST-NEXT: return $pop0
15271 ; NO-SIMD128-LABEL: pmax_int_v2f64:
15272 ; NO-SIMD128: .functype pmax_int_v2f64 (i32, i64, i64, i64, i64) -> ()
15273 ; NO-SIMD128-NEXT: # %bb.0:
15274 ; NO-SIMD128-NEXT: f64.reinterpret_i64 $push1=, $2
15275 ; NO-SIMD128-NEXT: f64.reinterpret_i64 $push0=, $4
15276 ; NO-SIMD128-NEXT: f64.lt $push2=, $pop1, $pop0
15277 ; NO-SIMD128-NEXT: i64.select $push3=, $4, $2, $pop2
15278 ; NO-SIMD128-NEXT: i64.store 8($0), $pop3
15279 ; NO-SIMD128-NEXT: f64.reinterpret_i64 $push5=, $1
15280 ; NO-SIMD128-NEXT: f64.reinterpret_i64 $push4=, $3
15281 ; NO-SIMD128-NEXT: f64.lt $push6=, $pop5, $pop4
15282 ; NO-SIMD128-NEXT: i64.select $push7=, $3, $1, $pop6
15283 ; NO-SIMD128-NEXT: i64.store 0($0), $pop7
15284 ; NO-SIMD128-NEXT: return
15286 ; NO-SIMD128-FAST-LABEL: pmax_int_v2f64:
15287 ; NO-SIMD128-FAST: .functype pmax_int_v2f64 (i32, i64, i64, i64, i64) -> ()
15288 ; NO-SIMD128-FAST-NEXT: # %bb.0:
15289 ; NO-SIMD128-FAST-NEXT: f64.reinterpret_i64 $push1=, $1
15290 ; NO-SIMD128-FAST-NEXT: f64.reinterpret_i64 $push0=, $3
15291 ; NO-SIMD128-FAST-NEXT: f64.lt $push2=, $pop1, $pop0
15292 ; NO-SIMD128-FAST-NEXT: i64.select $push3=, $3, $1, $pop2
15293 ; NO-SIMD128-FAST-NEXT: i64.store 0($0), $pop3
15294 ; NO-SIMD128-FAST-NEXT: f64.reinterpret_i64 $push5=, $2
15295 ; NO-SIMD128-FAST-NEXT: f64.reinterpret_i64 $push4=, $4
15296 ; NO-SIMD128-FAST-NEXT: f64.lt $push6=, $pop5, $pop4
15297 ; NO-SIMD128-FAST-NEXT: i64.select $push7=, $4, $2, $pop6
15298 ; NO-SIMD128-FAST-NEXT: i64.store 8($0), $pop7
15299 ; NO-SIMD128-FAST-NEXT: return
15300 %fx = bitcast <2 x i64> %x to <2 x double>
15301 %fy = bitcast <2 x i64> %y to <2 x double>
15302 %c = fcmp olt <2 x double> %fx, %fy
15303 %a = select <2 x i1> %c, <2 x i64> %y, <2 x i64> %x
15307 define <2 x double> @add_v2f64(<2 x double> %x, <2 x double> %y) {
15308 ; SIMD128-LABEL: add_v2f64:
15309 ; SIMD128: .functype add_v2f64 (v128, v128) -> (v128)
15310 ; SIMD128-NEXT: # %bb.0:
15311 ; SIMD128-NEXT: f64x2.add $push0=, $0, $1
15312 ; SIMD128-NEXT: return $pop0
15314 ; SIMD128-FAST-LABEL: add_v2f64:
15315 ; SIMD128-FAST: .functype add_v2f64 (v128, v128) -> (v128)
15316 ; SIMD128-FAST-NEXT: # %bb.0:
15317 ; SIMD128-FAST-NEXT: f64x2.add $push0=, $0, $1
15318 ; SIMD128-FAST-NEXT: return $pop0
15320 ; NO-SIMD128-LABEL: add_v2f64:
15321 ; NO-SIMD128: .functype add_v2f64 (i32, f64, f64, f64, f64) -> ()
15322 ; NO-SIMD128-NEXT: # %bb.0:
15323 ; NO-SIMD128-NEXT: f64.add $push0=, $2, $4
15324 ; NO-SIMD128-NEXT: f64.store 8($0), $pop0
15325 ; NO-SIMD128-NEXT: f64.add $push1=, $1, $3
15326 ; NO-SIMD128-NEXT: f64.store 0($0), $pop1
15327 ; NO-SIMD128-NEXT: return
15329 ; NO-SIMD128-FAST-LABEL: add_v2f64:
15330 ; NO-SIMD128-FAST: .functype add_v2f64 (i32, f64, f64, f64, f64) -> ()
15331 ; NO-SIMD128-FAST-NEXT: # %bb.0:
15332 ; NO-SIMD128-FAST-NEXT: f64.add $push0=, $1, $3
15333 ; NO-SIMD128-FAST-NEXT: f64.store 0($0), $pop0
15334 ; NO-SIMD128-FAST-NEXT: f64.add $push1=, $2, $4
15335 ; NO-SIMD128-FAST-NEXT: f64.store 8($0), $pop1
15336 ; NO-SIMD128-FAST-NEXT: return
15337 %a = fadd <2 x double> %x, %y
15338 ret <2 x double> %a
15341 define <2 x double> @sub_v2f64(<2 x double> %x, <2 x double> %y) {
15342 ; SIMD128-LABEL: sub_v2f64:
15343 ; SIMD128: .functype sub_v2f64 (v128, v128) -> (v128)
15344 ; SIMD128-NEXT: # %bb.0:
15345 ; SIMD128-NEXT: f64x2.sub $push0=, $0, $1
15346 ; SIMD128-NEXT: return $pop0
15348 ; SIMD128-FAST-LABEL: sub_v2f64:
15349 ; SIMD128-FAST: .functype sub_v2f64 (v128, v128) -> (v128)
15350 ; SIMD128-FAST-NEXT: # %bb.0:
15351 ; SIMD128-FAST-NEXT: f64x2.sub $push0=, $0, $1
15352 ; SIMD128-FAST-NEXT: return $pop0
15354 ; NO-SIMD128-LABEL: sub_v2f64:
15355 ; NO-SIMD128: .functype sub_v2f64 (i32, f64, f64, f64, f64) -> ()
15356 ; NO-SIMD128-NEXT: # %bb.0:
15357 ; NO-SIMD128-NEXT: f64.sub $push0=, $2, $4
15358 ; NO-SIMD128-NEXT: f64.store 8($0), $pop0
15359 ; NO-SIMD128-NEXT: f64.sub $push1=, $1, $3
15360 ; NO-SIMD128-NEXT: f64.store 0($0), $pop1
15361 ; NO-SIMD128-NEXT: return
15363 ; NO-SIMD128-FAST-LABEL: sub_v2f64:
15364 ; NO-SIMD128-FAST: .functype sub_v2f64 (i32, f64, f64, f64, f64) -> ()
15365 ; NO-SIMD128-FAST-NEXT: # %bb.0:
15366 ; NO-SIMD128-FAST-NEXT: f64.sub $push0=, $1, $3
15367 ; NO-SIMD128-FAST-NEXT: f64.store 0($0), $pop0
15368 ; NO-SIMD128-FAST-NEXT: f64.sub $push1=, $2, $4
15369 ; NO-SIMD128-FAST-NEXT: f64.store 8($0), $pop1
15370 ; NO-SIMD128-FAST-NEXT: return
15371 %a = fsub <2 x double> %x, %y
15372 ret <2 x double> %a
15375 define <2 x double> @div_v2f64(<2 x double> %x, <2 x double> %y) {
15376 ; SIMD128-LABEL: div_v2f64:
15377 ; SIMD128: .functype div_v2f64 (v128, v128) -> (v128)
15378 ; SIMD128-NEXT: # %bb.0:
15379 ; SIMD128-NEXT: f64x2.div $push0=, $0, $1
15380 ; SIMD128-NEXT: return $pop0
15382 ; SIMD128-FAST-LABEL: div_v2f64:
15383 ; SIMD128-FAST: .functype div_v2f64 (v128, v128) -> (v128)
15384 ; SIMD128-FAST-NEXT: # %bb.0:
15385 ; SIMD128-FAST-NEXT: f64x2.div $push0=, $0, $1
15386 ; SIMD128-FAST-NEXT: return $pop0
15388 ; NO-SIMD128-LABEL: div_v2f64:
15389 ; NO-SIMD128: .functype div_v2f64 (i32, f64, f64, f64, f64) -> ()
15390 ; NO-SIMD128-NEXT: # %bb.0:
15391 ; NO-SIMD128-NEXT: f64.div $push0=, $2, $4
15392 ; NO-SIMD128-NEXT: f64.store 8($0), $pop0
15393 ; NO-SIMD128-NEXT: f64.div $push1=, $1, $3
15394 ; NO-SIMD128-NEXT: f64.store 0($0), $pop1
15395 ; NO-SIMD128-NEXT: return
15397 ; NO-SIMD128-FAST-LABEL: div_v2f64:
15398 ; NO-SIMD128-FAST: .functype div_v2f64 (i32, f64, f64, f64, f64) -> ()
15399 ; NO-SIMD128-FAST-NEXT: # %bb.0:
15400 ; NO-SIMD128-FAST-NEXT: f64.div $push0=, $1, $3
15401 ; NO-SIMD128-FAST-NEXT: f64.store 0($0), $pop0
15402 ; NO-SIMD128-FAST-NEXT: f64.div $push1=, $2, $4
15403 ; NO-SIMD128-FAST-NEXT: f64.store 8($0), $pop1
15404 ; NO-SIMD128-FAST-NEXT: return
15405 %a = fdiv <2 x double> %x, %y
15406 ret <2 x double> %a
15409 define <2 x double> @mul_v2f64(<2 x double> %x, <2 x double> %y) {
15410 ; SIMD128-LABEL: mul_v2f64:
15411 ; SIMD128: .functype mul_v2f64 (v128, v128) -> (v128)
15412 ; SIMD128-NEXT: # %bb.0:
15413 ; SIMD128-NEXT: f64x2.mul $push0=, $0, $1
15414 ; SIMD128-NEXT: return $pop0
15416 ; SIMD128-FAST-LABEL: mul_v2f64:
15417 ; SIMD128-FAST: .functype mul_v2f64 (v128, v128) -> (v128)
15418 ; SIMD128-FAST-NEXT: # %bb.0:
15419 ; SIMD128-FAST-NEXT: f64x2.mul $push0=, $0, $1
15420 ; SIMD128-FAST-NEXT: return $pop0
15422 ; NO-SIMD128-LABEL: mul_v2f64:
15423 ; NO-SIMD128: .functype mul_v2f64 (i32, f64, f64, f64, f64) -> ()
15424 ; NO-SIMD128-NEXT: # %bb.0:
15425 ; NO-SIMD128-NEXT: f64.mul $push0=, $2, $4
15426 ; NO-SIMD128-NEXT: f64.store 8($0), $pop0
15427 ; NO-SIMD128-NEXT: f64.mul $push1=, $1, $3
15428 ; NO-SIMD128-NEXT: f64.store 0($0), $pop1
15429 ; NO-SIMD128-NEXT: return
15431 ; NO-SIMD128-FAST-LABEL: mul_v2f64:
15432 ; NO-SIMD128-FAST: .functype mul_v2f64 (i32, f64, f64, f64, f64) -> ()
15433 ; NO-SIMD128-FAST-NEXT: # %bb.0:
15434 ; NO-SIMD128-FAST-NEXT: f64.mul $push0=, $1, $3
15435 ; NO-SIMD128-FAST-NEXT: f64.store 0($0), $pop0
15436 ; NO-SIMD128-FAST-NEXT: f64.mul $push1=, $2, $4
15437 ; NO-SIMD128-FAST-NEXT: f64.store 8($0), $pop1
15438 ; NO-SIMD128-FAST-NEXT: return
15439 %a = fmul <2 x double> %x, %y
15440 ret <2 x double> %a
15443 declare <2 x double> @llvm.sqrt.v2f64(<2 x double> %x)
15444 define <2 x double> @sqrt_v2f64(<2 x double> %x) {
15445 ; SIMD128-LABEL: sqrt_v2f64:
15446 ; SIMD128: .functype sqrt_v2f64 (v128) -> (v128)
15447 ; SIMD128-NEXT: # %bb.0:
15448 ; SIMD128-NEXT: f64x2.sqrt $push0=, $0
15449 ; SIMD128-NEXT: return $pop0
15451 ; SIMD128-FAST-LABEL: sqrt_v2f64:
15452 ; SIMD128-FAST: .functype sqrt_v2f64 (v128) -> (v128)
15453 ; SIMD128-FAST-NEXT: # %bb.0:
15454 ; SIMD128-FAST-NEXT: f64x2.sqrt $push0=, $0
15455 ; SIMD128-FAST-NEXT: return $pop0
15457 ; NO-SIMD128-LABEL: sqrt_v2f64:
15458 ; NO-SIMD128: .functype sqrt_v2f64 (i32, f64, f64) -> ()
15459 ; NO-SIMD128-NEXT: # %bb.0:
15460 ; NO-SIMD128-NEXT: f64.sqrt $push0=, $2
15461 ; NO-SIMD128-NEXT: f64.store 8($0), $pop0
15462 ; NO-SIMD128-NEXT: f64.sqrt $push1=, $1
15463 ; NO-SIMD128-NEXT: f64.store 0($0), $pop1
15464 ; NO-SIMD128-NEXT: return
15466 ; NO-SIMD128-FAST-LABEL: sqrt_v2f64:
15467 ; NO-SIMD128-FAST: .functype sqrt_v2f64 (i32, f64, f64) -> ()
15468 ; NO-SIMD128-FAST-NEXT: # %bb.0:
15469 ; NO-SIMD128-FAST-NEXT: f64.sqrt $push0=, $1
15470 ; NO-SIMD128-FAST-NEXT: f64.store 0($0), $pop0
15471 ; NO-SIMD128-FAST-NEXT: f64.sqrt $push1=, $2
15472 ; NO-SIMD128-FAST-NEXT: f64.store 8($0), $pop1
15473 ; NO-SIMD128-FAST-NEXT: return
15474 %a = call <2 x double> @llvm.sqrt.v2f64(<2 x double> %x)
15475 ret <2 x double> %a