Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / WebAssembly / simd-arith.ll
blob67388b688e3bb7efa8ccee497229f8064848df1a
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 ; ==============================================================================
16 ; 16 x i8
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=, $16, $32
35 ; NO-SIMD128-NEXT:    i32.store8 15($0), $pop0
36 ; NO-SIMD128-NEXT:    i32.add $push1=, $15, $31
37 ; NO-SIMD128-NEXT:    i32.store8 14($0), $pop1
38 ; NO-SIMD128-NEXT:    i32.add $push2=, $14, $30
39 ; NO-SIMD128-NEXT:    i32.store8 13($0), $pop2
40 ; NO-SIMD128-NEXT:    i32.add $push3=, $13, $29
41 ; NO-SIMD128-NEXT:    i32.store8 12($0), $pop3
42 ; NO-SIMD128-NEXT:    i32.add $push4=, $12, $28
43 ; NO-SIMD128-NEXT:    i32.store8 11($0), $pop4
44 ; NO-SIMD128-NEXT:    i32.add $push5=, $11, $27
45 ; NO-SIMD128-NEXT:    i32.store8 10($0), $pop5
46 ; NO-SIMD128-NEXT:    i32.add $push6=, $10, $26
47 ; NO-SIMD128-NEXT:    i32.store8 9($0), $pop6
48 ; NO-SIMD128-NEXT:    i32.add $push7=, $9, $25
49 ; NO-SIMD128-NEXT:    i32.store8 8($0), $pop7
50 ; NO-SIMD128-NEXT:    i32.add $push8=, $8, $24
51 ; NO-SIMD128-NEXT:    i32.store8 7($0), $pop8
52 ; NO-SIMD128-NEXT:    i32.add $push9=, $7, $23
53 ; NO-SIMD128-NEXT:    i32.store8 6($0), $pop9
54 ; NO-SIMD128-NEXT:    i32.add $push10=, $6, $22
55 ; NO-SIMD128-NEXT:    i32.store8 5($0), $pop10
56 ; NO-SIMD128-NEXT:    i32.add $push11=, $5, $21
57 ; NO-SIMD128-NEXT:    i32.store8 4($0), $pop11
58 ; NO-SIMD128-NEXT:    i32.add $push12=, $4, $20
59 ; NO-SIMD128-NEXT:    i32.store8 3($0), $pop12
60 ; NO-SIMD128-NEXT:    i32.add $push13=, $3, $19
61 ; NO-SIMD128-NEXT:    i32.store8 2($0), $pop13
62 ; NO-SIMD128-NEXT:    i32.add $push14=, $2, $18
63 ; NO-SIMD128-NEXT:    i32.store8 1($0), $pop14
64 ; NO-SIMD128-NEXT:    i32.add $push15=, $1, $17
65 ; NO-SIMD128-NEXT:    i32.store8 0($0), $pop15
66 ; NO-SIMD128-NEXT:    return
68 ; NO-SIMD128-FAST-LABEL: add_v16i8:
69 ; 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) -> ()
70 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
71 ; NO-SIMD128-FAST-NEXT:    i32.add $push0=, $1, $17
72 ; NO-SIMD128-FAST-NEXT:    i32.store8 0($0), $pop0
73 ; NO-SIMD128-FAST-NEXT:    i32.add $push1=, $2, $18
74 ; NO-SIMD128-FAST-NEXT:    i32.store8 1($0), $pop1
75 ; NO-SIMD128-FAST-NEXT:    i32.add $push2=, $3, $19
76 ; NO-SIMD128-FAST-NEXT:    i32.store8 2($0), $pop2
77 ; NO-SIMD128-FAST-NEXT:    i32.add $push3=, $4, $20
78 ; NO-SIMD128-FAST-NEXT:    i32.store8 3($0), $pop3
79 ; NO-SIMD128-FAST-NEXT:    i32.add $push4=, $5, $21
80 ; NO-SIMD128-FAST-NEXT:    i32.store8 4($0), $pop4
81 ; NO-SIMD128-FAST-NEXT:    i32.add $push5=, $6, $22
82 ; NO-SIMD128-FAST-NEXT:    i32.store8 5($0), $pop5
83 ; NO-SIMD128-FAST-NEXT:    i32.add $push6=, $7, $23
84 ; NO-SIMD128-FAST-NEXT:    i32.store8 6($0), $pop6
85 ; NO-SIMD128-FAST-NEXT:    i32.add $push7=, $8, $24
86 ; NO-SIMD128-FAST-NEXT:    i32.store8 7($0), $pop7
87 ; NO-SIMD128-FAST-NEXT:    i32.add $push8=, $9, $25
88 ; NO-SIMD128-FAST-NEXT:    i32.store8 8($0), $pop8
89 ; NO-SIMD128-FAST-NEXT:    i32.add $push9=, $10, $26
90 ; NO-SIMD128-FAST-NEXT:    i32.store8 9($0), $pop9
91 ; NO-SIMD128-FAST-NEXT:    i32.add $push10=, $11, $27
92 ; NO-SIMD128-FAST-NEXT:    i32.store8 10($0), $pop10
93 ; NO-SIMD128-FAST-NEXT:    i32.add $push11=, $12, $28
94 ; NO-SIMD128-FAST-NEXT:    i32.store8 11($0), $pop11
95 ; NO-SIMD128-FAST-NEXT:    i32.add $push12=, $13, $29
96 ; NO-SIMD128-FAST-NEXT:    i32.store8 12($0), $pop12
97 ; NO-SIMD128-FAST-NEXT:    i32.add $push13=, $14, $30
98 ; NO-SIMD128-FAST-NEXT:    i32.store8 13($0), $pop13
99 ; NO-SIMD128-FAST-NEXT:    i32.add $push14=, $15, $31
100 ; NO-SIMD128-FAST-NEXT:    i32.store8 14($0), $pop14
101 ; NO-SIMD128-FAST-NEXT:    i32.add $push15=, $16, $32
102 ; NO-SIMD128-FAST-NEXT:    i32.store8 15($0), $pop15
103 ; NO-SIMD128-FAST-NEXT:    return
104   %a = add <16 x i8> %x, %y
105   ret <16 x i8> %a
108 define <16 x i8> @sub_v16i8(<16 x i8> %x, <16 x i8> %y) {
109 ; SIMD128-LABEL: sub_v16i8:
110 ; SIMD128:         .functype sub_v16i8 (v128, v128) -> (v128)
111 ; SIMD128-NEXT:  # %bb.0:
112 ; SIMD128-NEXT:    i8x16.sub $push0=, $0, $1
113 ; SIMD128-NEXT:    return $pop0
115 ; SIMD128-FAST-LABEL: sub_v16i8:
116 ; SIMD128-FAST:         .functype sub_v16i8 (v128, v128) -> (v128)
117 ; SIMD128-FAST-NEXT:  # %bb.0:
118 ; SIMD128-FAST-NEXT:    i8x16.sub $push0=, $0, $1
119 ; SIMD128-FAST-NEXT:    return $pop0
121 ; NO-SIMD128-LABEL: sub_v16i8:
122 ; 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) -> ()
123 ; NO-SIMD128-NEXT:  # %bb.0:
124 ; NO-SIMD128-NEXT:    i32.sub $push0=, $16, $32
125 ; NO-SIMD128-NEXT:    i32.store8 15($0), $pop0
126 ; NO-SIMD128-NEXT:    i32.sub $push1=, $15, $31
127 ; NO-SIMD128-NEXT:    i32.store8 14($0), $pop1
128 ; NO-SIMD128-NEXT:    i32.sub $push2=, $14, $30
129 ; NO-SIMD128-NEXT:    i32.store8 13($0), $pop2
130 ; NO-SIMD128-NEXT:    i32.sub $push3=, $13, $29
131 ; NO-SIMD128-NEXT:    i32.store8 12($0), $pop3
132 ; NO-SIMD128-NEXT:    i32.sub $push4=, $12, $28
133 ; NO-SIMD128-NEXT:    i32.store8 11($0), $pop4
134 ; NO-SIMD128-NEXT:    i32.sub $push5=, $11, $27
135 ; NO-SIMD128-NEXT:    i32.store8 10($0), $pop5
136 ; NO-SIMD128-NEXT:    i32.sub $push6=, $10, $26
137 ; NO-SIMD128-NEXT:    i32.store8 9($0), $pop6
138 ; NO-SIMD128-NEXT:    i32.sub $push7=, $9, $25
139 ; NO-SIMD128-NEXT:    i32.store8 8($0), $pop7
140 ; NO-SIMD128-NEXT:    i32.sub $push8=, $8, $24
141 ; NO-SIMD128-NEXT:    i32.store8 7($0), $pop8
142 ; NO-SIMD128-NEXT:    i32.sub $push9=, $7, $23
143 ; NO-SIMD128-NEXT:    i32.store8 6($0), $pop9
144 ; NO-SIMD128-NEXT:    i32.sub $push10=, $6, $22
145 ; NO-SIMD128-NEXT:    i32.store8 5($0), $pop10
146 ; NO-SIMD128-NEXT:    i32.sub $push11=, $5, $21
147 ; NO-SIMD128-NEXT:    i32.store8 4($0), $pop11
148 ; NO-SIMD128-NEXT:    i32.sub $push12=, $4, $20
149 ; NO-SIMD128-NEXT:    i32.store8 3($0), $pop12
150 ; NO-SIMD128-NEXT:    i32.sub $push13=, $3, $19
151 ; NO-SIMD128-NEXT:    i32.store8 2($0), $pop13
152 ; NO-SIMD128-NEXT:    i32.sub $push14=, $2, $18
153 ; NO-SIMD128-NEXT:    i32.store8 1($0), $pop14
154 ; NO-SIMD128-NEXT:    i32.sub $push15=, $1, $17
155 ; NO-SIMD128-NEXT:    i32.store8 0($0), $pop15
156 ; NO-SIMD128-NEXT:    return
158 ; NO-SIMD128-FAST-LABEL: sub_v16i8:
159 ; 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) -> ()
160 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
161 ; NO-SIMD128-FAST-NEXT:    i32.sub $push0=, $1, $17
162 ; NO-SIMD128-FAST-NEXT:    i32.store8 0($0), $pop0
163 ; NO-SIMD128-FAST-NEXT:    i32.sub $push1=, $2, $18
164 ; NO-SIMD128-FAST-NEXT:    i32.store8 1($0), $pop1
165 ; NO-SIMD128-FAST-NEXT:    i32.sub $push2=, $3, $19
166 ; NO-SIMD128-FAST-NEXT:    i32.store8 2($0), $pop2
167 ; NO-SIMD128-FAST-NEXT:    i32.sub $push3=, $4, $20
168 ; NO-SIMD128-FAST-NEXT:    i32.store8 3($0), $pop3
169 ; NO-SIMD128-FAST-NEXT:    i32.sub $push4=, $5, $21
170 ; NO-SIMD128-FAST-NEXT:    i32.store8 4($0), $pop4
171 ; NO-SIMD128-FAST-NEXT:    i32.sub $push5=, $6, $22
172 ; NO-SIMD128-FAST-NEXT:    i32.store8 5($0), $pop5
173 ; NO-SIMD128-FAST-NEXT:    i32.sub $push6=, $7, $23
174 ; NO-SIMD128-FAST-NEXT:    i32.store8 6($0), $pop6
175 ; NO-SIMD128-FAST-NEXT:    i32.sub $push7=, $8, $24
176 ; NO-SIMD128-FAST-NEXT:    i32.store8 7($0), $pop7
177 ; NO-SIMD128-FAST-NEXT:    i32.sub $push8=, $9, $25
178 ; NO-SIMD128-FAST-NEXT:    i32.store8 8($0), $pop8
179 ; NO-SIMD128-FAST-NEXT:    i32.sub $push9=, $10, $26
180 ; NO-SIMD128-FAST-NEXT:    i32.store8 9($0), $pop9
181 ; NO-SIMD128-FAST-NEXT:    i32.sub $push10=, $11, $27
182 ; NO-SIMD128-FAST-NEXT:    i32.store8 10($0), $pop10
183 ; NO-SIMD128-FAST-NEXT:    i32.sub $push11=, $12, $28
184 ; NO-SIMD128-FAST-NEXT:    i32.store8 11($0), $pop11
185 ; NO-SIMD128-FAST-NEXT:    i32.sub $push12=, $13, $29
186 ; NO-SIMD128-FAST-NEXT:    i32.store8 12($0), $pop12
187 ; NO-SIMD128-FAST-NEXT:    i32.sub $push13=, $14, $30
188 ; NO-SIMD128-FAST-NEXT:    i32.store8 13($0), $pop13
189 ; NO-SIMD128-FAST-NEXT:    i32.sub $push14=, $15, $31
190 ; NO-SIMD128-FAST-NEXT:    i32.store8 14($0), $pop14
191 ; NO-SIMD128-FAST-NEXT:    i32.sub $push15=, $16, $32
192 ; NO-SIMD128-FAST-NEXT:    i32.store8 15($0), $pop15
193 ; NO-SIMD128-FAST-NEXT:    return
194   %a = sub <16 x i8> %x, %y
195   ret <16 x i8> %a
198 define <16 x i8> @mul_v16i8(<16 x i8> %x, <16 x i8> %y) {
199 ; SIMD128-LABEL: mul_v16i8:
200 ; SIMD128:         .functype mul_v16i8 (v128, v128) -> (v128)
201 ; SIMD128-NEXT:  # %bb.0:
202 ; SIMD128-NEXT:    i8x16.extract_lane_u $push4=, $0, 0
203 ; SIMD128-NEXT:    i8x16.extract_lane_u $push3=, $1, 0
204 ; SIMD128-NEXT:    i32.mul $push5=, $pop4, $pop3
205 ; SIMD128-NEXT:    i8x16.splat $push6=, $pop5
206 ; SIMD128-NEXT:    i8x16.extract_lane_u $push1=, $0, 1
207 ; SIMD128-NEXT:    i8x16.extract_lane_u $push0=, $1, 1
208 ; SIMD128-NEXT:    i32.mul $push2=, $pop1, $pop0
209 ; SIMD128-NEXT:    i8x16.replace_lane $push7=, $pop6, 1, $pop2
210 ; SIMD128-NEXT:    i8x16.extract_lane_u $push9=, $0, 2
211 ; SIMD128-NEXT:    i8x16.extract_lane_u $push8=, $1, 2
212 ; SIMD128-NEXT:    i32.mul $push10=, $pop9, $pop8
213 ; SIMD128-NEXT:    i8x16.replace_lane $push11=, $pop7, 2, $pop10
214 ; SIMD128-NEXT:    i8x16.extract_lane_u $push13=, $0, 3
215 ; SIMD128-NEXT:    i8x16.extract_lane_u $push12=, $1, 3
216 ; SIMD128-NEXT:    i32.mul $push14=, $pop13, $pop12
217 ; SIMD128-NEXT:    i8x16.replace_lane $push15=, $pop11, 3, $pop14
218 ; SIMD128-NEXT:    i8x16.extract_lane_u $push17=, $0, 4
219 ; SIMD128-NEXT:    i8x16.extract_lane_u $push16=, $1, 4
220 ; SIMD128-NEXT:    i32.mul $push18=, $pop17, $pop16
221 ; SIMD128-NEXT:    i8x16.replace_lane $push19=, $pop15, 4, $pop18
222 ; SIMD128-NEXT:    i8x16.extract_lane_u $push21=, $0, 5
223 ; SIMD128-NEXT:    i8x16.extract_lane_u $push20=, $1, 5
224 ; SIMD128-NEXT:    i32.mul $push22=, $pop21, $pop20
225 ; SIMD128-NEXT:    i8x16.replace_lane $push23=, $pop19, 5, $pop22
226 ; SIMD128-NEXT:    i8x16.extract_lane_u $push25=, $0, 6
227 ; SIMD128-NEXT:    i8x16.extract_lane_u $push24=, $1, 6
228 ; SIMD128-NEXT:    i32.mul $push26=, $pop25, $pop24
229 ; SIMD128-NEXT:    i8x16.replace_lane $push27=, $pop23, 6, $pop26
230 ; SIMD128-NEXT:    i8x16.extract_lane_u $push29=, $0, 7
231 ; SIMD128-NEXT:    i8x16.extract_lane_u $push28=, $1, 7
232 ; SIMD128-NEXT:    i32.mul $push30=, $pop29, $pop28
233 ; SIMD128-NEXT:    i8x16.replace_lane $push31=, $pop27, 7, $pop30
234 ; SIMD128-NEXT:    i8x16.extract_lane_u $push33=, $0, 8
235 ; SIMD128-NEXT:    i8x16.extract_lane_u $push32=, $1, 8
236 ; SIMD128-NEXT:    i32.mul $push34=, $pop33, $pop32
237 ; SIMD128-NEXT:    i8x16.replace_lane $push35=, $pop31, 8, $pop34
238 ; SIMD128-NEXT:    i8x16.extract_lane_u $push37=, $0, 9
239 ; SIMD128-NEXT:    i8x16.extract_lane_u $push36=, $1, 9
240 ; SIMD128-NEXT:    i32.mul $push38=, $pop37, $pop36
241 ; SIMD128-NEXT:    i8x16.replace_lane $push39=, $pop35, 9, $pop38
242 ; SIMD128-NEXT:    i8x16.extract_lane_u $push41=, $0, 10
243 ; SIMD128-NEXT:    i8x16.extract_lane_u $push40=, $1, 10
244 ; SIMD128-NEXT:    i32.mul $push42=, $pop41, $pop40
245 ; SIMD128-NEXT:    i8x16.replace_lane $push43=, $pop39, 10, $pop42
246 ; SIMD128-NEXT:    i8x16.extract_lane_u $push45=, $0, 11
247 ; SIMD128-NEXT:    i8x16.extract_lane_u $push44=, $1, 11
248 ; SIMD128-NEXT:    i32.mul $push46=, $pop45, $pop44
249 ; SIMD128-NEXT:    i8x16.replace_lane $push47=, $pop43, 11, $pop46
250 ; SIMD128-NEXT:    i8x16.extract_lane_u $push49=, $0, 12
251 ; SIMD128-NEXT:    i8x16.extract_lane_u $push48=, $1, 12
252 ; SIMD128-NEXT:    i32.mul $push50=, $pop49, $pop48
253 ; SIMD128-NEXT:    i8x16.replace_lane $push51=, $pop47, 12, $pop50
254 ; SIMD128-NEXT:    i8x16.extract_lane_u $push53=, $0, 13
255 ; SIMD128-NEXT:    i8x16.extract_lane_u $push52=, $1, 13
256 ; SIMD128-NEXT:    i32.mul $push54=, $pop53, $pop52
257 ; SIMD128-NEXT:    i8x16.replace_lane $push55=, $pop51, 13, $pop54
258 ; SIMD128-NEXT:    i8x16.extract_lane_u $push57=, $0, 14
259 ; SIMD128-NEXT:    i8x16.extract_lane_u $push56=, $1, 14
260 ; SIMD128-NEXT:    i32.mul $push58=, $pop57, $pop56
261 ; SIMD128-NEXT:    i8x16.replace_lane $push59=, $pop55, 14, $pop58
262 ; SIMD128-NEXT:    i8x16.extract_lane_u $push61=, $0, 15
263 ; SIMD128-NEXT:    i8x16.extract_lane_u $push60=, $1, 15
264 ; SIMD128-NEXT:    i32.mul $push62=, $pop61, $pop60
265 ; SIMD128-NEXT:    i8x16.replace_lane $push63=, $pop59, 15, $pop62
266 ; SIMD128-NEXT:    return $pop63
268 ; SIMD128-FAST-LABEL: mul_v16i8:
269 ; SIMD128-FAST:         .functype mul_v16i8 (v128, v128) -> (v128)
270 ; SIMD128-FAST-NEXT:  # %bb.0:
271 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push5=, $0, 0
272 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push4=, $1, 0
273 ; SIMD128-FAST-NEXT:    i32.mul $push6=, $pop5, $pop4
274 ; SIMD128-FAST-NEXT:    i8x16.splat $push7=, $pop6
275 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push2=, $0, 1
276 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push1=, $1, 1
277 ; SIMD128-FAST-NEXT:    i32.mul $push3=, $pop2, $pop1
278 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push8=, $pop7, 1, $pop3
279 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push10=, $0, 2
280 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push9=, $1, 2
281 ; SIMD128-FAST-NEXT:    i32.mul $push11=, $pop10, $pop9
282 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push12=, $pop8, 2, $pop11
283 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push14=, $0, 3
284 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push13=, $1, 3
285 ; SIMD128-FAST-NEXT:    i32.mul $push15=, $pop14, $pop13
286 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push16=, $pop12, 3, $pop15
287 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push18=, $0, 4
288 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push17=, $1, 4
289 ; SIMD128-FAST-NEXT:    i32.mul $push19=, $pop18, $pop17
290 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push20=, $pop16, 4, $pop19
291 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push22=, $0, 5
292 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push21=, $1, 5
293 ; SIMD128-FAST-NEXT:    i32.mul $push23=, $pop22, $pop21
294 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push24=, $pop20, 5, $pop23
295 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push26=, $0, 6
296 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push25=, $1, 6
297 ; SIMD128-FAST-NEXT:    i32.mul $push27=, $pop26, $pop25
298 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push28=, $pop24, 6, $pop27
299 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push30=, $0, 7
300 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push29=, $1, 7
301 ; SIMD128-FAST-NEXT:    i32.mul $push31=, $pop30, $pop29
302 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push32=, $pop28, 7, $pop31
303 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push34=, $0, 8
304 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push33=, $1, 8
305 ; SIMD128-FAST-NEXT:    i32.mul $push35=, $pop34, $pop33
306 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push36=, $pop32, 8, $pop35
307 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push38=, $0, 9
308 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push37=, $1, 9
309 ; SIMD128-FAST-NEXT:    i32.mul $push39=, $pop38, $pop37
310 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push40=, $pop36, 9, $pop39
311 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push42=, $0, 10
312 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push41=, $1, 10
313 ; SIMD128-FAST-NEXT:    i32.mul $push43=, $pop42, $pop41
314 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push44=, $pop40, 10, $pop43
315 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push46=, $0, 11
316 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push45=, $1, 11
317 ; SIMD128-FAST-NEXT:    i32.mul $push47=, $pop46, $pop45
318 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push48=, $pop44, 11, $pop47
319 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push50=, $0, 12
320 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push49=, $1, 12
321 ; SIMD128-FAST-NEXT:    i32.mul $push51=, $pop50, $pop49
322 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push52=, $pop48, 12, $pop51
323 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push54=, $0, 13
324 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push53=, $1, 13
325 ; SIMD128-FAST-NEXT:    i32.mul $push55=, $pop54, $pop53
326 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push56=, $pop52, 13, $pop55
327 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push58=, $0, 14
328 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push57=, $1, 14
329 ; SIMD128-FAST-NEXT:    i32.mul $push59=, $pop58, $pop57
330 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push60=, $pop56, 14, $pop59
331 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push62=, $0, 15
332 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push61=, $1, 15
333 ; SIMD128-FAST-NEXT:    i32.mul $push63=, $pop62, $pop61
334 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push0=, $pop60, 15, $pop63
335 ; SIMD128-FAST-NEXT:    return $pop0
337 ; NO-SIMD128-LABEL: mul_v16i8:
338 ; 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) -> ()
339 ; NO-SIMD128-NEXT:  # %bb.0:
340 ; NO-SIMD128-NEXT:    i32.mul $push0=, $16, $32
341 ; NO-SIMD128-NEXT:    i32.store8 15($0), $pop0
342 ; NO-SIMD128-NEXT:    i32.mul $push1=, $15, $31
343 ; NO-SIMD128-NEXT:    i32.store8 14($0), $pop1
344 ; NO-SIMD128-NEXT:    i32.mul $push2=, $14, $30
345 ; NO-SIMD128-NEXT:    i32.store8 13($0), $pop2
346 ; NO-SIMD128-NEXT:    i32.mul $push3=, $13, $29
347 ; NO-SIMD128-NEXT:    i32.store8 12($0), $pop3
348 ; NO-SIMD128-NEXT:    i32.mul $push4=, $12, $28
349 ; NO-SIMD128-NEXT:    i32.store8 11($0), $pop4
350 ; NO-SIMD128-NEXT:    i32.mul $push5=, $11, $27
351 ; NO-SIMD128-NEXT:    i32.store8 10($0), $pop5
352 ; NO-SIMD128-NEXT:    i32.mul $push6=, $10, $26
353 ; NO-SIMD128-NEXT:    i32.store8 9($0), $pop6
354 ; NO-SIMD128-NEXT:    i32.mul $push7=, $9, $25
355 ; NO-SIMD128-NEXT:    i32.store8 8($0), $pop7
356 ; NO-SIMD128-NEXT:    i32.mul $push8=, $8, $24
357 ; NO-SIMD128-NEXT:    i32.store8 7($0), $pop8
358 ; NO-SIMD128-NEXT:    i32.mul $push9=, $7, $23
359 ; NO-SIMD128-NEXT:    i32.store8 6($0), $pop9
360 ; NO-SIMD128-NEXT:    i32.mul $push10=, $6, $22
361 ; NO-SIMD128-NEXT:    i32.store8 5($0), $pop10
362 ; NO-SIMD128-NEXT:    i32.mul $push11=, $5, $21
363 ; NO-SIMD128-NEXT:    i32.store8 4($0), $pop11
364 ; NO-SIMD128-NEXT:    i32.mul $push12=, $4, $20
365 ; NO-SIMD128-NEXT:    i32.store8 3($0), $pop12
366 ; NO-SIMD128-NEXT:    i32.mul $push13=, $3, $19
367 ; NO-SIMD128-NEXT:    i32.store8 2($0), $pop13
368 ; NO-SIMD128-NEXT:    i32.mul $push14=, $2, $18
369 ; NO-SIMD128-NEXT:    i32.store8 1($0), $pop14
370 ; NO-SIMD128-NEXT:    i32.mul $push15=, $1, $17
371 ; NO-SIMD128-NEXT:    i32.store8 0($0), $pop15
372 ; NO-SIMD128-NEXT:    return
374 ; NO-SIMD128-FAST-LABEL: mul_v16i8:
375 ; 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) -> ()
376 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
377 ; NO-SIMD128-FAST-NEXT:    i32.mul $push0=, $1, $17
378 ; NO-SIMD128-FAST-NEXT:    i32.store8 0($0), $pop0
379 ; NO-SIMD128-FAST-NEXT:    i32.mul $push1=, $2, $18
380 ; NO-SIMD128-FAST-NEXT:    i32.store8 1($0), $pop1
381 ; NO-SIMD128-FAST-NEXT:    i32.mul $push2=, $3, $19
382 ; NO-SIMD128-FAST-NEXT:    i32.store8 2($0), $pop2
383 ; NO-SIMD128-FAST-NEXT:    i32.mul $push3=, $4, $20
384 ; NO-SIMD128-FAST-NEXT:    i32.store8 3($0), $pop3
385 ; NO-SIMD128-FAST-NEXT:    i32.mul $push4=, $5, $21
386 ; NO-SIMD128-FAST-NEXT:    i32.store8 4($0), $pop4
387 ; NO-SIMD128-FAST-NEXT:    i32.mul $push5=, $6, $22
388 ; NO-SIMD128-FAST-NEXT:    i32.store8 5($0), $pop5
389 ; NO-SIMD128-FAST-NEXT:    i32.mul $push6=, $7, $23
390 ; NO-SIMD128-FAST-NEXT:    i32.store8 6($0), $pop6
391 ; NO-SIMD128-FAST-NEXT:    i32.mul $push7=, $8, $24
392 ; NO-SIMD128-FAST-NEXT:    i32.store8 7($0), $pop7
393 ; NO-SIMD128-FAST-NEXT:    i32.mul $push8=, $9, $25
394 ; NO-SIMD128-FAST-NEXT:    i32.store8 8($0), $pop8
395 ; NO-SIMD128-FAST-NEXT:    i32.mul $push9=, $10, $26
396 ; NO-SIMD128-FAST-NEXT:    i32.store8 9($0), $pop9
397 ; NO-SIMD128-FAST-NEXT:    i32.mul $push10=, $11, $27
398 ; NO-SIMD128-FAST-NEXT:    i32.store8 10($0), $pop10
399 ; NO-SIMD128-FAST-NEXT:    i32.mul $push11=, $12, $28
400 ; NO-SIMD128-FAST-NEXT:    i32.store8 11($0), $pop11
401 ; NO-SIMD128-FAST-NEXT:    i32.mul $push12=, $13, $29
402 ; NO-SIMD128-FAST-NEXT:    i32.store8 12($0), $pop12
403 ; NO-SIMD128-FAST-NEXT:    i32.mul $push13=, $14, $30
404 ; NO-SIMD128-FAST-NEXT:    i32.store8 13($0), $pop13
405 ; NO-SIMD128-FAST-NEXT:    i32.mul $push14=, $15, $31
406 ; NO-SIMD128-FAST-NEXT:    i32.store8 14($0), $pop14
407 ; NO-SIMD128-FAST-NEXT:    i32.mul $push15=, $16, $32
408 ; NO-SIMD128-FAST-NEXT:    i32.store8 15($0), $pop15
409 ; NO-SIMD128-FAST-NEXT:    return
410   %a = mul <16 x i8> %x, %y
411   ret <16 x i8> %a
414 define <16 x i8> @min_s_v16i8(<16 x i8> %x, <16 x i8> %y) {
415 ; SIMD128-LABEL: min_s_v16i8:
416 ; SIMD128:         .functype min_s_v16i8 (v128, v128) -> (v128)
417 ; SIMD128-NEXT:  # %bb.0:
418 ; SIMD128-NEXT:    i8x16.min_s $push0=, $0, $1
419 ; SIMD128-NEXT:    return $pop0
421 ; SIMD128-FAST-LABEL: min_s_v16i8:
422 ; SIMD128-FAST:         .functype min_s_v16i8 (v128, v128) -> (v128)
423 ; SIMD128-FAST-NEXT:  # %bb.0:
424 ; SIMD128-FAST-NEXT:    i8x16.min_s $push0=, $0, $1
425 ; SIMD128-FAST-NEXT:    return $pop0
427 ; NO-SIMD128-LABEL: min_s_v16i8:
428 ; 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) -> ()
429 ; NO-SIMD128-NEXT:  # %bb.0:
430 ; NO-SIMD128-NEXT:    i32.extend8_s $push1=, $16
431 ; NO-SIMD128-NEXT:    i32.extend8_s $push0=, $32
432 ; NO-SIMD128-NEXT:    i32.lt_s $push2=, $pop1, $pop0
433 ; NO-SIMD128-NEXT:    i32.select $push3=, $16, $32, $pop2
434 ; NO-SIMD128-NEXT:    i32.store8 15($0), $pop3
435 ; NO-SIMD128-NEXT:    i32.extend8_s $push5=, $15
436 ; NO-SIMD128-NEXT:    i32.extend8_s $push4=, $31
437 ; NO-SIMD128-NEXT:    i32.lt_s $push6=, $pop5, $pop4
438 ; NO-SIMD128-NEXT:    i32.select $push7=, $15, $31, $pop6
439 ; NO-SIMD128-NEXT:    i32.store8 14($0), $pop7
440 ; NO-SIMD128-NEXT:    i32.extend8_s $push9=, $14
441 ; NO-SIMD128-NEXT:    i32.extend8_s $push8=, $30
442 ; NO-SIMD128-NEXT:    i32.lt_s $push10=, $pop9, $pop8
443 ; NO-SIMD128-NEXT:    i32.select $push11=, $14, $30, $pop10
444 ; NO-SIMD128-NEXT:    i32.store8 13($0), $pop11
445 ; NO-SIMD128-NEXT:    i32.extend8_s $push13=, $13
446 ; NO-SIMD128-NEXT:    i32.extend8_s $push12=, $29
447 ; NO-SIMD128-NEXT:    i32.lt_s $push14=, $pop13, $pop12
448 ; NO-SIMD128-NEXT:    i32.select $push15=, $13, $29, $pop14
449 ; NO-SIMD128-NEXT:    i32.store8 12($0), $pop15
450 ; NO-SIMD128-NEXT:    i32.extend8_s $push17=, $12
451 ; NO-SIMD128-NEXT:    i32.extend8_s $push16=, $28
452 ; NO-SIMD128-NEXT:    i32.lt_s $push18=, $pop17, $pop16
453 ; NO-SIMD128-NEXT:    i32.select $push19=, $12, $28, $pop18
454 ; NO-SIMD128-NEXT:    i32.store8 11($0), $pop19
455 ; NO-SIMD128-NEXT:    i32.extend8_s $push21=, $11
456 ; NO-SIMD128-NEXT:    i32.extend8_s $push20=, $27
457 ; NO-SIMD128-NEXT:    i32.lt_s $push22=, $pop21, $pop20
458 ; NO-SIMD128-NEXT:    i32.select $push23=, $11, $27, $pop22
459 ; NO-SIMD128-NEXT:    i32.store8 10($0), $pop23
460 ; NO-SIMD128-NEXT:    i32.extend8_s $push25=, $10
461 ; NO-SIMD128-NEXT:    i32.extend8_s $push24=, $26
462 ; NO-SIMD128-NEXT:    i32.lt_s $push26=, $pop25, $pop24
463 ; NO-SIMD128-NEXT:    i32.select $push27=, $10, $26, $pop26
464 ; NO-SIMD128-NEXT:    i32.store8 9($0), $pop27
465 ; NO-SIMD128-NEXT:    i32.extend8_s $push29=, $9
466 ; NO-SIMD128-NEXT:    i32.extend8_s $push28=, $25
467 ; NO-SIMD128-NEXT:    i32.lt_s $push30=, $pop29, $pop28
468 ; NO-SIMD128-NEXT:    i32.select $push31=, $9, $25, $pop30
469 ; NO-SIMD128-NEXT:    i32.store8 8($0), $pop31
470 ; NO-SIMD128-NEXT:    i32.extend8_s $push33=, $8
471 ; NO-SIMD128-NEXT:    i32.extend8_s $push32=, $24
472 ; NO-SIMD128-NEXT:    i32.lt_s $push34=, $pop33, $pop32
473 ; NO-SIMD128-NEXT:    i32.select $push35=, $8, $24, $pop34
474 ; NO-SIMD128-NEXT:    i32.store8 7($0), $pop35
475 ; NO-SIMD128-NEXT:    i32.extend8_s $push37=, $7
476 ; NO-SIMD128-NEXT:    i32.extend8_s $push36=, $23
477 ; NO-SIMD128-NEXT:    i32.lt_s $push38=, $pop37, $pop36
478 ; NO-SIMD128-NEXT:    i32.select $push39=, $7, $23, $pop38
479 ; NO-SIMD128-NEXT:    i32.store8 6($0), $pop39
480 ; NO-SIMD128-NEXT:    i32.extend8_s $push41=, $6
481 ; NO-SIMD128-NEXT:    i32.extend8_s $push40=, $22
482 ; NO-SIMD128-NEXT:    i32.lt_s $push42=, $pop41, $pop40
483 ; NO-SIMD128-NEXT:    i32.select $push43=, $6, $22, $pop42
484 ; NO-SIMD128-NEXT:    i32.store8 5($0), $pop43
485 ; NO-SIMD128-NEXT:    i32.extend8_s $push45=, $5
486 ; NO-SIMD128-NEXT:    i32.extend8_s $push44=, $21
487 ; NO-SIMD128-NEXT:    i32.lt_s $push46=, $pop45, $pop44
488 ; NO-SIMD128-NEXT:    i32.select $push47=, $5, $21, $pop46
489 ; NO-SIMD128-NEXT:    i32.store8 4($0), $pop47
490 ; NO-SIMD128-NEXT:    i32.extend8_s $push49=, $4
491 ; NO-SIMD128-NEXT:    i32.extend8_s $push48=, $20
492 ; NO-SIMD128-NEXT:    i32.lt_s $push50=, $pop49, $pop48
493 ; NO-SIMD128-NEXT:    i32.select $push51=, $4, $20, $pop50
494 ; NO-SIMD128-NEXT:    i32.store8 3($0), $pop51
495 ; NO-SIMD128-NEXT:    i32.extend8_s $push53=, $3
496 ; NO-SIMD128-NEXT:    i32.extend8_s $push52=, $19
497 ; NO-SIMD128-NEXT:    i32.lt_s $push54=, $pop53, $pop52
498 ; NO-SIMD128-NEXT:    i32.select $push55=, $3, $19, $pop54
499 ; NO-SIMD128-NEXT:    i32.store8 2($0), $pop55
500 ; NO-SIMD128-NEXT:    i32.extend8_s $push57=, $2
501 ; NO-SIMD128-NEXT:    i32.extend8_s $push56=, $18
502 ; NO-SIMD128-NEXT:    i32.lt_s $push58=, $pop57, $pop56
503 ; NO-SIMD128-NEXT:    i32.select $push59=, $2, $18, $pop58
504 ; NO-SIMD128-NEXT:    i32.store8 1($0), $pop59
505 ; NO-SIMD128-NEXT:    i32.extend8_s $push61=, $1
506 ; NO-SIMD128-NEXT:    i32.extend8_s $push60=, $17
507 ; NO-SIMD128-NEXT:    i32.lt_s $push62=, $pop61, $pop60
508 ; NO-SIMD128-NEXT:    i32.select $push63=, $1, $17, $pop62
509 ; NO-SIMD128-NEXT:    i32.store8 0($0), $pop63
510 ; NO-SIMD128-NEXT:    return
512 ; NO-SIMD128-FAST-LABEL: min_s_v16i8:
513 ; 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) -> ()
514 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
515 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push1=, $1
516 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push0=, $17
517 ; NO-SIMD128-FAST-NEXT:    i32.lt_s $push2=, $pop1, $pop0
518 ; NO-SIMD128-FAST-NEXT:    i32.select $push3=, $1, $17, $pop2
519 ; NO-SIMD128-FAST-NEXT:    i32.store8 0($0), $pop3
520 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push5=, $2
521 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push4=, $18
522 ; NO-SIMD128-FAST-NEXT:    i32.lt_s $push6=, $pop5, $pop4
523 ; NO-SIMD128-FAST-NEXT:    i32.select $push7=, $2, $18, $pop6
524 ; NO-SIMD128-FAST-NEXT:    i32.store8 1($0), $pop7
525 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push9=, $3
526 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push8=, $19
527 ; NO-SIMD128-FAST-NEXT:    i32.lt_s $push10=, $pop9, $pop8
528 ; NO-SIMD128-FAST-NEXT:    i32.select $push11=, $3, $19, $pop10
529 ; NO-SIMD128-FAST-NEXT:    i32.store8 2($0), $pop11
530 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push13=, $4
531 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push12=, $20
532 ; NO-SIMD128-FAST-NEXT:    i32.lt_s $push14=, $pop13, $pop12
533 ; NO-SIMD128-FAST-NEXT:    i32.select $push15=, $4, $20, $pop14
534 ; NO-SIMD128-FAST-NEXT:    i32.store8 3($0), $pop15
535 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push17=, $5
536 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push16=, $21
537 ; NO-SIMD128-FAST-NEXT:    i32.lt_s $push18=, $pop17, $pop16
538 ; NO-SIMD128-FAST-NEXT:    i32.select $push19=, $5, $21, $pop18
539 ; NO-SIMD128-FAST-NEXT:    i32.store8 4($0), $pop19
540 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push21=, $6
541 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push20=, $22
542 ; NO-SIMD128-FAST-NEXT:    i32.lt_s $push22=, $pop21, $pop20
543 ; NO-SIMD128-FAST-NEXT:    i32.select $push23=, $6, $22, $pop22
544 ; NO-SIMD128-FAST-NEXT:    i32.store8 5($0), $pop23
545 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push25=, $7
546 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push24=, $23
547 ; NO-SIMD128-FAST-NEXT:    i32.lt_s $push26=, $pop25, $pop24
548 ; NO-SIMD128-FAST-NEXT:    i32.select $push27=, $7, $23, $pop26
549 ; NO-SIMD128-FAST-NEXT:    i32.store8 6($0), $pop27
550 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push29=, $8
551 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push28=, $24
552 ; NO-SIMD128-FAST-NEXT:    i32.lt_s $push30=, $pop29, $pop28
553 ; NO-SIMD128-FAST-NEXT:    i32.select $push31=, $8, $24, $pop30
554 ; NO-SIMD128-FAST-NEXT:    i32.store8 7($0), $pop31
555 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push33=, $9
556 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push32=, $25
557 ; NO-SIMD128-FAST-NEXT:    i32.lt_s $push34=, $pop33, $pop32
558 ; NO-SIMD128-FAST-NEXT:    i32.select $push35=, $9, $25, $pop34
559 ; NO-SIMD128-FAST-NEXT:    i32.store8 8($0), $pop35
560 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push37=, $10
561 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push36=, $26
562 ; NO-SIMD128-FAST-NEXT:    i32.lt_s $push38=, $pop37, $pop36
563 ; NO-SIMD128-FAST-NEXT:    i32.select $push39=, $10, $26, $pop38
564 ; NO-SIMD128-FAST-NEXT:    i32.store8 9($0), $pop39
565 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push41=, $11
566 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push40=, $27
567 ; NO-SIMD128-FAST-NEXT:    i32.lt_s $push42=, $pop41, $pop40
568 ; NO-SIMD128-FAST-NEXT:    i32.select $push43=, $11, $27, $pop42
569 ; NO-SIMD128-FAST-NEXT:    i32.store8 10($0), $pop43
570 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push45=, $12
571 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push44=, $28
572 ; NO-SIMD128-FAST-NEXT:    i32.lt_s $push46=, $pop45, $pop44
573 ; NO-SIMD128-FAST-NEXT:    i32.select $push47=, $12, $28, $pop46
574 ; NO-SIMD128-FAST-NEXT:    i32.store8 11($0), $pop47
575 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push49=, $13
576 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push48=, $29
577 ; NO-SIMD128-FAST-NEXT:    i32.lt_s $push50=, $pop49, $pop48
578 ; NO-SIMD128-FAST-NEXT:    i32.select $push51=, $13, $29, $pop50
579 ; NO-SIMD128-FAST-NEXT:    i32.store8 12($0), $pop51
580 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push53=, $14
581 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push52=, $30
582 ; NO-SIMD128-FAST-NEXT:    i32.lt_s $push54=, $pop53, $pop52
583 ; NO-SIMD128-FAST-NEXT:    i32.select $push55=, $14, $30, $pop54
584 ; NO-SIMD128-FAST-NEXT:    i32.store8 13($0), $pop55
585 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push57=, $15
586 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push56=, $31
587 ; NO-SIMD128-FAST-NEXT:    i32.lt_s $push58=, $pop57, $pop56
588 ; NO-SIMD128-FAST-NEXT:    i32.select $push59=, $15, $31, $pop58
589 ; NO-SIMD128-FAST-NEXT:    i32.store8 14($0), $pop59
590 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push61=, $16
591 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push60=, $32
592 ; NO-SIMD128-FAST-NEXT:    i32.lt_s $push62=, $pop61, $pop60
593 ; NO-SIMD128-FAST-NEXT:    i32.select $push63=, $16, $32, $pop62
594 ; NO-SIMD128-FAST-NEXT:    i32.store8 15($0), $pop63
595 ; NO-SIMD128-FAST-NEXT:    return
596   %c = icmp slt <16 x i8> %x, %y
597   %a = select <16 x i1> %c, <16 x i8> %x, <16 x i8> %y
598   ret <16 x i8> %a
601 define <16 x i8> @min_u_v16i8(<16 x i8> %x, <16 x i8> %y) {
602 ; SIMD128-LABEL: min_u_v16i8:
603 ; SIMD128:         .functype min_u_v16i8 (v128, v128) -> (v128)
604 ; SIMD128-NEXT:  # %bb.0:
605 ; SIMD128-NEXT:    i8x16.min_u $push0=, $0, $1
606 ; SIMD128-NEXT:    return $pop0
608 ; SIMD128-FAST-LABEL: min_u_v16i8:
609 ; SIMD128-FAST:         .functype min_u_v16i8 (v128, v128) -> (v128)
610 ; SIMD128-FAST-NEXT:  # %bb.0:
611 ; SIMD128-FAST-NEXT:    i8x16.min_u $push0=, $0, $1
612 ; SIMD128-FAST-NEXT:    return $pop0
614 ; NO-SIMD128-LABEL: min_u_v16i8:
615 ; 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) -> ()
616 ; NO-SIMD128-NEXT:  # %bb.0:
617 ; NO-SIMD128-NEXT:    i32.const $push0=, 255
618 ; NO-SIMD128-NEXT:    i32.and $push2=, $16, $pop0
619 ; NO-SIMD128-NEXT:    i32.const $push95=, 255
620 ; NO-SIMD128-NEXT:    i32.and $push1=, $32, $pop95
621 ; NO-SIMD128-NEXT:    i32.lt_u $push3=, $pop2, $pop1
622 ; NO-SIMD128-NEXT:    i32.select $push4=, $16, $32, $pop3
623 ; NO-SIMD128-NEXT:    i32.store8 15($0), $pop4
624 ; NO-SIMD128-NEXT:    i32.const $push94=, 255
625 ; NO-SIMD128-NEXT:    i32.and $push6=, $15, $pop94
626 ; NO-SIMD128-NEXT:    i32.const $push93=, 255
627 ; NO-SIMD128-NEXT:    i32.and $push5=, $31, $pop93
628 ; NO-SIMD128-NEXT:    i32.lt_u $push7=, $pop6, $pop5
629 ; NO-SIMD128-NEXT:    i32.select $push8=, $15, $31, $pop7
630 ; NO-SIMD128-NEXT:    i32.store8 14($0), $pop8
631 ; NO-SIMD128-NEXT:    i32.const $push92=, 255
632 ; NO-SIMD128-NEXT:    i32.and $push10=, $14, $pop92
633 ; NO-SIMD128-NEXT:    i32.const $push91=, 255
634 ; NO-SIMD128-NEXT:    i32.and $push9=, $30, $pop91
635 ; NO-SIMD128-NEXT:    i32.lt_u $push11=, $pop10, $pop9
636 ; NO-SIMD128-NEXT:    i32.select $push12=, $14, $30, $pop11
637 ; NO-SIMD128-NEXT:    i32.store8 13($0), $pop12
638 ; NO-SIMD128-NEXT:    i32.const $push90=, 255
639 ; NO-SIMD128-NEXT:    i32.and $push14=, $13, $pop90
640 ; NO-SIMD128-NEXT:    i32.const $push89=, 255
641 ; NO-SIMD128-NEXT:    i32.and $push13=, $29, $pop89
642 ; NO-SIMD128-NEXT:    i32.lt_u $push15=, $pop14, $pop13
643 ; NO-SIMD128-NEXT:    i32.select $push16=, $13, $29, $pop15
644 ; NO-SIMD128-NEXT:    i32.store8 12($0), $pop16
645 ; NO-SIMD128-NEXT:    i32.const $push88=, 255
646 ; NO-SIMD128-NEXT:    i32.and $push18=, $12, $pop88
647 ; NO-SIMD128-NEXT:    i32.const $push87=, 255
648 ; NO-SIMD128-NEXT:    i32.and $push17=, $28, $pop87
649 ; NO-SIMD128-NEXT:    i32.lt_u $push19=, $pop18, $pop17
650 ; NO-SIMD128-NEXT:    i32.select $push20=, $12, $28, $pop19
651 ; NO-SIMD128-NEXT:    i32.store8 11($0), $pop20
652 ; NO-SIMD128-NEXT:    i32.const $push86=, 255
653 ; NO-SIMD128-NEXT:    i32.and $push22=, $11, $pop86
654 ; NO-SIMD128-NEXT:    i32.const $push85=, 255
655 ; NO-SIMD128-NEXT:    i32.and $push21=, $27, $pop85
656 ; NO-SIMD128-NEXT:    i32.lt_u $push23=, $pop22, $pop21
657 ; NO-SIMD128-NEXT:    i32.select $push24=, $11, $27, $pop23
658 ; NO-SIMD128-NEXT:    i32.store8 10($0), $pop24
659 ; NO-SIMD128-NEXT:    i32.const $push84=, 255
660 ; NO-SIMD128-NEXT:    i32.and $push26=, $10, $pop84
661 ; NO-SIMD128-NEXT:    i32.const $push83=, 255
662 ; NO-SIMD128-NEXT:    i32.and $push25=, $26, $pop83
663 ; NO-SIMD128-NEXT:    i32.lt_u $push27=, $pop26, $pop25
664 ; NO-SIMD128-NEXT:    i32.select $push28=, $10, $26, $pop27
665 ; NO-SIMD128-NEXT:    i32.store8 9($0), $pop28
666 ; NO-SIMD128-NEXT:    i32.const $push82=, 255
667 ; NO-SIMD128-NEXT:    i32.and $push30=, $9, $pop82
668 ; NO-SIMD128-NEXT:    i32.const $push81=, 255
669 ; NO-SIMD128-NEXT:    i32.and $push29=, $25, $pop81
670 ; NO-SIMD128-NEXT:    i32.lt_u $push31=, $pop30, $pop29
671 ; NO-SIMD128-NEXT:    i32.select $push32=, $9, $25, $pop31
672 ; NO-SIMD128-NEXT:    i32.store8 8($0), $pop32
673 ; NO-SIMD128-NEXT:    i32.const $push80=, 255
674 ; NO-SIMD128-NEXT:    i32.and $push34=, $8, $pop80
675 ; NO-SIMD128-NEXT:    i32.const $push79=, 255
676 ; NO-SIMD128-NEXT:    i32.and $push33=, $24, $pop79
677 ; NO-SIMD128-NEXT:    i32.lt_u $push35=, $pop34, $pop33
678 ; NO-SIMD128-NEXT:    i32.select $push36=, $8, $24, $pop35
679 ; NO-SIMD128-NEXT:    i32.store8 7($0), $pop36
680 ; NO-SIMD128-NEXT:    i32.const $push78=, 255
681 ; NO-SIMD128-NEXT:    i32.and $push38=, $7, $pop78
682 ; NO-SIMD128-NEXT:    i32.const $push77=, 255
683 ; NO-SIMD128-NEXT:    i32.and $push37=, $23, $pop77
684 ; NO-SIMD128-NEXT:    i32.lt_u $push39=, $pop38, $pop37
685 ; NO-SIMD128-NEXT:    i32.select $push40=, $7, $23, $pop39
686 ; NO-SIMD128-NEXT:    i32.store8 6($0), $pop40
687 ; NO-SIMD128-NEXT:    i32.const $push76=, 255
688 ; NO-SIMD128-NEXT:    i32.and $push42=, $6, $pop76
689 ; NO-SIMD128-NEXT:    i32.const $push75=, 255
690 ; NO-SIMD128-NEXT:    i32.and $push41=, $22, $pop75
691 ; NO-SIMD128-NEXT:    i32.lt_u $push43=, $pop42, $pop41
692 ; NO-SIMD128-NEXT:    i32.select $push44=, $6, $22, $pop43
693 ; NO-SIMD128-NEXT:    i32.store8 5($0), $pop44
694 ; NO-SIMD128-NEXT:    i32.const $push74=, 255
695 ; NO-SIMD128-NEXT:    i32.and $push46=, $5, $pop74
696 ; NO-SIMD128-NEXT:    i32.const $push73=, 255
697 ; NO-SIMD128-NEXT:    i32.and $push45=, $21, $pop73
698 ; NO-SIMD128-NEXT:    i32.lt_u $push47=, $pop46, $pop45
699 ; NO-SIMD128-NEXT:    i32.select $push48=, $5, $21, $pop47
700 ; NO-SIMD128-NEXT:    i32.store8 4($0), $pop48
701 ; NO-SIMD128-NEXT:    i32.const $push72=, 255
702 ; NO-SIMD128-NEXT:    i32.and $push50=, $4, $pop72
703 ; NO-SIMD128-NEXT:    i32.const $push71=, 255
704 ; NO-SIMD128-NEXT:    i32.and $push49=, $20, $pop71
705 ; NO-SIMD128-NEXT:    i32.lt_u $push51=, $pop50, $pop49
706 ; NO-SIMD128-NEXT:    i32.select $push52=, $4, $20, $pop51
707 ; NO-SIMD128-NEXT:    i32.store8 3($0), $pop52
708 ; NO-SIMD128-NEXT:    i32.const $push70=, 255
709 ; NO-SIMD128-NEXT:    i32.and $push54=, $3, $pop70
710 ; NO-SIMD128-NEXT:    i32.const $push69=, 255
711 ; NO-SIMD128-NEXT:    i32.and $push53=, $19, $pop69
712 ; NO-SIMD128-NEXT:    i32.lt_u $push55=, $pop54, $pop53
713 ; NO-SIMD128-NEXT:    i32.select $push56=, $3, $19, $pop55
714 ; NO-SIMD128-NEXT:    i32.store8 2($0), $pop56
715 ; NO-SIMD128-NEXT:    i32.const $push68=, 255
716 ; NO-SIMD128-NEXT:    i32.and $push58=, $2, $pop68
717 ; NO-SIMD128-NEXT:    i32.const $push67=, 255
718 ; NO-SIMD128-NEXT:    i32.and $push57=, $18, $pop67
719 ; NO-SIMD128-NEXT:    i32.lt_u $push59=, $pop58, $pop57
720 ; NO-SIMD128-NEXT:    i32.select $push60=, $2, $18, $pop59
721 ; NO-SIMD128-NEXT:    i32.store8 1($0), $pop60
722 ; NO-SIMD128-NEXT:    i32.const $push66=, 255
723 ; NO-SIMD128-NEXT:    i32.and $push62=, $1, $pop66
724 ; NO-SIMD128-NEXT:    i32.const $push65=, 255
725 ; NO-SIMD128-NEXT:    i32.and $push61=, $17, $pop65
726 ; NO-SIMD128-NEXT:    i32.lt_u $push63=, $pop62, $pop61
727 ; NO-SIMD128-NEXT:    i32.select $push64=, $1, $17, $pop63
728 ; NO-SIMD128-NEXT:    i32.store8 0($0), $pop64
729 ; NO-SIMD128-NEXT:    return
731 ; NO-SIMD128-FAST-LABEL: min_u_v16i8:
732 ; 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) -> ()
733 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
734 ; NO-SIMD128-FAST-NEXT:    i32.const $push0=, 255
735 ; NO-SIMD128-FAST-NEXT:    i32.and $push2=, $1, $pop0
736 ; NO-SIMD128-FAST-NEXT:    i32.const $push95=, 255
737 ; NO-SIMD128-FAST-NEXT:    i32.and $push1=, $17, $pop95
738 ; NO-SIMD128-FAST-NEXT:    i32.lt_u $push3=, $pop2, $pop1
739 ; NO-SIMD128-FAST-NEXT:    i32.select $push4=, $1, $17, $pop3
740 ; NO-SIMD128-FAST-NEXT:    i32.store8 0($0), $pop4
741 ; NO-SIMD128-FAST-NEXT:    i32.const $push94=, 255
742 ; NO-SIMD128-FAST-NEXT:    i32.and $push6=, $2, $pop94
743 ; NO-SIMD128-FAST-NEXT:    i32.const $push93=, 255
744 ; NO-SIMD128-FAST-NEXT:    i32.and $push5=, $18, $pop93
745 ; NO-SIMD128-FAST-NEXT:    i32.lt_u $push7=, $pop6, $pop5
746 ; NO-SIMD128-FAST-NEXT:    i32.select $push8=, $2, $18, $pop7
747 ; NO-SIMD128-FAST-NEXT:    i32.store8 1($0), $pop8
748 ; NO-SIMD128-FAST-NEXT:    i32.const $push92=, 255
749 ; NO-SIMD128-FAST-NEXT:    i32.and $push10=, $3, $pop92
750 ; NO-SIMD128-FAST-NEXT:    i32.const $push91=, 255
751 ; NO-SIMD128-FAST-NEXT:    i32.and $push9=, $19, $pop91
752 ; NO-SIMD128-FAST-NEXT:    i32.lt_u $push11=, $pop10, $pop9
753 ; NO-SIMD128-FAST-NEXT:    i32.select $push12=, $3, $19, $pop11
754 ; NO-SIMD128-FAST-NEXT:    i32.store8 2($0), $pop12
755 ; NO-SIMD128-FAST-NEXT:    i32.const $push90=, 255
756 ; NO-SIMD128-FAST-NEXT:    i32.and $push14=, $4, $pop90
757 ; NO-SIMD128-FAST-NEXT:    i32.const $push89=, 255
758 ; NO-SIMD128-FAST-NEXT:    i32.and $push13=, $20, $pop89
759 ; NO-SIMD128-FAST-NEXT:    i32.lt_u $push15=, $pop14, $pop13
760 ; NO-SIMD128-FAST-NEXT:    i32.select $push16=, $4, $20, $pop15
761 ; NO-SIMD128-FAST-NEXT:    i32.store8 3($0), $pop16
762 ; NO-SIMD128-FAST-NEXT:    i32.const $push88=, 255
763 ; NO-SIMD128-FAST-NEXT:    i32.and $push18=, $5, $pop88
764 ; NO-SIMD128-FAST-NEXT:    i32.const $push87=, 255
765 ; NO-SIMD128-FAST-NEXT:    i32.and $push17=, $21, $pop87
766 ; NO-SIMD128-FAST-NEXT:    i32.lt_u $push19=, $pop18, $pop17
767 ; NO-SIMD128-FAST-NEXT:    i32.select $push20=, $5, $21, $pop19
768 ; NO-SIMD128-FAST-NEXT:    i32.store8 4($0), $pop20
769 ; NO-SIMD128-FAST-NEXT:    i32.const $push86=, 255
770 ; NO-SIMD128-FAST-NEXT:    i32.and $push22=, $6, $pop86
771 ; NO-SIMD128-FAST-NEXT:    i32.const $push85=, 255
772 ; NO-SIMD128-FAST-NEXT:    i32.and $push21=, $22, $pop85
773 ; NO-SIMD128-FAST-NEXT:    i32.lt_u $push23=, $pop22, $pop21
774 ; NO-SIMD128-FAST-NEXT:    i32.select $push24=, $6, $22, $pop23
775 ; NO-SIMD128-FAST-NEXT:    i32.store8 5($0), $pop24
776 ; NO-SIMD128-FAST-NEXT:    i32.const $push84=, 255
777 ; NO-SIMD128-FAST-NEXT:    i32.and $push26=, $7, $pop84
778 ; NO-SIMD128-FAST-NEXT:    i32.const $push83=, 255
779 ; NO-SIMD128-FAST-NEXT:    i32.and $push25=, $23, $pop83
780 ; NO-SIMD128-FAST-NEXT:    i32.lt_u $push27=, $pop26, $pop25
781 ; NO-SIMD128-FAST-NEXT:    i32.select $push28=, $7, $23, $pop27
782 ; NO-SIMD128-FAST-NEXT:    i32.store8 6($0), $pop28
783 ; NO-SIMD128-FAST-NEXT:    i32.const $push82=, 255
784 ; NO-SIMD128-FAST-NEXT:    i32.and $push30=, $8, $pop82
785 ; NO-SIMD128-FAST-NEXT:    i32.const $push81=, 255
786 ; NO-SIMD128-FAST-NEXT:    i32.and $push29=, $24, $pop81
787 ; NO-SIMD128-FAST-NEXT:    i32.lt_u $push31=, $pop30, $pop29
788 ; NO-SIMD128-FAST-NEXT:    i32.select $push32=, $8, $24, $pop31
789 ; NO-SIMD128-FAST-NEXT:    i32.store8 7($0), $pop32
790 ; NO-SIMD128-FAST-NEXT:    i32.const $push80=, 255
791 ; NO-SIMD128-FAST-NEXT:    i32.and $push34=, $9, $pop80
792 ; NO-SIMD128-FAST-NEXT:    i32.const $push79=, 255
793 ; NO-SIMD128-FAST-NEXT:    i32.and $push33=, $25, $pop79
794 ; NO-SIMD128-FAST-NEXT:    i32.lt_u $push35=, $pop34, $pop33
795 ; NO-SIMD128-FAST-NEXT:    i32.select $push36=, $9, $25, $pop35
796 ; NO-SIMD128-FAST-NEXT:    i32.store8 8($0), $pop36
797 ; NO-SIMD128-FAST-NEXT:    i32.const $push78=, 255
798 ; NO-SIMD128-FAST-NEXT:    i32.and $push38=, $10, $pop78
799 ; NO-SIMD128-FAST-NEXT:    i32.const $push77=, 255
800 ; NO-SIMD128-FAST-NEXT:    i32.and $push37=, $26, $pop77
801 ; NO-SIMD128-FAST-NEXT:    i32.lt_u $push39=, $pop38, $pop37
802 ; NO-SIMD128-FAST-NEXT:    i32.select $push40=, $10, $26, $pop39
803 ; NO-SIMD128-FAST-NEXT:    i32.store8 9($0), $pop40
804 ; NO-SIMD128-FAST-NEXT:    i32.const $push76=, 255
805 ; NO-SIMD128-FAST-NEXT:    i32.and $push42=, $11, $pop76
806 ; NO-SIMD128-FAST-NEXT:    i32.const $push75=, 255
807 ; NO-SIMD128-FAST-NEXT:    i32.and $push41=, $27, $pop75
808 ; NO-SIMD128-FAST-NEXT:    i32.lt_u $push43=, $pop42, $pop41
809 ; NO-SIMD128-FAST-NEXT:    i32.select $push44=, $11, $27, $pop43
810 ; NO-SIMD128-FAST-NEXT:    i32.store8 10($0), $pop44
811 ; NO-SIMD128-FAST-NEXT:    i32.const $push74=, 255
812 ; NO-SIMD128-FAST-NEXT:    i32.and $push46=, $12, $pop74
813 ; NO-SIMD128-FAST-NEXT:    i32.const $push73=, 255
814 ; NO-SIMD128-FAST-NEXT:    i32.and $push45=, $28, $pop73
815 ; NO-SIMD128-FAST-NEXT:    i32.lt_u $push47=, $pop46, $pop45
816 ; NO-SIMD128-FAST-NEXT:    i32.select $push48=, $12, $28, $pop47
817 ; NO-SIMD128-FAST-NEXT:    i32.store8 11($0), $pop48
818 ; NO-SIMD128-FAST-NEXT:    i32.const $push72=, 255
819 ; NO-SIMD128-FAST-NEXT:    i32.and $push50=, $13, $pop72
820 ; NO-SIMD128-FAST-NEXT:    i32.const $push71=, 255
821 ; NO-SIMD128-FAST-NEXT:    i32.and $push49=, $29, $pop71
822 ; NO-SIMD128-FAST-NEXT:    i32.lt_u $push51=, $pop50, $pop49
823 ; NO-SIMD128-FAST-NEXT:    i32.select $push52=, $13, $29, $pop51
824 ; NO-SIMD128-FAST-NEXT:    i32.store8 12($0), $pop52
825 ; NO-SIMD128-FAST-NEXT:    i32.const $push70=, 255
826 ; NO-SIMD128-FAST-NEXT:    i32.and $push54=, $14, $pop70
827 ; NO-SIMD128-FAST-NEXT:    i32.const $push69=, 255
828 ; NO-SIMD128-FAST-NEXT:    i32.and $push53=, $30, $pop69
829 ; NO-SIMD128-FAST-NEXT:    i32.lt_u $push55=, $pop54, $pop53
830 ; NO-SIMD128-FAST-NEXT:    i32.select $push56=, $14, $30, $pop55
831 ; NO-SIMD128-FAST-NEXT:    i32.store8 13($0), $pop56
832 ; NO-SIMD128-FAST-NEXT:    i32.const $push68=, 255
833 ; NO-SIMD128-FAST-NEXT:    i32.and $push58=, $15, $pop68
834 ; NO-SIMD128-FAST-NEXT:    i32.const $push67=, 255
835 ; NO-SIMD128-FAST-NEXT:    i32.and $push57=, $31, $pop67
836 ; NO-SIMD128-FAST-NEXT:    i32.lt_u $push59=, $pop58, $pop57
837 ; NO-SIMD128-FAST-NEXT:    i32.select $push60=, $15, $31, $pop59
838 ; NO-SIMD128-FAST-NEXT:    i32.store8 14($0), $pop60
839 ; NO-SIMD128-FAST-NEXT:    i32.const $push66=, 255
840 ; NO-SIMD128-FAST-NEXT:    i32.and $push62=, $16, $pop66
841 ; NO-SIMD128-FAST-NEXT:    i32.const $push65=, 255
842 ; NO-SIMD128-FAST-NEXT:    i32.and $push61=, $32, $pop65
843 ; NO-SIMD128-FAST-NEXT:    i32.lt_u $push63=, $pop62, $pop61
844 ; NO-SIMD128-FAST-NEXT:    i32.select $push64=, $16, $32, $pop63
845 ; NO-SIMD128-FAST-NEXT:    i32.store8 15($0), $pop64
846 ; NO-SIMD128-FAST-NEXT:    return
847   %c = icmp ult <16 x i8> %x, %y
848   %a = select <16 x i1> %c, <16 x i8> %x, <16 x i8> %y
849   ret <16 x i8> %a
852 define <16 x i8> @max_s_v16i8(<16 x i8> %x, <16 x i8> %y) {
853 ; SIMD128-LABEL: max_s_v16i8:
854 ; SIMD128:         .functype max_s_v16i8 (v128, v128) -> (v128)
855 ; SIMD128-NEXT:  # %bb.0:
856 ; SIMD128-NEXT:    i8x16.max_s $push0=, $0, $1
857 ; SIMD128-NEXT:    return $pop0
859 ; SIMD128-FAST-LABEL: max_s_v16i8:
860 ; SIMD128-FAST:         .functype max_s_v16i8 (v128, v128) -> (v128)
861 ; SIMD128-FAST-NEXT:  # %bb.0:
862 ; SIMD128-FAST-NEXT:    i8x16.max_s $push0=, $0, $1
863 ; SIMD128-FAST-NEXT:    return $pop0
865 ; NO-SIMD128-LABEL: max_s_v16i8:
866 ; 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) -> ()
867 ; NO-SIMD128-NEXT:  # %bb.0:
868 ; NO-SIMD128-NEXT:    i32.extend8_s $push1=, $16
869 ; NO-SIMD128-NEXT:    i32.extend8_s $push0=, $32
870 ; NO-SIMD128-NEXT:    i32.gt_s $push2=, $pop1, $pop0
871 ; NO-SIMD128-NEXT:    i32.select $push3=, $16, $32, $pop2
872 ; NO-SIMD128-NEXT:    i32.store8 15($0), $pop3
873 ; NO-SIMD128-NEXT:    i32.extend8_s $push5=, $15
874 ; NO-SIMD128-NEXT:    i32.extend8_s $push4=, $31
875 ; NO-SIMD128-NEXT:    i32.gt_s $push6=, $pop5, $pop4
876 ; NO-SIMD128-NEXT:    i32.select $push7=, $15, $31, $pop6
877 ; NO-SIMD128-NEXT:    i32.store8 14($0), $pop7
878 ; NO-SIMD128-NEXT:    i32.extend8_s $push9=, $14
879 ; NO-SIMD128-NEXT:    i32.extend8_s $push8=, $30
880 ; NO-SIMD128-NEXT:    i32.gt_s $push10=, $pop9, $pop8
881 ; NO-SIMD128-NEXT:    i32.select $push11=, $14, $30, $pop10
882 ; NO-SIMD128-NEXT:    i32.store8 13($0), $pop11
883 ; NO-SIMD128-NEXT:    i32.extend8_s $push13=, $13
884 ; NO-SIMD128-NEXT:    i32.extend8_s $push12=, $29
885 ; NO-SIMD128-NEXT:    i32.gt_s $push14=, $pop13, $pop12
886 ; NO-SIMD128-NEXT:    i32.select $push15=, $13, $29, $pop14
887 ; NO-SIMD128-NEXT:    i32.store8 12($0), $pop15
888 ; NO-SIMD128-NEXT:    i32.extend8_s $push17=, $12
889 ; NO-SIMD128-NEXT:    i32.extend8_s $push16=, $28
890 ; NO-SIMD128-NEXT:    i32.gt_s $push18=, $pop17, $pop16
891 ; NO-SIMD128-NEXT:    i32.select $push19=, $12, $28, $pop18
892 ; NO-SIMD128-NEXT:    i32.store8 11($0), $pop19
893 ; NO-SIMD128-NEXT:    i32.extend8_s $push21=, $11
894 ; NO-SIMD128-NEXT:    i32.extend8_s $push20=, $27
895 ; NO-SIMD128-NEXT:    i32.gt_s $push22=, $pop21, $pop20
896 ; NO-SIMD128-NEXT:    i32.select $push23=, $11, $27, $pop22
897 ; NO-SIMD128-NEXT:    i32.store8 10($0), $pop23
898 ; NO-SIMD128-NEXT:    i32.extend8_s $push25=, $10
899 ; NO-SIMD128-NEXT:    i32.extend8_s $push24=, $26
900 ; NO-SIMD128-NEXT:    i32.gt_s $push26=, $pop25, $pop24
901 ; NO-SIMD128-NEXT:    i32.select $push27=, $10, $26, $pop26
902 ; NO-SIMD128-NEXT:    i32.store8 9($0), $pop27
903 ; NO-SIMD128-NEXT:    i32.extend8_s $push29=, $9
904 ; NO-SIMD128-NEXT:    i32.extend8_s $push28=, $25
905 ; NO-SIMD128-NEXT:    i32.gt_s $push30=, $pop29, $pop28
906 ; NO-SIMD128-NEXT:    i32.select $push31=, $9, $25, $pop30
907 ; NO-SIMD128-NEXT:    i32.store8 8($0), $pop31
908 ; NO-SIMD128-NEXT:    i32.extend8_s $push33=, $8
909 ; NO-SIMD128-NEXT:    i32.extend8_s $push32=, $24
910 ; NO-SIMD128-NEXT:    i32.gt_s $push34=, $pop33, $pop32
911 ; NO-SIMD128-NEXT:    i32.select $push35=, $8, $24, $pop34
912 ; NO-SIMD128-NEXT:    i32.store8 7($0), $pop35
913 ; NO-SIMD128-NEXT:    i32.extend8_s $push37=, $7
914 ; NO-SIMD128-NEXT:    i32.extend8_s $push36=, $23
915 ; NO-SIMD128-NEXT:    i32.gt_s $push38=, $pop37, $pop36
916 ; NO-SIMD128-NEXT:    i32.select $push39=, $7, $23, $pop38
917 ; NO-SIMD128-NEXT:    i32.store8 6($0), $pop39
918 ; NO-SIMD128-NEXT:    i32.extend8_s $push41=, $6
919 ; NO-SIMD128-NEXT:    i32.extend8_s $push40=, $22
920 ; NO-SIMD128-NEXT:    i32.gt_s $push42=, $pop41, $pop40
921 ; NO-SIMD128-NEXT:    i32.select $push43=, $6, $22, $pop42
922 ; NO-SIMD128-NEXT:    i32.store8 5($0), $pop43
923 ; NO-SIMD128-NEXT:    i32.extend8_s $push45=, $5
924 ; NO-SIMD128-NEXT:    i32.extend8_s $push44=, $21
925 ; NO-SIMD128-NEXT:    i32.gt_s $push46=, $pop45, $pop44
926 ; NO-SIMD128-NEXT:    i32.select $push47=, $5, $21, $pop46
927 ; NO-SIMD128-NEXT:    i32.store8 4($0), $pop47
928 ; NO-SIMD128-NEXT:    i32.extend8_s $push49=, $4
929 ; NO-SIMD128-NEXT:    i32.extend8_s $push48=, $20
930 ; NO-SIMD128-NEXT:    i32.gt_s $push50=, $pop49, $pop48
931 ; NO-SIMD128-NEXT:    i32.select $push51=, $4, $20, $pop50
932 ; NO-SIMD128-NEXT:    i32.store8 3($0), $pop51
933 ; NO-SIMD128-NEXT:    i32.extend8_s $push53=, $3
934 ; NO-SIMD128-NEXT:    i32.extend8_s $push52=, $19
935 ; NO-SIMD128-NEXT:    i32.gt_s $push54=, $pop53, $pop52
936 ; NO-SIMD128-NEXT:    i32.select $push55=, $3, $19, $pop54
937 ; NO-SIMD128-NEXT:    i32.store8 2($0), $pop55
938 ; NO-SIMD128-NEXT:    i32.extend8_s $push57=, $2
939 ; NO-SIMD128-NEXT:    i32.extend8_s $push56=, $18
940 ; NO-SIMD128-NEXT:    i32.gt_s $push58=, $pop57, $pop56
941 ; NO-SIMD128-NEXT:    i32.select $push59=, $2, $18, $pop58
942 ; NO-SIMD128-NEXT:    i32.store8 1($0), $pop59
943 ; NO-SIMD128-NEXT:    i32.extend8_s $push61=, $1
944 ; NO-SIMD128-NEXT:    i32.extend8_s $push60=, $17
945 ; NO-SIMD128-NEXT:    i32.gt_s $push62=, $pop61, $pop60
946 ; NO-SIMD128-NEXT:    i32.select $push63=, $1, $17, $pop62
947 ; NO-SIMD128-NEXT:    i32.store8 0($0), $pop63
948 ; NO-SIMD128-NEXT:    return
950 ; NO-SIMD128-FAST-LABEL: max_s_v16i8:
951 ; 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) -> ()
952 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
953 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push1=, $1
954 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push0=, $17
955 ; NO-SIMD128-FAST-NEXT:    i32.gt_s $push2=, $pop1, $pop0
956 ; NO-SIMD128-FAST-NEXT:    i32.select $push3=, $1, $17, $pop2
957 ; NO-SIMD128-FAST-NEXT:    i32.store8 0($0), $pop3
958 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push5=, $2
959 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push4=, $18
960 ; NO-SIMD128-FAST-NEXT:    i32.gt_s $push6=, $pop5, $pop4
961 ; NO-SIMD128-FAST-NEXT:    i32.select $push7=, $2, $18, $pop6
962 ; NO-SIMD128-FAST-NEXT:    i32.store8 1($0), $pop7
963 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push9=, $3
964 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push8=, $19
965 ; NO-SIMD128-FAST-NEXT:    i32.gt_s $push10=, $pop9, $pop8
966 ; NO-SIMD128-FAST-NEXT:    i32.select $push11=, $3, $19, $pop10
967 ; NO-SIMD128-FAST-NEXT:    i32.store8 2($0), $pop11
968 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push13=, $4
969 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push12=, $20
970 ; NO-SIMD128-FAST-NEXT:    i32.gt_s $push14=, $pop13, $pop12
971 ; NO-SIMD128-FAST-NEXT:    i32.select $push15=, $4, $20, $pop14
972 ; NO-SIMD128-FAST-NEXT:    i32.store8 3($0), $pop15
973 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push17=, $5
974 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push16=, $21
975 ; NO-SIMD128-FAST-NEXT:    i32.gt_s $push18=, $pop17, $pop16
976 ; NO-SIMD128-FAST-NEXT:    i32.select $push19=, $5, $21, $pop18
977 ; NO-SIMD128-FAST-NEXT:    i32.store8 4($0), $pop19
978 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push21=, $6
979 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push20=, $22
980 ; NO-SIMD128-FAST-NEXT:    i32.gt_s $push22=, $pop21, $pop20
981 ; NO-SIMD128-FAST-NEXT:    i32.select $push23=, $6, $22, $pop22
982 ; NO-SIMD128-FAST-NEXT:    i32.store8 5($0), $pop23
983 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push25=, $7
984 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push24=, $23
985 ; NO-SIMD128-FAST-NEXT:    i32.gt_s $push26=, $pop25, $pop24
986 ; NO-SIMD128-FAST-NEXT:    i32.select $push27=, $7, $23, $pop26
987 ; NO-SIMD128-FAST-NEXT:    i32.store8 6($0), $pop27
988 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push29=, $8
989 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push28=, $24
990 ; NO-SIMD128-FAST-NEXT:    i32.gt_s $push30=, $pop29, $pop28
991 ; NO-SIMD128-FAST-NEXT:    i32.select $push31=, $8, $24, $pop30
992 ; NO-SIMD128-FAST-NEXT:    i32.store8 7($0), $pop31
993 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push33=, $9
994 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push32=, $25
995 ; NO-SIMD128-FAST-NEXT:    i32.gt_s $push34=, $pop33, $pop32
996 ; NO-SIMD128-FAST-NEXT:    i32.select $push35=, $9, $25, $pop34
997 ; NO-SIMD128-FAST-NEXT:    i32.store8 8($0), $pop35
998 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push37=, $10
999 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push36=, $26
1000 ; NO-SIMD128-FAST-NEXT:    i32.gt_s $push38=, $pop37, $pop36
1001 ; NO-SIMD128-FAST-NEXT:    i32.select $push39=, $10, $26, $pop38
1002 ; NO-SIMD128-FAST-NEXT:    i32.store8 9($0), $pop39
1003 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push41=, $11
1004 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push40=, $27
1005 ; NO-SIMD128-FAST-NEXT:    i32.gt_s $push42=, $pop41, $pop40
1006 ; NO-SIMD128-FAST-NEXT:    i32.select $push43=, $11, $27, $pop42
1007 ; NO-SIMD128-FAST-NEXT:    i32.store8 10($0), $pop43
1008 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push45=, $12
1009 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push44=, $28
1010 ; NO-SIMD128-FAST-NEXT:    i32.gt_s $push46=, $pop45, $pop44
1011 ; NO-SIMD128-FAST-NEXT:    i32.select $push47=, $12, $28, $pop46
1012 ; NO-SIMD128-FAST-NEXT:    i32.store8 11($0), $pop47
1013 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push49=, $13
1014 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push48=, $29
1015 ; NO-SIMD128-FAST-NEXT:    i32.gt_s $push50=, $pop49, $pop48
1016 ; NO-SIMD128-FAST-NEXT:    i32.select $push51=, $13, $29, $pop50
1017 ; NO-SIMD128-FAST-NEXT:    i32.store8 12($0), $pop51
1018 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push53=, $14
1019 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push52=, $30
1020 ; NO-SIMD128-FAST-NEXT:    i32.gt_s $push54=, $pop53, $pop52
1021 ; NO-SIMD128-FAST-NEXT:    i32.select $push55=, $14, $30, $pop54
1022 ; NO-SIMD128-FAST-NEXT:    i32.store8 13($0), $pop55
1023 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push57=, $15
1024 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push56=, $31
1025 ; NO-SIMD128-FAST-NEXT:    i32.gt_s $push58=, $pop57, $pop56
1026 ; NO-SIMD128-FAST-NEXT:    i32.select $push59=, $15, $31, $pop58
1027 ; NO-SIMD128-FAST-NEXT:    i32.store8 14($0), $pop59
1028 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push61=, $16
1029 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push60=, $32
1030 ; NO-SIMD128-FAST-NEXT:    i32.gt_s $push62=, $pop61, $pop60
1031 ; NO-SIMD128-FAST-NEXT:    i32.select $push63=, $16, $32, $pop62
1032 ; NO-SIMD128-FAST-NEXT:    i32.store8 15($0), $pop63
1033 ; NO-SIMD128-FAST-NEXT:    return
1034   %c = icmp sgt <16 x i8> %x, %y
1035   %a = select <16 x i1> %c, <16 x i8> %x, <16 x i8> %y
1036   ret <16 x i8> %a
1039 define <16 x i8> @max_u_v16i8(<16 x i8> %x, <16 x i8> %y) {
1040 ; SIMD128-LABEL: max_u_v16i8:
1041 ; SIMD128:         .functype max_u_v16i8 (v128, v128) -> (v128)
1042 ; SIMD128-NEXT:  # %bb.0:
1043 ; SIMD128-NEXT:    i8x16.max_u $push0=, $0, $1
1044 ; SIMD128-NEXT:    return $pop0
1046 ; SIMD128-FAST-LABEL: max_u_v16i8:
1047 ; SIMD128-FAST:         .functype max_u_v16i8 (v128, v128) -> (v128)
1048 ; SIMD128-FAST-NEXT:  # %bb.0:
1049 ; SIMD128-FAST-NEXT:    i8x16.max_u $push0=, $0, $1
1050 ; SIMD128-FAST-NEXT:    return $pop0
1052 ; NO-SIMD128-LABEL: max_u_v16i8:
1053 ; 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) -> ()
1054 ; NO-SIMD128-NEXT:  # %bb.0:
1055 ; NO-SIMD128-NEXT:    i32.const $push0=, 255
1056 ; NO-SIMD128-NEXT:    i32.and $push2=, $16, $pop0
1057 ; NO-SIMD128-NEXT:    i32.const $push95=, 255
1058 ; NO-SIMD128-NEXT:    i32.and $push1=, $32, $pop95
1059 ; NO-SIMD128-NEXT:    i32.gt_u $push3=, $pop2, $pop1
1060 ; NO-SIMD128-NEXT:    i32.select $push4=, $16, $32, $pop3
1061 ; NO-SIMD128-NEXT:    i32.store8 15($0), $pop4
1062 ; NO-SIMD128-NEXT:    i32.const $push94=, 255
1063 ; NO-SIMD128-NEXT:    i32.and $push6=, $15, $pop94
1064 ; NO-SIMD128-NEXT:    i32.const $push93=, 255
1065 ; NO-SIMD128-NEXT:    i32.and $push5=, $31, $pop93
1066 ; NO-SIMD128-NEXT:    i32.gt_u $push7=, $pop6, $pop5
1067 ; NO-SIMD128-NEXT:    i32.select $push8=, $15, $31, $pop7
1068 ; NO-SIMD128-NEXT:    i32.store8 14($0), $pop8
1069 ; NO-SIMD128-NEXT:    i32.const $push92=, 255
1070 ; NO-SIMD128-NEXT:    i32.and $push10=, $14, $pop92
1071 ; NO-SIMD128-NEXT:    i32.const $push91=, 255
1072 ; NO-SIMD128-NEXT:    i32.and $push9=, $30, $pop91
1073 ; NO-SIMD128-NEXT:    i32.gt_u $push11=, $pop10, $pop9
1074 ; NO-SIMD128-NEXT:    i32.select $push12=, $14, $30, $pop11
1075 ; NO-SIMD128-NEXT:    i32.store8 13($0), $pop12
1076 ; NO-SIMD128-NEXT:    i32.const $push90=, 255
1077 ; NO-SIMD128-NEXT:    i32.and $push14=, $13, $pop90
1078 ; NO-SIMD128-NEXT:    i32.const $push89=, 255
1079 ; NO-SIMD128-NEXT:    i32.and $push13=, $29, $pop89
1080 ; NO-SIMD128-NEXT:    i32.gt_u $push15=, $pop14, $pop13
1081 ; NO-SIMD128-NEXT:    i32.select $push16=, $13, $29, $pop15
1082 ; NO-SIMD128-NEXT:    i32.store8 12($0), $pop16
1083 ; NO-SIMD128-NEXT:    i32.const $push88=, 255
1084 ; NO-SIMD128-NEXT:    i32.and $push18=, $12, $pop88
1085 ; NO-SIMD128-NEXT:    i32.const $push87=, 255
1086 ; NO-SIMD128-NEXT:    i32.and $push17=, $28, $pop87
1087 ; NO-SIMD128-NEXT:    i32.gt_u $push19=, $pop18, $pop17
1088 ; NO-SIMD128-NEXT:    i32.select $push20=, $12, $28, $pop19
1089 ; NO-SIMD128-NEXT:    i32.store8 11($0), $pop20
1090 ; NO-SIMD128-NEXT:    i32.const $push86=, 255
1091 ; NO-SIMD128-NEXT:    i32.and $push22=, $11, $pop86
1092 ; NO-SIMD128-NEXT:    i32.const $push85=, 255
1093 ; NO-SIMD128-NEXT:    i32.and $push21=, $27, $pop85
1094 ; NO-SIMD128-NEXT:    i32.gt_u $push23=, $pop22, $pop21
1095 ; NO-SIMD128-NEXT:    i32.select $push24=, $11, $27, $pop23
1096 ; NO-SIMD128-NEXT:    i32.store8 10($0), $pop24
1097 ; NO-SIMD128-NEXT:    i32.const $push84=, 255
1098 ; NO-SIMD128-NEXT:    i32.and $push26=, $10, $pop84
1099 ; NO-SIMD128-NEXT:    i32.const $push83=, 255
1100 ; NO-SIMD128-NEXT:    i32.and $push25=, $26, $pop83
1101 ; NO-SIMD128-NEXT:    i32.gt_u $push27=, $pop26, $pop25
1102 ; NO-SIMD128-NEXT:    i32.select $push28=, $10, $26, $pop27
1103 ; NO-SIMD128-NEXT:    i32.store8 9($0), $pop28
1104 ; NO-SIMD128-NEXT:    i32.const $push82=, 255
1105 ; NO-SIMD128-NEXT:    i32.and $push30=, $9, $pop82
1106 ; NO-SIMD128-NEXT:    i32.const $push81=, 255
1107 ; NO-SIMD128-NEXT:    i32.and $push29=, $25, $pop81
1108 ; NO-SIMD128-NEXT:    i32.gt_u $push31=, $pop30, $pop29
1109 ; NO-SIMD128-NEXT:    i32.select $push32=, $9, $25, $pop31
1110 ; NO-SIMD128-NEXT:    i32.store8 8($0), $pop32
1111 ; NO-SIMD128-NEXT:    i32.const $push80=, 255
1112 ; NO-SIMD128-NEXT:    i32.and $push34=, $8, $pop80
1113 ; NO-SIMD128-NEXT:    i32.const $push79=, 255
1114 ; NO-SIMD128-NEXT:    i32.and $push33=, $24, $pop79
1115 ; NO-SIMD128-NEXT:    i32.gt_u $push35=, $pop34, $pop33
1116 ; NO-SIMD128-NEXT:    i32.select $push36=, $8, $24, $pop35
1117 ; NO-SIMD128-NEXT:    i32.store8 7($0), $pop36
1118 ; NO-SIMD128-NEXT:    i32.const $push78=, 255
1119 ; NO-SIMD128-NEXT:    i32.and $push38=, $7, $pop78
1120 ; NO-SIMD128-NEXT:    i32.const $push77=, 255
1121 ; NO-SIMD128-NEXT:    i32.and $push37=, $23, $pop77
1122 ; NO-SIMD128-NEXT:    i32.gt_u $push39=, $pop38, $pop37
1123 ; NO-SIMD128-NEXT:    i32.select $push40=, $7, $23, $pop39
1124 ; NO-SIMD128-NEXT:    i32.store8 6($0), $pop40
1125 ; NO-SIMD128-NEXT:    i32.const $push76=, 255
1126 ; NO-SIMD128-NEXT:    i32.and $push42=, $6, $pop76
1127 ; NO-SIMD128-NEXT:    i32.const $push75=, 255
1128 ; NO-SIMD128-NEXT:    i32.and $push41=, $22, $pop75
1129 ; NO-SIMD128-NEXT:    i32.gt_u $push43=, $pop42, $pop41
1130 ; NO-SIMD128-NEXT:    i32.select $push44=, $6, $22, $pop43
1131 ; NO-SIMD128-NEXT:    i32.store8 5($0), $pop44
1132 ; NO-SIMD128-NEXT:    i32.const $push74=, 255
1133 ; NO-SIMD128-NEXT:    i32.and $push46=, $5, $pop74
1134 ; NO-SIMD128-NEXT:    i32.const $push73=, 255
1135 ; NO-SIMD128-NEXT:    i32.and $push45=, $21, $pop73
1136 ; NO-SIMD128-NEXT:    i32.gt_u $push47=, $pop46, $pop45
1137 ; NO-SIMD128-NEXT:    i32.select $push48=, $5, $21, $pop47
1138 ; NO-SIMD128-NEXT:    i32.store8 4($0), $pop48
1139 ; NO-SIMD128-NEXT:    i32.const $push72=, 255
1140 ; NO-SIMD128-NEXT:    i32.and $push50=, $4, $pop72
1141 ; NO-SIMD128-NEXT:    i32.const $push71=, 255
1142 ; NO-SIMD128-NEXT:    i32.and $push49=, $20, $pop71
1143 ; NO-SIMD128-NEXT:    i32.gt_u $push51=, $pop50, $pop49
1144 ; NO-SIMD128-NEXT:    i32.select $push52=, $4, $20, $pop51
1145 ; NO-SIMD128-NEXT:    i32.store8 3($0), $pop52
1146 ; NO-SIMD128-NEXT:    i32.const $push70=, 255
1147 ; NO-SIMD128-NEXT:    i32.and $push54=, $3, $pop70
1148 ; NO-SIMD128-NEXT:    i32.const $push69=, 255
1149 ; NO-SIMD128-NEXT:    i32.and $push53=, $19, $pop69
1150 ; NO-SIMD128-NEXT:    i32.gt_u $push55=, $pop54, $pop53
1151 ; NO-SIMD128-NEXT:    i32.select $push56=, $3, $19, $pop55
1152 ; NO-SIMD128-NEXT:    i32.store8 2($0), $pop56
1153 ; NO-SIMD128-NEXT:    i32.const $push68=, 255
1154 ; NO-SIMD128-NEXT:    i32.and $push58=, $2, $pop68
1155 ; NO-SIMD128-NEXT:    i32.const $push67=, 255
1156 ; NO-SIMD128-NEXT:    i32.and $push57=, $18, $pop67
1157 ; NO-SIMD128-NEXT:    i32.gt_u $push59=, $pop58, $pop57
1158 ; NO-SIMD128-NEXT:    i32.select $push60=, $2, $18, $pop59
1159 ; NO-SIMD128-NEXT:    i32.store8 1($0), $pop60
1160 ; NO-SIMD128-NEXT:    i32.const $push66=, 255
1161 ; NO-SIMD128-NEXT:    i32.and $push62=, $1, $pop66
1162 ; NO-SIMD128-NEXT:    i32.const $push65=, 255
1163 ; NO-SIMD128-NEXT:    i32.and $push61=, $17, $pop65
1164 ; NO-SIMD128-NEXT:    i32.gt_u $push63=, $pop62, $pop61
1165 ; NO-SIMD128-NEXT:    i32.select $push64=, $1, $17, $pop63
1166 ; NO-SIMD128-NEXT:    i32.store8 0($0), $pop64
1167 ; NO-SIMD128-NEXT:    return
1169 ; NO-SIMD128-FAST-LABEL: max_u_v16i8:
1170 ; 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) -> ()
1171 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
1172 ; NO-SIMD128-FAST-NEXT:    i32.const $push0=, 255
1173 ; NO-SIMD128-FAST-NEXT:    i32.and $push2=, $1, $pop0
1174 ; NO-SIMD128-FAST-NEXT:    i32.const $push95=, 255
1175 ; NO-SIMD128-FAST-NEXT:    i32.and $push1=, $17, $pop95
1176 ; NO-SIMD128-FAST-NEXT:    i32.gt_u $push3=, $pop2, $pop1
1177 ; NO-SIMD128-FAST-NEXT:    i32.select $push4=, $1, $17, $pop3
1178 ; NO-SIMD128-FAST-NEXT:    i32.store8 0($0), $pop4
1179 ; NO-SIMD128-FAST-NEXT:    i32.const $push94=, 255
1180 ; NO-SIMD128-FAST-NEXT:    i32.and $push6=, $2, $pop94
1181 ; NO-SIMD128-FAST-NEXT:    i32.const $push93=, 255
1182 ; NO-SIMD128-FAST-NEXT:    i32.and $push5=, $18, $pop93
1183 ; NO-SIMD128-FAST-NEXT:    i32.gt_u $push7=, $pop6, $pop5
1184 ; NO-SIMD128-FAST-NEXT:    i32.select $push8=, $2, $18, $pop7
1185 ; NO-SIMD128-FAST-NEXT:    i32.store8 1($0), $pop8
1186 ; NO-SIMD128-FAST-NEXT:    i32.const $push92=, 255
1187 ; NO-SIMD128-FAST-NEXT:    i32.and $push10=, $3, $pop92
1188 ; NO-SIMD128-FAST-NEXT:    i32.const $push91=, 255
1189 ; NO-SIMD128-FAST-NEXT:    i32.and $push9=, $19, $pop91
1190 ; NO-SIMD128-FAST-NEXT:    i32.gt_u $push11=, $pop10, $pop9
1191 ; NO-SIMD128-FAST-NEXT:    i32.select $push12=, $3, $19, $pop11
1192 ; NO-SIMD128-FAST-NEXT:    i32.store8 2($0), $pop12
1193 ; NO-SIMD128-FAST-NEXT:    i32.const $push90=, 255
1194 ; NO-SIMD128-FAST-NEXT:    i32.and $push14=, $4, $pop90
1195 ; NO-SIMD128-FAST-NEXT:    i32.const $push89=, 255
1196 ; NO-SIMD128-FAST-NEXT:    i32.and $push13=, $20, $pop89
1197 ; NO-SIMD128-FAST-NEXT:    i32.gt_u $push15=, $pop14, $pop13
1198 ; NO-SIMD128-FAST-NEXT:    i32.select $push16=, $4, $20, $pop15
1199 ; NO-SIMD128-FAST-NEXT:    i32.store8 3($0), $pop16
1200 ; NO-SIMD128-FAST-NEXT:    i32.const $push88=, 255
1201 ; NO-SIMD128-FAST-NEXT:    i32.and $push18=, $5, $pop88
1202 ; NO-SIMD128-FAST-NEXT:    i32.const $push87=, 255
1203 ; NO-SIMD128-FAST-NEXT:    i32.and $push17=, $21, $pop87
1204 ; NO-SIMD128-FAST-NEXT:    i32.gt_u $push19=, $pop18, $pop17
1205 ; NO-SIMD128-FAST-NEXT:    i32.select $push20=, $5, $21, $pop19
1206 ; NO-SIMD128-FAST-NEXT:    i32.store8 4($0), $pop20
1207 ; NO-SIMD128-FAST-NEXT:    i32.const $push86=, 255
1208 ; NO-SIMD128-FAST-NEXT:    i32.and $push22=, $6, $pop86
1209 ; NO-SIMD128-FAST-NEXT:    i32.const $push85=, 255
1210 ; NO-SIMD128-FAST-NEXT:    i32.and $push21=, $22, $pop85
1211 ; NO-SIMD128-FAST-NEXT:    i32.gt_u $push23=, $pop22, $pop21
1212 ; NO-SIMD128-FAST-NEXT:    i32.select $push24=, $6, $22, $pop23
1213 ; NO-SIMD128-FAST-NEXT:    i32.store8 5($0), $pop24
1214 ; NO-SIMD128-FAST-NEXT:    i32.const $push84=, 255
1215 ; NO-SIMD128-FAST-NEXT:    i32.and $push26=, $7, $pop84
1216 ; NO-SIMD128-FAST-NEXT:    i32.const $push83=, 255
1217 ; NO-SIMD128-FAST-NEXT:    i32.and $push25=, $23, $pop83
1218 ; NO-SIMD128-FAST-NEXT:    i32.gt_u $push27=, $pop26, $pop25
1219 ; NO-SIMD128-FAST-NEXT:    i32.select $push28=, $7, $23, $pop27
1220 ; NO-SIMD128-FAST-NEXT:    i32.store8 6($0), $pop28
1221 ; NO-SIMD128-FAST-NEXT:    i32.const $push82=, 255
1222 ; NO-SIMD128-FAST-NEXT:    i32.and $push30=, $8, $pop82
1223 ; NO-SIMD128-FAST-NEXT:    i32.const $push81=, 255
1224 ; NO-SIMD128-FAST-NEXT:    i32.and $push29=, $24, $pop81
1225 ; NO-SIMD128-FAST-NEXT:    i32.gt_u $push31=, $pop30, $pop29
1226 ; NO-SIMD128-FAST-NEXT:    i32.select $push32=, $8, $24, $pop31
1227 ; NO-SIMD128-FAST-NEXT:    i32.store8 7($0), $pop32
1228 ; NO-SIMD128-FAST-NEXT:    i32.const $push80=, 255
1229 ; NO-SIMD128-FAST-NEXT:    i32.and $push34=, $9, $pop80
1230 ; NO-SIMD128-FAST-NEXT:    i32.const $push79=, 255
1231 ; NO-SIMD128-FAST-NEXT:    i32.and $push33=, $25, $pop79
1232 ; NO-SIMD128-FAST-NEXT:    i32.gt_u $push35=, $pop34, $pop33
1233 ; NO-SIMD128-FAST-NEXT:    i32.select $push36=, $9, $25, $pop35
1234 ; NO-SIMD128-FAST-NEXT:    i32.store8 8($0), $pop36
1235 ; NO-SIMD128-FAST-NEXT:    i32.const $push78=, 255
1236 ; NO-SIMD128-FAST-NEXT:    i32.and $push38=, $10, $pop78
1237 ; NO-SIMD128-FAST-NEXT:    i32.const $push77=, 255
1238 ; NO-SIMD128-FAST-NEXT:    i32.and $push37=, $26, $pop77
1239 ; NO-SIMD128-FAST-NEXT:    i32.gt_u $push39=, $pop38, $pop37
1240 ; NO-SIMD128-FAST-NEXT:    i32.select $push40=, $10, $26, $pop39
1241 ; NO-SIMD128-FAST-NEXT:    i32.store8 9($0), $pop40
1242 ; NO-SIMD128-FAST-NEXT:    i32.const $push76=, 255
1243 ; NO-SIMD128-FAST-NEXT:    i32.and $push42=, $11, $pop76
1244 ; NO-SIMD128-FAST-NEXT:    i32.const $push75=, 255
1245 ; NO-SIMD128-FAST-NEXT:    i32.and $push41=, $27, $pop75
1246 ; NO-SIMD128-FAST-NEXT:    i32.gt_u $push43=, $pop42, $pop41
1247 ; NO-SIMD128-FAST-NEXT:    i32.select $push44=, $11, $27, $pop43
1248 ; NO-SIMD128-FAST-NEXT:    i32.store8 10($0), $pop44
1249 ; NO-SIMD128-FAST-NEXT:    i32.const $push74=, 255
1250 ; NO-SIMD128-FAST-NEXT:    i32.and $push46=, $12, $pop74
1251 ; NO-SIMD128-FAST-NEXT:    i32.const $push73=, 255
1252 ; NO-SIMD128-FAST-NEXT:    i32.and $push45=, $28, $pop73
1253 ; NO-SIMD128-FAST-NEXT:    i32.gt_u $push47=, $pop46, $pop45
1254 ; NO-SIMD128-FAST-NEXT:    i32.select $push48=, $12, $28, $pop47
1255 ; NO-SIMD128-FAST-NEXT:    i32.store8 11($0), $pop48
1256 ; NO-SIMD128-FAST-NEXT:    i32.const $push72=, 255
1257 ; NO-SIMD128-FAST-NEXT:    i32.and $push50=, $13, $pop72
1258 ; NO-SIMD128-FAST-NEXT:    i32.const $push71=, 255
1259 ; NO-SIMD128-FAST-NEXT:    i32.and $push49=, $29, $pop71
1260 ; NO-SIMD128-FAST-NEXT:    i32.gt_u $push51=, $pop50, $pop49
1261 ; NO-SIMD128-FAST-NEXT:    i32.select $push52=, $13, $29, $pop51
1262 ; NO-SIMD128-FAST-NEXT:    i32.store8 12($0), $pop52
1263 ; NO-SIMD128-FAST-NEXT:    i32.const $push70=, 255
1264 ; NO-SIMD128-FAST-NEXT:    i32.and $push54=, $14, $pop70
1265 ; NO-SIMD128-FAST-NEXT:    i32.const $push69=, 255
1266 ; NO-SIMD128-FAST-NEXT:    i32.and $push53=, $30, $pop69
1267 ; NO-SIMD128-FAST-NEXT:    i32.gt_u $push55=, $pop54, $pop53
1268 ; NO-SIMD128-FAST-NEXT:    i32.select $push56=, $14, $30, $pop55
1269 ; NO-SIMD128-FAST-NEXT:    i32.store8 13($0), $pop56
1270 ; NO-SIMD128-FAST-NEXT:    i32.const $push68=, 255
1271 ; NO-SIMD128-FAST-NEXT:    i32.and $push58=, $15, $pop68
1272 ; NO-SIMD128-FAST-NEXT:    i32.const $push67=, 255
1273 ; NO-SIMD128-FAST-NEXT:    i32.and $push57=, $31, $pop67
1274 ; NO-SIMD128-FAST-NEXT:    i32.gt_u $push59=, $pop58, $pop57
1275 ; NO-SIMD128-FAST-NEXT:    i32.select $push60=, $15, $31, $pop59
1276 ; NO-SIMD128-FAST-NEXT:    i32.store8 14($0), $pop60
1277 ; NO-SIMD128-FAST-NEXT:    i32.const $push66=, 255
1278 ; NO-SIMD128-FAST-NEXT:    i32.and $push62=, $16, $pop66
1279 ; NO-SIMD128-FAST-NEXT:    i32.const $push65=, 255
1280 ; NO-SIMD128-FAST-NEXT:    i32.and $push61=, $32, $pop65
1281 ; NO-SIMD128-FAST-NEXT:    i32.gt_u $push63=, $pop62, $pop61
1282 ; NO-SIMD128-FAST-NEXT:    i32.select $push64=, $16, $32, $pop63
1283 ; NO-SIMD128-FAST-NEXT:    i32.store8 15($0), $pop64
1284 ; NO-SIMD128-FAST-NEXT:    return
1285   %c = icmp ugt <16 x i8> %x, %y
1286   %a = select <16 x i1> %c, <16 x i8> %x, <16 x i8> %y
1287   ret <16 x i8> %a
1290 define <16 x i8> @avgr_u_v16i8(<16 x i8> %x, <16 x i8> %y) {
1291 ; SIMD128-LABEL: avgr_u_v16i8:
1292 ; SIMD128:         .functype avgr_u_v16i8 (v128, v128) -> (v128)
1293 ; SIMD128-NEXT:  # %bb.0:
1294 ; SIMD128-NEXT:    i8x16.avgr_u $push0=, $0, $1
1295 ; SIMD128-NEXT:    return $pop0
1297 ; SIMD128-FAST-LABEL: avgr_u_v16i8:
1298 ; SIMD128-FAST:         .functype avgr_u_v16i8 (v128, v128) -> (v128)
1299 ; SIMD128-FAST-NEXT:  # %bb.0:
1300 ; SIMD128-FAST-NEXT:    i8x16.avgr_u $push0=, $0, $1
1301 ; SIMD128-FAST-NEXT:    return $pop0
1303 ; NO-SIMD128-LABEL: avgr_u_v16i8:
1304 ; 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) -> ()
1305 ; NO-SIMD128-NEXT:  # %bb.0:
1306 ; NO-SIMD128-NEXT:    i32.add $push0=, $16, $32
1307 ; NO-SIMD128-NEXT:    i32.const $push1=, 1
1308 ; NO-SIMD128-NEXT:    i32.add $push2=, $pop0, $pop1
1309 ; NO-SIMD128-NEXT:    i32.const $push3=, 254
1310 ; NO-SIMD128-NEXT:    i32.and $push4=, $pop2, $pop3
1311 ; NO-SIMD128-NEXT:    i32.const $push111=, 1
1312 ; NO-SIMD128-NEXT:    i32.shr_u $push5=, $pop4, $pop111
1313 ; NO-SIMD128-NEXT:    i32.store8 15($0), $pop5
1314 ; NO-SIMD128-NEXT:    i32.add $push6=, $15, $31
1315 ; NO-SIMD128-NEXT:    i32.const $push110=, 1
1316 ; NO-SIMD128-NEXT:    i32.add $push7=, $pop6, $pop110
1317 ; NO-SIMD128-NEXT:    i32.const $push109=, 254
1318 ; NO-SIMD128-NEXT:    i32.and $push8=, $pop7, $pop109
1319 ; NO-SIMD128-NEXT:    i32.const $push108=, 1
1320 ; NO-SIMD128-NEXT:    i32.shr_u $push9=, $pop8, $pop108
1321 ; NO-SIMD128-NEXT:    i32.store8 14($0), $pop9
1322 ; NO-SIMD128-NEXT:    i32.add $push10=, $14, $30
1323 ; NO-SIMD128-NEXT:    i32.const $push107=, 1
1324 ; NO-SIMD128-NEXT:    i32.add $push11=, $pop10, $pop107
1325 ; NO-SIMD128-NEXT:    i32.const $push106=, 254
1326 ; NO-SIMD128-NEXT:    i32.and $push12=, $pop11, $pop106
1327 ; NO-SIMD128-NEXT:    i32.const $push105=, 1
1328 ; NO-SIMD128-NEXT:    i32.shr_u $push13=, $pop12, $pop105
1329 ; NO-SIMD128-NEXT:    i32.store8 13($0), $pop13
1330 ; NO-SIMD128-NEXT:    i32.add $push14=, $13, $29
1331 ; NO-SIMD128-NEXT:    i32.const $push104=, 1
1332 ; NO-SIMD128-NEXT:    i32.add $push15=, $pop14, $pop104
1333 ; NO-SIMD128-NEXT:    i32.const $push103=, 254
1334 ; NO-SIMD128-NEXT:    i32.and $push16=, $pop15, $pop103
1335 ; NO-SIMD128-NEXT:    i32.const $push102=, 1
1336 ; NO-SIMD128-NEXT:    i32.shr_u $push17=, $pop16, $pop102
1337 ; NO-SIMD128-NEXT:    i32.store8 12($0), $pop17
1338 ; NO-SIMD128-NEXT:    i32.add $push18=, $12, $28
1339 ; NO-SIMD128-NEXT:    i32.const $push101=, 1
1340 ; NO-SIMD128-NEXT:    i32.add $push19=, $pop18, $pop101
1341 ; NO-SIMD128-NEXT:    i32.const $push100=, 254
1342 ; NO-SIMD128-NEXT:    i32.and $push20=, $pop19, $pop100
1343 ; NO-SIMD128-NEXT:    i32.const $push99=, 1
1344 ; NO-SIMD128-NEXT:    i32.shr_u $push21=, $pop20, $pop99
1345 ; NO-SIMD128-NEXT:    i32.store8 11($0), $pop21
1346 ; NO-SIMD128-NEXT:    i32.add $push22=, $11, $27
1347 ; NO-SIMD128-NEXT:    i32.const $push98=, 1
1348 ; NO-SIMD128-NEXT:    i32.add $push23=, $pop22, $pop98
1349 ; NO-SIMD128-NEXT:    i32.const $push97=, 254
1350 ; NO-SIMD128-NEXT:    i32.and $push24=, $pop23, $pop97
1351 ; NO-SIMD128-NEXT:    i32.const $push96=, 1
1352 ; NO-SIMD128-NEXT:    i32.shr_u $push25=, $pop24, $pop96
1353 ; NO-SIMD128-NEXT:    i32.store8 10($0), $pop25
1354 ; NO-SIMD128-NEXT:    i32.add $push26=, $10, $26
1355 ; NO-SIMD128-NEXT:    i32.const $push95=, 1
1356 ; NO-SIMD128-NEXT:    i32.add $push27=, $pop26, $pop95
1357 ; NO-SIMD128-NEXT:    i32.const $push94=, 254
1358 ; NO-SIMD128-NEXT:    i32.and $push28=, $pop27, $pop94
1359 ; NO-SIMD128-NEXT:    i32.const $push93=, 1
1360 ; NO-SIMD128-NEXT:    i32.shr_u $push29=, $pop28, $pop93
1361 ; NO-SIMD128-NEXT:    i32.store8 9($0), $pop29
1362 ; NO-SIMD128-NEXT:    i32.add $push30=, $9, $25
1363 ; NO-SIMD128-NEXT:    i32.const $push92=, 1
1364 ; NO-SIMD128-NEXT:    i32.add $push31=, $pop30, $pop92
1365 ; NO-SIMD128-NEXT:    i32.const $push91=, 254
1366 ; NO-SIMD128-NEXT:    i32.and $push32=, $pop31, $pop91
1367 ; NO-SIMD128-NEXT:    i32.const $push90=, 1
1368 ; NO-SIMD128-NEXT:    i32.shr_u $push33=, $pop32, $pop90
1369 ; NO-SIMD128-NEXT:    i32.store8 8($0), $pop33
1370 ; NO-SIMD128-NEXT:    i32.add $push34=, $8, $24
1371 ; NO-SIMD128-NEXT:    i32.const $push89=, 1
1372 ; NO-SIMD128-NEXT:    i32.add $push35=, $pop34, $pop89
1373 ; NO-SIMD128-NEXT:    i32.const $push88=, 254
1374 ; NO-SIMD128-NEXT:    i32.and $push36=, $pop35, $pop88
1375 ; NO-SIMD128-NEXT:    i32.const $push87=, 1
1376 ; NO-SIMD128-NEXT:    i32.shr_u $push37=, $pop36, $pop87
1377 ; NO-SIMD128-NEXT:    i32.store8 7($0), $pop37
1378 ; NO-SIMD128-NEXT:    i32.add $push38=, $7, $23
1379 ; NO-SIMD128-NEXT:    i32.const $push86=, 1
1380 ; NO-SIMD128-NEXT:    i32.add $push39=, $pop38, $pop86
1381 ; NO-SIMD128-NEXT:    i32.const $push85=, 254
1382 ; NO-SIMD128-NEXT:    i32.and $push40=, $pop39, $pop85
1383 ; NO-SIMD128-NEXT:    i32.const $push84=, 1
1384 ; NO-SIMD128-NEXT:    i32.shr_u $push41=, $pop40, $pop84
1385 ; NO-SIMD128-NEXT:    i32.store8 6($0), $pop41
1386 ; NO-SIMD128-NEXT:    i32.add $push42=, $6, $22
1387 ; NO-SIMD128-NEXT:    i32.const $push83=, 1
1388 ; NO-SIMD128-NEXT:    i32.add $push43=, $pop42, $pop83
1389 ; NO-SIMD128-NEXT:    i32.const $push82=, 254
1390 ; NO-SIMD128-NEXT:    i32.and $push44=, $pop43, $pop82
1391 ; NO-SIMD128-NEXT:    i32.const $push81=, 1
1392 ; NO-SIMD128-NEXT:    i32.shr_u $push45=, $pop44, $pop81
1393 ; NO-SIMD128-NEXT:    i32.store8 5($0), $pop45
1394 ; NO-SIMD128-NEXT:    i32.add $push46=, $5, $21
1395 ; NO-SIMD128-NEXT:    i32.const $push80=, 1
1396 ; NO-SIMD128-NEXT:    i32.add $push47=, $pop46, $pop80
1397 ; NO-SIMD128-NEXT:    i32.const $push79=, 254
1398 ; NO-SIMD128-NEXT:    i32.and $push48=, $pop47, $pop79
1399 ; NO-SIMD128-NEXT:    i32.const $push78=, 1
1400 ; NO-SIMD128-NEXT:    i32.shr_u $push49=, $pop48, $pop78
1401 ; NO-SIMD128-NEXT:    i32.store8 4($0), $pop49
1402 ; NO-SIMD128-NEXT:    i32.add $push50=, $4, $20
1403 ; NO-SIMD128-NEXT:    i32.const $push77=, 1
1404 ; NO-SIMD128-NEXT:    i32.add $push51=, $pop50, $pop77
1405 ; NO-SIMD128-NEXT:    i32.const $push76=, 254
1406 ; NO-SIMD128-NEXT:    i32.and $push52=, $pop51, $pop76
1407 ; NO-SIMD128-NEXT:    i32.const $push75=, 1
1408 ; NO-SIMD128-NEXT:    i32.shr_u $push53=, $pop52, $pop75
1409 ; NO-SIMD128-NEXT:    i32.store8 3($0), $pop53
1410 ; NO-SIMD128-NEXT:    i32.add $push54=, $3, $19
1411 ; NO-SIMD128-NEXT:    i32.const $push74=, 1
1412 ; NO-SIMD128-NEXT:    i32.add $push55=, $pop54, $pop74
1413 ; NO-SIMD128-NEXT:    i32.const $push73=, 254
1414 ; NO-SIMD128-NEXT:    i32.and $push56=, $pop55, $pop73
1415 ; NO-SIMD128-NEXT:    i32.const $push72=, 1
1416 ; NO-SIMD128-NEXT:    i32.shr_u $push57=, $pop56, $pop72
1417 ; NO-SIMD128-NEXT:    i32.store8 2($0), $pop57
1418 ; NO-SIMD128-NEXT:    i32.add $push58=, $2, $18
1419 ; NO-SIMD128-NEXT:    i32.const $push71=, 1
1420 ; NO-SIMD128-NEXT:    i32.add $push59=, $pop58, $pop71
1421 ; NO-SIMD128-NEXT:    i32.const $push70=, 254
1422 ; NO-SIMD128-NEXT:    i32.and $push60=, $pop59, $pop70
1423 ; NO-SIMD128-NEXT:    i32.const $push69=, 1
1424 ; NO-SIMD128-NEXT:    i32.shr_u $push61=, $pop60, $pop69
1425 ; NO-SIMD128-NEXT:    i32.store8 1($0), $pop61
1426 ; NO-SIMD128-NEXT:    i32.add $push62=, $1, $17
1427 ; NO-SIMD128-NEXT:    i32.const $push68=, 1
1428 ; NO-SIMD128-NEXT:    i32.add $push63=, $pop62, $pop68
1429 ; NO-SIMD128-NEXT:    i32.const $push67=, 254
1430 ; NO-SIMD128-NEXT:    i32.and $push64=, $pop63, $pop67
1431 ; NO-SIMD128-NEXT:    i32.const $push66=, 1
1432 ; NO-SIMD128-NEXT:    i32.shr_u $push65=, $pop64, $pop66
1433 ; NO-SIMD128-NEXT:    i32.store8 0($0), $pop65
1434 ; NO-SIMD128-NEXT:    return
1436 ; NO-SIMD128-FAST-LABEL: avgr_u_v16i8:
1437 ; 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) -> ()
1438 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
1439 ; NO-SIMD128-FAST-NEXT:    i32.add $push0=, $1, $17
1440 ; NO-SIMD128-FAST-NEXT:    i32.const $push1=, 1
1441 ; NO-SIMD128-FAST-NEXT:    i32.add $push2=, $pop0, $pop1
1442 ; NO-SIMD128-FAST-NEXT:    i32.const $push3=, 254
1443 ; NO-SIMD128-FAST-NEXT:    i32.and $push4=, $pop2, $pop3
1444 ; NO-SIMD128-FAST-NEXT:    i32.const $push111=, 1
1445 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push5=, $pop4, $pop111
1446 ; NO-SIMD128-FAST-NEXT:    i32.store8 0($0), $pop5
1447 ; NO-SIMD128-FAST-NEXT:    i32.add $push6=, $2, $18
1448 ; NO-SIMD128-FAST-NEXT:    i32.const $push110=, 1
1449 ; NO-SIMD128-FAST-NEXT:    i32.add $push7=, $pop6, $pop110
1450 ; NO-SIMD128-FAST-NEXT:    i32.const $push109=, 254
1451 ; NO-SIMD128-FAST-NEXT:    i32.and $push8=, $pop7, $pop109
1452 ; NO-SIMD128-FAST-NEXT:    i32.const $push108=, 1
1453 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push9=, $pop8, $pop108
1454 ; NO-SIMD128-FAST-NEXT:    i32.store8 1($0), $pop9
1455 ; NO-SIMD128-FAST-NEXT:    i32.add $push10=, $3, $19
1456 ; NO-SIMD128-FAST-NEXT:    i32.const $push107=, 1
1457 ; NO-SIMD128-FAST-NEXT:    i32.add $push11=, $pop10, $pop107
1458 ; NO-SIMD128-FAST-NEXT:    i32.const $push106=, 254
1459 ; NO-SIMD128-FAST-NEXT:    i32.and $push12=, $pop11, $pop106
1460 ; NO-SIMD128-FAST-NEXT:    i32.const $push105=, 1
1461 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push13=, $pop12, $pop105
1462 ; NO-SIMD128-FAST-NEXT:    i32.store8 2($0), $pop13
1463 ; NO-SIMD128-FAST-NEXT:    i32.add $push14=, $4, $20
1464 ; NO-SIMD128-FAST-NEXT:    i32.const $push104=, 1
1465 ; NO-SIMD128-FAST-NEXT:    i32.add $push15=, $pop14, $pop104
1466 ; NO-SIMD128-FAST-NEXT:    i32.const $push103=, 254
1467 ; NO-SIMD128-FAST-NEXT:    i32.and $push16=, $pop15, $pop103
1468 ; NO-SIMD128-FAST-NEXT:    i32.const $push102=, 1
1469 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push17=, $pop16, $pop102
1470 ; NO-SIMD128-FAST-NEXT:    i32.store8 3($0), $pop17
1471 ; NO-SIMD128-FAST-NEXT:    i32.add $push18=, $5, $21
1472 ; NO-SIMD128-FAST-NEXT:    i32.const $push101=, 1
1473 ; NO-SIMD128-FAST-NEXT:    i32.add $push19=, $pop18, $pop101
1474 ; NO-SIMD128-FAST-NEXT:    i32.const $push100=, 254
1475 ; NO-SIMD128-FAST-NEXT:    i32.and $push20=, $pop19, $pop100
1476 ; NO-SIMD128-FAST-NEXT:    i32.const $push99=, 1
1477 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push21=, $pop20, $pop99
1478 ; NO-SIMD128-FAST-NEXT:    i32.store8 4($0), $pop21
1479 ; NO-SIMD128-FAST-NEXT:    i32.add $push22=, $6, $22
1480 ; NO-SIMD128-FAST-NEXT:    i32.const $push98=, 1
1481 ; NO-SIMD128-FAST-NEXT:    i32.add $push23=, $pop22, $pop98
1482 ; NO-SIMD128-FAST-NEXT:    i32.const $push97=, 254
1483 ; NO-SIMD128-FAST-NEXT:    i32.and $push24=, $pop23, $pop97
1484 ; NO-SIMD128-FAST-NEXT:    i32.const $push96=, 1
1485 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push25=, $pop24, $pop96
1486 ; NO-SIMD128-FAST-NEXT:    i32.store8 5($0), $pop25
1487 ; NO-SIMD128-FAST-NEXT:    i32.add $push26=, $7, $23
1488 ; NO-SIMD128-FAST-NEXT:    i32.const $push95=, 1
1489 ; NO-SIMD128-FAST-NEXT:    i32.add $push27=, $pop26, $pop95
1490 ; NO-SIMD128-FAST-NEXT:    i32.const $push94=, 254
1491 ; NO-SIMD128-FAST-NEXT:    i32.and $push28=, $pop27, $pop94
1492 ; NO-SIMD128-FAST-NEXT:    i32.const $push93=, 1
1493 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push29=, $pop28, $pop93
1494 ; NO-SIMD128-FAST-NEXT:    i32.store8 6($0), $pop29
1495 ; NO-SIMD128-FAST-NEXT:    i32.add $push30=, $8, $24
1496 ; NO-SIMD128-FAST-NEXT:    i32.const $push92=, 1
1497 ; NO-SIMD128-FAST-NEXT:    i32.add $push31=, $pop30, $pop92
1498 ; NO-SIMD128-FAST-NEXT:    i32.const $push91=, 254
1499 ; NO-SIMD128-FAST-NEXT:    i32.and $push32=, $pop31, $pop91
1500 ; NO-SIMD128-FAST-NEXT:    i32.const $push90=, 1
1501 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push33=, $pop32, $pop90
1502 ; NO-SIMD128-FAST-NEXT:    i32.store8 7($0), $pop33
1503 ; NO-SIMD128-FAST-NEXT:    i32.add $push34=, $9, $25
1504 ; NO-SIMD128-FAST-NEXT:    i32.const $push89=, 1
1505 ; NO-SIMD128-FAST-NEXT:    i32.add $push35=, $pop34, $pop89
1506 ; NO-SIMD128-FAST-NEXT:    i32.const $push88=, 254
1507 ; NO-SIMD128-FAST-NEXT:    i32.and $push36=, $pop35, $pop88
1508 ; NO-SIMD128-FAST-NEXT:    i32.const $push87=, 1
1509 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push37=, $pop36, $pop87
1510 ; NO-SIMD128-FAST-NEXT:    i32.store8 8($0), $pop37
1511 ; NO-SIMD128-FAST-NEXT:    i32.add $push38=, $10, $26
1512 ; NO-SIMD128-FAST-NEXT:    i32.const $push86=, 1
1513 ; NO-SIMD128-FAST-NEXT:    i32.add $push39=, $pop38, $pop86
1514 ; NO-SIMD128-FAST-NEXT:    i32.const $push85=, 254
1515 ; NO-SIMD128-FAST-NEXT:    i32.and $push40=, $pop39, $pop85
1516 ; NO-SIMD128-FAST-NEXT:    i32.const $push84=, 1
1517 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push41=, $pop40, $pop84
1518 ; NO-SIMD128-FAST-NEXT:    i32.store8 9($0), $pop41
1519 ; NO-SIMD128-FAST-NEXT:    i32.add $push42=, $11, $27
1520 ; NO-SIMD128-FAST-NEXT:    i32.const $push83=, 1
1521 ; NO-SIMD128-FAST-NEXT:    i32.add $push43=, $pop42, $pop83
1522 ; NO-SIMD128-FAST-NEXT:    i32.const $push82=, 254
1523 ; NO-SIMD128-FAST-NEXT:    i32.and $push44=, $pop43, $pop82
1524 ; NO-SIMD128-FAST-NEXT:    i32.const $push81=, 1
1525 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push45=, $pop44, $pop81
1526 ; NO-SIMD128-FAST-NEXT:    i32.store8 10($0), $pop45
1527 ; NO-SIMD128-FAST-NEXT:    i32.add $push46=, $12, $28
1528 ; NO-SIMD128-FAST-NEXT:    i32.const $push80=, 1
1529 ; NO-SIMD128-FAST-NEXT:    i32.add $push47=, $pop46, $pop80
1530 ; NO-SIMD128-FAST-NEXT:    i32.const $push79=, 254
1531 ; NO-SIMD128-FAST-NEXT:    i32.and $push48=, $pop47, $pop79
1532 ; NO-SIMD128-FAST-NEXT:    i32.const $push78=, 1
1533 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push49=, $pop48, $pop78
1534 ; NO-SIMD128-FAST-NEXT:    i32.store8 11($0), $pop49
1535 ; NO-SIMD128-FAST-NEXT:    i32.add $push50=, $13, $29
1536 ; NO-SIMD128-FAST-NEXT:    i32.const $push77=, 1
1537 ; NO-SIMD128-FAST-NEXT:    i32.add $push51=, $pop50, $pop77
1538 ; NO-SIMD128-FAST-NEXT:    i32.const $push76=, 254
1539 ; NO-SIMD128-FAST-NEXT:    i32.and $push52=, $pop51, $pop76
1540 ; NO-SIMD128-FAST-NEXT:    i32.const $push75=, 1
1541 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push53=, $pop52, $pop75
1542 ; NO-SIMD128-FAST-NEXT:    i32.store8 12($0), $pop53
1543 ; NO-SIMD128-FAST-NEXT:    i32.add $push54=, $14, $30
1544 ; NO-SIMD128-FAST-NEXT:    i32.const $push74=, 1
1545 ; NO-SIMD128-FAST-NEXT:    i32.add $push55=, $pop54, $pop74
1546 ; NO-SIMD128-FAST-NEXT:    i32.const $push73=, 254
1547 ; NO-SIMD128-FAST-NEXT:    i32.and $push56=, $pop55, $pop73
1548 ; NO-SIMD128-FAST-NEXT:    i32.const $push72=, 1
1549 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push57=, $pop56, $pop72
1550 ; NO-SIMD128-FAST-NEXT:    i32.store8 13($0), $pop57
1551 ; NO-SIMD128-FAST-NEXT:    i32.add $push58=, $15, $31
1552 ; NO-SIMD128-FAST-NEXT:    i32.const $push71=, 1
1553 ; NO-SIMD128-FAST-NEXT:    i32.add $push59=, $pop58, $pop71
1554 ; NO-SIMD128-FAST-NEXT:    i32.const $push70=, 254
1555 ; NO-SIMD128-FAST-NEXT:    i32.and $push60=, $pop59, $pop70
1556 ; NO-SIMD128-FAST-NEXT:    i32.const $push69=, 1
1557 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push61=, $pop60, $pop69
1558 ; NO-SIMD128-FAST-NEXT:    i32.store8 14($0), $pop61
1559 ; NO-SIMD128-FAST-NEXT:    i32.add $push62=, $16, $32
1560 ; NO-SIMD128-FAST-NEXT:    i32.const $push68=, 1
1561 ; NO-SIMD128-FAST-NEXT:    i32.add $push63=, $pop62, $pop68
1562 ; NO-SIMD128-FAST-NEXT:    i32.const $push67=, 254
1563 ; NO-SIMD128-FAST-NEXT:    i32.and $push64=, $pop63, $pop67
1564 ; NO-SIMD128-FAST-NEXT:    i32.const $push66=, 1
1565 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push65=, $pop64, $pop66
1566 ; NO-SIMD128-FAST-NEXT:    i32.store8 15($0), $pop65
1567 ; NO-SIMD128-FAST-NEXT:    return
1568   %a = add nuw <16 x i8> %x, %y
1569   %b = add nuw <16 x i8> %a, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1,
1570                               i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1571   %c = udiv <16 x i8> %b, <i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2,
1572                            i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2>
1573   ret <16 x i8> %c
1576 define <16 x i8> @avgr_u_v16i8_wrap(<16 x i8> %x, <16 x i8> %y) {
1577 ; SIMD128-LABEL: avgr_u_v16i8_wrap:
1578 ; SIMD128:         .functype avgr_u_v16i8_wrap (v128, v128) -> (v128)
1579 ; SIMD128-NEXT:  # %bb.0:
1580 ; SIMD128-NEXT:    i8x16.add $push0=, $0, $1
1581 ; SIMD128-NEXT:    v128.const $push1=, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
1582 ; SIMD128-NEXT:    i8x16.add $push2=, $pop0, $pop1
1583 ; SIMD128-NEXT:    i32.const $push3=, 1
1584 ; SIMD128-NEXT:    i8x16.shr_u $push4=, $pop2, $pop3
1585 ; SIMD128-NEXT:    return $pop4
1587 ; SIMD128-FAST-LABEL: avgr_u_v16i8_wrap:
1588 ; SIMD128-FAST:         .functype avgr_u_v16i8_wrap (v128, v128) -> (v128)
1589 ; SIMD128-FAST-NEXT:  # %bb.0:
1590 ; SIMD128-FAST-NEXT:    i8x16.add $push2=, $0, $1
1591 ; SIMD128-FAST-NEXT:    v128.const $push3=, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
1592 ; SIMD128-FAST-NEXT:    i8x16.add $push1=, $pop2, $pop3
1593 ; SIMD128-FAST-NEXT:    i32.const $push4=, 1
1594 ; SIMD128-FAST-NEXT:    i8x16.shr_u $push0=, $pop1, $pop4
1595 ; SIMD128-FAST-NEXT:    return $pop0
1597 ; NO-SIMD128-LABEL: avgr_u_v16i8_wrap:
1598 ; 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) -> ()
1599 ; NO-SIMD128-NEXT:  # %bb.0:
1600 ; NO-SIMD128-NEXT:    i32.add $push0=, $16, $32
1601 ; NO-SIMD128-NEXT:    i32.const $push1=, 1
1602 ; NO-SIMD128-NEXT:    i32.add $push2=, $pop0, $pop1
1603 ; NO-SIMD128-NEXT:    i32.const $push3=, 254
1604 ; NO-SIMD128-NEXT:    i32.and $push4=, $pop2, $pop3
1605 ; NO-SIMD128-NEXT:    i32.const $push111=, 1
1606 ; NO-SIMD128-NEXT:    i32.shr_u $push5=, $pop4, $pop111
1607 ; NO-SIMD128-NEXT:    i32.store8 15($0), $pop5
1608 ; NO-SIMD128-NEXT:    i32.add $push6=, $15, $31
1609 ; NO-SIMD128-NEXT:    i32.const $push110=, 1
1610 ; NO-SIMD128-NEXT:    i32.add $push7=, $pop6, $pop110
1611 ; NO-SIMD128-NEXT:    i32.const $push109=, 254
1612 ; NO-SIMD128-NEXT:    i32.and $push8=, $pop7, $pop109
1613 ; NO-SIMD128-NEXT:    i32.const $push108=, 1
1614 ; NO-SIMD128-NEXT:    i32.shr_u $push9=, $pop8, $pop108
1615 ; NO-SIMD128-NEXT:    i32.store8 14($0), $pop9
1616 ; NO-SIMD128-NEXT:    i32.add $push10=, $14, $30
1617 ; NO-SIMD128-NEXT:    i32.const $push107=, 1
1618 ; NO-SIMD128-NEXT:    i32.add $push11=, $pop10, $pop107
1619 ; NO-SIMD128-NEXT:    i32.const $push106=, 254
1620 ; NO-SIMD128-NEXT:    i32.and $push12=, $pop11, $pop106
1621 ; NO-SIMD128-NEXT:    i32.const $push105=, 1
1622 ; NO-SIMD128-NEXT:    i32.shr_u $push13=, $pop12, $pop105
1623 ; NO-SIMD128-NEXT:    i32.store8 13($0), $pop13
1624 ; NO-SIMD128-NEXT:    i32.add $push14=, $13, $29
1625 ; NO-SIMD128-NEXT:    i32.const $push104=, 1
1626 ; NO-SIMD128-NEXT:    i32.add $push15=, $pop14, $pop104
1627 ; NO-SIMD128-NEXT:    i32.const $push103=, 254
1628 ; NO-SIMD128-NEXT:    i32.and $push16=, $pop15, $pop103
1629 ; NO-SIMD128-NEXT:    i32.const $push102=, 1
1630 ; NO-SIMD128-NEXT:    i32.shr_u $push17=, $pop16, $pop102
1631 ; NO-SIMD128-NEXT:    i32.store8 12($0), $pop17
1632 ; NO-SIMD128-NEXT:    i32.add $push18=, $12, $28
1633 ; NO-SIMD128-NEXT:    i32.const $push101=, 1
1634 ; NO-SIMD128-NEXT:    i32.add $push19=, $pop18, $pop101
1635 ; NO-SIMD128-NEXT:    i32.const $push100=, 254
1636 ; NO-SIMD128-NEXT:    i32.and $push20=, $pop19, $pop100
1637 ; NO-SIMD128-NEXT:    i32.const $push99=, 1
1638 ; NO-SIMD128-NEXT:    i32.shr_u $push21=, $pop20, $pop99
1639 ; NO-SIMD128-NEXT:    i32.store8 11($0), $pop21
1640 ; NO-SIMD128-NEXT:    i32.add $push22=, $11, $27
1641 ; NO-SIMD128-NEXT:    i32.const $push98=, 1
1642 ; NO-SIMD128-NEXT:    i32.add $push23=, $pop22, $pop98
1643 ; NO-SIMD128-NEXT:    i32.const $push97=, 254
1644 ; NO-SIMD128-NEXT:    i32.and $push24=, $pop23, $pop97
1645 ; NO-SIMD128-NEXT:    i32.const $push96=, 1
1646 ; NO-SIMD128-NEXT:    i32.shr_u $push25=, $pop24, $pop96
1647 ; NO-SIMD128-NEXT:    i32.store8 10($0), $pop25
1648 ; NO-SIMD128-NEXT:    i32.add $push26=, $10, $26
1649 ; NO-SIMD128-NEXT:    i32.const $push95=, 1
1650 ; NO-SIMD128-NEXT:    i32.add $push27=, $pop26, $pop95
1651 ; NO-SIMD128-NEXT:    i32.const $push94=, 254
1652 ; NO-SIMD128-NEXT:    i32.and $push28=, $pop27, $pop94
1653 ; NO-SIMD128-NEXT:    i32.const $push93=, 1
1654 ; NO-SIMD128-NEXT:    i32.shr_u $push29=, $pop28, $pop93
1655 ; NO-SIMD128-NEXT:    i32.store8 9($0), $pop29
1656 ; NO-SIMD128-NEXT:    i32.add $push30=, $9, $25
1657 ; NO-SIMD128-NEXT:    i32.const $push92=, 1
1658 ; NO-SIMD128-NEXT:    i32.add $push31=, $pop30, $pop92
1659 ; NO-SIMD128-NEXT:    i32.const $push91=, 254
1660 ; NO-SIMD128-NEXT:    i32.and $push32=, $pop31, $pop91
1661 ; NO-SIMD128-NEXT:    i32.const $push90=, 1
1662 ; NO-SIMD128-NEXT:    i32.shr_u $push33=, $pop32, $pop90
1663 ; NO-SIMD128-NEXT:    i32.store8 8($0), $pop33
1664 ; NO-SIMD128-NEXT:    i32.add $push34=, $8, $24
1665 ; NO-SIMD128-NEXT:    i32.const $push89=, 1
1666 ; NO-SIMD128-NEXT:    i32.add $push35=, $pop34, $pop89
1667 ; NO-SIMD128-NEXT:    i32.const $push88=, 254
1668 ; NO-SIMD128-NEXT:    i32.and $push36=, $pop35, $pop88
1669 ; NO-SIMD128-NEXT:    i32.const $push87=, 1
1670 ; NO-SIMD128-NEXT:    i32.shr_u $push37=, $pop36, $pop87
1671 ; NO-SIMD128-NEXT:    i32.store8 7($0), $pop37
1672 ; NO-SIMD128-NEXT:    i32.add $push38=, $7, $23
1673 ; NO-SIMD128-NEXT:    i32.const $push86=, 1
1674 ; NO-SIMD128-NEXT:    i32.add $push39=, $pop38, $pop86
1675 ; NO-SIMD128-NEXT:    i32.const $push85=, 254
1676 ; NO-SIMD128-NEXT:    i32.and $push40=, $pop39, $pop85
1677 ; NO-SIMD128-NEXT:    i32.const $push84=, 1
1678 ; NO-SIMD128-NEXT:    i32.shr_u $push41=, $pop40, $pop84
1679 ; NO-SIMD128-NEXT:    i32.store8 6($0), $pop41
1680 ; NO-SIMD128-NEXT:    i32.add $push42=, $6, $22
1681 ; NO-SIMD128-NEXT:    i32.const $push83=, 1
1682 ; NO-SIMD128-NEXT:    i32.add $push43=, $pop42, $pop83
1683 ; NO-SIMD128-NEXT:    i32.const $push82=, 254
1684 ; NO-SIMD128-NEXT:    i32.and $push44=, $pop43, $pop82
1685 ; NO-SIMD128-NEXT:    i32.const $push81=, 1
1686 ; NO-SIMD128-NEXT:    i32.shr_u $push45=, $pop44, $pop81
1687 ; NO-SIMD128-NEXT:    i32.store8 5($0), $pop45
1688 ; NO-SIMD128-NEXT:    i32.add $push46=, $5, $21
1689 ; NO-SIMD128-NEXT:    i32.const $push80=, 1
1690 ; NO-SIMD128-NEXT:    i32.add $push47=, $pop46, $pop80
1691 ; NO-SIMD128-NEXT:    i32.const $push79=, 254
1692 ; NO-SIMD128-NEXT:    i32.and $push48=, $pop47, $pop79
1693 ; NO-SIMD128-NEXT:    i32.const $push78=, 1
1694 ; NO-SIMD128-NEXT:    i32.shr_u $push49=, $pop48, $pop78
1695 ; NO-SIMD128-NEXT:    i32.store8 4($0), $pop49
1696 ; NO-SIMD128-NEXT:    i32.add $push50=, $4, $20
1697 ; NO-SIMD128-NEXT:    i32.const $push77=, 1
1698 ; NO-SIMD128-NEXT:    i32.add $push51=, $pop50, $pop77
1699 ; NO-SIMD128-NEXT:    i32.const $push76=, 254
1700 ; NO-SIMD128-NEXT:    i32.and $push52=, $pop51, $pop76
1701 ; NO-SIMD128-NEXT:    i32.const $push75=, 1
1702 ; NO-SIMD128-NEXT:    i32.shr_u $push53=, $pop52, $pop75
1703 ; NO-SIMD128-NEXT:    i32.store8 3($0), $pop53
1704 ; NO-SIMD128-NEXT:    i32.add $push54=, $3, $19
1705 ; NO-SIMD128-NEXT:    i32.const $push74=, 1
1706 ; NO-SIMD128-NEXT:    i32.add $push55=, $pop54, $pop74
1707 ; NO-SIMD128-NEXT:    i32.const $push73=, 254
1708 ; NO-SIMD128-NEXT:    i32.and $push56=, $pop55, $pop73
1709 ; NO-SIMD128-NEXT:    i32.const $push72=, 1
1710 ; NO-SIMD128-NEXT:    i32.shr_u $push57=, $pop56, $pop72
1711 ; NO-SIMD128-NEXT:    i32.store8 2($0), $pop57
1712 ; NO-SIMD128-NEXT:    i32.add $push58=, $2, $18
1713 ; NO-SIMD128-NEXT:    i32.const $push71=, 1
1714 ; NO-SIMD128-NEXT:    i32.add $push59=, $pop58, $pop71
1715 ; NO-SIMD128-NEXT:    i32.const $push70=, 254
1716 ; NO-SIMD128-NEXT:    i32.and $push60=, $pop59, $pop70
1717 ; NO-SIMD128-NEXT:    i32.const $push69=, 1
1718 ; NO-SIMD128-NEXT:    i32.shr_u $push61=, $pop60, $pop69
1719 ; NO-SIMD128-NEXT:    i32.store8 1($0), $pop61
1720 ; NO-SIMD128-NEXT:    i32.add $push62=, $1, $17
1721 ; NO-SIMD128-NEXT:    i32.const $push68=, 1
1722 ; NO-SIMD128-NEXT:    i32.add $push63=, $pop62, $pop68
1723 ; NO-SIMD128-NEXT:    i32.const $push67=, 254
1724 ; NO-SIMD128-NEXT:    i32.and $push64=, $pop63, $pop67
1725 ; NO-SIMD128-NEXT:    i32.const $push66=, 1
1726 ; NO-SIMD128-NEXT:    i32.shr_u $push65=, $pop64, $pop66
1727 ; NO-SIMD128-NEXT:    i32.store8 0($0), $pop65
1728 ; NO-SIMD128-NEXT:    return
1730 ; NO-SIMD128-FAST-LABEL: avgr_u_v16i8_wrap:
1731 ; 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) -> ()
1732 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
1733 ; NO-SIMD128-FAST-NEXT:    i32.add $push0=, $1, $17
1734 ; NO-SIMD128-FAST-NEXT:    i32.const $push1=, 1
1735 ; NO-SIMD128-FAST-NEXT:    i32.add $push2=, $pop0, $pop1
1736 ; NO-SIMD128-FAST-NEXT:    i32.const $push3=, 254
1737 ; NO-SIMD128-FAST-NEXT:    i32.and $push4=, $pop2, $pop3
1738 ; NO-SIMD128-FAST-NEXT:    i32.const $push111=, 1
1739 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push5=, $pop4, $pop111
1740 ; NO-SIMD128-FAST-NEXT:    i32.store8 0($0), $pop5
1741 ; NO-SIMD128-FAST-NEXT:    i32.add $push6=, $2, $18
1742 ; NO-SIMD128-FAST-NEXT:    i32.const $push110=, 1
1743 ; NO-SIMD128-FAST-NEXT:    i32.add $push7=, $pop6, $pop110
1744 ; NO-SIMD128-FAST-NEXT:    i32.const $push109=, 254
1745 ; NO-SIMD128-FAST-NEXT:    i32.and $push8=, $pop7, $pop109
1746 ; NO-SIMD128-FAST-NEXT:    i32.const $push108=, 1
1747 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push9=, $pop8, $pop108
1748 ; NO-SIMD128-FAST-NEXT:    i32.store8 1($0), $pop9
1749 ; NO-SIMD128-FAST-NEXT:    i32.add $push10=, $3, $19
1750 ; NO-SIMD128-FAST-NEXT:    i32.const $push107=, 1
1751 ; NO-SIMD128-FAST-NEXT:    i32.add $push11=, $pop10, $pop107
1752 ; NO-SIMD128-FAST-NEXT:    i32.const $push106=, 254
1753 ; NO-SIMD128-FAST-NEXT:    i32.and $push12=, $pop11, $pop106
1754 ; NO-SIMD128-FAST-NEXT:    i32.const $push105=, 1
1755 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push13=, $pop12, $pop105
1756 ; NO-SIMD128-FAST-NEXT:    i32.store8 2($0), $pop13
1757 ; NO-SIMD128-FAST-NEXT:    i32.add $push14=, $4, $20
1758 ; NO-SIMD128-FAST-NEXT:    i32.const $push104=, 1
1759 ; NO-SIMD128-FAST-NEXT:    i32.add $push15=, $pop14, $pop104
1760 ; NO-SIMD128-FAST-NEXT:    i32.const $push103=, 254
1761 ; NO-SIMD128-FAST-NEXT:    i32.and $push16=, $pop15, $pop103
1762 ; NO-SIMD128-FAST-NEXT:    i32.const $push102=, 1
1763 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push17=, $pop16, $pop102
1764 ; NO-SIMD128-FAST-NEXT:    i32.store8 3($0), $pop17
1765 ; NO-SIMD128-FAST-NEXT:    i32.add $push18=, $5, $21
1766 ; NO-SIMD128-FAST-NEXT:    i32.const $push101=, 1
1767 ; NO-SIMD128-FAST-NEXT:    i32.add $push19=, $pop18, $pop101
1768 ; NO-SIMD128-FAST-NEXT:    i32.const $push100=, 254
1769 ; NO-SIMD128-FAST-NEXT:    i32.and $push20=, $pop19, $pop100
1770 ; NO-SIMD128-FAST-NEXT:    i32.const $push99=, 1
1771 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push21=, $pop20, $pop99
1772 ; NO-SIMD128-FAST-NEXT:    i32.store8 4($0), $pop21
1773 ; NO-SIMD128-FAST-NEXT:    i32.add $push22=, $6, $22
1774 ; NO-SIMD128-FAST-NEXT:    i32.const $push98=, 1
1775 ; NO-SIMD128-FAST-NEXT:    i32.add $push23=, $pop22, $pop98
1776 ; NO-SIMD128-FAST-NEXT:    i32.const $push97=, 254
1777 ; NO-SIMD128-FAST-NEXT:    i32.and $push24=, $pop23, $pop97
1778 ; NO-SIMD128-FAST-NEXT:    i32.const $push96=, 1
1779 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push25=, $pop24, $pop96
1780 ; NO-SIMD128-FAST-NEXT:    i32.store8 5($0), $pop25
1781 ; NO-SIMD128-FAST-NEXT:    i32.add $push26=, $7, $23
1782 ; NO-SIMD128-FAST-NEXT:    i32.const $push95=, 1
1783 ; NO-SIMD128-FAST-NEXT:    i32.add $push27=, $pop26, $pop95
1784 ; NO-SIMD128-FAST-NEXT:    i32.const $push94=, 254
1785 ; NO-SIMD128-FAST-NEXT:    i32.and $push28=, $pop27, $pop94
1786 ; NO-SIMD128-FAST-NEXT:    i32.const $push93=, 1
1787 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push29=, $pop28, $pop93
1788 ; NO-SIMD128-FAST-NEXT:    i32.store8 6($0), $pop29
1789 ; NO-SIMD128-FAST-NEXT:    i32.add $push30=, $8, $24
1790 ; NO-SIMD128-FAST-NEXT:    i32.const $push92=, 1
1791 ; NO-SIMD128-FAST-NEXT:    i32.add $push31=, $pop30, $pop92
1792 ; NO-SIMD128-FAST-NEXT:    i32.const $push91=, 254
1793 ; NO-SIMD128-FAST-NEXT:    i32.and $push32=, $pop31, $pop91
1794 ; NO-SIMD128-FAST-NEXT:    i32.const $push90=, 1
1795 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push33=, $pop32, $pop90
1796 ; NO-SIMD128-FAST-NEXT:    i32.store8 7($0), $pop33
1797 ; NO-SIMD128-FAST-NEXT:    i32.add $push34=, $9, $25
1798 ; NO-SIMD128-FAST-NEXT:    i32.const $push89=, 1
1799 ; NO-SIMD128-FAST-NEXT:    i32.add $push35=, $pop34, $pop89
1800 ; NO-SIMD128-FAST-NEXT:    i32.const $push88=, 254
1801 ; NO-SIMD128-FAST-NEXT:    i32.and $push36=, $pop35, $pop88
1802 ; NO-SIMD128-FAST-NEXT:    i32.const $push87=, 1
1803 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push37=, $pop36, $pop87
1804 ; NO-SIMD128-FAST-NEXT:    i32.store8 8($0), $pop37
1805 ; NO-SIMD128-FAST-NEXT:    i32.add $push38=, $10, $26
1806 ; NO-SIMD128-FAST-NEXT:    i32.const $push86=, 1
1807 ; NO-SIMD128-FAST-NEXT:    i32.add $push39=, $pop38, $pop86
1808 ; NO-SIMD128-FAST-NEXT:    i32.const $push85=, 254
1809 ; NO-SIMD128-FAST-NEXT:    i32.and $push40=, $pop39, $pop85
1810 ; NO-SIMD128-FAST-NEXT:    i32.const $push84=, 1
1811 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push41=, $pop40, $pop84
1812 ; NO-SIMD128-FAST-NEXT:    i32.store8 9($0), $pop41
1813 ; NO-SIMD128-FAST-NEXT:    i32.add $push42=, $11, $27
1814 ; NO-SIMD128-FAST-NEXT:    i32.const $push83=, 1
1815 ; NO-SIMD128-FAST-NEXT:    i32.add $push43=, $pop42, $pop83
1816 ; NO-SIMD128-FAST-NEXT:    i32.const $push82=, 254
1817 ; NO-SIMD128-FAST-NEXT:    i32.and $push44=, $pop43, $pop82
1818 ; NO-SIMD128-FAST-NEXT:    i32.const $push81=, 1
1819 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push45=, $pop44, $pop81
1820 ; NO-SIMD128-FAST-NEXT:    i32.store8 10($0), $pop45
1821 ; NO-SIMD128-FAST-NEXT:    i32.add $push46=, $12, $28
1822 ; NO-SIMD128-FAST-NEXT:    i32.const $push80=, 1
1823 ; NO-SIMD128-FAST-NEXT:    i32.add $push47=, $pop46, $pop80
1824 ; NO-SIMD128-FAST-NEXT:    i32.const $push79=, 254
1825 ; NO-SIMD128-FAST-NEXT:    i32.and $push48=, $pop47, $pop79
1826 ; NO-SIMD128-FAST-NEXT:    i32.const $push78=, 1
1827 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push49=, $pop48, $pop78
1828 ; NO-SIMD128-FAST-NEXT:    i32.store8 11($0), $pop49
1829 ; NO-SIMD128-FAST-NEXT:    i32.add $push50=, $13, $29
1830 ; NO-SIMD128-FAST-NEXT:    i32.const $push77=, 1
1831 ; NO-SIMD128-FAST-NEXT:    i32.add $push51=, $pop50, $pop77
1832 ; NO-SIMD128-FAST-NEXT:    i32.const $push76=, 254
1833 ; NO-SIMD128-FAST-NEXT:    i32.and $push52=, $pop51, $pop76
1834 ; NO-SIMD128-FAST-NEXT:    i32.const $push75=, 1
1835 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push53=, $pop52, $pop75
1836 ; NO-SIMD128-FAST-NEXT:    i32.store8 12($0), $pop53
1837 ; NO-SIMD128-FAST-NEXT:    i32.add $push54=, $14, $30
1838 ; NO-SIMD128-FAST-NEXT:    i32.const $push74=, 1
1839 ; NO-SIMD128-FAST-NEXT:    i32.add $push55=, $pop54, $pop74
1840 ; NO-SIMD128-FAST-NEXT:    i32.const $push73=, 254
1841 ; NO-SIMD128-FAST-NEXT:    i32.and $push56=, $pop55, $pop73
1842 ; NO-SIMD128-FAST-NEXT:    i32.const $push72=, 1
1843 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push57=, $pop56, $pop72
1844 ; NO-SIMD128-FAST-NEXT:    i32.store8 13($0), $pop57
1845 ; NO-SIMD128-FAST-NEXT:    i32.add $push58=, $15, $31
1846 ; NO-SIMD128-FAST-NEXT:    i32.const $push71=, 1
1847 ; NO-SIMD128-FAST-NEXT:    i32.add $push59=, $pop58, $pop71
1848 ; NO-SIMD128-FAST-NEXT:    i32.const $push70=, 254
1849 ; NO-SIMD128-FAST-NEXT:    i32.and $push60=, $pop59, $pop70
1850 ; NO-SIMD128-FAST-NEXT:    i32.const $push69=, 1
1851 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push61=, $pop60, $pop69
1852 ; NO-SIMD128-FAST-NEXT:    i32.store8 14($0), $pop61
1853 ; NO-SIMD128-FAST-NEXT:    i32.add $push62=, $16, $32
1854 ; NO-SIMD128-FAST-NEXT:    i32.const $push68=, 1
1855 ; NO-SIMD128-FAST-NEXT:    i32.add $push63=, $pop62, $pop68
1856 ; NO-SIMD128-FAST-NEXT:    i32.const $push67=, 254
1857 ; NO-SIMD128-FAST-NEXT:    i32.and $push64=, $pop63, $pop67
1858 ; NO-SIMD128-FAST-NEXT:    i32.const $push66=, 1
1859 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push65=, $pop64, $pop66
1860 ; NO-SIMD128-FAST-NEXT:    i32.store8 15($0), $pop65
1861 ; NO-SIMD128-FAST-NEXT:    return
1862   %a = add <16 x i8> %x, %y
1863   %b = add <16 x i8> %a, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1,
1864                           i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1865   %c = udiv <16 x i8> %b, <i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2,
1866                            i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2>
1867   ret <16 x i8> %c
1870 define <16 x i8> @abs_v16i8(<16 x i8> %x) {
1871 ; SIMD128-LABEL: abs_v16i8:
1872 ; SIMD128:         .functype abs_v16i8 (v128) -> (v128)
1873 ; SIMD128-NEXT:  # %bb.0:
1874 ; SIMD128-NEXT:    i8x16.abs $push0=, $0
1875 ; SIMD128-NEXT:    return $pop0
1877 ; SIMD128-FAST-LABEL: abs_v16i8:
1878 ; SIMD128-FAST:         .functype abs_v16i8 (v128) -> (v128)
1879 ; SIMD128-FAST-NEXT:  # %bb.0:
1880 ; SIMD128-FAST-NEXT:    i8x16.abs $push0=, $0
1881 ; SIMD128-FAST-NEXT:    return $pop0
1883 ; NO-SIMD128-LABEL: abs_v16i8:
1884 ; NO-SIMD128:         .functype abs_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
1885 ; NO-SIMD128-NEXT:  # %bb.0:
1886 ; NO-SIMD128-NEXT:    i32.extend8_s $push0=, $16
1887 ; NO-SIMD128-NEXT:    i32.const $push1=, 7
1888 ; NO-SIMD128-NEXT:    i32.shr_s $push95=, $pop0, $pop1
1889 ; NO-SIMD128-NEXT:    local.tee $push94=, $17=, $pop95
1890 ; NO-SIMD128-NEXT:    i32.xor $push2=, $16, $pop94
1891 ; NO-SIMD128-NEXT:    i32.sub $push3=, $pop2, $17
1892 ; NO-SIMD128-NEXT:    i32.store8 15($0), $pop3
1893 ; NO-SIMD128-NEXT:    i32.extend8_s $push4=, $15
1894 ; NO-SIMD128-NEXT:    i32.const $push93=, 7
1895 ; NO-SIMD128-NEXT:    i32.shr_s $push92=, $pop4, $pop93
1896 ; NO-SIMD128-NEXT:    local.tee $push91=, $16=, $pop92
1897 ; NO-SIMD128-NEXT:    i32.xor $push5=, $15, $pop91
1898 ; NO-SIMD128-NEXT:    i32.sub $push6=, $pop5, $16
1899 ; NO-SIMD128-NEXT:    i32.store8 14($0), $pop6
1900 ; NO-SIMD128-NEXT:    i32.extend8_s $push7=, $14
1901 ; NO-SIMD128-NEXT:    i32.const $push90=, 7
1902 ; NO-SIMD128-NEXT:    i32.shr_s $push89=, $pop7, $pop90
1903 ; NO-SIMD128-NEXT:    local.tee $push88=, $16=, $pop89
1904 ; NO-SIMD128-NEXT:    i32.xor $push8=, $14, $pop88
1905 ; NO-SIMD128-NEXT:    i32.sub $push9=, $pop8, $16
1906 ; NO-SIMD128-NEXT:    i32.store8 13($0), $pop9
1907 ; NO-SIMD128-NEXT:    i32.extend8_s $push10=, $13
1908 ; NO-SIMD128-NEXT:    i32.const $push87=, 7
1909 ; NO-SIMD128-NEXT:    i32.shr_s $push86=, $pop10, $pop87
1910 ; NO-SIMD128-NEXT:    local.tee $push85=, $16=, $pop86
1911 ; NO-SIMD128-NEXT:    i32.xor $push11=, $13, $pop85
1912 ; NO-SIMD128-NEXT:    i32.sub $push12=, $pop11, $16
1913 ; NO-SIMD128-NEXT:    i32.store8 12($0), $pop12
1914 ; NO-SIMD128-NEXT:    i32.extend8_s $push13=, $12
1915 ; NO-SIMD128-NEXT:    i32.const $push84=, 7
1916 ; NO-SIMD128-NEXT:    i32.shr_s $push83=, $pop13, $pop84
1917 ; NO-SIMD128-NEXT:    local.tee $push82=, $16=, $pop83
1918 ; NO-SIMD128-NEXT:    i32.xor $push14=, $12, $pop82
1919 ; NO-SIMD128-NEXT:    i32.sub $push15=, $pop14, $16
1920 ; NO-SIMD128-NEXT:    i32.store8 11($0), $pop15
1921 ; NO-SIMD128-NEXT:    i32.extend8_s $push16=, $11
1922 ; NO-SIMD128-NEXT:    i32.const $push81=, 7
1923 ; NO-SIMD128-NEXT:    i32.shr_s $push80=, $pop16, $pop81
1924 ; NO-SIMD128-NEXT:    local.tee $push79=, $16=, $pop80
1925 ; NO-SIMD128-NEXT:    i32.xor $push17=, $11, $pop79
1926 ; NO-SIMD128-NEXT:    i32.sub $push18=, $pop17, $16
1927 ; NO-SIMD128-NEXT:    i32.store8 10($0), $pop18
1928 ; NO-SIMD128-NEXT:    i32.extend8_s $push19=, $10
1929 ; NO-SIMD128-NEXT:    i32.const $push78=, 7
1930 ; NO-SIMD128-NEXT:    i32.shr_s $push77=, $pop19, $pop78
1931 ; NO-SIMD128-NEXT:    local.tee $push76=, $16=, $pop77
1932 ; NO-SIMD128-NEXT:    i32.xor $push20=, $10, $pop76
1933 ; NO-SIMD128-NEXT:    i32.sub $push21=, $pop20, $16
1934 ; NO-SIMD128-NEXT:    i32.store8 9($0), $pop21
1935 ; NO-SIMD128-NEXT:    i32.extend8_s $push22=, $9
1936 ; NO-SIMD128-NEXT:    i32.const $push75=, 7
1937 ; NO-SIMD128-NEXT:    i32.shr_s $push74=, $pop22, $pop75
1938 ; NO-SIMD128-NEXT:    local.tee $push73=, $16=, $pop74
1939 ; NO-SIMD128-NEXT:    i32.xor $push23=, $9, $pop73
1940 ; NO-SIMD128-NEXT:    i32.sub $push24=, $pop23, $16
1941 ; NO-SIMD128-NEXT:    i32.store8 8($0), $pop24
1942 ; NO-SIMD128-NEXT:    i32.extend8_s $push25=, $8
1943 ; NO-SIMD128-NEXT:    i32.const $push72=, 7
1944 ; NO-SIMD128-NEXT:    i32.shr_s $push71=, $pop25, $pop72
1945 ; NO-SIMD128-NEXT:    local.tee $push70=, $16=, $pop71
1946 ; NO-SIMD128-NEXT:    i32.xor $push26=, $8, $pop70
1947 ; NO-SIMD128-NEXT:    i32.sub $push27=, $pop26, $16
1948 ; NO-SIMD128-NEXT:    i32.store8 7($0), $pop27
1949 ; NO-SIMD128-NEXT:    i32.extend8_s $push28=, $7
1950 ; NO-SIMD128-NEXT:    i32.const $push69=, 7
1951 ; NO-SIMD128-NEXT:    i32.shr_s $push68=, $pop28, $pop69
1952 ; NO-SIMD128-NEXT:    local.tee $push67=, $16=, $pop68
1953 ; NO-SIMD128-NEXT:    i32.xor $push29=, $7, $pop67
1954 ; NO-SIMD128-NEXT:    i32.sub $push30=, $pop29, $16
1955 ; NO-SIMD128-NEXT:    i32.store8 6($0), $pop30
1956 ; NO-SIMD128-NEXT:    i32.extend8_s $push31=, $6
1957 ; NO-SIMD128-NEXT:    i32.const $push66=, 7
1958 ; NO-SIMD128-NEXT:    i32.shr_s $push65=, $pop31, $pop66
1959 ; NO-SIMD128-NEXT:    local.tee $push64=, $16=, $pop65
1960 ; NO-SIMD128-NEXT:    i32.xor $push32=, $6, $pop64
1961 ; NO-SIMD128-NEXT:    i32.sub $push33=, $pop32, $16
1962 ; NO-SIMD128-NEXT:    i32.store8 5($0), $pop33
1963 ; NO-SIMD128-NEXT:    i32.extend8_s $push34=, $5
1964 ; NO-SIMD128-NEXT:    i32.const $push63=, 7
1965 ; NO-SIMD128-NEXT:    i32.shr_s $push62=, $pop34, $pop63
1966 ; NO-SIMD128-NEXT:    local.tee $push61=, $16=, $pop62
1967 ; NO-SIMD128-NEXT:    i32.xor $push35=, $5, $pop61
1968 ; NO-SIMD128-NEXT:    i32.sub $push36=, $pop35, $16
1969 ; NO-SIMD128-NEXT:    i32.store8 4($0), $pop36
1970 ; NO-SIMD128-NEXT:    i32.extend8_s $push37=, $4
1971 ; NO-SIMD128-NEXT:    i32.const $push60=, 7
1972 ; NO-SIMD128-NEXT:    i32.shr_s $push59=, $pop37, $pop60
1973 ; NO-SIMD128-NEXT:    local.tee $push58=, $16=, $pop59
1974 ; NO-SIMD128-NEXT:    i32.xor $push38=, $4, $pop58
1975 ; NO-SIMD128-NEXT:    i32.sub $push39=, $pop38, $16
1976 ; NO-SIMD128-NEXT:    i32.store8 3($0), $pop39
1977 ; NO-SIMD128-NEXT:    i32.extend8_s $push40=, $3
1978 ; NO-SIMD128-NEXT:    i32.const $push57=, 7
1979 ; NO-SIMD128-NEXT:    i32.shr_s $push56=, $pop40, $pop57
1980 ; NO-SIMD128-NEXT:    local.tee $push55=, $16=, $pop56
1981 ; NO-SIMD128-NEXT:    i32.xor $push41=, $3, $pop55
1982 ; NO-SIMD128-NEXT:    i32.sub $push42=, $pop41, $16
1983 ; NO-SIMD128-NEXT:    i32.store8 2($0), $pop42
1984 ; NO-SIMD128-NEXT:    i32.extend8_s $push43=, $2
1985 ; NO-SIMD128-NEXT:    i32.const $push54=, 7
1986 ; NO-SIMD128-NEXT:    i32.shr_s $push53=, $pop43, $pop54
1987 ; NO-SIMD128-NEXT:    local.tee $push52=, $16=, $pop53
1988 ; NO-SIMD128-NEXT:    i32.xor $push44=, $2, $pop52
1989 ; NO-SIMD128-NEXT:    i32.sub $push45=, $pop44, $16
1990 ; NO-SIMD128-NEXT:    i32.store8 1($0), $pop45
1991 ; NO-SIMD128-NEXT:    i32.extend8_s $push46=, $1
1992 ; NO-SIMD128-NEXT:    i32.const $push51=, 7
1993 ; NO-SIMD128-NEXT:    i32.shr_s $push50=, $pop46, $pop51
1994 ; NO-SIMD128-NEXT:    local.tee $push49=, $16=, $pop50
1995 ; NO-SIMD128-NEXT:    i32.xor $push47=, $1, $pop49
1996 ; NO-SIMD128-NEXT:    i32.sub $push48=, $pop47, $16
1997 ; NO-SIMD128-NEXT:    i32.store8 0($0), $pop48
1998 ; NO-SIMD128-NEXT:    return
2000 ; NO-SIMD128-FAST-LABEL: abs_v16i8:
2001 ; NO-SIMD128-FAST:         .functype abs_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
2002 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
2003 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push0=, $1
2004 ; NO-SIMD128-FAST-NEXT:    i32.const $push1=, 7
2005 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push95=, $pop0, $pop1
2006 ; NO-SIMD128-FAST-NEXT:    local.tee $push94=, $17=, $pop95
2007 ; NO-SIMD128-FAST-NEXT:    i32.xor $push2=, $1, $pop94
2008 ; NO-SIMD128-FAST-NEXT:    i32.sub $push3=, $pop2, $17
2009 ; NO-SIMD128-FAST-NEXT:    i32.store8 0($0), $pop3
2010 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push4=, $2
2011 ; NO-SIMD128-FAST-NEXT:    i32.const $push93=, 7
2012 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push92=, $pop4, $pop93
2013 ; NO-SIMD128-FAST-NEXT:    local.tee $push91=, $1=, $pop92
2014 ; NO-SIMD128-FAST-NEXT:    i32.xor $push5=, $2, $pop91
2015 ; NO-SIMD128-FAST-NEXT:    i32.sub $push6=, $pop5, $1
2016 ; NO-SIMD128-FAST-NEXT:    i32.store8 1($0), $pop6
2017 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push7=, $3
2018 ; NO-SIMD128-FAST-NEXT:    i32.const $push90=, 7
2019 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push89=, $pop7, $pop90
2020 ; NO-SIMD128-FAST-NEXT:    local.tee $push88=, $2=, $pop89
2021 ; NO-SIMD128-FAST-NEXT:    i32.xor $push8=, $3, $pop88
2022 ; NO-SIMD128-FAST-NEXT:    i32.sub $push9=, $pop8, $2
2023 ; NO-SIMD128-FAST-NEXT:    i32.store8 2($0), $pop9
2024 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push10=, $4
2025 ; NO-SIMD128-FAST-NEXT:    i32.const $push87=, 7
2026 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push86=, $pop10, $pop87
2027 ; NO-SIMD128-FAST-NEXT:    local.tee $push85=, $3=, $pop86
2028 ; NO-SIMD128-FAST-NEXT:    i32.xor $push11=, $4, $pop85
2029 ; NO-SIMD128-FAST-NEXT:    i32.sub $push12=, $pop11, $3
2030 ; NO-SIMD128-FAST-NEXT:    i32.store8 3($0), $pop12
2031 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push13=, $5
2032 ; NO-SIMD128-FAST-NEXT:    i32.const $push84=, 7
2033 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push83=, $pop13, $pop84
2034 ; NO-SIMD128-FAST-NEXT:    local.tee $push82=, $4=, $pop83
2035 ; NO-SIMD128-FAST-NEXT:    i32.xor $push14=, $5, $pop82
2036 ; NO-SIMD128-FAST-NEXT:    i32.sub $push15=, $pop14, $4
2037 ; NO-SIMD128-FAST-NEXT:    i32.store8 4($0), $pop15
2038 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push16=, $6
2039 ; NO-SIMD128-FAST-NEXT:    i32.const $push81=, 7
2040 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push80=, $pop16, $pop81
2041 ; NO-SIMD128-FAST-NEXT:    local.tee $push79=, $5=, $pop80
2042 ; NO-SIMD128-FAST-NEXT:    i32.xor $push17=, $6, $pop79
2043 ; NO-SIMD128-FAST-NEXT:    i32.sub $push18=, $pop17, $5
2044 ; NO-SIMD128-FAST-NEXT:    i32.store8 5($0), $pop18
2045 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push19=, $7
2046 ; NO-SIMD128-FAST-NEXT:    i32.const $push78=, 7
2047 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push77=, $pop19, $pop78
2048 ; NO-SIMD128-FAST-NEXT:    local.tee $push76=, $6=, $pop77
2049 ; NO-SIMD128-FAST-NEXT:    i32.xor $push20=, $7, $pop76
2050 ; NO-SIMD128-FAST-NEXT:    i32.sub $push21=, $pop20, $6
2051 ; NO-SIMD128-FAST-NEXT:    i32.store8 6($0), $pop21
2052 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push22=, $8
2053 ; NO-SIMD128-FAST-NEXT:    i32.const $push75=, 7
2054 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push74=, $pop22, $pop75
2055 ; NO-SIMD128-FAST-NEXT:    local.tee $push73=, $7=, $pop74
2056 ; NO-SIMD128-FAST-NEXT:    i32.xor $push23=, $8, $pop73
2057 ; NO-SIMD128-FAST-NEXT:    i32.sub $push24=, $pop23, $7
2058 ; NO-SIMD128-FAST-NEXT:    i32.store8 7($0), $pop24
2059 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push25=, $9
2060 ; NO-SIMD128-FAST-NEXT:    i32.const $push72=, 7
2061 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push71=, $pop25, $pop72
2062 ; NO-SIMD128-FAST-NEXT:    local.tee $push70=, $8=, $pop71
2063 ; NO-SIMD128-FAST-NEXT:    i32.xor $push26=, $9, $pop70
2064 ; NO-SIMD128-FAST-NEXT:    i32.sub $push27=, $pop26, $8
2065 ; NO-SIMD128-FAST-NEXT:    i32.store8 8($0), $pop27
2066 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push28=, $10
2067 ; NO-SIMD128-FAST-NEXT:    i32.const $push69=, 7
2068 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push68=, $pop28, $pop69
2069 ; NO-SIMD128-FAST-NEXT:    local.tee $push67=, $9=, $pop68
2070 ; NO-SIMD128-FAST-NEXT:    i32.xor $push29=, $10, $pop67
2071 ; NO-SIMD128-FAST-NEXT:    i32.sub $push30=, $pop29, $9
2072 ; NO-SIMD128-FAST-NEXT:    i32.store8 9($0), $pop30
2073 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push31=, $11
2074 ; NO-SIMD128-FAST-NEXT:    i32.const $push66=, 7
2075 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push65=, $pop31, $pop66
2076 ; NO-SIMD128-FAST-NEXT:    local.tee $push64=, $10=, $pop65
2077 ; NO-SIMD128-FAST-NEXT:    i32.xor $push32=, $11, $pop64
2078 ; NO-SIMD128-FAST-NEXT:    i32.sub $push33=, $pop32, $10
2079 ; NO-SIMD128-FAST-NEXT:    i32.store8 10($0), $pop33
2080 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push34=, $12
2081 ; NO-SIMD128-FAST-NEXT:    i32.const $push63=, 7
2082 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push62=, $pop34, $pop63
2083 ; NO-SIMD128-FAST-NEXT:    local.tee $push61=, $11=, $pop62
2084 ; NO-SIMD128-FAST-NEXT:    i32.xor $push35=, $12, $pop61
2085 ; NO-SIMD128-FAST-NEXT:    i32.sub $push36=, $pop35, $11
2086 ; NO-SIMD128-FAST-NEXT:    i32.store8 11($0), $pop36
2087 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push37=, $13
2088 ; NO-SIMD128-FAST-NEXT:    i32.const $push60=, 7
2089 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push59=, $pop37, $pop60
2090 ; NO-SIMD128-FAST-NEXT:    local.tee $push58=, $12=, $pop59
2091 ; NO-SIMD128-FAST-NEXT:    i32.xor $push38=, $13, $pop58
2092 ; NO-SIMD128-FAST-NEXT:    i32.sub $push39=, $pop38, $12
2093 ; NO-SIMD128-FAST-NEXT:    i32.store8 12($0), $pop39
2094 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push40=, $14
2095 ; NO-SIMD128-FAST-NEXT:    i32.const $push57=, 7
2096 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push56=, $pop40, $pop57
2097 ; NO-SIMD128-FAST-NEXT:    local.tee $push55=, $13=, $pop56
2098 ; NO-SIMD128-FAST-NEXT:    i32.xor $push41=, $14, $pop55
2099 ; NO-SIMD128-FAST-NEXT:    i32.sub $push42=, $pop41, $13
2100 ; NO-SIMD128-FAST-NEXT:    i32.store8 13($0), $pop42
2101 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push43=, $15
2102 ; NO-SIMD128-FAST-NEXT:    i32.const $push54=, 7
2103 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push53=, $pop43, $pop54
2104 ; NO-SIMD128-FAST-NEXT:    local.tee $push52=, $14=, $pop53
2105 ; NO-SIMD128-FAST-NEXT:    i32.xor $push44=, $15, $pop52
2106 ; NO-SIMD128-FAST-NEXT:    i32.sub $push45=, $pop44, $14
2107 ; NO-SIMD128-FAST-NEXT:    i32.store8 14($0), $pop45
2108 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push46=, $16
2109 ; NO-SIMD128-FAST-NEXT:    i32.const $push51=, 7
2110 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push50=, $pop46, $pop51
2111 ; NO-SIMD128-FAST-NEXT:    local.tee $push49=, $15=, $pop50
2112 ; NO-SIMD128-FAST-NEXT:    i32.xor $push47=, $16, $pop49
2113 ; NO-SIMD128-FAST-NEXT:    i32.sub $push48=, $pop47, $15
2114 ; NO-SIMD128-FAST-NEXT:    i32.store8 15($0), $pop48
2115 ; NO-SIMD128-FAST-NEXT:    return
2116   %a = sub <16 x i8> zeroinitializer, %x
2117   %b = icmp slt <16 x i8> %x, zeroinitializer
2118   %c = select <16 x i1> %b, <16 x i8> %a, <16 x i8> %x
2119   ret <16 x i8> %c
2122 define <16 x i8> @neg_v16i8(<16 x i8> %x) {
2123 ; SIMD128-LABEL: neg_v16i8:
2124 ; SIMD128:         .functype neg_v16i8 (v128) -> (v128)
2125 ; SIMD128-NEXT:  # %bb.0:
2126 ; SIMD128-NEXT:    i8x16.neg $push0=, $0
2127 ; SIMD128-NEXT:    return $pop0
2129 ; SIMD128-FAST-LABEL: neg_v16i8:
2130 ; SIMD128-FAST:         .functype neg_v16i8 (v128) -> (v128)
2131 ; SIMD128-FAST-NEXT:  # %bb.0:
2132 ; SIMD128-FAST-NEXT:    i8x16.neg $push0=, $0
2133 ; SIMD128-FAST-NEXT:    return $pop0
2135 ; NO-SIMD128-LABEL: neg_v16i8:
2136 ; NO-SIMD128:         .functype neg_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
2137 ; NO-SIMD128-NEXT:  # %bb.0:
2138 ; NO-SIMD128-NEXT:    i32.const $push0=, 0
2139 ; NO-SIMD128-NEXT:    i32.sub $push1=, $pop0, $16
2140 ; NO-SIMD128-NEXT:    i32.store8 15($0), $pop1
2141 ; NO-SIMD128-NEXT:    i32.const $push31=, 0
2142 ; NO-SIMD128-NEXT:    i32.sub $push2=, $pop31, $15
2143 ; NO-SIMD128-NEXT:    i32.store8 14($0), $pop2
2144 ; NO-SIMD128-NEXT:    i32.const $push30=, 0
2145 ; NO-SIMD128-NEXT:    i32.sub $push3=, $pop30, $14
2146 ; NO-SIMD128-NEXT:    i32.store8 13($0), $pop3
2147 ; NO-SIMD128-NEXT:    i32.const $push29=, 0
2148 ; NO-SIMD128-NEXT:    i32.sub $push4=, $pop29, $13
2149 ; NO-SIMD128-NEXT:    i32.store8 12($0), $pop4
2150 ; NO-SIMD128-NEXT:    i32.const $push28=, 0
2151 ; NO-SIMD128-NEXT:    i32.sub $push5=, $pop28, $12
2152 ; NO-SIMD128-NEXT:    i32.store8 11($0), $pop5
2153 ; NO-SIMD128-NEXT:    i32.const $push27=, 0
2154 ; NO-SIMD128-NEXT:    i32.sub $push6=, $pop27, $11
2155 ; NO-SIMD128-NEXT:    i32.store8 10($0), $pop6
2156 ; NO-SIMD128-NEXT:    i32.const $push26=, 0
2157 ; NO-SIMD128-NEXT:    i32.sub $push7=, $pop26, $10
2158 ; NO-SIMD128-NEXT:    i32.store8 9($0), $pop7
2159 ; NO-SIMD128-NEXT:    i32.const $push25=, 0
2160 ; NO-SIMD128-NEXT:    i32.sub $push8=, $pop25, $9
2161 ; NO-SIMD128-NEXT:    i32.store8 8($0), $pop8
2162 ; NO-SIMD128-NEXT:    i32.const $push24=, 0
2163 ; NO-SIMD128-NEXT:    i32.sub $push9=, $pop24, $8
2164 ; NO-SIMD128-NEXT:    i32.store8 7($0), $pop9
2165 ; NO-SIMD128-NEXT:    i32.const $push23=, 0
2166 ; NO-SIMD128-NEXT:    i32.sub $push10=, $pop23, $7
2167 ; NO-SIMD128-NEXT:    i32.store8 6($0), $pop10
2168 ; NO-SIMD128-NEXT:    i32.const $push22=, 0
2169 ; NO-SIMD128-NEXT:    i32.sub $push11=, $pop22, $6
2170 ; NO-SIMD128-NEXT:    i32.store8 5($0), $pop11
2171 ; NO-SIMD128-NEXT:    i32.const $push21=, 0
2172 ; NO-SIMD128-NEXT:    i32.sub $push12=, $pop21, $5
2173 ; NO-SIMD128-NEXT:    i32.store8 4($0), $pop12
2174 ; NO-SIMD128-NEXT:    i32.const $push20=, 0
2175 ; NO-SIMD128-NEXT:    i32.sub $push13=, $pop20, $4
2176 ; NO-SIMD128-NEXT:    i32.store8 3($0), $pop13
2177 ; NO-SIMD128-NEXT:    i32.const $push19=, 0
2178 ; NO-SIMD128-NEXT:    i32.sub $push14=, $pop19, $3
2179 ; NO-SIMD128-NEXT:    i32.store8 2($0), $pop14
2180 ; NO-SIMD128-NEXT:    i32.const $push18=, 0
2181 ; NO-SIMD128-NEXT:    i32.sub $push15=, $pop18, $2
2182 ; NO-SIMD128-NEXT:    i32.store8 1($0), $pop15
2183 ; NO-SIMD128-NEXT:    i32.const $push17=, 0
2184 ; NO-SIMD128-NEXT:    i32.sub $push16=, $pop17, $1
2185 ; NO-SIMD128-NEXT:    i32.store8 0($0), $pop16
2186 ; NO-SIMD128-NEXT:    return
2188 ; NO-SIMD128-FAST-LABEL: neg_v16i8:
2189 ; NO-SIMD128-FAST:         .functype neg_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
2190 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
2191 ; NO-SIMD128-FAST-NEXT:    i32.const $push0=, 0
2192 ; NO-SIMD128-FAST-NEXT:    i32.sub $push1=, $pop0, $1
2193 ; NO-SIMD128-FAST-NEXT:    i32.store8 0($0), $pop1
2194 ; NO-SIMD128-FAST-NEXT:    i32.const $push31=, 0
2195 ; NO-SIMD128-FAST-NEXT:    i32.sub $push2=, $pop31, $2
2196 ; NO-SIMD128-FAST-NEXT:    i32.store8 1($0), $pop2
2197 ; NO-SIMD128-FAST-NEXT:    i32.const $push30=, 0
2198 ; NO-SIMD128-FAST-NEXT:    i32.sub $push3=, $pop30, $3
2199 ; NO-SIMD128-FAST-NEXT:    i32.store8 2($0), $pop3
2200 ; NO-SIMD128-FAST-NEXT:    i32.const $push29=, 0
2201 ; NO-SIMD128-FAST-NEXT:    i32.sub $push4=, $pop29, $4
2202 ; NO-SIMD128-FAST-NEXT:    i32.store8 3($0), $pop4
2203 ; NO-SIMD128-FAST-NEXT:    i32.const $push28=, 0
2204 ; NO-SIMD128-FAST-NEXT:    i32.sub $push5=, $pop28, $5
2205 ; NO-SIMD128-FAST-NEXT:    i32.store8 4($0), $pop5
2206 ; NO-SIMD128-FAST-NEXT:    i32.const $push27=, 0
2207 ; NO-SIMD128-FAST-NEXT:    i32.sub $push6=, $pop27, $6
2208 ; NO-SIMD128-FAST-NEXT:    i32.store8 5($0), $pop6
2209 ; NO-SIMD128-FAST-NEXT:    i32.const $push26=, 0
2210 ; NO-SIMD128-FAST-NEXT:    i32.sub $push7=, $pop26, $7
2211 ; NO-SIMD128-FAST-NEXT:    i32.store8 6($0), $pop7
2212 ; NO-SIMD128-FAST-NEXT:    i32.const $push25=, 0
2213 ; NO-SIMD128-FAST-NEXT:    i32.sub $push8=, $pop25, $8
2214 ; NO-SIMD128-FAST-NEXT:    i32.store8 7($0), $pop8
2215 ; NO-SIMD128-FAST-NEXT:    i32.const $push24=, 0
2216 ; NO-SIMD128-FAST-NEXT:    i32.sub $push9=, $pop24, $9
2217 ; NO-SIMD128-FAST-NEXT:    i32.store8 8($0), $pop9
2218 ; NO-SIMD128-FAST-NEXT:    i32.const $push23=, 0
2219 ; NO-SIMD128-FAST-NEXT:    i32.sub $push10=, $pop23, $10
2220 ; NO-SIMD128-FAST-NEXT:    i32.store8 9($0), $pop10
2221 ; NO-SIMD128-FAST-NEXT:    i32.const $push22=, 0
2222 ; NO-SIMD128-FAST-NEXT:    i32.sub $push11=, $pop22, $11
2223 ; NO-SIMD128-FAST-NEXT:    i32.store8 10($0), $pop11
2224 ; NO-SIMD128-FAST-NEXT:    i32.const $push21=, 0
2225 ; NO-SIMD128-FAST-NEXT:    i32.sub $push12=, $pop21, $12
2226 ; NO-SIMD128-FAST-NEXT:    i32.store8 11($0), $pop12
2227 ; NO-SIMD128-FAST-NEXT:    i32.const $push20=, 0
2228 ; NO-SIMD128-FAST-NEXT:    i32.sub $push13=, $pop20, $13
2229 ; NO-SIMD128-FAST-NEXT:    i32.store8 12($0), $pop13
2230 ; NO-SIMD128-FAST-NEXT:    i32.const $push19=, 0
2231 ; NO-SIMD128-FAST-NEXT:    i32.sub $push14=, $pop19, $14
2232 ; NO-SIMD128-FAST-NEXT:    i32.store8 13($0), $pop14
2233 ; NO-SIMD128-FAST-NEXT:    i32.const $push18=, 0
2234 ; NO-SIMD128-FAST-NEXT:    i32.sub $push15=, $pop18, $15
2235 ; NO-SIMD128-FAST-NEXT:    i32.store8 14($0), $pop15
2236 ; NO-SIMD128-FAST-NEXT:    i32.const $push17=, 0
2237 ; NO-SIMD128-FAST-NEXT:    i32.sub $push16=, $pop17, $16
2238 ; NO-SIMD128-FAST-NEXT:    i32.store8 15($0), $pop16
2239 ; NO-SIMD128-FAST-NEXT:    return
2240   %a = sub <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0,
2241                       i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>,
2242                      %x
2243   ret <16 x i8> %a
2246 define <16 x i8> @shl_v16i8(<16 x i8> %v, i8 %x) {
2247 ; SIMD128-LABEL: shl_v16i8:
2248 ; SIMD128:         .functype shl_v16i8 (v128, i32) -> (v128)
2249 ; SIMD128-NEXT:  # %bb.0:
2250 ; SIMD128-NEXT:    i8x16.shl $push0=, $0, $1
2251 ; SIMD128-NEXT:    return $pop0
2253 ; SIMD128-FAST-LABEL: shl_v16i8:
2254 ; SIMD128-FAST:         .functype shl_v16i8 (v128, i32) -> (v128)
2255 ; SIMD128-FAST-NEXT:  # %bb.0:
2256 ; SIMD128-FAST-NEXT:    i8x16.shl $push0=, $0, $1
2257 ; SIMD128-FAST-NEXT:    return $pop0
2259 ; NO-SIMD128-LABEL: shl_v16i8:
2260 ; NO-SIMD128:         .functype shl_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
2261 ; NO-SIMD128-NEXT:  # %bb.0:
2262 ; NO-SIMD128-NEXT:    i32.const $push0=, 255
2263 ; NO-SIMD128-NEXT:    i32.and $push18=, $17, $pop0
2264 ; NO-SIMD128-NEXT:    local.tee $push17=, $17=, $pop18
2265 ; NO-SIMD128-NEXT:    i32.shl $push1=, $16, $pop17
2266 ; NO-SIMD128-NEXT:    i32.store8 15($0), $pop1
2267 ; NO-SIMD128-NEXT:    i32.shl $push2=, $15, $17
2268 ; NO-SIMD128-NEXT:    i32.store8 14($0), $pop2
2269 ; NO-SIMD128-NEXT:    i32.shl $push3=, $14, $17
2270 ; NO-SIMD128-NEXT:    i32.store8 13($0), $pop3
2271 ; NO-SIMD128-NEXT:    i32.shl $push4=, $13, $17
2272 ; NO-SIMD128-NEXT:    i32.store8 12($0), $pop4
2273 ; NO-SIMD128-NEXT:    i32.shl $push5=, $12, $17
2274 ; NO-SIMD128-NEXT:    i32.store8 11($0), $pop5
2275 ; NO-SIMD128-NEXT:    i32.shl $push6=, $11, $17
2276 ; NO-SIMD128-NEXT:    i32.store8 10($0), $pop6
2277 ; NO-SIMD128-NEXT:    i32.shl $push7=, $10, $17
2278 ; NO-SIMD128-NEXT:    i32.store8 9($0), $pop7
2279 ; NO-SIMD128-NEXT:    i32.shl $push8=, $9, $17
2280 ; NO-SIMD128-NEXT:    i32.store8 8($0), $pop8
2281 ; NO-SIMD128-NEXT:    i32.shl $push9=, $8, $17
2282 ; NO-SIMD128-NEXT:    i32.store8 7($0), $pop9
2283 ; NO-SIMD128-NEXT:    i32.shl $push10=, $7, $17
2284 ; NO-SIMD128-NEXT:    i32.store8 6($0), $pop10
2285 ; NO-SIMD128-NEXT:    i32.shl $push11=, $6, $17
2286 ; NO-SIMD128-NEXT:    i32.store8 5($0), $pop11
2287 ; NO-SIMD128-NEXT:    i32.shl $push12=, $5, $17
2288 ; NO-SIMD128-NEXT:    i32.store8 4($0), $pop12
2289 ; NO-SIMD128-NEXT:    i32.shl $push13=, $4, $17
2290 ; NO-SIMD128-NEXT:    i32.store8 3($0), $pop13
2291 ; NO-SIMD128-NEXT:    i32.shl $push14=, $3, $17
2292 ; NO-SIMD128-NEXT:    i32.store8 2($0), $pop14
2293 ; NO-SIMD128-NEXT:    i32.shl $push15=, $2, $17
2294 ; NO-SIMD128-NEXT:    i32.store8 1($0), $pop15
2295 ; NO-SIMD128-NEXT:    i32.shl $push16=, $1, $17
2296 ; NO-SIMD128-NEXT:    i32.store8 0($0), $pop16
2297 ; NO-SIMD128-NEXT:    return
2299 ; NO-SIMD128-FAST-LABEL: shl_v16i8:
2300 ; NO-SIMD128-FAST:         .functype shl_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
2301 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
2302 ; NO-SIMD128-FAST-NEXT:    i32.const $push0=, 255
2303 ; NO-SIMD128-FAST-NEXT:    i32.and $push18=, $17, $pop0
2304 ; NO-SIMD128-FAST-NEXT:    local.tee $push17=, $17=, $pop18
2305 ; NO-SIMD128-FAST-NEXT:    i32.shl $push1=, $2, $pop17
2306 ; NO-SIMD128-FAST-NEXT:    i32.store8 1($0), $pop1
2307 ; NO-SIMD128-FAST-NEXT:    i32.shl $push2=, $1, $17
2308 ; NO-SIMD128-FAST-NEXT:    i32.store8 0($0), $pop2
2309 ; NO-SIMD128-FAST-NEXT:    i32.shl $push3=, $3, $17
2310 ; NO-SIMD128-FAST-NEXT:    i32.store8 2($0), $pop3
2311 ; NO-SIMD128-FAST-NEXT:    i32.shl $push4=, $4, $17
2312 ; NO-SIMD128-FAST-NEXT:    i32.store8 3($0), $pop4
2313 ; NO-SIMD128-FAST-NEXT:    i32.shl $push5=, $5, $17
2314 ; NO-SIMD128-FAST-NEXT:    i32.store8 4($0), $pop5
2315 ; NO-SIMD128-FAST-NEXT:    i32.shl $push6=, $6, $17
2316 ; NO-SIMD128-FAST-NEXT:    i32.store8 5($0), $pop6
2317 ; NO-SIMD128-FAST-NEXT:    i32.shl $push7=, $7, $17
2318 ; NO-SIMD128-FAST-NEXT:    i32.store8 6($0), $pop7
2319 ; NO-SIMD128-FAST-NEXT:    i32.shl $push8=, $8, $17
2320 ; NO-SIMD128-FAST-NEXT:    i32.store8 7($0), $pop8
2321 ; NO-SIMD128-FAST-NEXT:    i32.shl $push9=, $9, $17
2322 ; NO-SIMD128-FAST-NEXT:    i32.store8 8($0), $pop9
2323 ; NO-SIMD128-FAST-NEXT:    i32.shl $push10=, $10, $17
2324 ; NO-SIMD128-FAST-NEXT:    i32.store8 9($0), $pop10
2325 ; NO-SIMD128-FAST-NEXT:    i32.shl $push11=, $11, $17
2326 ; NO-SIMD128-FAST-NEXT:    i32.store8 10($0), $pop11
2327 ; NO-SIMD128-FAST-NEXT:    i32.shl $push12=, $12, $17
2328 ; NO-SIMD128-FAST-NEXT:    i32.store8 11($0), $pop12
2329 ; NO-SIMD128-FAST-NEXT:    i32.shl $push13=, $13, $17
2330 ; NO-SIMD128-FAST-NEXT:    i32.store8 12($0), $pop13
2331 ; NO-SIMD128-FAST-NEXT:    i32.shl $push14=, $14, $17
2332 ; NO-SIMD128-FAST-NEXT:    i32.store8 13($0), $pop14
2333 ; NO-SIMD128-FAST-NEXT:    i32.shl $push15=, $15, $17
2334 ; NO-SIMD128-FAST-NEXT:    i32.store8 14($0), $pop15
2335 ; NO-SIMD128-FAST-NEXT:    i32.shl $push16=, $16, $17
2336 ; NO-SIMD128-FAST-NEXT:    i32.store8 15($0), $pop16
2337 ; NO-SIMD128-FAST-NEXT:    return
2338   %t = insertelement <16 x i8> undef, i8 %x, i32 0
2339   %s = shufflevector <16 x i8> %t, <16 x i8> undef,
2340     <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0,
2341                 i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
2342   %a = shl <16 x i8> %v, %s
2343   ret <16 x i8> %a
2346 define <16 x i8> @shl_const_v16i8(<16 x i8> %v) {
2347 ; SIMD128-LABEL: shl_const_v16i8:
2348 ; SIMD128:         .functype shl_const_v16i8 (v128) -> (v128)
2349 ; SIMD128-NEXT:  # %bb.0:
2350 ; SIMD128-NEXT:    i32.const $push0=, 5
2351 ; SIMD128-NEXT:    i8x16.shl $push1=, $0, $pop0
2352 ; SIMD128-NEXT:    return $pop1
2354 ; SIMD128-FAST-LABEL: shl_const_v16i8:
2355 ; SIMD128-FAST:         .functype shl_const_v16i8 (v128) -> (v128)
2356 ; SIMD128-FAST-NEXT:  # %bb.0:
2357 ; SIMD128-FAST-NEXT:    i32.const $push1=, 5
2358 ; SIMD128-FAST-NEXT:    i8x16.shl $push0=, $0, $pop1
2359 ; SIMD128-FAST-NEXT:    return $pop0
2361 ; NO-SIMD128-LABEL: shl_const_v16i8:
2362 ; NO-SIMD128:         .functype shl_const_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
2363 ; NO-SIMD128-NEXT:  # %bb.0:
2364 ; NO-SIMD128-NEXT:    i32.const $push0=, 5
2365 ; NO-SIMD128-NEXT:    i32.shl $push1=, $16, $pop0
2366 ; NO-SIMD128-NEXT:    i32.store8 15($0), $pop1
2367 ; NO-SIMD128-NEXT:    i32.const $push31=, 5
2368 ; NO-SIMD128-NEXT:    i32.shl $push2=, $15, $pop31
2369 ; NO-SIMD128-NEXT:    i32.store8 14($0), $pop2
2370 ; NO-SIMD128-NEXT:    i32.const $push30=, 5
2371 ; NO-SIMD128-NEXT:    i32.shl $push3=, $14, $pop30
2372 ; NO-SIMD128-NEXT:    i32.store8 13($0), $pop3
2373 ; NO-SIMD128-NEXT:    i32.const $push29=, 5
2374 ; NO-SIMD128-NEXT:    i32.shl $push4=, $13, $pop29
2375 ; NO-SIMD128-NEXT:    i32.store8 12($0), $pop4
2376 ; NO-SIMD128-NEXT:    i32.const $push28=, 5
2377 ; NO-SIMD128-NEXT:    i32.shl $push5=, $12, $pop28
2378 ; NO-SIMD128-NEXT:    i32.store8 11($0), $pop5
2379 ; NO-SIMD128-NEXT:    i32.const $push27=, 5
2380 ; NO-SIMD128-NEXT:    i32.shl $push6=, $11, $pop27
2381 ; NO-SIMD128-NEXT:    i32.store8 10($0), $pop6
2382 ; NO-SIMD128-NEXT:    i32.const $push26=, 5
2383 ; NO-SIMD128-NEXT:    i32.shl $push7=, $10, $pop26
2384 ; NO-SIMD128-NEXT:    i32.store8 9($0), $pop7
2385 ; NO-SIMD128-NEXT:    i32.const $push25=, 5
2386 ; NO-SIMD128-NEXT:    i32.shl $push8=, $9, $pop25
2387 ; NO-SIMD128-NEXT:    i32.store8 8($0), $pop8
2388 ; NO-SIMD128-NEXT:    i32.const $push24=, 5
2389 ; NO-SIMD128-NEXT:    i32.shl $push9=, $8, $pop24
2390 ; NO-SIMD128-NEXT:    i32.store8 7($0), $pop9
2391 ; NO-SIMD128-NEXT:    i32.const $push23=, 5
2392 ; NO-SIMD128-NEXT:    i32.shl $push10=, $7, $pop23
2393 ; NO-SIMD128-NEXT:    i32.store8 6($0), $pop10
2394 ; NO-SIMD128-NEXT:    i32.const $push22=, 5
2395 ; NO-SIMD128-NEXT:    i32.shl $push11=, $6, $pop22
2396 ; NO-SIMD128-NEXT:    i32.store8 5($0), $pop11
2397 ; NO-SIMD128-NEXT:    i32.const $push21=, 5
2398 ; NO-SIMD128-NEXT:    i32.shl $push12=, $5, $pop21
2399 ; NO-SIMD128-NEXT:    i32.store8 4($0), $pop12
2400 ; NO-SIMD128-NEXT:    i32.const $push20=, 5
2401 ; NO-SIMD128-NEXT:    i32.shl $push13=, $4, $pop20
2402 ; NO-SIMD128-NEXT:    i32.store8 3($0), $pop13
2403 ; NO-SIMD128-NEXT:    i32.const $push19=, 5
2404 ; NO-SIMD128-NEXT:    i32.shl $push14=, $3, $pop19
2405 ; NO-SIMD128-NEXT:    i32.store8 2($0), $pop14
2406 ; NO-SIMD128-NEXT:    i32.const $push18=, 5
2407 ; NO-SIMD128-NEXT:    i32.shl $push15=, $2, $pop18
2408 ; NO-SIMD128-NEXT:    i32.store8 1($0), $pop15
2409 ; NO-SIMD128-NEXT:    i32.const $push17=, 5
2410 ; NO-SIMD128-NEXT:    i32.shl $push16=, $1, $pop17
2411 ; NO-SIMD128-NEXT:    i32.store8 0($0), $pop16
2412 ; NO-SIMD128-NEXT:    return
2414 ; NO-SIMD128-FAST-LABEL: shl_const_v16i8:
2415 ; NO-SIMD128-FAST:         .functype shl_const_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
2416 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
2417 ; NO-SIMD128-FAST-NEXT:    i32.const $push0=, 5
2418 ; NO-SIMD128-FAST-NEXT:    i32.shl $push1=, $1, $pop0
2419 ; NO-SIMD128-FAST-NEXT:    i32.store8 0($0), $pop1
2420 ; NO-SIMD128-FAST-NEXT:    i32.const $push31=, 5
2421 ; NO-SIMD128-FAST-NEXT:    i32.shl $push2=, $2, $pop31
2422 ; NO-SIMD128-FAST-NEXT:    i32.store8 1($0), $pop2
2423 ; NO-SIMD128-FAST-NEXT:    i32.const $push30=, 5
2424 ; NO-SIMD128-FAST-NEXT:    i32.shl $push3=, $3, $pop30
2425 ; NO-SIMD128-FAST-NEXT:    i32.store8 2($0), $pop3
2426 ; NO-SIMD128-FAST-NEXT:    i32.const $push29=, 5
2427 ; NO-SIMD128-FAST-NEXT:    i32.shl $push4=, $4, $pop29
2428 ; NO-SIMD128-FAST-NEXT:    i32.store8 3($0), $pop4
2429 ; NO-SIMD128-FAST-NEXT:    i32.const $push28=, 5
2430 ; NO-SIMD128-FAST-NEXT:    i32.shl $push5=, $5, $pop28
2431 ; NO-SIMD128-FAST-NEXT:    i32.store8 4($0), $pop5
2432 ; NO-SIMD128-FAST-NEXT:    i32.const $push27=, 5
2433 ; NO-SIMD128-FAST-NEXT:    i32.shl $push6=, $6, $pop27
2434 ; NO-SIMD128-FAST-NEXT:    i32.store8 5($0), $pop6
2435 ; NO-SIMD128-FAST-NEXT:    i32.const $push26=, 5
2436 ; NO-SIMD128-FAST-NEXT:    i32.shl $push7=, $7, $pop26
2437 ; NO-SIMD128-FAST-NEXT:    i32.store8 6($0), $pop7
2438 ; NO-SIMD128-FAST-NEXT:    i32.const $push25=, 5
2439 ; NO-SIMD128-FAST-NEXT:    i32.shl $push8=, $8, $pop25
2440 ; NO-SIMD128-FAST-NEXT:    i32.store8 7($0), $pop8
2441 ; NO-SIMD128-FAST-NEXT:    i32.const $push24=, 5
2442 ; NO-SIMD128-FAST-NEXT:    i32.shl $push9=, $9, $pop24
2443 ; NO-SIMD128-FAST-NEXT:    i32.store8 8($0), $pop9
2444 ; NO-SIMD128-FAST-NEXT:    i32.const $push23=, 5
2445 ; NO-SIMD128-FAST-NEXT:    i32.shl $push10=, $10, $pop23
2446 ; NO-SIMD128-FAST-NEXT:    i32.store8 9($0), $pop10
2447 ; NO-SIMD128-FAST-NEXT:    i32.const $push22=, 5
2448 ; NO-SIMD128-FAST-NEXT:    i32.shl $push11=, $11, $pop22
2449 ; NO-SIMD128-FAST-NEXT:    i32.store8 10($0), $pop11
2450 ; NO-SIMD128-FAST-NEXT:    i32.const $push21=, 5
2451 ; NO-SIMD128-FAST-NEXT:    i32.shl $push12=, $12, $pop21
2452 ; NO-SIMD128-FAST-NEXT:    i32.store8 11($0), $pop12
2453 ; NO-SIMD128-FAST-NEXT:    i32.const $push20=, 5
2454 ; NO-SIMD128-FAST-NEXT:    i32.shl $push13=, $13, $pop20
2455 ; NO-SIMD128-FAST-NEXT:    i32.store8 12($0), $pop13
2456 ; NO-SIMD128-FAST-NEXT:    i32.const $push19=, 5
2457 ; NO-SIMD128-FAST-NEXT:    i32.shl $push14=, $14, $pop19
2458 ; NO-SIMD128-FAST-NEXT:    i32.store8 13($0), $pop14
2459 ; NO-SIMD128-FAST-NEXT:    i32.const $push18=, 5
2460 ; NO-SIMD128-FAST-NEXT:    i32.shl $push15=, $15, $pop18
2461 ; NO-SIMD128-FAST-NEXT:    i32.store8 14($0), $pop15
2462 ; NO-SIMD128-FAST-NEXT:    i32.const $push17=, 5
2463 ; NO-SIMD128-FAST-NEXT:    i32.shl $push16=, $16, $pop17
2464 ; NO-SIMD128-FAST-NEXT:    i32.store8 15($0), $pop16
2465 ; NO-SIMD128-FAST-NEXT:    return
2466   %a = shl <16 x i8> %v,
2467     <i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5,
2468      i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5>
2469   ret <16 x i8> %a
2472 define <16 x i8> @shl_vec_v16i8(<16 x i8> %v, <16 x i8> %x) {
2473 ; SIMD128-LABEL: shl_vec_v16i8:
2474 ; SIMD128:         .functype shl_vec_v16i8 (v128, v128) -> (v128)
2475 ; SIMD128-NEXT:  # %bb.0:
2476 ; SIMD128-NEXT:    i8x16.extract_lane_u $push7=, $0, 0
2477 ; SIMD128-NEXT:    i8x16.extract_lane_u $push5=, $1, 0
2478 ; SIMD128-NEXT:    i32.const $push1=, 7
2479 ; SIMD128-NEXT:    i32.and $push6=, $pop5, $pop1
2480 ; SIMD128-NEXT:    i32.shl $push8=, $pop7, $pop6
2481 ; SIMD128-NEXT:    i8x16.splat $push9=, $pop8
2482 ; SIMD128-NEXT:    i8x16.extract_lane_u $push3=, $0, 1
2483 ; SIMD128-NEXT:    i8x16.extract_lane_u $push0=, $1, 1
2484 ; SIMD128-NEXT:    i32.const $push95=, 7
2485 ; SIMD128-NEXT:    i32.and $push2=, $pop0, $pop95
2486 ; SIMD128-NEXT:    i32.shl $push4=, $pop3, $pop2
2487 ; SIMD128-NEXT:    i8x16.replace_lane $push10=, $pop9, 1, $pop4
2488 ; SIMD128-NEXT:    i8x16.extract_lane_u $push13=, $0, 2
2489 ; SIMD128-NEXT:    i8x16.extract_lane_u $push11=, $1, 2
2490 ; SIMD128-NEXT:    i32.const $push94=, 7
2491 ; SIMD128-NEXT:    i32.and $push12=, $pop11, $pop94
2492 ; SIMD128-NEXT:    i32.shl $push14=, $pop13, $pop12
2493 ; SIMD128-NEXT:    i8x16.replace_lane $push15=, $pop10, 2, $pop14
2494 ; SIMD128-NEXT:    i8x16.extract_lane_u $push18=, $0, 3
2495 ; SIMD128-NEXT:    i8x16.extract_lane_u $push16=, $1, 3
2496 ; SIMD128-NEXT:    i32.const $push93=, 7
2497 ; SIMD128-NEXT:    i32.and $push17=, $pop16, $pop93
2498 ; SIMD128-NEXT:    i32.shl $push19=, $pop18, $pop17
2499 ; SIMD128-NEXT:    i8x16.replace_lane $push20=, $pop15, 3, $pop19
2500 ; SIMD128-NEXT:    i8x16.extract_lane_u $push23=, $0, 4
2501 ; SIMD128-NEXT:    i8x16.extract_lane_u $push21=, $1, 4
2502 ; SIMD128-NEXT:    i32.const $push92=, 7
2503 ; SIMD128-NEXT:    i32.and $push22=, $pop21, $pop92
2504 ; SIMD128-NEXT:    i32.shl $push24=, $pop23, $pop22
2505 ; SIMD128-NEXT:    i8x16.replace_lane $push25=, $pop20, 4, $pop24
2506 ; SIMD128-NEXT:    i8x16.extract_lane_u $push28=, $0, 5
2507 ; SIMD128-NEXT:    i8x16.extract_lane_u $push26=, $1, 5
2508 ; SIMD128-NEXT:    i32.const $push91=, 7
2509 ; SIMD128-NEXT:    i32.and $push27=, $pop26, $pop91
2510 ; SIMD128-NEXT:    i32.shl $push29=, $pop28, $pop27
2511 ; SIMD128-NEXT:    i8x16.replace_lane $push30=, $pop25, 5, $pop29
2512 ; SIMD128-NEXT:    i8x16.extract_lane_u $push33=, $0, 6
2513 ; SIMD128-NEXT:    i8x16.extract_lane_u $push31=, $1, 6
2514 ; SIMD128-NEXT:    i32.const $push90=, 7
2515 ; SIMD128-NEXT:    i32.and $push32=, $pop31, $pop90
2516 ; SIMD128-NEXT:    i32.shl $push34=, $pop33, $pop32
2517 ; SIMD128-NEXT:    i8x16.replace_lane $push35=, $pop30, 6, $pop34
2518 ; SIMD128-NEXT:    i8x16.extract_lane_u $push38=, $0, 7
2519 ; SIMD128-NEXT:    i8x16.extract_lane_u $push36=, $1, 7
2520 ; SIMD128-NEXT:    i32.const $push89=, 7
2521 ; SIMD128-NEXT:    i32.and $push37=, $pop36, $pop89
2522 ; SIMD128-NEXT:    i32.shl $push39=, $pop38, $pop37
2523 ; SIMD128-NEXT:    i8x16.replace_lane $push40=, $pop35, 7, $pop39
2524 ; SIMD128-NEXT:    i8x16.extract_lane_u $push43=, $0, 8
2525 ; SIMD128-NEXT:    i8x16.extract_lane_u $push41=, $1, 8
2526 ; SIMD128-NEXT:    i32.const $push88=, 7
2527 ; SIMD128-NEXT:    i32.and $push42=, $pop41, $pop88
2528 ; SIMD128-NEXT:    i32.shl $push44=, $pop43, $pop42
2529 ; SIMD128-NEXT:    i8x16.replace_lane $push45=, $pop40, 8, $pop44
2530 ; SIMD128-NEXT:    i8x16.extract_lane_u $push48=, $0, 9
2531 ; SIMD128-NEXT:    i8x16.extract_lane_u $push46=, $1, 9
2532 ; SIMD128-NEXT:    i32.const $push87=, 7
2533 ; SIMD128-NEXT:    i32.and $push47=, $pop46, $pop87
2534 ; SIMD128-NEXT:    i32.shl $push49=, $pop48, $pop47
2535 ; SIMD128-NEXT:    i8x16.replace_lane $push50=, $pop45, 9, $pop49
2536 ; SIMD128-NEXT:    i8x16.extract_lane_u $push53=, $0, 10
2537 ; SIMD128-NEXT:    i8x16.extract_lane_u $push51=, $1, 10
2538 ; SIMD128-NEXT:    i32.const $push86=, 7
2539 ; SIMD128-NEXT:    i32.and $push52=, $pop51, $pop86
2540 ; SIMD128-NEXT:    i32.shl $push54=, $pop53, $pop52
2541 ; SIMD128-NEXT:    i8x16.replace_lane $push55=, $pop50, 10, $pop54
2542 ; SIMD128-NEXT:    i8x16.extract_lane_u $push58=, $0, 11
2543 ; SIMD128-NEXT:    i8x16.extract_lane_u $push56=, $1, 11
2544 ; SIMD128-NEXT:    i32.const $push85=, 7
2545 ; SIMD128-NEXT:    i32.and $push57=, $pop56, $pop85
2546 ; SIMD128-NEXT:    i32.shl $push59=, $pop58, $pop57
2547 ; SIMD128-NEXT:    i8x16.replace_lane $push60=, $pop55, 11, $pop59
2548 ; SIMD128-NEXT:    i8x16.extract_lane_u $push63=, $0, 12
2549 ; SIMD128-NEXT:    i8x16.extract_lane_u $push61=, $1, 12
2550 ; SIMD128-NEXT:    i32.const $push84=, 7
2551 ; SIMD128-NEXT:    i32.and $push62=, $pop61, $pop84
2552 ; SIMD128-NEXT:    i32.shl $push64=, $pop63, $pop62
2553 ; SIMD128-NEXT:    i8x16.replace_lane $push65=, $pop60, 12, $pop64
2554 ; SIMD128-NEXT:    i8x16.extract_lane_u $push68=, $0, 13
2555 ; SIMD128-NEXT:    i8x16.extract_lane_u $push66=, $1, 13
2556 ; SIMD128-NEXT:    i32.const $push83=, 7
2557 ; SIMD128-NEXT:    i32.and $push67=, $pop66, $pop83
2558 ; SIMD128-NEXT:    i32.shl $push69=, $pop68, $pop67
2559 ; SIMD128-NEXT:    i8x16.replace_lane $push70=, $pop65, 13, $pop69
2560 ; SIMD128-NEXT:    i8x16.extract_lane_u $push73=, $0, 14
2561 ; SIMD128-NEXT:    i8x16.extract_lane_u $push71=, $1, 14
2562 ; SIMD128-NEXT:    i32.const $push82=, 7
2563 ; SIMD128-NEXT:    i32.and $push72=, $pop71, $pop82
2564 ; SIMD128-NEXT:    i32.shl $push74=, $pop73, $pop72
2565 ; SIMD128-NEXT:    i8x16.replace_lane $push75=, $pop70, 14, $pop74
2566 ; SIMD128-NEXT:    i8x16.extract_lane_u $push78=, $0, 15
2567 ; SIMD128-NEXT:    i8x16.extract_lane_u $push76=, $1, 15
2568 ; SIMD128-NEXT:    i32.const $push81=, 7
2569 ; SIMD128-NEXT:    i32.and $push77=, $pop76, $pop81
2570 ; SIMD128-NEXT:    i32.shl $push79=, $pop78, $pop77
2571 ; SIMD128-NEXT:    i8x16.replace_lane $push80=, $pop75, 15, $pop79
2572 ; SIMD128-NEXT:    return $pop80
2574 ; SIMD128-FAST-LABEL: shl_vec_v16i8:
2575 ; SIMD128-FAST:         .functype shl_vec_v16i8 (v128, v128) -> (v128)
2576 ; SIMD128-FAST-NEXT:  # %bb.0:
2577 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push8=, $0, 0
2578 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push6=, $1, 0
2579 ; SIMD128-FAST-NEXT:    i32.const $push2=, 7
2580 ; SIMD128-FAST-NEXT:    i32.and $push7=, $pop6, $pop2
2581 ; SIMD128-FAST-NEXT:    i32.shl $push9=, $pop8, $pop7
2582 ; SIMD128-FAST-NEXT:    i8x16.splat $push10=, $pop9
2583 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push4=, $0, 1
2584 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push1=, $1, 1
2585 ; SIMD128-FAST-NEXT:    i32.const $push95=, 7
2586 ; SIMD128-FAST-NEXT:    i32.and $push3=, $pop1, $pop95
2587 ; SIMD128-FAST-NEXT:    i32.shl $push5=, $pop4, $pop3
2588 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push11=, $pop10, 1, $pop5
2589 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push14=, $0, 2
2590 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push12=, $1, 2
2591 ; SIMD128-FAST-NEXT:    i32.const $push94=, 7
2592 ; SIMD128-FAST-NEXT:    i32.and $push13=, $pop12, $pop94
2593 ; SIMD128-FAST-NEXT:    i32.shl $push15=, $pop14, $pop13
2594 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push16=, $pop11, 2, $pop15
2595 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push19=, $0, 3
2596 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push17=, $1, 3
2597 ; SIMD128-FAST-NEXT:    i32.const $push93=, 7
2598 ; SIMD128-FAST-NEXT:    i32.and $push18=, $pop17, $pop93
2599 ; SIMD128-FAST-NEXT:    i32.shl $push20=, $pop19, $pop18
2600 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push21=, $pop16, 3, $pop20
2601 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push24=, $0, 4
2602 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push22=, $1, 4
2603 ; SIMD128-FAST-NEXT:    i32.const $push92=, 7
2604 ; SIMD128-FAST-NEXT:    i32.and $push23=, $pop22, $pop92
2605 ; SIMD128-FAST-NEXT:    i32.shl $push25=, $pop24, $pop23
2606 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push26=, $pop21, 4, $pop25
2607 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push29=, $0, 5
2608 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push27=, $1, 5
2609 ; SIMD128-FAST-NEXT:    i32.const $push91=, 7
2610 ; SIMD128-FAST-NEXT:    i32.and $push28=, $pop27, $pop91
2611 ; SIMD128-FAST-NEXT:    i32.shl $push30=, $pop29, $pop28
2612 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push31=, $pop26, 5, $pop30
2613 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push34=, $0, 6
2614 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push32=, $1, 6
2615 ; SIMD128-FAST-NEXT:    i32.const $push90=, 7
2616 ; SIMD128-FAST-NEXT:    i32.and $push33=, $pop32, $pop90
2617 ; SIMD128-FAST-NEXT:    i32.shl $push35=, $pop34, $pop33
2618 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push36=, $pop31, 6, $pop35
2619 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push39=, $0, 7
2620 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push37=, $1, 7
2621 ; SIMD128-FAST-NEXT:    i32.const $push89=, 7
2622 ; SIMD128-FAST-NEXT:    i32.and $push38=, $pop37, $pop89
2623 ; SIMD128-FAST-NEXT:    i32.shl $push40=, $pop39, $pop38
2624 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push41=, $pop36, 7, $pop40
2625 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push44=, $0, 8
2626 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push42=, $1, 8
2627 ; SIMD128-FAST-NEXT:    i32.const $push88=, 7
2628 ; SIMD128-FAST-NEXT:    i32.and $push43=, $pop42, $pop88
2629 ; SIMD128-FAST-NEXT:    i32.shl $push45=, $pop44, $pop43
2630 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push46=, $pop41, 8, $pop45
2631 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push49=, $0, 9
2632 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push47=, $1, 9
2633 ; SIMD128-FAST-NEXT:    i32.const $push87=, 7
2634 ; SIMD128-FAST-NEXT:    i32.and $push48=, $pop47, $pop87
2635 ; SIMD128-FAST-NEXT:    i32.shl $push50=, $pop49, $pop48
2636 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push51=, $pop46, 9, $pop50
2637 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push54=, $0, 10
2638 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push52=, $1, 10
2639 ; SIMD128-FAST-NEXT:    i32.const $push86=, 7
2640 ; SIMD128-FAST-NEXT:    i32.and $push53=, $pop52, $pop86
2641 ; SIMD128-FAST-NEXT:    i32.shl $push55=, $pop54, $pop53
2642 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push56=, $pop51, 10, $pop55
2643 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push59=, $0, 11
2644 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push57=, $1, 11
2645 ; SIMD128-FAST-NEXT:    i32.const $push85=, 7
2646 ; SIMD128-FAST-NEXT:    i32.and $push58=, $pop57, $pop85
2647 ; SIMD128-FAST-NEXT:    i32.shl $push60=, $pop59, $pop58
2648 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push61=, $pop56, 11, $pop60
2649 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push64=, $0, 12
2650 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push62=, $1, 12
2651 ; SIMD128-FAST-NEXT:    i32.const $push84=, 7
2652 ; SIMD128-FAST-NEXT:    i32.and $push63=, $pop62, $pop84
2653 ; SIMD128-FAST-NEXT:    i32.shl $push65=, $pop64, $pop63
2654 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push66=, $pop61, 12, $pop65
2655 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push69=, $0, 13
2656 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push67=, $1, 13
2657 ; SIMD128-FAST-NEXT:    i32.const $push83=, 7
2658 ; SIMD128-FAST-NEXT:    i32.and $push68=, $pop67, $pop83
2659 ; SIMD128-FAST-NEXT:    i32.shl $push70=, $pop69, $pop68
2660 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push71=, $pop66, 13, $pop70
2661 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push74=, $0, 14
2662 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push72=, $1, 14
2663 ; SIMD128-FAST-NEXT:    i32.const $push82=, 7
2664 ; SIMD128-FAST-NEXT:    i32.and $push73=, $pop72, $pop82
2665 ; SIMD128-FAST-NEXT:    i32.shl $push75=, $pop74, $pop73
2666 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push76=, $pop71, 14, $pop75
2667 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push79=, $0, 15
2668 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push77=, $1, 15
2669 ; SIMD128-FAST-NEXT:    i32.const $push81=, 7
2670 ; SIMD128-FAST-NEXT:    i32.and $push78=, $pop77, $pop81
2671 ; SIMD128-FAST-NEXT:    i32.shl $push80=, $pop79, $pop78
2672 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push0=, $pop76, 15, $pop80
2673 ; SIMD128-FAST-NEXT:    return $pop0
2675 ; NO-SIMD128-LABEL: shl_vec_v16i8:
2676 ; 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) -> ()
2677 ; NO-SIMD128-NEXT:  # %bb.0:
2678 ; NO-SIMD128-NEXT:    i32.const $push0=, 255
2679 ; NO-SIMD128-NEXT:    i32.and $push1=, $32, $pop0
2680 ; NO-SIMD128-NEXT:    i32.shl $push2=, $16, $pop1
2681 ; NO-SIMD128-NEXT:    i32.store8 15($0), $pop2
2682 ; NO-SIMD128-NEXT:    i32.const $push47=, 255
2683 ; NO-SIMD128-NEXT:    i32.and $push3=, $31, $pop47
2684 ; NO-SIMD128-NEXT:    i32.shl $push4=, $15, $pop3
2685 ; NO-SIMD128-NEXT:    i32.store8 14($0), $pop4
2686 ; NO-SIMD128-NEXT:    i32.const $push46=, 255
2687 ; NO-SIMD128-NEXT:    i32.and $push5=, $30, $pop46
2688 ; NO-SIMD128-NEXT:    i32.shl $push6=, $14, $pop5
2689 ; NO-SIMD128-NEXT:    i32.store8 13($0), $pop6
2690 ; NO-SIMD128-NEXT:    i32.const $push45=, 255
2691 ; NO-SIMD128-NEXT:    i32.and $push7=, $29, $pop45
2692 ; NO-SIMD128-NEXT:    i32.shl $push8=, $13, $pop7
2693 ; NO-SIMD128-NEXT:    i32.store8 12($0), $pop8
2694 ; NO-SIMD128-NEXT:    i32.const $push44=, 255
2695 ; NO-SIMD128-NEXT:    i32.and $push9=, $28, $pop44
2696 ; NO-SIMD128-NEXT:    i32.shl $push10=, $12, $pop9
2697 ; NO-SIMD128-NEXT:    i32.store8 11($0), $pop10
2698 ; NO-SIMD128-NEXT:    i32.const $push43=, 255
2699 ; NO-SIMD128-NEXT:    i32.and $push11=, $27, $pop43
2700 ; NO-SIMD128-NEXT:    i32.shl $push12=, $11, $pop11
2701 ; NO-SIMD128-NEXT:    i32.store8 10($0), $pop12
2702 ; NO-SIMD128-NEXT:    i32.const $push42=, 255
2703 ; NO-SIMD128-NEXT:    i32.and $push13=, $26, $pop42
2704 ; NO-SIMD128-NEXT:    i32.shl $push14=, $10, $pop13
2705 ; NO-SIMD128-NEXT:    i32.store8 9($0), $pop14
2706 ; NO-SIMD128-NEXT:    i32.const $push41=, 255
2707 ; NO-SIMD128-NEXT:    i32.and $push15=, $25, $pop41
2708 ; NO-SIMD128-NEXT:    i32.shl $push16=, $9, $pop15
2709 ; NO-SIMD128-NEXT:    i32.store8 8($0), $pop16
2710 ; NO-SIMD128-NEXT:    i32.const $push40=, 255
2711 ; NO-SIMD128-NEXT:    i32.and $push17=, $24, $pop40
2712 ; NO-SIMD128-NEXT:    i32.shl $push18=, $8, $pop17
2713 ; NO-SIMD128-NEXT:    i32.store8 7($0), $pop18
2714 ; NO-SIMD128-NEXT:    i32.const $push39=, 255
2715 ; NO-SIMD128-NEXT:    i32.and $push19=, $23, $pop39
2716 ; NO-SIMD128-NEXT:    i32.shl $push20=, $7, $pop19
2717 ; NO-SIMD128-NEXT:    i32.store8 6($0), $pop20
2718 ; NO-SIMD128-NEXT:    i32.const $push38=, 255
2719 ; NO-SIMD128-NEXT:    i32.and $push21=, $22, $pop38
2720 ; NO-SIMD128-NEXT:    i32.shl $push22=, $6, $pop21
2721 ; NO-SIMD128-NEXT:    i32.store8 5($0), $pop22
2722 ; NO-SIMD128-NEXT:    i32.const $push37=, 255
2723 ; NO-SIMD128-NEXT:    i32.and $push23=, $21, $pop37
2724 ; NO-SIMD128-NEXT:    i32.shl $push24=, $5, $pop23
2725 ; NO-SIMD128-NEXT:    i32.store8 4($0), $pop24
2726 ; NO-SIMD128-NEXT:    i32.const $push36=, 255
2727 ; NO-SIMD128-NEXT:    i32.and $push25=, $20, $pop36
2728 ; NO-SIMD128-NEXT:    i32.shl $push26=, $4, $pop25
2729 ; NO-SIMD128-NEXT:    i32.store8 3($0), $pop26
2730 ; NO-SIMD128-NEXT:    i32.const $push35=, 255
2731 ; NO-SIMD128-NEXT:    i32.and $push27=, $19, $pop35
2732 ; NO-SIMD128-NEXT:    i32.shl $push28=, $3, $pop27
2733 ; NO-SIMD128-NEXT:    i32.store8 2($0), $pop28
2734 ; NO-SIMD128-NEXT:    i32.const $push34=, 255
2735 ; NO-SIMD128-NEXT:    i32.and $push29=, $18, $pop34
2736 ; NO-SIMD128-NEXT:    i32.shl $push30=, $2, $pop29
2737 ; NO-SIMD128-NEXT:    i32.store8 1($0), $pop30
2738 ; NO-SIMD128-NEXT:    i32.const $push33=, 255
2739 ; NO-SIMD128-NEXT:    i32.and $push31=, $17, $pop33
2740 ; NO-SIMD128-NEXT:    i32.shl $push32=, $1, $pop31
2741 ; NO-SIMD128-NEXT:    i32.store8 0($0), $pop32
2742 ; NO-SIMD128-NEXT:    return
2744 ; NO-SIMD128-FAST-LABEL: shl_vec_v16i8:
2745 ; 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) -> ()
2746 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
2747 ; NO-SIMD128-FAST-NEXT:    i32.const $push0=, 255
2748 ; NO-SIMD128-FAST-NEXT:    i32.and $push1=, $17, $pop0
2749 ; NO-SIMD128-FAST-NEXT:    i32.shl $push2=, $1, $pop1
2750 ; NO-SIMD128-FAST-NEXT:    i32.store8 0($0), $pop2
2751 ; NO-SIMD128-FAST-NEXT:    i32.const $push47=, 255
2752 ; NO-SIMD128-FAST-NEXT:    i32.and $push3=, $18, $pop47
2753 ; NO-SIMD128-FAST-NEXT:    i32.shl $push4=, $2, $pop3
2754 ; NO-SIMD128-FAST-NEXT:    i32.store8 1($0), $pop4
2755 ; NO-SIMD128-FAST-NEXT:    i32.const $push46=, 255
2756 ; NO-SIMD128-FAST-NEXT:    i32.and $push5=, $19, $pop46
2757 ; NO-SIMD128-FAST-NEXT:    i32.shl $push6=, $3, $pop5
2758 ; NO-SIMD128-FAST-NEXT:    i32.store8 2($0), $pop6
2759 ; NO-SIMD128-FAST-NEXT:    i32.const $push45=, 255
2760 ; NO-SIMD128-FAST-NEXT:    i32.and $push7=, $20, $pop45
2761 ; NO-SIMD128-FAST-NEXT:    i32.shl $push8=, $4, $pop7
2762 ; NO-SIMD128-FAST-NEXT:    i32.store8 3($0), $pop8
2763 ; NO-SIMD128-FAST-NEXT:    i32.const $push44=, 255
2764 ; NO-SIMD128-FAST-NEXT:    i32.and $push9=, $21, $pop44
2765 ; NO-SIMD128-FAST-NEXT:    i32.shl $push10=, $5, $pop9
2766 ; NO-SIMD128-FAST-NEXT:    i32.store8 4($0), $pop10
2767 ; NO-SIMD128-FAST-NEXT:    i32.const $push43=, 255
2768 ; NO-SIMD128-FAST-NEXT:    i32.and $push11=, $22, $pop43
2769 ; NO-SIMD128-FAST-NEXT:    i32.shl $push12=, $6, $pop11
2770 ; NO-SIMD128-FAST-NEXT:    i32.store8 5($0), $pop12
2771 ; NO-SIMD128-FAST-NEXT:    i32.const $push42=, 255
2772 ; NO-SIMD128-FAST-NEXT:    i32.and $push13=, $23, $pop42
2773 ; NO-SIMD128-FAST-NEXT:    i32.shl $push14=, $7, $pop13
2774 ; NO-SIMD128-FAST-NEXT:    i32.store8 6($0), $pop14
2775 ; NO-SIMD128-FAST-NEXT:    i32.const $push41=, 255
2776 ; NO-SIMD128-FAST-NEXT:    i32.and $push15=, $24, $pop41
2777 ; NO-SIMD128-FAST-NEXT:    i32.shl $push16=, $8, $pop15
2778 ; NO-SIMD128-FAST-NEXT:    i32.store8 7($0), $pop16
2779 ; NO-SIMD128-FAST-NEXT:    i32.const $push40=, 255
2780 ; NO-SIMD128-FAST-NEXT:    i32.and $push17=, $25, $pop40
2781 ; NO-SIMD128-FAST-NEXT:    i32.shl $push18=, $9, $pop17
2782 ; NO-SIMD128-FAST-NEXT:    i32.store8 8($0), $pop18
2783 ; NO-SIMD128-FAST-NEXT:    i32.const $push39=, 255
2784 ; NO-SIMD128-FAST-NEXT:    i32.and $push19=, $26, $pop39
2785 ; NO-SIMD128-FAST-NEXT:    i32.shl $push20=, $10, $pop19
2786 ; NO-SIMD128-FAST-NEXT:    i32.store8 9($0), $pop20
2787 ; NO-SIMD128-FAST-NEXT:    i32.const $push38=, 255
2788 ; NO-SIMD128-FAST-NEXT:    i32.and $push21=, $27, $pop38
2789 ; NO-SIMD128-FAST-NEXT:    i32.shl $push22=, $11, $pop21
2790 ; NO-SIMD128-FAST-NEXT:    i32.store8 10($0), $pop22
2791 ; NO-SIMD128-FAST-NEXT:    i32.const $push37=, 255
2792 ; NO-SIMD128-FAST-NEXT:    i32.and $push23=, $28, $pop37
2793 ; NO-SIMD128-FAST-NEXT:    i32.shl $push24=, $12, $pop23
2794 ; NO-SIMD128-FAST-NEXT:    i32.store8 11($0), $pop24
2795 ; NO-SIMD128-FAST-NEXT:    i32.const $push36=, 255
2796 ; NO-SIMD128-FAST-NEXT:    i32.and $push25=, $29, $pop36
2797 ; NO-SIMD128-FAST-NEXT:    i32.shl $push26=, $13, $pop25
2798 ; NO-SIMD128-FAST-NEXT:    i32.store8 12($0), $pop26
2799 ; NO-SIMD128-FAST-NEXT:    i32.const $push35=, 255
2800 ; NO-SIMD128-FAST-NEXT:    i32.and $push27=, $30, $pop35
2801 ; NO-SIMD128-FAST-NEXT:    i32.shl $push28=, $14, $pop27
2802 ; NO-SIMD128-FAST-NEXT:    i32.store8 13($0), $pop28
2803 ; NO-SIMD128-FAST-NEXT:    i32.const $push34=, 255
2804 ; NO-SIMD128-FAST-NEXT:    i32.and $push29=, $31, $pop34
2805 ; NO-SIMD128-FAST-NEXT:    i32.shl $push30=, $15, $pop29
2806 ; NO-SIMD128-FAST-NEXT:    i32.store8 14($0), $pop30
2807 ; NO-SIMD128-FAST-NEXT:    i32.const $push33=, 255
2808 ; NO-SIMD128-FAST-NEXT:    i32.and $push31=, $32, $pop33
2809 ; NO-SIMD128-FAST-NEXT:    i32.shl $push32=, $16, $pop31
2810 ; NO-SIMD128-FAST-NEXT:    i32.store8 15($0), $pop32
2811 ; NO-SIMD128-FAST-NEXT:    return
2812   %a = shl <16 x i8> %v, %x
2813   ret <16 x i8> %a
2816 define <16 x i8> @shr_s_v16i8(<16 x i8> %v, i8 %x) {
2817 ; SIMD128-LABEL: shr_s_v16i8:
2818 ; SIMD128:         .functype shr_s_v16i8 (v128, i32) -> (v128)
2819 ; SIMD128-NEXT:  # %bb.0:
2820 ; SIMD128-NEXT:    i8x16.shr_s $push0=, $0, $1
2821 ; SIMD128-NEXT:    return $pop0
2823 ; SIMD128-FAST-LABEL: shr_s_v16i8:
2824 ; SIMD128-FAST:         .functype shr_s_v16i8 (v128, i32) -> (v128)
2825 ; SIMD128-FAST-NEXT:  # %bb.0:
2826 ; SIMD128-FAST-NEXT:    i8x16.shr_s $push0=, $0, $1
2827 ; SIMD128-FAST-NEXT:    return $pop0
2829 ; NO-SIMD128-LABEL: shr_s_v16i8:
2830 ; NO-SIMD128:         .functype shr_s_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
2831 ; NO-SIMD128-NEXT:  # %bb.0:
2832 ; NO-SIMD128-NEXT:    i32.extend8_s $push1=, $16
2833 ; NO-SIMD128-NEXT:    i32.const $push0=, 255
2834 ; NO-SIMD128-NEXT:    i32.and $push34=, $17, $pop0
2835 ; NO-SIMD128-NEXT:    local.tee $push33=, $17=, $pop34
2836 ; NO-SIMD128-NEXT:    i32.shr_s $push2=, $pop1, $pop33
2837 ; NO-SIMD128-NEXT:    i32.store8 15($0), $pop2
2838 ; NO-SIMD128-NEXT:    i32.extend8_s $push3=, $15
2839 ; NO-SIMD128-NEXT:    i32.shr_s $push4=, $pop3, $17
2840 ; NO-SIMD128-NEXT:    i32.store8 14($0), $pop4
2841 ; NO-SIMD128-NEXT:    i32.extend8_s $push5=, $14
2842 ; NO-SIMD128-NEXT:    i32.shr_s $push6=, $pop5, $17
2843 ; NO-SIMD128-NEXT:    i32.store8 13($0), $pop6
2844 ; NO-SIMD128-NEXT:    i32.extend8_s $push7=, $13
2845 ; NO-SIMD128-NEXT:    i32.shr_s $push8=, $pop7, $17
2846 ; NO-SIMD128-NEXT:    i32.store8 12($0), $pop8
2847 ; NO-SIMD128-NEXT:    i32.extend8_s $push9=, $12
2848 ; NO-SIMD128-NEXT:    i32.shr_s $push10=, $pop9, $17
2849 ; NO-SIMD128-NEXT:    i32.store8 11($0), $pop10
2850 ; NO-SIMD128-NEXT:    i32.extend8_s $push11=, $11
2851 ; NO-SIMD128-NEXT:    i32.shr_s $push12=, $pop11, $17
2852 ; NO-SIMD128-NEXT:    i32.store8 10($0), $pop12
2853 ; NO-SIMD128-NEXT:    i32.extend8_s $push13=, $10
2854 ; NO-SIMD128-NEXT:    i32.shr_s $push14=, $pop13, $17
2855 ; NO-SIMD128-NEXT:    i32.store8 9($0), $pop14
2856 ; NO-SIMD128-NEXT:    i32.extend8_s $push15=, $9
2857 ; NO-SIMD128-NEXT:    i32.shr_s $push16=, $pop15, $17
2858 ; NO-SIMD128-NEXT:    i32.store8 8($0), $pop16
2859 ; NO-SIMD128-NEXT:    i32.extend8_s $push17=, $8
2860 ; NO-SIMD128-NEXT:    i32.shr_s $push18=, $pop17, $17
2861 ; NO-SIMD128-NEXT:    i32.store8 7($0), $pop18
2862 ; NO-SIMD128-NEXT:    i32.extend8_s $push19=, $7
2863 ; NO-SIMD128-NEXT:    i32.shr_s $push20=, $pop19, $17
2864 ; NO-SIMD128-NEXT:    i32.store8 6($0), $pop20
2865 ; NO-SIMD128-NEXT:    i32.extend8_s $push21=, $6
2866 ; NO-SIMD128-NEXT:    i32.shr_s $push22=, $pop21, $17
2867 ; NO-SIMD128-NEXT:    i32.store8 5($0), $pop22
2868 ; NO-SIMD128-NEXT:    i32.extend8_s $push23=, $5
2869 ; NO-SIMD128-NEXT:    i32.shr_s $push24=, $pop23, $17
2870 ; NO-SIMD128-NEXT:    i32.store8 4($0), $pop24
2871 ; NO-SIMD128-NEXT:    i32.extend8_s $push25=, $4
2872 ; NO-SIMD128-NEXT:    i32.shr_s $push26=, $pop25, $17
2873 ; NO-SIMD128-NEXT:    i32.store8 3($0), $pop26
2874 ; NO-SIMD128-NEXT:    i32.extend8_s $push27=, $3
2875 ; NO-SIMD128-NEXT:    i32.shr_s $push28=, $pop27, $17
2876 ; NO-SIMD128-NEXT:    i32.store8 2($0), $pop28
2877 ; NO-SIMD128-NEXT:    i32.extend8_s $push29=, $2
2878 ; NO-SIMD128-NEXT:    i32.shr_s $push30=, $pop29, $17
2879 ; NO-SIMD128-NEXT:    i32.store8 1($0), $pop30
2880 ; NO-SIMD128-NEXT:    i32.extend8_s $push31=, $1
2881 ; NO-SIMD128-NEXT:    i32.shr_s $push32=, $pop31, $17
2882 ; NO-SIMD128-NEXT:    i32.store8 0($0), $pop32
2883 ; NO-SIMD128-NEXT:    return
2885 ; NO-SIMD128-FAST-LABEL: shr_s_v16i8:
2886 ; 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) -> ()
2887 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
2888 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push1=, $1
2889 ; NO-SIMD128-FAST-NEXT:    i32.const $push0=, 255
2890 ; NO-SIMD128-FAST-NEXT:    i32.and $push34=, $17, $pop0
2891 ; NO-SIMD128-FAST-NEXT:    local.tee $push33=, $1=, $pop34
2892 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push2=, $pop1, $pop33
2893 ; NO-SIMD128-FAST-NEXT:    i32.store8 0($0), $pop2
2894 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push3=, $2
2895 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push4=, $pop3, $1
2896 ; NO-SIMD128-FAST-NEXT:    i32.store8 1($0), $pop4
2897 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push5=, $3
2898 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push6=, $pop5, $1
2899 ; NO-SIMD128-FAST-NEXT:    i32.store8 2($0), $pop6
2900 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push7=, $4
2901 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push8=, $pop7, $1
2902 ; NO-SIMD128-FAST-NEXT:    i32.store8 3($0), $pop8
2903 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push9=, $5
2904 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push10=, $pop9, $1
2905 ; NO-SIMD128-FAST-NEXT:    i32.store8 4($0), $pop10
2906 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push11=, $6
2907 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push12=, $pop11, $1
2908 ; NO-SIMD128-FAST-NEXT:    i32.store8 5($0), $pop12
2909 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push13=, $7
2910 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push14=, $pop13, $1
2911 ; NO-SIMD128-FAST-NEXT:    i32.store8 6($0), $pop14
2912 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push15=, $8
2913 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push16=, $pop15, $1
2914 ; NO-SIMD128-FAST-NEXT:    i32.store8 7($0), $pop16
2915 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push17=, $9
2916 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push18=, $pop17, $1
2917 ; NO-SIMD128-FAST-NEXT:    i32.store8 8($0), $pop18
2918 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push19=, $10
2919 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push20=, $pop19, $1
2920 ; NO-SIMD128-FAST-NEXT:    i32.store8 9($0), $pop20
2921 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push21=, $11
2922 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push22=, $pop21, $1
2923 ; NO-SIMD128-FAST-NEXT:    i32.store8 10($0), $pop22
2924 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push23=, $12
2925 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push24=, $pop23, $1
2926 ; NO-SIMD128-FAST-NEXT:    i32.store8 11($0), $pop24
2927 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push25=, $13
2928 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push26=, $pop25, $1
2929 ; NO-SIMD128-FAST-NEXT:    i32.store8 12($0), $pop26
2930 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push27=, $14
2931 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push28=, $pop27, $1
2932 ; NO-SIMD128-FAST-NEXT:    i32.store8 13($0), $pop28
2933 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push29=, $15
2934 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push30=, $pop29, $1
2935 ; NO-SIMD128-FAST-NEXT:    i32.store8 14($0), $pop30
2936 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push31=, $16
2937 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push32=, $pop31, $1
2938 ; NO-SIMD128-FAST-NEXT:    i32.store8 15($0), $pop32
2939 ; NO-SIMD128-FAST-NEXT:    return
2940   %t = insertelement <16 x i8> undef, i8 %x, i32 0
2941   %s = shufflevector <16 x i8> %t, <16 x i8> undef,
2942     <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0,
2943                 i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
2944   %a = ashr <16 x i8> %v, %s
2945   ret <16 x i8> %a
2948 define <16 x i8> @shr_s_vec_v16i8(<16 x i8> %v, <16 x i8> %x) {
2949 ; SIMD128-LABEL: shr_s_vec_v16i8:
2950 ; SIMD128:         .functype shr_s_vec_v16i8 (v128, v128) -> (v128)
2951 ; SIMD128-NEXT:  # %bb.0:
2952 ; SIMD128-NEXT:    i8x16.extract_lane_s $push7=, $0, 0
2953 ; SIMD128-NEXT:    i8x16.extract_lane_u $push5=, $1, 0
2954 ; SIMD128-NEXT:    i32.const $push1=, 7
2955 ; SIMD128-NEXT:    i32.and $push6=, $pop5, $pop1
2956 ; SIMD128-NEXT:    i32.shr_s $push8=, $pop7, $pop6
2957 ; SIMD128-NEXT:    i8x16.splat $push9=, $pop8
2958 ; SIMD128-NEXT:    i8x16.extract_lane_s $push3=, $0, 1
2959 ; SIMD128-NEXT:    i8x16.extract_lane_u $push0=, $1, 1
2960 ; SIMD128-NEXT:    i32.const $push95=, 7
2961 ; SIMD128-NEXT:    i32.and $push2=, $pop0, $pop95
2962 ; SIMD128-NEXT:    i32.shr_s $push4=, $pop3, $pop2
2963 ; SIMD128-NEXT:    i8x16.replace_lane $push10=, $pop9, 1, $pop4
2964 ; SIMD128-NEXT:    i8x16.extract_lane_s $push13=, $0, 2
2965 ; SIMD128-NEXT:    i8x16.extract_lane_u $push11=, $1, 2
2966 ; SIMD128-NEXT:    i32.const $push94=, 7
2967 ; SIMD128-NEXT:    i32.and $push12=, $pop11, $pop94
2968 ; SIMD128-NEXT:    i32.shr_s $push14=, $pop13, $pop12
2969 ; SIMD128-NEXT:    i8x16.replace_lane $push15=, $pop10, 2, $pop14
2970 ; SIMD128-NEXT:    i8x16.extract_lane_s $push18=, $0, 3
2971 ; SIMD128-NEXT:    i8x16.extract_lane_u $push16=, $1, 3
2972 ; SIMD128-NEXT:    i32.const $push93=, 7
2973 ; SIMD128-NEXT:    i32.and $push17=, $pop16, $pop93
2974 ; SIMD128-NEXT:    i32.shr_s $push19=, $pop18, $pop17
2975 ; SIMD128-NEXT:    i8x16.replace_lane $push20=, $pop15, 3, $pop19
2976 ; SIMD128-NEXT:    i8x16.extract_lane_s $push23=, $0, 4
2977 ; SIMD128-NEXT:    i8x16.extract_lane_u $push21=, $1, 4
2978 ; SIMD128-NEXT:    i32.const $push92=, 7
2979 ; SIMD128-NEXT:    i32.and $push22=, $pop21, $pop92
2980 ; SIMD128-NEXT:    i32.shr_s $push24=, $pop23, $pop22
2981 ; SIMD128-NEXT:    i8x16.replace_lane $push25=, $pop20, 4, $pop24
2982 ; SIMD128-NEXT:    i8x16.extract_lane_s $push28=, $0, 5
2983 ; SIMD128-NEXT:    i8x16.extract_lane_u $push26=, $1, 5
2984 ; SIMD128-NEXT:    i32.const $push91=, 7
2985 ; SIMD128-NEXT:    i32.and $push27=, $pop26, $pop91
2986 ; SIMD128-NEXT:    i32.shr_s $push29=, $pop28, $pop27
2987 ; SIMD128-NEXT:    i8x16.replace_lane $push30=, $pop25, 5, $pop29
2988 ; SIMD128-NEXT:    i8x16.extract_lane_s $push33=, $0, 6
2989 ; SIMD128-NEXT:    i8x16.extract_lane_u $push31=, $1, 6
2990 ; SIMD128-NEXT:    i32.const $push90=, 7
2991 ; SIMD128-NEXT:    i32.and $push32=, $pop31, $pop90
2992 ; SIMD128-NEXT:    i32.shr_s $push34=, $pop33, $pop32
2993 ; SIMD128-NEXT:    i8x16.replace_lane $push35=, $pop30, 6, $pop34
2994 ; SIMD128-NEXT:    i8x16.extract_lane_s $push38=, $0, 7
2995 ; SIMD128-NEXT:    i8x16.extract_lane_u $push36=, $1, 7
2996 ; SIMD128-NEXT:    i32.const $push89=, 7
2997 ; SIMD128-NEXT:    i32.and $push37=, $pop36, $pop89
2998 ; SIMD128-NEXT:    i32.shr_s $push39=, $pop38, $pop37
2999 ; SIMD128-NEXT:    i8x16.replace_lane $push40=, $pop35, 7, $pop39
3000 ; SIMD128-NEXT:    i8x16.extract_lane_s $push43=, $0, 8
3001 ; SIMD128-NEXT:    i8x16.extract_lane_u $push41=, $1, 8
3002 ; SIMD128-NEXT:    i32.const $push88=, 7
3003 ; SIMD128-NEXT:    i32.and $push42=, $pop41, $pop88
3004 ; SIMD128-NEXT:    i32.shr_s $push44=, $pop43, $pop42
3005 ; SIMD128-NEXT:    i8x16.replace_lane $push45=, $pop40, 8, $pop44
3006 ; SIMD128-NEXT:    i8x16.extract_lane_s $push48=, $0, 9
3007 ; SIMD128-NEXT:    i8x16.extract_lane_u $push46=, $1, 9
3008 ; SIMD128-NEXT:    i32.const $push87=, 7
3009 ; SIMD128-NEXT:    i32.and $push47=, $pop46, $pop87
3010 ; SIMD128-NEXT:    i32.shr_s $push49=, $pop48, $pop47
3011 ; SIMD128-NEXT:    i8x16.replace_lane $push50=, $pop45, 9, $pop49
3012 ; SIMD128-NEXT:    i8x16.extract_lane_s $push53=, $0, 10
3013 ; SIMD128-NEXT:    i8x16.extract_lane_u $push51=, $1, 10
3014 ; SIMD128-NEXT:    i32.const $push86=, 7
3015 ; SIMD128-NEXT:    i32.and $push52=, $pop51, $pop86
3016 ; SIMD128-NEXT:    i32.shr_s $push54=, $pop53, $pop52
3017 ; SIMD128-NEXT:    i8x16.replace_lane $push55=, $pop50, 10, $pop54
3018 ; SIMD128-NEXT:    i8x16.extract_lane_s $push58=, $0, 11
3019 ; SIMD128-NEXT:    i8x16.extract_lane_u $push56=, $1, 11
3020 ; SIMD128-NEXT:    i32.const $push85=, 7
3021 ; SIMD128-NEXT:    i32.and $push57=, $pop56, $pop85
3022 ; SIMD128-NEXT:    i32.shr_s $push59=, $pop58, $pop57
3023 ; SIMD128-NEXT:    i8x16.replace_lane $push60=, $pop55, 11, $pop59
3024 ; SIMD128-NEXT:    i8x16.extract_lane_s $push63=, $0, 12
3025 ; SIMD128-NEXT:    i8x16.extract_lane_u $push61=, $1, 12
3026 ; SIMD128-NEXT:    i32.const $push84=, 7
3027 ; SIMD128-NEXT:    i32.and $push62=, $pop61, $pop84
3028 ; SIMD128-NEXT:    i32.shr_s $push64=, $pop63, $pop62
3029 ; SIMD128-NEXT:    i8x16.replace_lane $push65=, $pop60, 12, $pop64
3030 ; SIMD128-NEXT:    i8x16.extract_lane_s $push68=, $0, 13
3031 ; SIMD128-NEXT:    i8x16.extract_lane_u $push66=, $1, 13
3032 ; SIMD128-NEXT:    i32.const $push83=, 7
3033 ; SIMD128-NEXT:    i32.and $push67=, $pop66, $pop83
3034 ; SIMD128-NEXT:    i32.shr_s $push69=, $pop68, $pop67
3035 ; SIMD128-NEXT:    i8x16.replace_lane $push70=, $pop65, 13, $pop69
3036 ; SIMD128-NEXT:    i8x16.extract_lane_s $push73=, $0, 14
3037 ; SIMD128-NEXT:    i8x16.extract_lane_u $push71=, $1, 14
3038 ; SIMD128-NEXT:    i32.const $push82=, 7
3039 ; SIMD128-NEXT:    i32.and $push72=, $pop71, $pop82
3040 ; SIMD128-NEXT:    i32.shr_s $push74=, $pop73, $pop72
3041 ; SIMD128-NEXT:    i8x16.replace_lane $push75=, $pop70, 14, $pop74
3042 ; SIMD128-NEXT:    i8x16.extract_lane_s $push78=, $0, 15
3043 ; SIMD128-NEXT:    i8x16.extract_lane_u $push76=, $1, 15
3044 ; SIMD128-NEXT:    i32.const $push81=, 7
3045 ; SIMD128-NEXT:    i32.and $push77=, $pop76, $pop81
3046 ; SIMD128-NEXT:    i32.shr_s $push79=, $pop78, $pop77
3047 ; SIMD128-NEXT:    i8x16.replace_lane $push80=, $pop75, 15, $pop79
3048 ; SIMD128-NEXT:    return $pop80
3050 ; SIMD128-FAST-LABEL: shr_s_vec_v16i8:
3051 ; SIMD128-FAST:         .functype shr_s_vec_v16i8 (v128, v128) -> (v128)
3052 ; SIMD128-FAST-NEXT:  # %bb.0:
3053 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_s $push8=, $0, 0
3054 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push6=, $1, 0
3055 ; SIMD128-FAST-NEXT:    i32.const $push2=, 7
3056 ; SIMD128-FAST-NEXT:    i32.and $push7=, $pop6, $pop2
3057 ; SIMD128-FAST-NEXT:    i32.shr_s $push9=, $pop8, $pop7
3058 ; SIMD128-FAST-NEXT:    i8x16.splat $push10=, $pop9
3059 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_s $push4=, $0, 1
3060 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push1=, $1, 1
3061 ; SIMD128-FAST-NEXT:    i32.const $push95=, 7
3062 ; SIMD128-FAST-NEXT:    i32.and $push3=, $pop1, $pop95
3063 ; SIMD128-FAST-NEXT:    i32.shr_s $push5=, $pop4, $pop3
3064 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push11=, $pop10, 1, $pop5
3065 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_s $push14=, $0, 2
3066 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push12=, $1, 2
3067 ; SIMD128-FAST-NEXT:    i32.const $push94=, 7
3068 ; SIMD128-FAST-NEXT:    i32.and $push13=, $pop12, $pop94
3069 ; SIMD128-FAST-NEXT:    i32.shr_s $push15=, $pop14, $pop13
3070 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push16=, $pop11, 2, $pop15
3071 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_s $push19=, $0, 3
3072 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push17=, $1, 3
3073 ; SIMD128-FAST-NEXT:    i32.const $push93=, 7
3074 ; SIMD128-FAST-NEXT:    i32.and $push18=, $pop17, $pop93
3075 ; SIMD128-FAST-NEXT:    i32.shr_s $push20=, $pop19, $pop18
3076 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push21=, $pop16, 3, $pop20
3077 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_s $push24=, $0, 4
3078 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push22=, $1, 4
3079 ; SIMD128-FAST-NEXT:    i32.const $push92=, 7
3080 ; SIMD128-FAST-NEXT:    i32.and $push23=, $pop22, $pop92
3081 ; SIMD128-FAST-NEXT:    i32.shr_s $push25=, $pop24, $pop23
3082 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push26=, $pop21, 4, $pop25
3083 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_s $push29=, $0, 5
3084 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push27=, $1, 5
3085 ; SIMD128-FAST-NEXT:    i32.const $push91=, 7
3086 ; SIMD128-FAST-NEXT:    i32.and $push28=, $pop27, $pop91
3087 ; SIMD128-FAST-NEXT:    i32.shr_s $push30=, $pop29, $pop28
3088 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push31=, $pop26, 5, $pop30
3089 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_s $push34=, $0, 6
3090 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push32=, $1, 6
3091 ; SIMD128-FAST-NEXT:    i32.const $push90=, 7
3092 ; SIMD128-FAST-NEXT:    i32.and $push33=, $pop32, $pop90
3093 ; SIMD128-FAST-NEXT:    i32.shr_s $push35=, $pop34, $pop33
3094 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push36=, $pop31, 6, $pop35
3095 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_s $push39=, $0, 7
3096 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push37=, $1, 7
3097 ; SIMD128-FAST-NEXT:    i32.const $push89=, 7
3098 ; SIMD128-FAST-NEXT:    i32.and $push38=, $pop37, $pop89
3099 ; SIMD128-FAST-NEXT:    i32.shr_s $push40=, $pop39, $pop38
3100 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push41=, $pop36, 7, $pop40
3101 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_s $push44=, $0, 8
3102 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push42=, $1, 8
3103 ; SIMD128-FAST-NEXT:    i32.const $push88=, 7
3104 ; SIMD128-FAST-NEXT:    i32.and $push43=, $pop42, $pop88
3105 ; SIMD128-FAST-NEXT:    i32.shr_s $push45=, $pop44, $pop43
3106 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push46=, $pop41, 8, $pop45
3107 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_s $push49=, $0, 9
3108 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push47=, $1, 9
3109 ; SIMD128-FAST-NEXT:    i32.const $push87=, 7
3110 ; SIMD128-FAST-NEXT:    i32.and $push48=, $pop47, $pop87
3111 ; SIMD128-FAST-NEXT:    i32.shr_s $push50=, $pop49, $pop48
3112 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push51=, $pop46, 9, $pop50
3113 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_s $push54=, $0, 10
3114 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push52=, $1, 10
3115 ; SIMD128-FAST-NEXT:    i32.const $push86=, 7
3116 ; SIMD128-FAST-NEXT:    i32.and $push53=, $pop52, $pop86
3117 ; SIMD128-FAST-NEXT:    i32.shr_s $push55=, $pop54, $pop53
3118 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push56=, $pop51, 10, $pop55
3119 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_s $push59=, $0, 11
3120 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push57=, $1, 11
3121 ; SIMD128-FAST-NEXT:    i32.const $push85=, 7
3122 ; SIMD128-FAST-NEXT:    i32.and $push58=, $pop57, $pop85
3123 ; SIMD128-FAST-NEXT:    i32.shr_s $push60=, $pop59, $pop58
3124 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push61=, $pop56, 11, $pop60
3125 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_s $push64=, $0, 12
3126 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push62=, $1, 12
3127 ; SIMD128-FAST-NEXT:    i32.const $push84=, 7
3128 ; SIMD128-FAST-NEXT:    i32.and $push63=, $pop62, $pop84
3129 ; SIMD128-FAST-NEXT:    i32.shr_s $push65=, $pop64, $pop63
3130 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push66=, $pop61, 12, $pop65
3131 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_s $push69=, $0, 13
3132 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push67=, $1, 13
3133 ; SIMD128-FAST-NEXT:    i32.const $push83=, 7
3134 ; SIMD128-FAST-NEXT:    i32.and $push68=, $pop67, $pop83
3135 ; SIMD128-FAST-NEXT:    i32.shr_s $push70=, $pop69, $pop68
3136 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push71=, $pop66, 13, $pop70
3137 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_s $push74=, $0, 14
3138 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push72=, $1, 14
3139 ; SIMD128-FAST-NEXT:    i32.const $push82=, 7
3140 ; SIMD128-FAST-NEXT:    i32.and $push73=, $pop72, $pop82
3141 ; SIMD128-FAST-NEXT:    i32.shr_s $push75=, $pop74, $pop73
3142 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push76=, $pop71, 14, $pop75
3143 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_s $push79=, $0, 15
3144 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push77=, $1, 15
3145 ; SIMD128-FAST-NEXT:    i32.const $push81=, 7
3146 ; SIMD128-FAST-NEXT:    i32.and $push78=, $pop77, $pop81
3147 ; SIMD128-FAST-NEXT:    i32.shr_s $push80=, $pop79, $pop78
3148 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push0=, $pop76, 15, $pop80
3149 ; SIMD128-FAST-NEXT:    return $pop0
3151 ; NO-SIMD128-LABEL: shr_s_vec_v16i8:
3152 ; 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) -> ()
3153 ; NO-SIMD128-NEXT:  # %bb.0:
3154 ; NO-SIMD128-NEXT:    i32.extend8_s $push2=, $16
3155 ; NO-SIMD128-NEXT:    i32.const $push0=, 255
3156 ; NO-SIMD128-NEXT:    i32.and $push1=, $32, $pop0
3157 ; NO-SIMD128-NEXT:    i32.shr_s $push3=, $pop2, $pop1
3158 ; NO-SIMD128-NEXT:    i32.store8 15($0), $pop3
3159 ; NO-SIMD128-NEXT:    i32.extend8_s $push5=, $15
3160 ; NO-SIMD128-NEXT:    i32.const $push63=, 255
3161 ; NO-SIMD128-NEXT:    i32.and $push4=, $31, $pop63
3162 ; NO-SIMD128-NEXT:    i32.shr_s $push6=, $pop5, $pop4
3163 ; NO-SIMD128-NEXT:    i32.store8 14($0), $pop6
3164 ; NO-SIMD128-NEXT:    i32.extend8_s $push8=, $14
3165 ; NO-SIMD128-NEXT:    i32.const $push62=, 255
3166 ; NO-SIMD128-NEXT:    i32.and $push7=, $30, $pop62
3167 ; NO-SIMD128-NEXT:    i32.shr_s $push9=, $pop8, $pop7
3168 ; NO-SIMD128-NEXT:    i32.store8 13($0), $pop9
3169 ; NO-SIMD128-NEXT:    i32.extend8_s $push11=, $13
3170 ; NO-SIMD128-NEXT:    i32.const $push61=, 255
3171 ; NO-SIMD128-NEXT:    i32.and $push10=, $29, $pop61
3172 ; NO-SIMD128-NEXT:    i32.shr_s $push12=, $pop11, $pop10
3173 ; NO-SIMD128-NEXT:    i32.store8 12($0), $pop12
3174 ; NO-SIMD128-NEXT:    i32.extend8_s $push14=, $12
3175 ; NO-SIMD128-NEXT:    i32.const $push60=, 255
3176 ; NO-SIMD128-NEXT:    i32.and $push13=, $28, $pop60
3177 ; NO-SIMD128-NEXT:    i32.shr_s $push15=, $pop14, $pop13
3178 ; NO-SIMD128-NEXT:    i32.store8 11($0), $pop15
3179 ; NO-SIMD128-NEXT:    i32.extend8_s $push17=, $11
3180 ; NO-SIMD128-NEXT:    i32.const $push59=, 255
3181 ; NO-SIMD128-NEXT:    i32.and $push16=, $27, $pop59
3182 ; NO-SIMD128-NEXT:    i32.shr_s $push18=, $pop17, $pop16
3183 ; NO-SIMD128-NEXT:    i32.store8 10($0), $pop18
3184 ; NO-SIMD128-NEXT:    i32.extend8_s $push20=, $10
3185 ; NO-SIMD128-NEXT:    i32.const $push58=, 255
3186 ; NO-SIMD128-NEXT:    i32.and $push19=, $26, $pop58
3187 ; NO-SIMD128-NEXT:    i32.shr_s $push21=, $pop20, $pop19
3188 ; NO-SIMD128-NEXT:    i32.store8 9($0), $pop21
3189 ; NO-SIMD128-NEXT:    i32.extend8_s $push23=, $9
3190 ; NO-SIMD128-NEXT:    i32.const $push57=, 255
3191 ; NO-SIMD128-NEXT:    i32.and $push22=, $25, $pop57
3192 ; NO-SIMD128-NEXT:    i32.shr_s $push24=, $pop23, $pop22
3193 ; NO-SIMD128-NEXT:    i32.store8 8($0), $pop24
3194 ; NO-SIMD128-NEXT:    i32.extend8_s $push26=, $8
3195 ; NO-SIMD128-NEXT:    i32.const $push56=, 255
3196 ; NO-SIMD128-NEXT:    i32.and $push25=, $24, $pop56
3197 ; NO-SIMD128-NEXT:    i32.shr_s $push27=, $pop26, $pop25
3198 ; NO-SIMD128-NEXT:    i32.store8 7($0), $pop27
3199 ; NO-SIMD128-NEXT:    i32.extend8_s $push29=, $7
3200 ; NO-SIMD128-NEXT:    i32.const $push55=, 255
3201 ; NO-SIMD128-NEXT:    i32.and $push28=, $23, $pop55
3202 ; NO-SIMD128-NEXT:    i32.shr_s $push30=, $pop29, $pop28
3203 ; NO-SIMD128-NEXT:    i32.store8 6($0), $pop30
3204 ; NO-SIMD128-NEXT:    i32.extend8_s $push32=, $6
3205 ; NO-SIMD128-NEXT:    i32.const $push54=, 255
3206 ; NO-SIMD128-NEXT:    i32.and $push31=, $22, $pop54
3207 ; NO-SIMD128-NEXT:    i32.shr_s $push33=, $pop32, $pop31
3208 ; NO-SIMD128-NEXT:    i32.store8 5($0), $pop33
3209 ; NO-SIMD128-NEXT:    i32.extend8_s $push35=, $5
3210 ; NO-SIMD128-NEXT:    i32.const $push53=, 255
3211 ; NO-SIMD128-NEXT:    i32.and $push34=, $21, $pop53
3212 ; NO-SIMD128-NEXT:    i32.shr_s $push36=, $pop35, $pop34
3213 ; NO-SIMD128-NEXT:    i32.store8 4($0), $pop36
3214 ; NO-SIMD128-NEXT:    i32.extend8_s $push38=, $4
3215 ; NO-SIMD128-NEXT:    i32.const $push52=, 255
3216 ; NO-SIMD128-NEXT:    i32.and $push37=, $20, $pop52
3217 ; NO-SIMD128-NEXT:    i32.shr_s $push39=, $pop38, $pop37
3218 ; NO-SIMD128-NEXT:    i32.store8 3($0), $pop39
3219 ; NO-SIMD128-NEXT:    i32.extend8_s $push41=, $3
3220 ; NO-SIMD128-NEXT:    i32.const $push51=, 255
3221 ; NO-SIMD128-NEXT:    i32.and $push40=, $19, $pop51
3222 ; NO-SIMD128-NEXT:    i32.shr_s $push42=, $pop41, $pop40
3223 ; NO-SIMD128-NEXT:    i32.store8 2($0), $pop42
3224 ; NO-SIMD128-NEXT:    i32.extend8_s $push44=, $2
3225 ; NO-SIMD128-NEXT:    i32.const $push50=, 255
3226 ; NO-SIMD128-NEXT:    i32.and $push43=, $18, $pop50
3227 ; NO-SIMD128-NEXT:    i32.shr_s $push45=, $pop44, $pop43
3228 ; NO-SIMD128-NEXT:    i32.store8 1($0), $pop45
3229 ; NO-SIMD128-NEXT:    i32.extend8_s $push47=, $1
3230 ; NO-SIMD128-NEXT:    i32.const $push49=, 255
3231 ; NO-SIMD128-NEXT:    i32.and $push46=, $17, $pop49
3232 ; NO-SIMD128-NEXT:    i32.shr_s $push48=, $pop47, $pop46
3233 ; NO-SIMD128-NEXT:    i32.store8 0($0), $pop48
3234 ; NO-SIMD128-NEXT:    return
3236 ; NO-SIMD128-FAST-LABEL: shr_s_vec_v16i8:
3237 ; 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) -> ()
3238 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
3239 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push2=, $1
3240 ; NO-SIMD128-FAST-NEXT:    i32.const $push0=, 255
3241 ; NO-SIMD128-FAST-NEXT:    i32.and $push1=, $17, $pop0
3242 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push3=, $pop2, $pop1
3243 ; NO-SIMD128-FAST-NEXT:    i32.store8 0($0), $pop3
3244 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push5=, $2
3245 ; NO-SIMD128-FAST-NEXT:    i32.const $push63=, 255
3246 ; NO-SIMD128-FAST-NEXT:    i32.and $push4=, $18, $pop63
3247 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push6=, $pop5, $pop4
3248 ; NO-SIMD128-FAST-NEXT:    i32.store8 1($0), $pop6
3249 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push8=, $3
3250 ; NO-SIMD128-FAST-NEXT:    i32.const $push62=, 255
3251 ; NO-SIMD128-FAST-NEXT:    i32.and $push7=, $19, $pop62
3252 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push9=, $pop8, $pop7
3253 ; NO-SIMD128-FAST-NEXT:    i32.store8 2($0), $pop9
3254 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push11=, $4
3255 ; NO-SIMD128-FAST-NEXT:    i32.const $push61=, 255
3256 ; NO-SIMD128-FAST-NEXT:    i32.and $push10=, $20, $pop61
3257 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push12=, $pop11, $pop10
3258 ; NO-SIMD128-FAST-NEXT:    i32.store8 3($0), $pop12
3259 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push14=, $5
3260 ; NO-SIMD128-FAST-NEXT:    i32.const $push60=, 255
3261 ; NO-SIMD128-FAST-NEXT:    i32.and $push13=, $21, $pop60
3262 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push15=, $pop14, $pop13
3263 ; NO-SIMD128-FAST-NEXT:    i32.store8 4($0), $pop15
3264 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push17=, $6
3265 ; NO-SIMD128-FAST-NEXT:    i32.const $push59=, 255
3266 ; NO-SIMD128-FAST-NEXT:    i32.and $push16=, $22, $pop59
3267 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push18=, $pop17, $pop16
3268 ; NO-SIMD128-FAST-NEXT:    i32.store8 5($0), $pop18
3269 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push20=, $7
3270 ; NO-SIMD128-FAST-NEXT:    i32.const $push58=, 255
3271 ; NO-SIMD128-FAST-NEXT:    i32.and $push19=, $23, $pop58
3272 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push21=, $pop20, $pop19
3273 ; NO-SIMD128-FAST-NEXT:    i32.store8 6($0), $pop21
3274 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push23=, $8
3275 ; NO-SIMD128-FAST-NEXT:    i32.const $push57=, 255
3276 ; NO-SIMD128-FAST-NEXT:    i32.and $push22=, $24, $pop57
3277 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push24=, $pop23, $pop22
3278 ; NO-SIMD128-FAST-NEXT:    i32.store8 7($0), $pop24
3279 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push26=, $9
3280 ; NO-SIMD128-FAST-NEXT:    i32.const $push56=, 255
3281 ; NO-SIMD128-FAST-NEXT:    i32.and $push25=, $25, $pop56
3282 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push27=, $pop26, $pop25
3283 ; NO-SIMD128-FAST-NEXT:    i32.store8 8($0), $pop27
3284 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push29=, $10
3285 ; NO-SIMD128-FAST-NEXT:    i32.const $push55=, 255
3286 ; NO-SIMD128-FAST-NEXT:    i32.and $push28=, $26, $pop55
3287 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push30=, $pop29, $pop28
3288 ; NO-SIMD128-FAST-NEXT:    i32.store8 9($0), $pop30
3289 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push32=, $11
3290 ; NO-SIMD128-FAST-NEXT:    i32.const $push54=, 255
3291 ; NO-SIMD128-FAST-NEXT:    i32.and $push31=, $27, $pop54
3292 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push33=, $pop32, $pop31
3293 ; NO-SIMD128-FAST-NEXT:    i32.store8 10($0), $pop33
3294 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push35=, $12
3295 ; NO-SIMD128-FAST-NEXT:    i32.const $push53=, 255
3296 ; NO-SIMD128-FAST-NEXT:    i32.and $push34=, $28, $pop53
3297 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push36=, $pop35, $pop34
3298 ; NO-SIMD128-FAST-NEXT:    i32.store8 11($0), $pop36
3299 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push38=, $13
3300 ; NO-SIMD128-FAST-NEXT:    i32.const $push52=, 255
3301 ; NO-SIMD128-FAST-NEXT:    i32.and $push37=, $29, $pop52
3302 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push39=, $pop38, $pop37
3303 ; NO-SIMD128-FAST-NEXT:    i32.store8 12($0), $pop39
3304 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push41=, $14
3305 ; NO-SIMD128-FAST-NEXT:    i32.const $push51=, 255
3306 ; NO-SIMD128-FAST-NEXT:    i32.and $push40=, $30, $pop51
3307 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push42=, $pop41, $pop40
3308 ; NO-SIMD128-FAST-NEXT:    i32.store8 13($0), $pop42
3309 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push44=, $15
3310 ; NO-SIMD128-FAST-NEXT:    i32.const $push50=, 255
3311 ; NO-SIMD128-FAST-NEXT:    i32.and $push43=, $31, $pop50
3312 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push45=, $pop44, $pop43
3313 ; NO-SIMD128-FAST-NEXT:    i32.store8 14($0), $pop45
3314 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push47=, $16
3315 ; NO-SIMD128-FAST-NEXT:    i32.const $push49=, 255
3316 ; NO-SIMD128-FAST-NEXT:    i32.and $push46=, $32, $pop49
3317 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push48=, $pop47, $pop46
3318 ; NO-SIMD128-FAST-NEXT:    i32.store8 15($0), $pop48
3319 ; NO-SIMD128-FAST-NEXT:    return
3320   %a = ashr <16 x i8> %v, %x
3321   ret <16 x i8> %a
3324 define <16 x i8> @shr_u_v16i8(<16 x i8> %v, i8 %x) {
3325 ; SIMD128-LABEL: shr_u_v16i8:
3326 ; SIMD128:         .functype shr_u_v16i8 (v128, i32) -> (v128)
3327 ; SIMD128-NEXT:  # %bb.0:
3328 ; SIMD128-NEXT:    i8x16.shr_u $push0=, $0, $1
3329 ; SIMD128-NEXT:    return $pop0
3331 ; SIMD128-FAST-LABEL: shr_u_v16i8:
3332 ; SIMD128-FAST:         .functype shr_u_v16i8 (v128, i32) -> (v128)
3333 ; SIMD128-FAST-NEXT:  # %bb.0:
3334 ; SIMD128-FAST-NEXT:    i8x16.shr_u $push0=, $0, $1
3335 ; SIMD128-FAST-NEXT:    return $pop0
3337 ; NO-SIMD128-LABEL: shr_u_v16i8:
3338 ; NO-SIMD128:         .functype shr_u_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
3339 ; NO-SIMD128-NEXT:  # %bb.0:
3340 ; NO-SIMD128-NEXT:    i32.const $push0=, 255
3341 ; NO-SIMD128-NEXT:    i32.and $push1=, $16, $pop0
3342 ; NO-SIMD128-NEXT:    i32.const $push50=, 255
3343 ; NO-SIMD128-NEXT:    i32.and $push49=, $17, $pop50
3344 ; NO-SIMD128-NEXT:    local.tee $push48=, $17=, $pop49
3345 ; NO-SIMD128-NEXT:    i32.shr_u $push2=, $pop1, $pop48
3346 ; NO-SIMD128-NEXT:    i32.store8 15($0), $pop2
3347 ; NO-SIMD128-NEXT:    i32.const $push47=, 255
3348 ; NO-SIMD128-NEXT:    i32.and $push3=, $15, $pop47
3349 ; NO-SIMD128-NEXT:    i32.shr_u $push4=, $pop3, $17
3350 ; NO-SIMD128-NEXT:    i32.store8 14($0), $pop4
3351 ; NO-SIMD128-NEXT:    i32.const $push46=, 255
3352 ; NO-SIMD128-NEXT:    i32.and $push5=, $14, $pop46
3353 ; NO-SIMD128-NEXT:    i32.shr_u $push6=, $pop5, $17
3354 ; NO-SIMD128-NEXT:    i32.store8 13($0), $pop6
3355 ; NO-SIMD128-NEXT:    i32.const $push45=, 255
3356 ; NO-SIMD128-NEXT:    i32.and $push7=, $13, $pop45
3357 ; NO-SIMD128-NEXT:    i32.shr_u $push8=, $pop7, $17
3358 ; NO-SIMD128-NEXT:    i32.store8 12($0), $pop8
3359 ; NO-SIMD128-NEXT:    i32.const $push44=, 255
3360 ; NO-SIMD128-NEXT:    i32.and $push9=, $12, $pop44
3361 ; NO-SIMD128-NEXT:    i32.shr_u $push10=, $pop9, $17
3362 ; NO-SIMD128-NEXT:    i32.store8 11($0), $pop10
3363 ; NO-SIMD128-NEXT:    i32.const $push43=, 255
3364 ; NO-SIMD128-NEXT:    i32.and $push11=, $11, $pop43
3365 ; NO-SIMD128-NEXT:    i32.shr_u $push12=, $pop11, $17
3366 ; NO-SIMD128-NEXT:    i32.store8 10($0), $pop12
3367 ; NO-SIMD128-NEXT:    i32.const $push42=, 255
3368 ; NO-SIMD128-NEXT:    i32.and $push13=, $10, $pop42
3369 ; NO-SIMD128-NEXT:    i32.shr_u $push14=, $pop13, $17
3370 ; NO-SIMD128-NEXT:    i32.store8 9($0), $pop14
3371 ; NO-SIMD128-NEXT:    i32.const $push41=, 255
3372 ; NO-SIMD128-NEXT:    i32.and $push15=, $9, $pop41
3373 ; NO-SIMD128-NEXT:    i32.shr_u $push16=, $pop15, $17
3374 ; NO-SIMD128-NEXT:    i32.store8 8($0), $pop16
3375 ; NO-SIMD128-NEXT:    i32.const $push40=, 255
3376 ; NO-SIMD128-NEXT:    i32.and $push17=, $8, $pop40
3377 ; NO-SIMD128-NEXT:    i32.shr_u $push18=, $pop17, $17
3378 ; NO-SIMD128-NEXT:    i32.store8 7($0), $pop18
3379 ; NO-SIMD128-NEXT:    i32.const $push39=, 255
3380 ; NO-SIMD128-NEXT:    i32.and $push19=, $7, $pop39
3381 ; NO-SIMD128-NEXT:    i32.shr_u $push20=, $pop19, $17
3382 ; NO-SIMD128-NEXT:    i32.store8 6($0), $pop20
3383 ; NO-SIMD128-NEXT:    i32.const $push38=, 255
3384 ; NO-SIMD128-NEXT:    i32.and $push21=, $6, $pop38
3385 ; NO-SIMD128-NEXT:    i32.shr_u $push22=, $pop21, $17
3386 ; NO-SIMD128-NEXT:    i32.store8 5($0), $pop22
3387 ; NO-SIMD128-NEXT:    i32.const $push37=, 255
3388 ; NO-SIMD128-NEXT:    i32.and $push23=, $5, $pop37
3389 ; NO-SIMD128-NEXT:    i32.shr_u $push24=, $pop23, $17
3390 ; NO-SIMD128-NEXT:    i32.store8 4($0), $pop24
3391 ; NO-SIMD128-NEXT:    i32.const $push36=, 255
3392 ; NO-SIMD128-NEXT:    i32.and $push25=, $4, $pop36
3393 ; NO-SIMD128-NEXT:    i32.shr_u $push26=, $pop25, $17
3394 ; NO-SIMD128-NEXT:    i32.store8 3($0), $pop26
3395 ; NO-SIMD128-NEXT:    i32.const $push35=, 255
3396 ; NO-SIMD128-NEXT:    i32.and $push27=, $3, $pop35
3397 ; NO-SIMD128-NEXT:    i32.shr_u $push28=, $pop27, $17
3398 ; NO-SIMD128-NEXT:    i32.store8 2($0), $pop28
3399 ; NO-SIMD128-NEXT:    i32.const $push34=, 255
3400 ; NO-SIMD128-NEXT:    i32.and $push29=, $2, $pop34
3401 ; NO-SIMD128-NEXT:    i32.shr_u $push30=, $pop29, $17
3402 ; NO-SIMD128-NEXT:    i32.store8 1($0), $pop30
3403 ; NO-SIMD128-NEXT:    i32.const $push33=, 255
3404 ; NO-SIMD128-NEXT:    i32.and $push31=, $1, $pop33
3405 ; NO-SIMD128-NEXT:    i32.shr_u $push32=, $pop31, $17
3406 ; NO-SIMD128-NEXT:    i32.store8 0($0), $pop32
3407 ; NO-SIMD128-NEXT:    return
3409 ; NO-SIMD128-FAST-LABEL: shr_u_v16i8:
3410 ; 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) -> ()
3411 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
3412 ; NO-SIMD128-FAST-NEXT:    i32.const $push0=, 255
3413 ; NO-SIMD128-FAST-NEXT:    i32.and $push1=, $1, $pop0
3414 ; NO-SIMD128-FAST-NEXT:    i32.const $push50=, 255
3415 ; NO-SIMD128-FAST-NEXT:    i32.and $push49=, $17, $pop50
3416 ; NO-SIMD128-FAST-NEXT:    local.tee $push48=, $1=, $pop49
3417 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push2=, $pop1, $pop48
3418 ; NO-SIMD128-FAST-NEXT:    i32.store8 0($0), $pop2
3419 ; NO-SIMD128-FAST-NEXT:    i32.const $push47=, 255
3420 ; NO-SIMD128-FAST-NEXT:    i32.and $push3=, $2, $pop47
3421 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push4=, $pop3, $1
3422 ; NO-SIMD128-FAST-NEXT:    i32.store8 1($0), $pop4
3423 ; NO-SIMD128-FAST-NEXT:    i32.const $push46=, 255
3424 ; NO-SIMD128-FAST-NEXT:    i32.and $push5=, $3, $pop46
3425 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push6=, $pop5, $1
3426 ; NO-SIMD128-FAST-NEXT:    i32.store8 2($0), $pop6
3427 ; NO-SIMD128-FAST-NEXT:    i32.const $push45=, 255
3428 ; NO-SIMD128-FAST-NEXT:    i32.and $push7=, $4, $pop45
3429 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push8=, $pop7, $1
3430 ; NO-SIMD128-FAST-NEXT:    i32.store8 3($0), $pop8
3431 ; NO-SIMD128-FAST-NEXT:    i32.const $push44=, 255
3432 ; NO-SIMD128-FAST-NEXT:    i32.and $push9=, $5, $pop44
3433 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push10=, $pop9, $1
3434 ; NO-SIMD128-FAST-NEXT:    i32.store8 4($0), $pop10
3435 ; NO-SIMD128-FAST-NEXT:    i32.const $push43=, 255
3436 ; NO-SIMD128-FAST-NEXT:    i32.and $push11=, $6, $pop43
3437 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push12=, $pop11, $1
3438 ; NO-SIMD128-FAST-NEXT:    i32.store8 5($0), $pop12
3439 ; NO-SIMD128-FAST-NEXT:    i32.const $push42=, 255
3440 ; NO-SIMD128-FAST-NEXT:    i32.and $push13=, $7, $pop42
3441 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push14=, $pop13, $1
3442 ; NO-SIMD128-FAST-NEXT:    i32.store8 6($0), $pop14
3443 ; NO-SIMD128-FAST-NEXT:    i32.const $push41=, 255
3444 ; NO-SIMD128-FAST-NEXT:    i32.and $push15=, $8, $pop41
3445 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push16=, $pop15, $1
3446 ; NO-SIMD128-FAST-NEXT:    i32.store8 7($0), $pop16
3447 ; NO-SIMD128-FAST-NEXT:    i32.const $push40=, 255
3448 ; NO-SIMD128-FAST-NEXT:    i32.and $push17=, $9, $pop40
3449 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push18=, $pop17, $1
3450 ; NO-SIMD128-FAST-NEXT:    i32.store8 8($0), $pop18
3451 ; NO-SIMD128-FAST-NEXT:    i32.const $push39=, 255
3452 ; NO-SIMD128-FAST-NEXT:    i32.and $push19=, $10, $pop39
3453 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push20=, $pop19, $1
3454 ; NO-SIMD128-FAST-NEXT:    i32.store8 9($0), $pop20
3455 ; NO-SIMD128-FAST-NEXT:    i32.const $push38=, 255
3456 ; NO-SIMD128-FAST-NEXT:    i32.and $push21=, $11, $pop38
3457 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push22=, $pop21, $1
3458 ; NO-SIMD128-FAST-NEXT:    i32.store8 10($0), $pop22
3459 ; NO-SIMD128-FAST-NEXT:    i32.const $push37=, 255
3460 ; NO-SIMD128-FAST-NEXT:    i32.and $push23=, $12, $pop37
3461 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push24=, $pop23, $1
3462 ; NO-SIMD128-FAST-NEXT:    i32.store8 11($0), $pop24
3463 ; NO-SIMD128-FAST-NEXT:    i32.const $push36=, 255
3464 ; NO-SIMD128-FAST-NEXT:    i32.and $push25=, $13, $pop36
3465 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push26=, $pop25, $1
3466 ; NO-SIMD128-FAST-NEXT:    i32.store8 12($0), $pop26
3467 ; NO-SIMD128-FAST-NEXT:    i32.const $push35=, 255
3468 ; NO-SIMD128-FAST-NEXT:    i32.and $push27=, $14, $pop35
3469 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push28=, $pop27, $1
3470 ; NO-SIMD128-FAST-NEXT:    i32.store8 13($0), $pop28
3471 ; NO-SIMD128-FAST-NEXT:    i32.const $push34=, 255
3472 ; NO-SIMD128-FAST-NEXT:    i32.and $push29=, $15, $pop34
3473 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push30=, $pop29, $1
3474 ; NO-SIMD128-FAST-NEXT:    i32.store8 14($0), $pop30
3475 ; NO-SIMD128-FAST-NEXT:    i32.const $push33=, 255
3476 ; NO-SIMD128-FAST-NEXT:    i32.and $push31=, $16, $pop33
3477 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push32=, $pop31, $1
3478 ; NO-SIMD128-FAST-NEXT:    i32.store8 15($0), $pop32
3479 ; NO-SIMD128-FAST-NEXT:    return
3480   %t = insertelement <16 x i8> undef, i8 %x, i32 0
3481   %s = shufflevector <16 x i8> %t, <16 x i8> undef,
3482     <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0,
3483                 i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
3484   %a = lshr <16 x i8> %v, %s
3485   ret <16 x i8> %a
3488 define <16 x i8> @shr_u_vec_v16i8(<16 x i8> %v, <16 x i8> %x) {
3489 ; SIMD128-LABEL: shr_u_vec_v16i8:
3490 ; SIMD128:         .functype shr_u_vec_v16i8 (v128, v128) -> (v128)
3491 ; SIMD128-NEXT:  # %bb.0:
3492 ; SIMD128-NEXT:    i8x16.extract_lane_u $push7=, $0, 0
3493 ; SIMD128-NEXT:    i8x16.extract_lane_u $push5=, $1, 0
3494 ; SIMD128-NEXT:    i32.const $push1=, 7
3495 ; SIMD128-NEXT:    i32.and $push6=, $pop5, $pop1
3496 ; SIMD128-NEXT:    i32.shr_u $push8=, $pop7, $pop6
3497 ; SIMD128-NEXT:    i8x16.splat $push9=, $pop8
3498 ; SIMD128-NEXT:    i8x16.extract_lane_u $push3=, $0, 1
3499 ; SIMD128-NEXT:    i8x16.extract_lane_u $push0=, $1, 1
3500 ; SIMD128-NEXT:    i32.const $push95=, 7
3501 ; SIMD128-NEXT:    i32.and $push2=, $pop0, $pop95
3502 ; SIMD128-NEXT:    i32.shr_u $push4=, $pop3, $pop2
3503 ; SIMD128-NEXT:    i8x16.replace_lane $push10=, $pop9, 1, $pop4
3504 ; SIMD128-NEXT:    i8x16.extract_lane_u $push13=, $0, 2
3505 ; SIMD128-NEXT:    i8x16.extract_lane_u $push11=, $1, 2
3506 ; SIMD128-NEXT:    i32.const $push94=, 7
3507 ; SIMD128-NEXT:    i32.and $push12=, $pop11, $pop94
3508 ; SIMD128-NEXT:    i32.shr_u $push14=, $pop13, $pop12
3509 ; SIMD128-NEXT:    i8x16.replace_lane $push15=, $pop10, 2, $pop14
3510 ; SIMD128-NEXT:    i8x16.extract_lane_u $push18=, $0, 3
3511 ; SIMD128-NEXT:    i8x16.extract_lane_u $push16=, $1, 3
3512 ; SIMD128-NEXT:    i32.const $push93=, 7
3513 ; SIMD128-NEXT:    i32.and $push17=, $pop16, $pop93
3514 ; SIMD128-NEXT:    i32.shr_u $push19=, $pop18, $pop17
3515 ; SIMD128-NEXT:    i8x16.replace_lane $push20=, $pop15, 3, $pop19
3516 ; SIMD128-NEXT:    i8x16.extract_lane_u $push23=, $0, 4
3517 ; SIMD128-NEXT:    i8x16.extract_lane_u $push21=, $1, 4
3518 ; SIMD128-NEXT:    i32.const $push92=, 7
3519 ; SIMD128-NEXT:    i32.and $push22=, $pop21, $pop92
3520 ; SIMD128-NEXT:    i32.shr_u $push24=, $pop23, $pop22
3521 ; SIMD128-NEXT:    i8x16.replace_lane $push25=, $pop20, 4, $pop24
3522 ; SIMD128-NEXT:    i8x16.extract_lane_u $push28=, $0, 5
3523 ; SIMD128-NEXT:    i8x16.extract_lane_u $push26=, $1, 5
3524 ; SIMD128-NEXT:    i32.const $push91=, 7
3525 ; SIMD128-NEXT:    i32.and $push27=, $pop26, $pop91
3526 ; SIMD128-NEXT:    i32.shr_u $push29=, $pop28, $pop27
3527 ; SIMD128-NEXT:    i8x16.replace_lane $push30=, $pop25, 5, $pop29
3528 ; SIMD128-NEXT:    i8x16.extract_lane_u $push33=, $0, 6
3529 ; SIMD128-NEXT:    i8x16.extract_lane_u $push31=, $1, 6
3530 ; SIMD128-NEXT:    i32.const $push90=, 7
3531 ; SIMD128-NEXT:    i32.and $push32=, $pop31, $pop90
3532 ; SIMD128-NEXT:    i32.shr_u $push34=, $pop33, $pop32
3533 ; SIMD128-NEXT:    i8x16.replace_lane $push35=, $pop30, 6, $pop34
3534 ; SIMD128-NEXT:    i8x16.extract_lane_u $push38=, $0, 7
3535 ; SIMD128-NEXT:    i8x16.extract_lane_u $push36=, $1, 7
3536 ; SIMD128-NEXT:    i32.const $push89=, 7
3537 ; SIMD128-NEXT:    i32.and $push37=, $pop36, $pop89
3538 ; SIMD128-NEXT:    i32.shr_u $push39=, $pop38, $pop37
3539 ; SIMD128-NEXT:    i8x16.replace_lane $push40=, $pop35, 7, $pop39
3540 ; SIMD128-NEXT:    i8x16.extract_lane_u $push43=, $0, 8
3541 ; SIMD128-NEXT:    i8x16.extract_lane_u $push41=, $1, 8
3542 ; SIMD128-NEXT:    i32.const $push88=, 7
3543 ; SIMD128-NEXT:    i32.and $push42=, $pop41, $pop88
3544 ; SIMD128-NEXT:    i32.shr_u $push44=, $pop43, $pop42
3545 ; SIMD128-NEXT:    i8x16.replace_lane $push45=, $pop40, 8, $pop44
3546 ; SIMD128-NEXT:    i8x16.extract_lane_u $push48=, $0, 9
3547 ; SIMD128-NEXT:    i8x16.extract_lane_u $push46=, $1, 9
3548 ; SIMD128-NEXT:    i32.const $push87=, 7
3549 ; SIMD128-NEXT:    i32.and $push47=, $pop46, $pop87
3550 ; SIMD128-NEXT:    i32.shr_u $push49=, $pop48, $pop47
3551 ; SIMD128-NEXT:    i8x16.replace_lane $push50=, $pop45, 9, $pop49
3552 ; SIMD128-NEXT:    i8x16.extract_lane_u $push53=, $0, 10
3553 ; SIMD128-NEXT:    i8x16.extract_lane_u $push51=, $1, 10
3554 ; SIMD128-NEXT:    i32.const $push86=, 7
3555 ; SIMD128-NEXT:    i32.and $push52=, $pop51, $pop86
3556 ; SIMD128-NEXT:    i32.shr_u $push54=, $pop53, $pop52
3557 ; SIMD128-NEXT:    i8x16.replace_lane $push55=, $pop50, 10, $pop54
3558 ; SIMD128-NEXT:    i8x16.extract_lane_u $push58=, $0, 11
3559 ; SIMD128-NEXT:    i8x16.extract_lane_u $push56=, $1, 11
3560 ; SIMD128-NEXT:    i32.const $push85=, 7
3561 ; SIMD128-NEXT:    i32.and $push57=, $pop56, $pop85
3562 ; SIMD128-NEXT:    i32.shr_u $push59=, $pop58, $pop57
3563 ; SIMD128-NEXT:    i8x16.replace_lane $push60=, $pop55, 11, $pop59
3564 ; SIMD128-NEXT:    i8x16.extract_lane_u $push63=, $0, 12
3565 ; SIMD128-NEXT:    i8x16.extract_lane_u $push61=, $1, 12
3566 ; SIMD128-NEXT:    i32.const $push84=, 7
3567 ; SIMD128-NEXT:    i32.and $push62=, $pop61, $pop84
3568 ; SIMD128-NEXT:    i32.shr_u $push64=, $pop63, $pop62
3569 ; SIMD128-NEXT:    i8x16.replace_lane $push65=, $pop60, 12, $pop64
3570 ; SIMD128-NEXT:    i8x16.extract_lane_u $push68=, $0, 13
3571 ; SIMD128-NEXT:    i8x16.extract_lane_u $push66=, $1, 13
3572 ; SIMD128-NEXT:    i32.const $push83=, 7
3573 ; SIMD128-NEXT:    i32.and $push67=, $pop66, $pop83
3574 ; SIMD128-NEXT:    i32.shr_u $push69=, $pop68, $pop67
3575 ; SIMD128-NEXT:    i8x16.replace_lane $push70=, $pop65, 13, $pop69
3576 ; SIMD128-NEXT:    i8x16.extract_lane_u $push73=, $0, 14
3577 ; SIMD128-NEXT:    i8x16.extract_lane_u $push71=, $1, 14
3578 ; SIMD128-NEXT:    i32.const $push82=, 7
3579 ; SIMD128-NEXT:    i32.and $push72=, $pop71, $pop82
3580 ; SIMD128-NEXT:    i32.shr_u $push74=, $pop73, $pop72
3581 ; SIMD128-NEXT:    i8x16.replace_lane $push75=, $pop70, 14, $pop74
3582 ; SIMD128-NEXT:    i8x16.extract_lane_u $push78=, $0, 15
3583 ; SIMD128-NEXT:    i8x16.extract_lane_u $push76=, $1, 15
3584 ; SIMD128-NEXT:    i32.const $push81=, 7
3585 ; SIMD128-NEXT:    i32.and $push77=, $pop76, $pop81
3586 ; SIMD128-NEXT:    i32.shr_u $push79=, $pop78, $pop77
3587 ; SIMD128-NEXT:    i8x16.replace_lane $push80=, $pop75, 15, $pop79
3588 ; SIMD128-NEXT:    return $pop80
3590 ; SIMD128-FAST-LABEL: shr_u_vec_v16i8:
3591 ; SIMD128-FAST:         .functype shr_u_vec_v16i8 (v128, v128) -> (v128)
3592 ; SIMD128-FAST-NEXT:  # %bb.0:
3593 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push8=, $0, 0
3594 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push6=, $1, 0
3595 ; SIMD128-FAST-NEXT:    i32.const $push2=, 7
3596 ; SIMD128-FAST-NEXT:    i32.and $push7=, $pop6, $pop2
3597 ; SIMD128-FAST-NEXT:    i32.shr_u $push9=, $pop8, $pop7
3598 ; SIMD128-FAST-NEXT:    i8x16.splat $push10=, $pop9
3599 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push4=, $0, 1
3600 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push1=, $1, 1
3601 ; SIMD128-FAST-NEXT:    i32.const $push95=, 7
3602 ; SIMD128-FAST-NEXT:    i32.and $push3=, $pop1, $pop95
3603 ; SIMD128-FAST-NEXT:    i32.shr_u $push5=, $pop4, $pop3
3604 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push11=, $pop10, 1, $pop5
3605 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push14=, $0, 2
3606 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push12=, $1, 2
3607 ; SIMD128-FAST-NEXT:    i32.const $push94=, 7
3608 ; SIMD128-FAST-NEXT:    i32.and $push13=, $pop12, $pop94
3609 ; SIMD128-FAST-NEXT:    i32.shr_u $push15=, $pop14, $pop13
3610 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push16=, $pop11, 2, $pop15
3611 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push19=, $0, 3
3612 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push17=, $1, 3
3613 ; SIMD128-FAST-NEXT:    i32.const $push93=, 7
3614 ; SIMD128-FAST-NEXT:    i32.and $push18=, $pop17, $pop93
3615 ; SIMD128-FAST-NEXT:    i32.shr_u $push20=, $pop19, $pop18
3616 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push21=, $pop16, 3, $pop20
3617 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push24=, $0, 4
3618 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push22=, $1, 4
3619 ; SIMD128-FAST-NEXT:    i32.const $push92=, 7
3620 ; SIMD128-FAST-NEXT:    i32.and $push23=, $pop22, $pop92
3621 ; SIMD128-FAST-NEXT:    i32.shr_u $push25=, $pop24, $pop23
3622 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push26=, $pop21, 4, $pop25
3623 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push29=, $0, 5
3624 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push27=, $1, 5
3625 ; SIMD128-FAST-NEXT:    i32.const $push91=, 7
3626 ; SIMD128-FAST-NEXT:    i32.and $push28=, $pop27, $pop91
3627 ; SIMD128-FAST-NEXT:    i32.shr_u $push30=, $pop29, $pop28
3628 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push31=, $pop26, 5, $pop30
3629 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push34=, $0, 6
3630 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push32=, $1, 6
3631 ; SIMD128-FAST-NEXT:    i32.const $push90=, 7
3632 ; SIMD128-FAST-NEXT:    i32.and $push33=, $pop32, $pop90
3633 ; SIMD128-FAST-NEXT:    i32.shr_u $push35=, $pop34, $pop33
3634 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push36=, $pop31, 6, $pop35
3635 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push39=, $0, 7
3636 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push37=, $1, 7
3637 ; SIMD128-FAST-NEXT:    i32.const $push89=, 7
3638 ; SIMD128-FAST-NEXT:    i32.and $push38=, $pop37, $pop89
3639 ; SIMD128-FAST-NEXT:    i32.shr_u $push40=, $pop39, $pop38
3640 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push41=, $pop36, 7, $pop40
3641 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push44=, $0, 8
3642 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push42=, $1, 8
3643 ; SIMD128-FAST-NEXT:    i32.const $push88=, 7
3644 ; SIMD128-FAST-NEXT:    i32.and $push43=, $pop42, $pop88
3645 ; SIMD128-FAST-NEXT:    i32.shr_u $push45=, $pop44, $pop43
3646 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push46=, $pop41, 8, $pop45
3647 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push49=, $0, 9
3648 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push47=, $1, 9
3649 ; SIMD128-FAST-NEXT:    i32.const $push87=, 7
3650 ; SIMD128-FAST-NEXT:    i32.and $push48=, $pop47, $pop87
3651 ; SIMD128-FAST-NEXT:    i32.shr_u $push50=, $pop49, $pop48
3652 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push51=, $pop46, 9, $pop50
3653 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push54=, $0, 10
3654 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push52=, $1, 10
3655 ; SIMD128-FAST-NEXT:    i32.const $push86=, 7
3656 ; SIMD128-FAST-NEXT:    i32.and $push53=, $pop52, $pop86
3657 ; SIMD128-FAST-NEXT:    i32.shr_u $push55=, $pop54, $pop53
3658 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push56=, $pop51, 10, $pop55
3659 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push59=, $0, 11
3660 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push57=, $1, 11
3661 ; SIMD128-FAST-NEXT:    i32.const $push85=, 7
3662 ; SIMD128-FAST-NEXT:    i32.and $push58=, $pop57, $pop85
3663 ; SIMD128-FAST-NEXT:    i32.shr_u $push60=, $pop59, $pop58
3664 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push61=, $pop56, 11, $pop60
3665 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push64=, $0, 12
3666 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push62=, $1, 12
3667 ; SIMD128-FAST-NEXT:    i32.const $push84=, 7
3668 ; SIMD128-FAST-NEXT:    i32.and $push63=, $pop62, $pop84
3669 ; SIMD128-FAST-NEXT:    i32.shr_u $push65=, $pop64, $pop63
3670 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push66=, $pop61, 12, $pop65
3671 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push69=, $0, 13
3672 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push67=, $1, 13
3673 ; SIMD128-FAST-NEXT:    i32.const $push83=, 7
3674 ; SIMD128-FAST-NEXT:    i32.and $push68=, $pop67, $pop83
3675 ; SIMD128-FAST-NEXT:    i32.shr_u $push70=, $pop69, $pop68
3676 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push71=, $pop66, 13, $pop70
3677 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push74=, $0, 14
3678 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push72=, $1, 14
3679 ; SIMD128-FAST-NEXT:    i32.const $push82=, 7
3680 ; SIMD128-FAST-NEXT:    i32.and $push73=, $pop72, $pop82
3681 ; SIMD128-FAST-NEXT:    i32.shr_u $push75=, $pop74, $pop73
3682 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push76=, $pop71, 14, $pop75
3683 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push79=, $0, 15
3684 ; SIMD128-FAST-NEXT:    i8x16.extract_lane_u $push77=, $1, 15
3685 ; SIMD128-FAST-NEXT:    i32.const $push81=, 7
3686 ; SIMD128-FAST-NEXT:    i32.and $push78=, $pop77, $pop81
3687 ; SIMD128-FAST-NEXT:    i32.shr_u $push80=, $pop79, $pop78
3688 ; SIMD128-FAST-NEXT:    i8x16.replace_lane $push0=, $pop76, 15, $pop80
3689 ; SIMD128-FAST-NEXT:    return $pop0
3691 ; NO-SIMD128-LABEL: shr_u_vec_v16i8:
3692 ; 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) -> ()
3693 ; NO-SIMD128-NEXT:  # %bb.0:
3694 ; NO-SIMD128-NEXT:    i32.const $push0=, 255
3695 ; NO-SIMD128-NEXT:    i32.and $push2=, $16, $pop0
3696 ; NO-SIMD128-NEXT:    i32.const $push79=, 255
3697 ; NO-SIMD128-NEXT:    i32.and $push1=, $32, $pop79
3698 ; NO-SIMD128-NEXT:    i32.shr_u $push3=, $pop2, $pop1
3699 ; NO-SIMD128-NEXT:    i32.store8 15($0), $pop3
3700 ; NO-SIMD128-NEXT:    i32.const $push78=, 255
3701 ; NO-SIMD128-NEXT:    i32.and $push5=, $15, $pop78
3702 ; NO-SIMD128-NEXT:    i32.const $push77=, 255
3703 ; NO-SIMD128-NEXT:    i32.and $push4=, $31, $pop77
3704 ; NO-SIMD128-NEXT:    i32.shr_u $push6=, $pop5, $pop4
3705 ; NO-SIMD128-NEXT:    i32.store8 14($0), $pop6
3706 ; NO-SIMD128-NEXT:    i32.const $push76=, 255
3707 ; NO-SIMD128-NEXT:    i32.and $push8=, $14, $pop76
3708 ; NO-SIMD128-NEXT:    i32.const $push75=, 255
3709 ; NO-SIMD128-NEXT:    i32.and $push7=, $30, $pop75
3710 ; NO-SIMD128-NEXT:    i32.shr_u $push9=, $pop8, $pop7
3711 ; NO-SIMD128-NEXT:    i32.store8 13($0), $pop9
3712 ; NO-SIMD128-NEXT:    i32.const $push74=, 255
3713 ; NO-SIMD128-NEXT:    i32.and $push11=, $13, $pop74
3714 ; NO-SIMD128-NEXT:    i32.const $push73=, 255
3715 ; NO-SIMD128-NEXT:    i32.and $push10=, $29, $pop73
3716 ; NO-SIMD128-NEXT:    i32.shr_u $push12=, $pop11, $pop10
3717 ; NO-SIMD128-NEXT:    i32.store8 12($0), $pop12
3718 ; NO-SIMD128-NEXT:    i32.const $push72=, 255
3719 ; NO-SIMD128-NEXT:    i32.and $push14=, $12, $pop72
3720 ; NO-SIMD128-NEXT:    i32.const $push71=, 255
3721 ; NO-SIMD128-NEXT:    i32.and $push13=, $28, $pop71
3722 ; NO-SIMD128-NEXT:    i32.shr_u $push15=, $pop14, $pop13
3723 ; NO-SIMD128-NEXT:    i32.store8 11($0), $pop15
3724 ; NO-SIMD128-NEXT:    i32.const $push70=, 255
3725 ; NO-SIMD128-NEXT:    i32.and $push17=, $11, $pop70
3726 ; NO-SIMD128-NEXT:    i32.const $push69=, 255
3727 ; NO-SIMD128-NEXT:    i32.and $push16=, $27, $pop69
3728 ; NO-SIMD128-NEXT:    i32.shr_u $push18=, $pop17, $pop16
3729 ; NO-SIMD128-NEXT:    i32.store8 10($0), $pop18
3730 ; NO-SIMD128-NEXT:    i32.const $push68=, 255
3731 ; NO-SIMD128-NEXT:    i32.and $push20=, $10, $pop68
3732 ; NO-SIMD128-NEXT:    i32.const $push67=, 255
3733 ; NO-SIMD128-NEXT:    i32.and $push19=, $26, $pop67
3734 ; NO-SIMD128-NEXT:    i32.shr_u $push21=, $pop20, $pop19
3735 ; NO-SIMD128-NEXT:    i32.store8 9($0), $pop21
3736 ; NO-SIMD128-NEXT:    i32.const $push66=, 255
3737 ; NO-SIMD128-NEXT:    i32.and $push23=, $9, $pop66
3738 ; NO-SIMD128-NEXT:    i32.const $push65=, 255
3739 ; NO-SIMD128-NEXT:    i32.and $push22=, $25, $pop65
3740 ; NO-SIMD128-NEXT:    i32.shr_u $push24=, $pop23, $pop22
3741 ; NO-SIMD128-NEXT:    i32.store8 8($0), $pop24
3742 ; NO-SIMD128-NEXT:    i32.const $push64=, 255
3743 ; NO-SIMD128-NEXT:    i32.and $push26=, $8, $pop64
3744 ; NO-SIMD128-NEXT:    i32.const $push63=, 255
3745 ; NO-SIMD128-NEXT:    i32.and $push25=, $24, $pop63
3746 ; NO-SIMD128-NEXT:    i32.shr_u $push27=, $pop26, $pop25
3747 ; NO-SIMD128-NEXT:    i32.store8 7($0), $pop27
3748 ; NO-SIMD128-NEXT:    i32.const $push62=, 255
3749 ; NO-SIMD128-NEXT:    i32.and $push29=, $7, $pop62
3750 ; NO-SIMD128-NEXT:    i32.const $push61=, 255
3751 ; NO-SIMD128-NEXT:    i32.and $push28=, $23, $pop61
3752 ; NO-SIMD128-NEXT:    i32.shr_u $push30=, $pop29, $pop28
3753 ; NO-SIMD128-NEXT:    i32.store8 6($0), $pop30
3754 ; NO-SIMD128-NEXT:    i32.const $push60=, 255
3755 ; NO-SIMD128-NEXT:    i32.and $push32=, $6, $pop60
3756 ; NO-SIMD128-NEXT:    i32.const $push59=, 255
3757 ; NO-SIMD128-NEXT:    i32.and $push31=, $22, $pop59
3758 ; NO-SIMD128-NEXT:    i32.shr_u $push33=, $pop32, $pop31
3759 ; NO-SIMD128-NEXT:    i32.store8 5($0), $pop33
3760 ; NO-SIMD128-NEXT:    i32.const $push58=, 255
3761 ; NO-SIMD128-NEXT:    i32.and $push35=, $5, $pop58
3762 ; NO-SIMD128-NEXT:    i32.const $push57=, 255
3763 ; NO-SIMD128-NEXT:    i32.and $push34=, $21, $pop57
3764 ; NO-SIMD128-NEXT:    i32.shr_u $push36=, $pop35, $pop34
3765 ; NO-SIMD128-NEXT:    i32.store8 4($0), $pop36
3766 ; NO-SIMD128-NEXT:    i32.const $push56=, 255
3767 ; NO-SIMD128-NEXT:    i32.and $push38=, $4, $pop56
3768 ; NO-SIMD128-NEXT:    i32.const $push55=, 255
3769 ; NO-SIMD128-NEXT:    i32.and $push37=, $20, $pop55
3770 ; NO-SIMD128-NEXT:    i32.shr_u $push39=, $pop38, $pop37
3771 ; NO-SIMD128-NEXT:    i32.store8 3($0), $pop39
3772 ; NO-SIMD128-NEXT:    i32.const $push54=, 255
3773 ; NO-SIMD128-NEXT:    i32.and $push41=, $3, $pop54
3774 ; NO-SIMD128-NEXT:    i32.const $push53=, 255
3775 ; NO-SIMD128-NEXT:    i32.and $push40=, $19, $pop53
3776 ; NO-SIMD128-NEXT:    i32.shr_u $push42=, $pop41, $pop40
3777 ; NO-SIMD128-NEXT:    i32.store8 2($0), $pop42
3778 ; NO-SIMD128-NEXT:    i32.const $push52=, 255
3779 ; NO-SIMD128-NEXT:    i32.and $push44=, $2, $pop52
3780 ; NO-SIMD128-NEXT:    i32.const $push51=, 255
3781 ; NO-SIMD128-NEXT:    i32.and $push43=, $18, $pop51
3782 ; NO-SIMD128-NEXT:    i32.shr_u $push45=, $pop44, $pop43
3783 ; NO-SIMD128-NEXT:    i32.store8 1($0), $pop45
3784 ; NO-SIMD128-NEXT:    i32.const $push50=, 255
3785 ; NO-SIMD128-NEXT:    i32.and $push47=, $1, $pop50
3786 ; NO-SIMD128-NEXT:    i32.const $push49=, 255
3787 ; NO-SIMD128-NEXT:    i32.and $push46=, $17, $pop49
3788 ; NO-SIMD128-NEXT:    i32.shr_u $push48=, $pop47, $pop46
3789 ; NO-SIMD128-NEXT:    i32.store8 0($0), $pop48
3790 ; NO-SIMD128-NEXT:    return
3792 ; NO-SIMD128-FAST-LABEL: shr_u_vec_v16i8:
3793 ; 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) -> ()
3794 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
3795 ; NO-SIMD128-FAST-NEXT:    i32.const $push0=, 255
3796 ; NO-SIMD128-FAST-NEXT:    i32.and $push2=, $1, $pop0
3797 ; NO-SIMD128-FAST-NEXT:    i32.const $push79=, 255
3798 ; NO-SIMD128-FAST-NEXT:    i32.and $push1=, $17, $pop79
3799 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push3=, $pop2, $pop1
3800 ; NO-SIMD128-FAST-NEXT:    i32.store8 0($0), $pop3
3801 ; NO-SIMD128-FAST-NEXT:    i32.const $push78=, 255
3802 ; NO-SIMD128-FAST-NEXT:    i32.and $push5=, $2, $pop78
3803 ; NO-SIMD128-FAST-NEXT:    i32.const $push77=, 255
3804 ; NO-SIMD128-FAST-NEXT:    i32.and $push4=, $18, $pop77
3805 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push6=, $pop5, $pop4
3806 ; NO-SIMD128-FAST-NEXT:    i32.store8 1($0), $pop6
3807 ; NO-SIMD128-FAST-NEXT:    i32.const $push76=, 255
3808 ; NO-SIMD128-FAST-NEXT:    i32.and $push8=, $3, $pop76
3809 ; NO-SIMD128-FAST-NEXT:    i32.const $push75=, 255
3810 ; NO-SIMD128-FAST-NEXT:    i32.and $push7=, $19, $pop75
3811 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push9=, $pop8, $pop7
3812 ; NO-SIMD128-FAST-NEXT:    i32.store8 2($0), $pop9
3813 ; NO-SIMD128-FAST-NEXT:    i32.const $push74=, 255
3814 ; NO-SIMD128-FAST-NEXT:    i32.and $push11=, $4, $pop74
3815 ; NO-SIMD128-FAST-NEXT:    i32.const $push73=, 255
3816 ; NO-SIMD128-FAST-NEXT:    i32.and $push10=, $20, $pop73
3817 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push12=, $pop11, $pop10
3818 ; NO-SIMD128-FAST-NEXT:    i32.store8 3($0), $pop12
3819 ; NO-SIMD128-FAST-NEXT:    i32.const $push72=, 255
3820 ; NO-SIMD128-FAST-NEXT:    i32.and $push14=, $5, $pop72
3821 ; NO-SIMD128-FAST-NEXT:    i32.const $push71=, 255
3822 ; NO-SIMD128-FAST-NEXT:    i32.and $push13=, $21, $pop71
3823 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push15=, $pop14, $pop13
3824 ; NO-SIMD128-FAST-NEXT:    i32.store8 4($0), $pop15
3825 ; NO-SIMD128-FAST-NEXT:    i32.const $push70=, 255
3826 ; NO-SIMD128-FAST-NEXT:    i32.and $push17=, $6, $pop70
3827 ; NO-SIMD128-FAST-NEXT:    i32.const $push69=, 255
3828 ; NO-SIMD128-FAST-NEXT:    i32.and $push16=, $22, $pop69
3829 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push18=, $pop17, $pop16
3830 ; NO-SIMD128-FAST-NEXT:    i32.store8 5($0), $pop18
3831 ; NO-SIMD128-FAST-NEXT:    i32.const $push68=, 255
3832 ; NO-SIMD128-FAST-NEXT:    i32.and $push20=, $7, $pop68
3833 ; NO-SIMD128-FAST-NEXT:    i32.const $push67=, 255
3834 ; NO-SIMD128-FAST-NEXT:    i32.and $push19=, $23, $pop67
3835 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push21=, $pop20, $pop19
3836 ; NO-SIMD128-FAST-NEXT:    i32.store8 6($0), $pop21
3837 ; NO-SIMD128-FAST-NEXT:    i32.const $push66=, 255
3838 ; NO-SIMD128-FAST-NEXT:    i32.and $push23=, $8, $pop66
3839 ; NO-SIMD128-FAST-NEXT:    i32.const $push65=, 255
3840 ; NO-SIMD128-FAST-NEXT:    i32.and $push22=, $24, $pop65
3841 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push24=, $pop23, $pop22
3842 ; NO-SIMD128-FAST-NEXT:    i32.store8 7($0), $pop24
3843 ; NO-SIMD128-FAST-NEXT:    i32.const $push64=, 255
3844 ; NO-SIMD128-FAST-NEXT:    i32.and $push26=, $9, $pop64
3845 ; NO-SIMD128-FAST-NEXT:    i32.const $push63=, 255
3846 ; NO-SIMD128-FAST-NEXT:    i32.and $push25=, $25, $pop63
3847 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push27=, $pop26, $pop25
3848 ; NO-SIMD128-FAST-NEXT:    i32.store8 8($0), $pop27
3849 ; NO-SIMD128-FAST-NEXT:    i32.const $push62=, 255
3850 ; NO-SIMD128-FAST-NEXT:    i32.and $push29=, $10, $pop62
3851 ; NO-SIMD128-FAST-NEXT:    i32.const $push61=, 255
3852 ; NO-SIMD128-FAST-NEXT:    i32.and $push28=, $26, $pop61
3853 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push30=, $pop29, $pop28
3854 ; NO-SIMD128-FAST-NEXT:    i32.store8 9($0), $pop30
3855 ; NO-SIMD128-FAST-NEXT:    i32.const $push60=, 255
3856 ; NO-SIMD128-FAST-NEXT:    i32.and $push32=, $11, $pop60
3857 ; NO-SIMD128-FAST-NEXT:    i32.const $push59=, 255
3858 ; NO-SIMD128-FAST-NEXT:    i32.and $push31=, $27, $pop59
3859 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push33=, $pop32, $pop31
3860 ; NO-SIMD128-FAST-NEXT:    i32.store8 10($0), $pop33
3861 ; NO-SIMD128-FAST-NEXT:    i32.const $push58=, 255
3862 ; NO-SIMD128-FAST-NEXT:    i32.and $push35=, $12, $pop58
3863 ; NO-SIMD128-FAST-NEXT:    i32.const $push57=, 255
3864 ; NO-SIMD128-FAST-NEXT:    i32.and $push34=, $28, $pop57
3865 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push36=, $pop35, $pop34
3866 ; NO-SIMD128-FAST-NEXT:    i32.store8 11($0), $pop36
3867 ; NO-SIMD128-FAST-NEXT:    i32.const $push56=, 255
3868 ; NO-SIMD128-FAST-NEXT:    i32.and $push38=, $13, $pop56
3869 ; NO-SIMD128-FAST-NEXT:    i32.const $push55=, 255
3870 ; NO-SIMD128-FAST-NEXT:    i32.and $push37=, $29, $pop55
3871 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push39=, $pop38, $pop37
3872 ; NO-SIMD128-FAST-NEXT:    i32.store8 12($0), $pop39
3873 ; NO-SIMD128-FAST-NEXT:    i32.const $push54=, 255
3874 ; NO-SIMD128-FAST-NEXT:    i32.and $push41=, $14, $pop54
3875 ; NO-SIMD128-FAST-NEXT:    i32.const $push53=, 255
3876 ; NO-SIMD128-FAST-NEXT:    i32.and $push40=, $30, $pop53
3877 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push42=, $pop41, $pop40
3878 ; NO-SIMD128-FAST-NEXT:    i32.store8 13($0), $pop42
3879 ; NO-SIMD128-FAST-NEXT:    i32.const $push52=, 255
3880 ; NO-SIMD128-FAST-NEXT:    i32.and $push44=, $15, $pop52
3881 ; NO-SIMD128-FAST-NEXT:    i32.const $push51=, 255
3882 ; NO-SIMD128-FAST-NEXT:    i32.and $push43=, $31, $pop51
3883 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push45=, $pop44, $pop43
3884 ; NO-SIMD128-FAST-NEXT:    i32.store8 14($0), $pop45
3885 ; NO-SIMD128-FAST-NEXT:    i32.const $push50=, 255
3886 ; NO-SIMD128-FAST-NEXT:    i32.and $push47=, $16, $pop50
3887 ; NO-SIMD128-FAST-NEXT:    i32.const $push49=, 255
3888 ; NO-SIMD128-FAST-NEXT:    i32.and $push46=, $32, $pop49
3889 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push48=, $pop47, $pop46
3890 ; NO-SIMD128-FAST-NEXT:    i32.store8 15($0), $pop48
3891 ; NO-SIMD128-FAST-NEXT:    return
3892   %a = lshr <16 x i8> %v, %x
3893   ret <16 x i8> %a
3896 define <16 x i8> @and_v16i8(<16 x i8> %x, <16 x i8> %y) {
3897 ; SIMD128-LABEL: and_v16i8:
3898 ; SIMD128:         .functype and_v16i8 (v128, v128) -> (v128)
3899 ; SIMD128-NEXT:  # %bb.0:
3900 ; SIMD128-NEXT:    v128.and $push0=, $0, $1
3901 ; SIMD128-NEXT:    return $pop0
3903 ; SIMD128-FAST-LABEL: and_v16i8:
3904 ; SIMD128-FAST:         .functype and_v16i8 (v128, v128) -> (v128)
3905 ; SIMD128-FAST-NEXT:  # %bb.0:
3906 ; SIMD128-FAST-NEXT:    v128.and $push0=, $0, $1
3907 ; SIMD128-FAST-NEXT:    return $pop0
3909 ; NO-SIMD128-LABEL: and_v16i8:
3910 ; 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) -> ()
3911 ; NO-SIMD128-NEXT:  # %bb.0:
3912 ; NO-SIMD128-NEXT:    i32.and $push0=, $16, $32
3913 ; NO-SIMD128-NEXT:    i32.store8 15($0), $pop0
3914 ; NO-SIMD128-NEXT:    i32.and $push1=, $15, $31
3915 ; NO-SIMD128-NEXT:    i32.store8 14($0), $pop1
3916 ; NO-SIMD128-NEXT:    i32.and $push2=, $14, $30
3917 ; NO-SIMD128-NEXT:    i32.store8 13($0), $pop2
3918 ; NO-SIMD128-NEXT:    i32.and $push3=, $13, $29
3919 ; NO-SIMD128-NEXT:    i32.store8 12($0), $pop3
3920 ; NO-SIMD128-NEXT:    i32.and $push4=, $12, $28
3921 ; NO-SIMD128-NEXT:    i32.store8 11($0), $pop4
3922 ; NO-SIMD128-NEXT:    i32.and $push5=, $11, $27
3923 ; NO-SIMD128-NEXT:    i32.store8 10($0), $pop5
3924 ; NO-SIMD128-NEXT:    i32.and $push6=, $10, $26
3925 ; NO-SIMD128-NEXT:    i32.store8 9($0), $pop6
3926 ; NO-SIMD128-NEXT:    i32.and $push7=, $9, $25
3927 ; NO-SIMD128-NEXT:    i32.store8 8($0), $pop7
3928 ; NO-SIMD128-NEXT:    i32.and $push8=, $8, $24
3929 ; NO-SIMD128-NEXT:    i32.store8 7($0), $pop8
3930 ; NO-SIMD128-NEXT:    i32.and $push9=, $7, $23
3931 ; NO-SIMD128-NEXT:    i32.store8 6($0), $pop9
3932 ; NO-SIMD128-NEXT:    i32.and $push10=, $6, $22
3933 ; NO-SIMD128-NEXT:    i32.store8 5($0), $pop10
3934 ; NO-SIMD128-NEXT:    i32.and $push11=, $5, $21
3935 ; NO-SIMD128-NEXT:    i32.store8 4($0), $pop11
3936 ; NO-SIMD128-NEXT:    i32.and $push12=, $4, $20
3937 ; NO-SIMD128-NEXT:    i32.store8 3($0), $pop12
3938 ; NO-SIMD128-NEXT:    i32.and $push13=, $3, $19
3939 ; NO-SIMD128-NEXT:    i32.store8 2($0), $pop13
3940 ; NO-SIMD128-NEXT:    i32.and $push14=, $2, $18
3941 ; NO-SIMD128-NEXT:    i32.store8 1($0), $pop14
3942 ; NO-SIMD128-NEXT:    i32.and $push15=, $1, $17
3943 ; NO-SIMD128-NEXT:    i32.store8 0($0), $pop15
3944 ; NO-SIMD128-NEXT:    return
3946 ; NO-SIMD128-FAST-LABEL: and_v16i8:
3947 ; 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) -> ()
3948 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
3949 ; NO-SIMD128-FAST-NEXT:    i32.and $push0=, $1, $17
3950 ; NO-SIMD128-FAST-NEXT:    i32.store8 0($0), $pop0
3951 ; NO-SIMD128-FAST-NEXT:    i32.and $push1=, $2, $18
3952 ; NO-SIMD128-FAST-NEXT:    i32.store8 1($0), $pop1
3953 ; NO-SIMD128-FAST-NEXT:    i32.and $push2=, $3, $19
3954 ; NO-SIMD128-FAST-NEXT:    i32.store8 2($0), $pop2
3955 ; NO-SIMD128-FAST-NEXT:    i32.and $push3=, $4, $20
3956 ; NO-SIMD128-FAST-NEXT:    i32.store8 3($0), $pop3
3957 ; NO-SIMD128-FAST-NEXT:    i32.and $push4=, $5, $21
3958 ; NO-SIMD128-FAST-NEXT:    i32.store8 4($0), $pop4
3959 ; NO-SIMD128-FAST-NEXT:    i32.and $push5=, $6, $22
3960 ; NO-SIMD128-FAST-NEXT:    i32.store8 5($0), $pop5
3961 ; NO-SIMD128-FAST-NEXT:    i32.and $push6=, $7, $23
3962 ; NO-SIMD128-FAST-NEXT:    i32.store8 6($0), $pop6
3963 ; NO-SIMD128-FAST-NEXT:    i32.and $push7=, $8, $24
3964 ; NO-SIMD128-FAST-NEXT:    i32.store8 7($0), $pop7
3965 ; NO-SIMD128-FAST-NEXT:    i32.and $push8=, $9, $25
3966 ; NO-SIMD128-FAST-NEXT:    i32.store8 8($0), $pop8
3967 ; NO-SIMD128-FAST-NEXT:    i32.and $push9=, $10, $26
3968 ; NO-SIMD128-FAST-NEXT:    i32.store8 9($0), $pop9
3969 ; NO-SIMD128-FAST-NEXT:    i32.and $push10=, $11, $27
3970 ; NO-SIMD128-FAST-NEXT:    i32.store8 10($0), $pop10
3971 ; NO-SIMD128-FAST-NEXT:    i32.and $push11=, $12, $28
3972 ; NO-SIMD128-FAST-NEXT:    i32.store8 11($0), $pop11
3973 ; NO-SIMD128-FAST-NEXT:    i32.and $push12=, $13, $29
3974 ; NO-SIMD128-FAST-NEXT:    i32.store8 12($0), $pop12
3975 ; NO-SIMD128-FAST-NEXT:    i32.and $push13=, $14, $30
3976 ; NO-SIMD128-FAST-NEXT:    i32.store8 13($0), $pop13
3977 ; NO-SIMD128-FAST-NEXT:    i32.and $push14=, $15, $31
3978 ; NO-SIMD128-FAST-NEXT:    i32.store8 14($0), $pop14
3979 ; NO-SIMD128-FAST-NEXT:    i32.and $push15=, $16, $32
3980 ; NO-SIMD128-FAST-NEXT:    i32.store8 15($0), $pop15
3981 ; NO-SIMD128-FAST-NEXT:    return
3982   %a = and <16 x i8> %x, %y
3983   ret <16 x i8> %a
3986 define <16 x i8> @or_v16i8(<16 x i8> %x, <16 x i8> %y) {
3987 ; SIMD128-LABEL: or_v16i8:
3988 ; SIMD128:         .functype or_v16i8 (v128, v128) -> (v128)
3989 ; SIMD128-NEXT:  # %bb.0:
3990 ; SIMD128-NEXT:    v128.or $push0=, $0, $1
3991 ; SIMD128-NEXT:    return $pop0
3993 ; SIMD128-FAST-LABEL: or_v16i8:
3994 ; SIMD128-FAST:         .functype or_v16i8 (v128, v128) -> (v128)
3995 ; SIMD128-FAST-NEXT:  # %bb.0:
3996 ; SIMD128-FAST-NEXT:    v128.or $push0=, $0, $1
3997 ; SIMD128-FAST-NEXT:    return $pop0
3999 ; NO-SIMD128-LABEL: or_v16i8:
4000 ; 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) -> ()
4001 ; NO-SIMD128-NEXT:  # %bb.0:
4002 ; NO-SIMD128-NEXT:    i32.or $push0=, $16, $32
4003 ; NO-SIMD128-NEXT:    i32.store8 15($0), $pop0
4004 ; NO-SIMD128-NEXT:    i32.or $push1=, $15, $31
4005 ; NO-SIMD128-NEXT:    i32.store8 14($0), $pop1
4006 ; NO-SIMD128-NEXT:    i32.or $push2=, $14, $30
4007 ; NO-SIMD128-NEXT:    i32.store8 13($0), $pop2
4008 ; NO-SIMD128-NEXT:    i32.or $push3=, $13, $29
4009 ; NO-SIMD128-NEXT:    i32.store8 12($0), $pop3
4010 ; NO-SIMD128-NEXT:    i32.or $push4=, $12, $28
4011 ; NO-SIMD128-NEXT:    i32.store8 11($0), $pop4
4012 ; NO-SIMD128-NEXT:    i32.or $push5=, $11, $27
4013 ; NO-SIMD128-NEXT:    i32.store8 10($0), $pop5
4014 ; NO-SIMD128-NEXT:    i32.or $push6=, $10, $26
4015 ; NO-SIMD128-NEXT:    i32.store8 9($0), $pop6
4016 ; NO-SIMD128-NEXT:    i32.or $push7=, $9, $25
4017 ; NO-SIMD128-NEXT:    i32.store8 8($0), $pop7
4018 ; NO-SIMD128-NEXT:    i32.or $push8=, $8, $24
4019 ; NO-SIMD128-NEXT:    i32.store8 7($0), $pop8
4020 ; NO-SIMD128-NEXT:    i32.or $push9=, $7, $23
4021 ; NO-SIMD128-NEXT:    i32.store8 6($0), $pop9
4022 ; NO-SIMD128-NEXT:    i32.or $push10=, $6, $22
4023 ; NO-SIMD128-NEXT:    i32.store8 5($0), $pop10
4024 ; NO-SIMD128-NEXT:    i32.or $push11=, $5, $21
4025 ; NO-SIMD128-NEXT:    i32.store8 4($0), $pop11
4026 ; NO-SIMD128-NEXT:    i32.or $push12=, $4, $20
4027 ; NO-SIMD128-NEXT:    i32.store8 3($0), $pop12
4028 ; NO-SIMD128-NEXT:    i32.or $push13=, $3, $19
4029 ; NO-SIMD128-NEXT:    i32.store8 2($0), $pop13
4030 ; NO-SIMD128-NEXT:    i32.or $push14=, $2, $18
4031 ; NO-SIMD128-NEXT:    i32.store8 1($0), $pop14
4032 ; NO-SIMD128-NEXT:    i32.or $push15=, $1, $17
4033 ; NO-SIMD128-NEXT:    i32.store8 0($0), $pop15
4034 ; NO-SIMD128-NEXT:    return
4036 ; NO-SIMD128-FAST-LABEL: or_v16i8:
4037 ; 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) -> ()
4038 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
4039 ; NO-SIMD128-FAST-NEXT:    i32.or $push0=, $1, $17
4040 ; NO-SIMD128-FAST-NEXT:    i32.store8 0($0), $pop0
4041 ; NO-SIMD128-FAST-NEXT:    i32.or $push1=, $2, $18
4042 ; NO-SIMD128-FAST-NEXT:    i32.store8 1($0), $pop1
4043 ; NO-SIMD128-FAST-NEXT:    i32.or $push2=, $3, $19
4044 ; NO-SIMD128-FAST-NEXT:    i32.store8 2($0), $pop2
4045 ; NO-SIMD128-FAST-NEXT:    i32.or $push3=, $4, $20
4046 ; NO-SIMD128-FAST-NEXT:    i32.store8 3($0), $pop3
4047 ; NO-SIMD128-FAST-NEXT:    i32.or $push4=, $5, $21
4048 ; NO-SIMD128-FAST-NEXT:    i32.store8 4($0), $pop4
4049 ; NO-SIMD128-FAST-NEXT:    i32.or $push5=, $6, $22
4050 ; NO-SIMD128-FAST-NEXT:    i32.store8 5($0), $pop5
4051 ; NO-SIMD128-FAST-NEXT:    i32.or $push6=, $7, $23
4052 ; NO-SIMD128-FAST-NEXT:    i32.store8 6($0), $pop6
4053 ; NO-SIMD128-FAST-NEXT:    i32.or $push7=, $8, $24
4054 ; NO-SIMD128-FAST-NEXT:    i32.store8 7($0), $pop7
4055 ; NO-SIMD128-FAST-NEXT:    i32.or $push8=, $9, $25
4056 ; NO-SIMD128-FAST-NEXT:    i32.store8 8($0), $pop8
4057 ; NO-SIMD128-FAST-NEXT:    i32.or $push9=, $10, $26
4058 ; NO-SIMD128-FAST-NEXT:    i32.store8 9($0), $pop9
4059 ; NO-SIMD128-FAST-NEXT:    i32.or $push10=, $11, $27
4060 ; NO-SIMD128-FAST-NEXT:    i32.store8 10($0), $pop10
4061 ; NO-SIMD128-FAST-NEXT:    i32.or $push11=, $12, $28
4062 ; NO-SIMD128-FAST-NEXT:    i32.store8 11($0), $pop11
4063 ; NO-SIMD128-FAST-NEXT:    i32.or $push12=, $13, $29
4064 ; NO-SIMD128-FAST-NEXT:    i32.store8 12($0), $pop12
4065 ; NO-SIMD128-FAST-NEXT:    i32.or $push13=, $14, $30
4066 ; NO-SIMD128-FAST-NEXT:    i32.store8 13($0), $pop13
4067 ; NO-SIMD128-FAST-NEXT:    i32.or $push14=, $15, $31
4068 ; NO-SIMD128-FAST-NEXT:    i32.store8 14($0), $pop14
4069 ; NO-SIMD128-FAST-NEXT:    i32.or $push15=, $16, $32
4070 ; NO-SIMD128-FAST-NEXT:    i32.store8 15($0), $pop15
4071 ; NO-SIMD128-FAST-NEXT:    return
4072   %a = or <16 x i8> %x, %y
4073   ret <16 x i8> %a
4076 define <16 x i8> @xor_v16i8(<16 x i8> %x, <16 x i8> %y) {
4077 ; SIMD128-LABEL: xor_v16i8:
4078 ; SIMD128:         .functype xor_v16i8 (v128, v128) -> (v128)
4079 ; SIMD128-NEXT:  # %bb.0:
4080 ; SIMD128-NEXT:    v128.xor $push0=, $0, $1
4081 ; SIMD128-NEXT:    return $pop0
4083 ; SIMD128-FAST-LABEL: xor_v16i8:
4084 ; SIMD128-FAST:         .functype xor_v16i8 (v128, v128) -> (v128)
4085 ; SIMD128-FAST-NEXT:  # %bb.0:
4086 ; SIMD128-FAST-NEXT:    v128.xor $push0=, $0, $1
4087 ; SIMD128-FAST-NEXT:    return $pop0
4089 ; NO-SIMD128-LABEL: xor_v16i8:
4090 ; 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) -> ()
4091 ; NO-SIMD128-NEXT:  # %bb.0:
4092 ; NO-SIMD128-NEXT:    i32.xor $push0=, $16, $32
4093 ; NO-SIMD128-NEXT:    i32.store8 15($0), $pop0
4094 ; NO-SIMD128-NEXT:    i32.xor $push1=, $15, $31
4095 ; NO-SIMD128-NEXT:    i32.store8 14($0), $pop1
4096 ; NO-SIMD128-NEXT:    i32.xor $push2=, $14, $30
4097 ; NO-SIMD128-NEXT:    i32.store8 13($0), $pop2
4098 ; NO-SIMD128-NEXT:    i32.xor $push3=, $13, $29
4099 ; NO-SIMD128-NEXT:    i32.store8 12($0), $pop3
4100 ; NO-SIMD128-NEXT:    i32.xor $push4=, $12, $28
4101 ; NO-SIMD128-NEXT:    i32.store8 11($0), $pop4
4102 ; NO-SIMD128-NEXT:    i32.xor $push5=, $11, $27
4103 ; NO-SIMD128-NEXT:    i32.store8 10($0), $pop5
4104 ; NO-SIMD128-NEXT:    i32.xor $push6=, $10, $26
4105 ; NO-SIMD128-NEXT:    i32.store8 9($0), $pop6
4106 ; NO-SIMD128-NEXT:    i32.xor $push7=, $9, $25
4107 ; NO-SIMD128-NEXT:    i32.store8 8($0), $pop7
4108 ; NO-SIMD128-NEXT:    i32.xor $push8=, $8, $24
4109 ; NO-SIMD128-NEXT:    i32.store8 7($0), $pop8
4110 ; NO-SIMD128-NEXT:    i32.xor $push9=, $7, $23
4111 ; NO-SIMD128-NEXT:    i32.store8 6($0), $pop9
4112 ; NO-SIMD128-NEXT:    i32.xor $push10=, $6, $22
4113 ; NO-SIMD128-NEXT:    i32.store8 5($0), $pop10
4114 ; NO-SIMD128-NEXT:    i32.xor $push11=, $5, $21
4115 ; NO-SIMD128-NEXT:    i32.store8 4($0), $pop11
4116 ; NO-SIMD128-NEXT:    i32.xor $push12=, $4, $20
4117 ; NO-SIMD128-NEXT:    i32.store8 3($0), $pop12
4118 ; NO-SIMD128-NEXT:    i32.xor $push13=, $3, $19
4119 ; NO-SIMD128-NEXT:    i32.store8 2($0), $pop13
4120 ; NO-SIMD128-NEXT:    i32.xor $push14=, $2, $18
4121 ; NO-SIMD128-NEXT:    i32.store8 1($0), $pop14
4122 ; NO-SIMD128-NEXT:    i32.xor $push15=, $1, $17
4123 ; NO-SIMD128-NEXT:    i32.store8 0($0), $pop15
4124 ; NO-SIMD128-NEXT:    return
4126 ; NO-SIMD128-FAST-LABEL: xor_v16i8:
4127 ; 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) -> ()
4128 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
4129 ; NO-SIMD128-FAST-NEXT:    i32.xor $push0=, $1, $17
4130 ; NO-SIMD128-FAST-NEXT:    i32.store8 0($0), $pop0
4131 ; NO-SIMD128-FAST-NEXT:    i32.xor $push1=, $2, $18
4132 ; NO-SIMD128-FAST-NEXT:    i32.store8 1($0), $pop1
4133 ; NO-SIMD128-FAST-NEXT:    i32.xor $push2=, $3, $19
4134 ; NO-SIMD128-FAST-NEXT:    i32.store8 2($0), $pop2
4135 ; NO-SIMD128-FAST-NEXT:    i32.xor $push3=, $4, $20
4136 ; NO-SIMD128-FAST-NEXT:    i32.store8 3($0), $pop3
4137 ; NO-SIMD128-FAST-NEXT:    i32.xor $push4=, $5, $21
4138 ; NO-SIMD128-FAST-NEXT:    i32.store8 4($0), $pop4
4139 ; NO-SIMD128-FAST-NEXT:    i32.xor $push5=, $6, $22
4140 ; NO-SIMD128-FAST-NEXT:    i32.store8 5($0), $pop5
4141 ; NO-SIMD128-FAST-NEXT:    i32.xor $push6=, $7, $23
4142 ; NO-SIMD128-FAST-NEXT:    i32.store8 6($0), $pop6
4143 ; NO-SIMD128-FAST-NEXT:    i32.xor $push7=, $8, $24
4144 ; NO-SIMD128-FAST-NEXT:    i32.store8 7($0), $pop7
4145 ; NO-SIMD128-FAST-NEXT:    i32.xor $push8=, $9, $25
4146 ; NO-SIMD128-FAST-NEXT:    i32.store8 8($0), $pop8
4147 ; NO-SIMD128-FAST-NEXT:    i32.xor $push9=, $10, $26
4148 ; NO-SIMD128-FAST-NEXT:    i32.store8 9($0), $pop9
4149 ; NO-SIMD128-FAST-NEXT:    i32.xor $push10=, $11, $27
4150 ; NO-SIMD128-FAST-NEXT:    i32.store8 10($0), $pop10
4151 ; NO-SIMD128-FAST-NEXT:    i32.xor $push11=, $12, $28
4152 ; NO-SIMD128-FAST-NEXT:    i32.store8 11($0), $pop11
4153 ; NO-SIMD128-FAST-NEXT:    i32.xor $push12=, $13, $29
4154 ; NO-SIMD128-FAST-NEXT:    i32.store8 12($0), $pop12
4155 ; NO-SIMD128-FAST-NEXT:    i32.xor $push13=, $14, $30
4156 ; NO-SIMD128-FAST-NEXT:    i32.store8 13($0), $pop13
4157 ; NO-SIMD128-FAST-NEXT:    i32.xor $push14=, $15, $31
4158 ; NO-SIMD128-FAST-NEXT:    i32.store8 14($0), $pop14
4159 ; NO-SIMD128-FAST-NEXT:    i32.xor $push15=, $16, $32
4160 ; NO-SIMD128-FAST-NEXT:    i32.store8 15($0), $pop15
4161 ; NO-SIMD128-FAST-NEXT:    return
4162   %a = xor <16 x i8> %x, %y
4163   ret <16 x i8> %a
4166 define <16 x i8> @not_v16i8(<16 x i8> %x) {
4167 ; SIMD128-LABEL: not_v16i8:
4168 ; SIMD128:         .functype not_v16i8 (v128) -> (v128)
4169 ; SIMD128-NEXT:  # %bb.0:
4170 ; SIMD128-NEXT:    v128.not $push0=, $0
4171 ; SIMD128-NEXT:    return $pop0
4173 ; SIMD128-FAST-LABEL: not_v16i8:
4174 ; SIMD128-FAST:         .functype not_v16i8 (v128) -> (v128)
4175 ; SIMD128-FAST-NEXT:  # %bb.0:
4176 ; SIMD128-FAST-NEXT:    v128.not $push0=, $0
4177 ; SIMD128-FAST-NEXT:    return $pop0
4179 ; NO-SIMD128-LABEL: not_v16i8:
4180 ; NO-SIMD128:         .functype not_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
4181 ; NO-SIMD128-NEXT:  # %bb.0:
4182 ; NO-SIMD128-NEXT:    i32.const $push0=, -1
4183 ; NO-SIMD128-NEXT:    i32.xor $push1=, $16, $pop0
4184 ; NO-SIMD128-NEXT:    i32.store8 15($0), $pop1
4185 ; NO-SIMD128-NEXT:    i32.const $push31=, -1
4186 ; NO-SIMD128-NEXT:    i32.xor $push2=, $15, $pop31
4187 ; NO-SIMD128-NEXT:    i32.store8 14($0), $pop2
4188 ; NO-SIMD128-NEXT:    i32.const $push30=, -1
4189 ; NO-SIMD128-NEXT:    i32.xor $push3=, $14, $pop30
4190 ; NO-SIMD128-NEXT:    i32.store8 13($0), $pop3
4191 ; NO-SIMD128-NEXT:    i32.const $push29=, -1
4192 ; NO-SIMD128-NEXT:    i32.xor $push4=, $13, $pop29
4193 ; NO-SIMD128-NEXT:    i32.store8 12($0), $pop4
4194 ; NO-SIMD128-NEXT:    i32.const $push28=, -1
4195 ; NO-SIMD128-NEXT:    i32.xor $push5=, $12, $pop28
4196 ; NO-SIMD128-NEXT:    i32.store8 11($0), $pop5
4197 ; NO-SIMD128-NEXT:    i32.const $push27=, -1
4198 ; NO-SIMD128-NEXT:    i32.xor $push6=, $11, $pop27
4199 ; NO-SIMD128-NEXT:    i32.store8 10($0), $pop6
4200 ; NO-SIMD128-NEXT:    i32.const $push26=, -1
4201 ; NO-SIMD128-NEXT:    i32.xor $push7=, $10, $pop26
4202 ; NO-SIMD128-NEXT:    i32.store8 9($0), $pop7
4203 ; NO-SIMD128-NEXT:    i32.const $push25=, -1
4204 ; NO-SIMD128-NEXT:    i32.xor $push8=, $9, $pop25
4205 ; NO-SIMD128-NEXT:    i32.store8 8($0), $pop8
4206 ; NO-SIMD128-NEXT:    i32.const $push24=, -1
4207 ; NO-SIMD128-NEXT:    i32.xor $push9=, $8, $pop24
4208 ; NO-SIMD128-NEXT:    i32.store8 7($0), $pop9
4209 ; NO-SIMD128-NEXT:    i32.const $push23=, -1
4210 ; NO-SIMD128-NEXT:    i32.xor $push10=, $7, $pop23
4211 ; NO-SIMD128-NEXT:    i32.store8 6($0), $pop10
4212 ; NO-SIMD128-NEXT:    i32.const $push22=, -1
4213 ; NO-SIMD128-NEXT:    i32.xor $push11=, $6, $pop22
4214 ; NO-SIMD128-NEXT:    i32.store8 5($0), $pop11
4215 ; NO-SIMD128-NEXT:    i32.const $push21=, -1
4216 ; NO-SIMD128-NEXT:    i32.xor $push12=, $5, $pop21
4217 ; NO-SIMD128-NEXT:    i32.store8 4($0), $pop12
4218 ; NO-SIMD128-NEXT:    i32.const $push20=, -1
4219 ; NO-SIMD128-NEXT:    i32.xor $push13=, $4, $pop20
4220 ; NO-SIMD128-NEXT:    i32.store8 3($0), $pop13
4221 ; NO-SIMD128-NEXT:    i32.const $push19=, -1
4222 ; NO-SIMD128-NEXT:    i32.xor $push14=, $3, $pop19
4223 ; NO-SIMD128-NEXT:    i32.store8 2($0), $pop14
4224 ; NO-SIMD128-NEXT:    i32.const $push18=, -1
4225 ; NO-SIMD128-NEXT:    i32.xor $push15=, $2, $pop18
4226 ; NO-SIMD128-NEXT:    i32.store8 1($0), $pop15
4227 ; NO-SIMD128-NEXT:    i32.const $push17=, -1
4228 ; NO-SIMD128-NEXT:    i32.xor $push16=, $1, $pop17
4229 ; NO-SIMD128-NEXT:    i32.store8 0($0), $pop16
4230 ; NO-SIMD128-NEXT:    return
4232 ; NO-SIMD128-FAST-LABEL: not_v16i8:
4233 ; NO-SIMD128-FAST:         .functype not_v16i8 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
4234 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
4235 ; NO-SIMD128-FAST-NEXT:    i32.const $push0=, -1
4236 ; NO-SIMD128-FAST-NEXT:    i32.xor $push1=, $1, $pop0
4237 ; NO-SIMD128-FAST-NEXT:    i32.store8 0($0), $pop1
4238 ; NO-SIMD128-FAST-NEXT:    i32.const $push31=, -1
4239 ; NO-SIMD128-FAST-NEXT:    i32.xor $push2=, $2, $pop31
4240 ; NO-SIMD128-FAST-NEXT:    i32.store8 1($0), $pop2
4241 ; NO-SIMD128-FAST-NEXT:    i32.const $push30=, -1
4242 ; NO-SIMD128-FAST-NEXT:    i32.xor $push3=, $3, $pop30
4243 ; NO-SIMD128-FAST-NEXT:    i32.store8 2($0), $pop3
4244 ; NO-SIMD128-FAST-NEXT:    i32.const $push29=, -1
4245 ; NO-SIMD128-FAST-NEXT:    i32.xor $push4=, $4, $pop29
4246 ; NO-SIMD128-FAST-NEXT:    i32.store8 3($0), $pop4
4247 ; NO-SIMD128-FAST-NEXT:    i32.const $push28=, -1
4248 ; NO-SIMD128-FAST-NEXT:    i32.xor $push5=, $5, $pop28
4249 ; NO-SIMD128-FAST-NEXT:    i32.store8 4($0), $pop5
4250 ; NO-SIMD128-FAST-NEXT:    i32.const $push27=, -1
4251 ; NO-SIMD128-FAST-NEXT:    i32.xor $push6=, $6, $pop27
4252 ; NO-SIMD128-FAST-NEXT:    i32.store8 5($0), $pop6
4253 ; NO-SIMD128-FAST-NEXT:    i32.const $push26=, -1
4254 ; NO-SIMD128-FAST-NEXT:    i32.xor $push7=, $7, $pop26
4255 ; NO-SIMD128-FAST-NEXT:    i32.store8 6($0), $pop7
4256 ; NO-SIMD128-FAST-NEXT:    i32.const $push25=, -1
4257 ; NO-SIMD128-FAST-NEXT:    i32.xor $push8=, $8, $pop25
4258 ; NO-SIMD128-FAST-NEXT:    i32.store8 7($0), $pop8
4259 ; NO-SIMD128-FAST-NEXT:    i32.const $push24=, -1
4260 ; NO-SIMD128-FAST-NEXT:    i32.xor $push9=, $9, $pop24
4261 ; NO-SIMD128-FAST-NEXT:    i32.store8 8($0), $pop9
4262 ; NO-SIMD128-FAST-NEXT:    i32.const $push23=, -1
4263 ; NO-SIMD128-FAST-NEXT:    i32.xor $push10=, $10, $pop23
4264 ; NO-SIMD128-FAST-NEXT:    i32.store8 9($0), $pop10
4265 ; NO-SIMD128-FAST-NEXT:    i32.const $push22=, -1
4266 ; NO-SIMD128-FAST-NEXT:    i32.xor $push11=, $11, $pop22
4267 ; NO-SIMD128-FAST-NEXT:    i32.store8 10($0), $pop11
4268 ; NO-SIMD128-FAST-NEXT:    i32.const $push21=, -1
4269 ; NO-SIMD128-FAST-NEXT:    i32.xor $push12=, $12, $pop21
4270 ; NO-SIMD128-FAST-NEXT:    i32.store8 11($0), $pop12
4271 ; NO-SIMD128-FAST-NEXT:    i32.const $push20=, -1
4272 ; NO-SIMD128-FAST-NEXT:    i32.xor $push13=, $13, $pop20
4273 ; NO-SIMD128-FAST-NEXT:    i32.store8 12($0), $pop13
4274 ; NO-SIMD128-FAST-NEXT:    i32.const $push19=, -1
4275 ; NO-SIMD128-FAST-NEXT:    i32.xor $push14=, $14, $pop19
4276 ; NO-SIMD128-FAST-NEXT:    i32.store8 13($0), $pop14
4277 ; NO-SIMD128-FAST-NEXT:    i32.const $push18=, -1
4278 ; NO-SIMD128-FAST-NEXT:    i32.xor $push15=, $15, $pop18
4279 ; NO-SIMD128-FAST-NEXT:    i32.store8 14($0), $pop15
4280 ; NO-SIMD128-FAST-NEXT:    i32.const $push17=, -1
4281 ; NO-SIMD128-FAST-NEXT:    i32.xor $push16=, $16, $pop17
4282 ; NO-SIMD128-FAST-NEXT:    i32.store8 15($0), $pop16
4283 ; NO-SIMD128-FAST-NEXT:    return
4284   %a = xor <16 x i8> %x, <i8 -1, i8 -1, i8 -1, i8 -1,
4285                           i8 -1, i8 -1, i8 -1, i8 -1,
4286                           i8 -1, i8 -1, i8 -1, i8 -1,
4287                           i8 -1, i8 -1, i8 -1, i8 -1>
4288   ret <16 x i8> %a
4291 define <16 x i8> @andnot_v16i8(<16 x i8> %x, <16 x i8> %y) {
4292 ; SIMD128-LABEL: andnot_v16i8:
4293 ; SIMD128:         .functype andnot_v16i8 (v128, v128) -> (v128)
4294 ; SIMD128-NEXT:  # %bb.0:
4295 ; SIMD128-NEXT:    v128.andnot $push0=, $0, $1
4296 ; SIMD128-NEXT:    return $pop0
4298 ; SIMD128-FAST-LABEL: andnot_v16i8:
4299 ; SIMD128-FAST:         .functype andnot_v16i8 (v128, v128) -> (v128)
4300 ; SIMD128-FAST-NEXT:  # %bb.0:
4301 ; SIMD128-FAST-NEXT:    v128.not $push0=, $1
4302 ; SIMD128-FAST-NEXT:    v128.and $push1=, $0, $pop0
4303 ; SIMD128-FAST-NEXT:    return $pop1
4305 ; NO-SIMD128-LABEL: andnot_v16i8:
4306 ; 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) -> ()
4307 ; NO-SIMD128-NEXT:  # %bb.0:
4308 ; NO-SIMD128-NEXT:    i32.const $push0=, -1
4309 ; NO-SIMD128-NEXT:    i32.xor $push1=, $32, $pop0
4310 ; NO-SIMD128-NEXT:    i32.and $push2=, $16, $pop1
4311 ; NO-SIMD128-NEXT:    i32.store8 15($0), $pop2
4312 ; NO-SIMD128-NEXT:    i32.const $push47=, -1
4313 ; NO-SIMD128-NEXT:    i32.xor $push3=, $31, $pop47
4314 ; NO-SIMD128-NEXT:    i32.and $push4=, $15, $pop3
4315 ; NO-SIMD128-NEXT:    i32.store8 14($0), $pop4
4316 ; NO-SIMD128-NEXT:    i32.const $push46=, -1
4317 ; NO-SIMD128-NEXT:    i32.xor $push5=, $30, $pop46
4318 ; NO-SIMD128-NEXT:    i32.and $push6=, $14, $pop5
4319 ; NO-SIMD128-NEXT:    i32.store8 13($0), $pop6
4320 ; NO-SIMD128-NEXT:    i32.const $push45=, -1
4321 ; NO-SIMD128-NEXT:    i32.xor $push7=, $29, $pop45
4322 ; NO-SIMD128-NEXT:    i32.and $push8=, $13, $pop7
4323 ; NO-SIMD128-NEXT:    i32.store8 12($0), $pop8
4324 ; NO-SIMD128-NEXT:    i32.const $push44=, -1
4325 ; NO-SIMD128-NEXT:    i32.xor $push9=, $28, $pop44
4326 ; NO-SIMD128-NEXT:    i32.and $push10=, $12, $pop9
4327 ; NO-SIMD128-NEXT:    i32.store8 11($0), $pop10
4328 ; NO-SIMD128-NEXT:    i32.const $push43=, -1
4329 ; NO-SIMD128-NEXT:    i32.xor $push11=, $27, $pop43
4330 ; NO-SIMD128-NEXT:    i32.and $push12=, $11, $pop11
4331 ; NO-SIMD128-NEXT:    i32.store8 10($0), $pop12
4332 ; NO-SIMD128-NEXT:    i32.const $push42=, -1
4333 ; NO-SIMD128-NEXT:    i32.xor $push13=, $26, $pop42
4334 ; NO-SIMD128-NEXT:    i32.and $push14=, $10, $pop13
4335 ; NO-SIMD128-NEXT:    i32.store8 9($0), $pop14
4336 ; NO-SIMD128-NEXT:    i32.const $push41=, -1
4337 ; NO-SIMD128-NEXT:    i32.xor $push15=, $25, $pop41
4338 ; NO-SIMD128-NEXT:    i32.and $push16=, $9, $pop15
4339 ; NO-SIMD128-NEXT:    i32.store8 8($0), $pop16
4340 ; NO-SIMD128-NEXT:    i32.const $push40=, -1
4341 ; NO-SIMD128-NEXT:    i32.xor $push17=, $24, $pop40
4342 ; NO-SIMD128-NEXT:    i32.and $push18=, $8, $pop17
4343 ; NO-SIMD128-NEXT:    i32.store8 7($0), $pop18
4344 ; NO-SIMD128-NEXT:    i32.const $push39=, -1
4345 ; NO-SIMD128-NEXT:    i32.xor $push19=, $23, $pop39
4346 ; NO-SIMD128-NEXT:    i32.and $push20=, $7, $pop19
4347 ; NO-SIMD128-NEXT:    i32.store8 6($0), $pop20
4348 ; NO-SIMD128-NEXT:    i32.const $push38=, -1
4349 ; NO-SIMD128-NEXT:    i32.xor $push21=, $22, $pop38
4350 ; NO-SIMD128-NEXT:    i32.and $push22=, $6, $pop21
4351 ; NO-SIMD128-NEXT:    i32.store8 5($0), $pop22
4352 ; NO-SIMD128-NEXT:    i32.const $push37=, -1
4353 ; NO-SIMD128-NEXT:    i32.xor $push23=, $21, $pop37
4354 ; NO-SIMD128-NEXT:    i32.and $push24=, $5, $pop23
4355 ; NO-SIMD128-NEXT:    i32.store8 4($0), $pop24
4356 ; NO-SIMD128-NEXT:    i32.const $push36=, -1
4357 ; NO-SIMD128-NEXT:    i32.xor $push25=, $20, $pop36
4358 ; NO-SIMD128-NEXT:    i32.and $push26=, $4, $pop25
4359 ; NO-SIMD128-NEXT:    i32.store8 3($0), $pop26
4360 ; NO-SIMD128-NEXT:    i32.const $push35=, -1
4361 ; NO-SIMD128-NEXT:    i32.xor $push27=, $19, $pop35
4362 ; NO-SIMD128-NEXT:    i32.and $push28=, $3, $pop27
4363 ; NO-SIMD128-NEXT:    i32.store8 2($0), $pop28
4364 ; NO-SIMD128-NEXT:    i32.const $push34=, -1
4365 ; NO-SIMD128-NEXT:    i32.xor $push29=, $18, $pop34
4366 ; NO-SIMD128-NEXT:    i32.and $push30=, $2, $pop29
4367 ; NO-SIMD128-NEXT:    i32.store8 1($0), $pop30
4368 ; NO-SIMD128-NEXT:    i32.const $push33=, -1
4369 ; NO-SIMD128-NEXT:    i32.xor $push31=, $17, $pop33
4370 ; NO-SIMD128-NEXT:    i32.and $push32=, $1, $pop31
4371 ; NO-SIMD128-NEXT:    i32.store8 0($0), $pop32
4372 ; NO-SIMD128-NEXT:    return
4374 ; NO-SIMD128-FAST-LABEL: andnot_v16i8:
4375 ; 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) -> ()
4376 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
4377 ; NO-SIMD128-FAST-NEXT:    i32.const $push0=, -1
4378 ; NO-SIMD128-FAST-NEXT:    i32.xor $push1=, $17, $pop0
4379 ; NO-SIMD128-FAST-NEXT:    i32.and $push2=, $1, $pop1
4380 ; NO-SIMD128-FAST-NEXT:    i32.store8 0($0), $pop2
4381 ; NO-SIMD128-FAST-NEXT:    i32.const $push47=, -1
4382 ; NO-SIMD128-FAST-NEXT:    i32.xor $push3=, $18, $pop47
4383 ; NO-SIMD128-FAST-NEXT:    i32.and $push4=, $2, $pop3
4384 ; NO-SIMD128-FAST-NEXT:    i32.store8 1($0), $pop4
4385 ; NO-SIMD128-FAST-NEXT:    i32.const $push46=, -1
4386 ; NO-SIMD128-FAST-NEXT:    i32.xor $push5=, $19, $pop46
4387 ; NO-SIMD128-FAST-NEXT:    i32.and $push6=, $3, $pop5
4388 ; NO-SIMD128-FAST-NEXT:    i32.store8 2($0), $pop6
4389 ; NO-SIMD128-FAST-NEXT:    i32.const $push45=, -1
4390 ; NO-SIMD128-FAST-NEXT:    i32.xor $push7=, $20, $pop45
4391 ; NO-SIMD128-FAST-NEXT:    i32.and $push8=, $4, $pop7
4392 ; NO-SIMD128-FAST-NEXT:    i32.store8 3($0), $pop8
4393 ; NO-SIMD128-FAST-NEXT:    i32.const $push44=, -1
4394 ; NO-SIMD128-FAST-NEXT:    i32.xor $push9=, $21, $pop44
4395 ; NO-SIMD128-FAST-NEXT:    i32.and $push10=, $5, $pop9
4396 ; NO-SIMD128-FAST-NEXT:    i32.store8 4($0), $pop10
4397 ; NO-SIMD128-FAST-NEXT:    i32.const $push43=, -1
4398 ; NO-SIMD128-FAST-NEXT:    i32.xor $push11=, $22, $pop43
4399 ; NO-SIMD128-FAST-NEXT:    i32.and $push12=, $6, $pop11
4400 ; NO-SIMD128-FAST-NEXT:    i32.store8 5($0), $pop12
4401 ; NO-SIMD128-FAST-NEXT:    i32.const $push42=, -1
4402 ; NO-SIMD128-FAST-NEXT:    i32.xor $push13=, $23, $pop42
4403 ; NO-SIMD128-FAST-NEXT:    i32.and $push14=, $7, $pop13
4404 ; NO-SIMD128-FAST-NEXT:    i32.store8 6($0), $pop14
4405 ; NO-SIMD128-FAST-NEXT:    i32.const $push41=, -1
4406 ; NO-SIMD128-FAST-NEXT:    i32.xor $push15=, $24, $pop41
4407 ; NO-SIMD128-FAST-NEXT:    i32.and $push16=, $8, $pop15
4408 ; NO-SIMD128-FAST-NEXT:    i32.store8 7($0), $pop16
4409 ; NO-SIMD128-FAST-NEXT:    i32.const $push40=, -1
4410 ; NO-SIMD128-FAST-NEXT:    i32.xor $push17=, $25, $pop40
4411 ; NO-SIMD128-FAST-NEXT:    i32.and $push18=, $9, $pop17
4412 ; NO-SIMD128-FAST-NEXT:    i32.store8 8($0), $pop18
4413 ; NO-SIMD128-FAST-NEXT:    i32.const $push39=, -1
4414 ; NO-SIMD128-FAST-NEXT:    i32.xor $push19=, $26, $pop39
4415 ; NO-SIMD128-FAST-NEXT:    i32.and $push20=, $10, $pop19
4416 ; NO-SIMD128-FAST-NEXT:    i32.store8 9($0), $pop20
4417 ; NO-SIMD128-FAST-NEXT:    i32.const $push38=, -1
4418 ; NO-SIMD128-FAST-NEXT:    i32.xor $push21=, $27, $pop38
4419 ; NO-SIMD128-FAST-NEXT:    i32.and $push22=, $11, $pop21
4420 ; NO-SIMD128-FAST-NEXT:    i32.store8 10($0), $pop22
4421 ; NO-SIMD128-FAST-NEXT:    i32.const $push37=, -1
4422 ; NO-SIMD128-FAST-NEXT:    i32.xor $push23=, $28, $pop37
4423 ; NO-SIMD128-FAST-NEXT:    i32.and $push24=, $12, $pop23
4424 ; NO-SIMD128-FAST-NEXT:    i32.store8 11($0), $pop24
4425 ; NO-SIMD128-FAST-NEXT:    i32.const $push36=, -1
4426 ; NO-SIMD128-FAST-NEXT:    i32.xor $push25=, $29, $pop36
4427 ; NO-SIMD128-FAST-NEXT:    i32.and $push26=, $13, $pop25
4428 ; NO-SIMD128-FAST-NEXT:    i32.store8 12($0), $pop26
4429 ; NO-SIMD128-FAST-NEXT:    i32.const $push35=, -1
4430 ; NO-SIMD128-FAST-NEXT:    i32.xor $push27=, $30, $pop35
4431 ; NO-SIMD128-FAST-NEXT:    i32.and $push28=, $14, $pop27
4432 ; NO-SIMD128-FAST-NEXT:    i32.store8 13($0), $pop28
4433 ; NO-SIMD128-FAST-NEXT:    i32.const $push34=, -1
4434 ; NO-SIMD128-FAST-NEXT:    i32.xor $push29=, $31, $pop34
4435 ; NO-SIMD128-FAST-NEXT:    i32.and $push30=, $15, $pop29
4436 ; NO-SIMD128-FAST-NEXT:    i32.store8 14($0), $pop30
4437 ; NO-SIMD128-FAST-NEXT:    i32.const $push33=, -1
4438 ; NO-SIMD128-FAST-NEXT:    i32.xor $push31=, $32, $pop33
4439 ; NO-SIMD128-FAST-NEXT:    i32.and $push32=, $16, $pop31
4440 ; NO-SIMD128-FAST-NEXT:    i32.store8 15($0), $pop32
4441 ; NO-SIMD128-FAST-NEXT:    return
4442  %inv_y = xor <16 x i8> %y,
4443    <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1,
4444     i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
4445  %a = and <16 x i8> %x, %inv_y
4446  ret <16 x i8> %a
4449 define <16 x i8> @bitselect_v16i8(<16 x i8> %c, <16 x i8> %v1, <16 x i8> %v2) {
4450 ; SIMD128-LABEL: bitselect_v16i8:
4451 ; SIMD128:         .functype bitselect_v16i8 (v128, v128, v128) -> (v128)
4452 ; SIMD128-NEXT:  # %bb.0:
4453 ; SIMD128-NEXT:    v128.bitselect $push0=, $1, $2, $0
4454 ; SIMD128-NEXT:    return $pop0
4456 ; SIMD128-FAST-LABEL: bitselect_v16i8:
4457 ; SIMD128-FAST:         .functype bitselect_v16i8 (v128, v128, v128) -> (v128)
4458 ; SIMD128-FAST-NEXT:  # %bb.0:
4459 ; SIMD128-FAST-NEXT:    v128.and $push0=, $0, $1
4460 ; SIMD128-FAST-NEXT:    v128.not $push2=, $0
4461 ; SIMD128-FAST-NEXT:    v128.and $push3=, $pop2, $2
4462 ; SIMD128-FAST-NEXT:    v128.or $push1=, $pop0, $pop3
4463 ; SIMD128-FAST-NEXT:    return $pop1
4465 ; NO-SIMD128-LABEL: bitselect_v16i8:
4466 ; 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) -> ()
4467 ; NO-SIMD128-NEXT:  # %bb.0:
4468 ; NO-SIMD128-NEXT:    i32.and $push0=, $16, $32
4469 ; NO-SIMD128-NEXT:    i32.const $push1=, -1
4470 ; NO-SIMD128-NEXT:    i32.xor $push2=, $16, $pop1
4471 ; NO-SIMD128-NEXT:    i32.and $push3=, $pop2, $48
4472 ; NO-SIMD128-NEXT:    i32.or $push4=, $pop0, $pop3
4473 ; NO-SIMD128-NEXT:    i32.store8 15($0), $pop4
4474 ; NO-SIMD128-NEXT:    i32.and $push5=, $15, $31
4475 ; NO-SIMD128-NEXT:    i32.const $push79=, -1
4476 ; NO-SIMD128-NEXT:    i32.xor $push6=, $15, $pop79
4477 ; NO-SIMD128-NEXT:    i32.and $push7=, $pop6, $47
4478 ; NO-SIMD128-NEXT:    i32.or $push8=, $pop5, $pop7
4479 ; NO-SIMD128-NEXT:    i32.store8 14($0), $pop8
4480 ; NO-SIMD128-NEXT:    i32.and $push9=, $14, $30
4481 ; NO-SIMD128-NEXT:    i32.const $push78=, -1
4482 ; NO-SIMD128-NEXT:    i32.xor $push10=, $14, $pop78
4483 ; NO-SIMD128-NEXT:    i32.and $push11=, $pop10, $46
4484 ; NO-SIMD128-NEXT:    i32.or $push12=, $pop9, $pop11
4485 ; NO-SIMD128-NEXT:    i32.store8 13($0), $pop12
4486 ; NO-SIMD128-NEXT:    i32.and $push13=, $13, $29
4487 ; NO-SIMD128-NEXT:    i32.const $push77=, -1
4488 ; NO-SIMD128-NEXT:    i32.xor $push14=, $13, $pop77
4489 ; NO-SIMD128-NEXT:    i32.and $push15=, $pop14, $45
4490 ; NO-SIMD128-NEXT:    i32.or $push16=, $pop13, $pop15
4491 ; NO-SIMD128-NEXT:    i32.store8 12($0), $pop16
4492 ; NO-SIMD128-NEXT:    i32.and $push17=, $12, $28
4493 ; NO-SIMD128-NEXT:    i32.const $push76=, -1
4494 ; NO-SIMD128-NEXT:    i32.xor $push18=, $12, $pop76
4495 ; NO-SIMD128-NEXT:    i32.and $push19=, $pop18, $44
4496 ; NO-SIMD128-NEXT:    i32.or $push20=, $pop17, $pop19
4497 ; NO-SIMD128-NEXT:    i32.store8 11($0), $pop20
4498 ; NO-SIMD128-NEXT:    i32.and $push21=, $11, $27
4499 ; NO-SIMD128-NEXT:    i32.const $push75=, -1
4500 ; NO-SIMD128-NEXT:    i32.xor $push22=, $11, $pop75
4501 ; NO-SIMD128-NEXT:    i32.and $push23=, $pop22, $43
4502 ; NO-SIMD128-NEXT:    i32.or $push24=, $pop21, $pop23
4503 ; NO-SIMD128-NEXT:    i32.store8 10($0), $pop24
4504 ; NO-SIMD128-NEXT:    i32.and $push25=, $10, $26
4505 ; NO-SIMD128-NEXT:    i32.const $push74=, -1
4506 ; NO-SIMD128-NEXT:    i32.xor $push26=, $10, $pop74
4507 ; NO-SIMD128-NEXT:    i32.and $push27=, $pop26, $42
4508 ; NO-SIMD128-NEXT:    i32.or $push28=, $pop25, $pop27
4509 ; NO-SIMD128-NEXT:    i32.store8 9($0), $pop28
4510 ; NO-SIMD128-NEXT:    i32.and $push29=, $9, $25
4511 ; NO-SIMD128-NEXT:    i32.const $push73=, -1
4512 ; NO-SIMD128-NEXT:    i32.xor $push30=, $9, $pop73
4513 ; NO-SIMD128-NEXT:    i32.and $push31=, $pop30, $41
4514 ; NO-SIMD128-NEXT:    i32.or $push32=, $pop29, $pop31
4515 ; NO-SIMD128-NEXT:    i32.store8 8($0), $pop32
4516 ; NO-SIMD128-NEXT:    i32.and $push33=, $8, $24
4517 ; NO-SIMD128-NEXT:    i32.const $push72=, -1
4518 ; NO-SIMD128-NEXT:    i32.xor $push34=, $8, $pop72
4519 ; NO-SIMD128-NEXT:    i32.and $push35=, $pop34, $40
4520 ; NO-SIMD128-NEXT:    i32.or $push36=, $pop33, $pop35
4521 ; NO-SIMD128-NEXT:    i32.store8 7($0), $pop36
4522 ; NO-SIMD128-NEXT:    i32.and $push37=, $7, $23
4523 ; NO-SIMD128-NEXT:    i32.const $push71=, -1
4524 ; NO-SIMD128-NEXT:    i32.xor $push38=, $7, $pop71
4525 ; NO-SIMD128-NEXT:    i32.and $push39=, $pop38, $39
4526 ; NO-SIMD128-NEXT:    i32.or $push40=, $pop37, $pop39
4527 ; NO-SIMD128-NEXT:    i32.store8 6($0), $pop40
4528 ; NO-SIMD128-NEXT:    i32.and $push41=, $6, $22
4529 ; NO-SIMD128-NEXT:    i32.const $push70=, -1
4530 ; NO-SIMD128-NEXT:    i32.xor $push42=, $6, $pop70
4531 ; NO-SIMD128-NEXT:    i32.and $push43=, $pop42, $38
4532 ; NO-SIMD128-NEXT:    i32.or $push44=, $pop41, $pop43
4533 ; NO-SIMD128-NEXT:    i32.store8 5($0), $pop44
4534 ; NO-SIMD128-NEXT:    i32.and $push45=, $5, $21
4535 ; NO-SIMD128-NEXT:    i32.const $push69=, -1
4536 ; NO-SIMD128-NEXT:    i32.xor $push46=, $5, $pop69
4537 ; NO-SIMD128-NEXT:    i32.and $push47=, $pop46, $37
4538 ; NO-SIMD128-NEXT:    i32.or $push48=, $pop45, $pop47
4539 ; NO-SIMD128-NEXT:    i32.store8 4($0), $pop48
4540 ; NO-SIMD128-NEXT:    i32.and $push49=, $4, $20
4541 ; NO-SIMD128-NEXT:    i32.const $push68=, -1
4542 ; NO-SIMD128-NEXT:    i32.xor $push50=, $4, $pop68
4543 ; NO-SIMD128-NEXT:    i32.and $push51=, $pop50, $36
4544 ; NO-SIMD128-NEXT:    i32.or $push52=, $pop49, $pop51
4545 ; NO-SIMD128-NEXT:    i32.store8 3($0), $pop52
4546 ; NO-SIMD128-NEXT:    i32.and $push53=, $3, $19
4547 ; NO-SIMD128-NEXT:    i32.const $push67=, -1
4548 ; NO-SIMD128-NEXT:    i32.xor $push54=, $3, $pop67
4549 ; NO-SIMD128-NEXT:    i32.and $push55=, $pop54, $35
4550 ; NO-SIMD128-NEXT:    i32.or $push56=, $pop53, $pop55
4551 ; NO-SIMD128-NEXT:    i32.store8 2($0), $pop56
4552 ; NO-SIMD128-NEXT:    i32.and $push57=, $2, $18
4553 ; NO-SIMD128-NEXT:    i32.const $push66=, -1
4554 ; NO-SIMD128-NEXT:    i32.xor $push58=, $2, $pop66
4555 ; NO-SIMD128-NEXT:    i32.and $push59=, $pop58, $34
4556 ; NO-SIMD128-NEXT:    i32.or $push60=, $pop57, $pop59
4557 ; NO-SIMD128-NEXT:    i32.store8 1($0), $pop60
4558 ; NO-SIMD128-NEXT:    i32.and $push61=, $1, $17
4559 ; NO-SIMD128-NEXT:    i32.const $push65=, -1
4560 ; NO-SIMD128-NEXT:    i32.xor $push62=, $1, $pop65
4561 ; NO-SIMD128-NEXT:    i32.and $push63=, $pop62, $33
4562 ; NO-SIMD128-NEXT:    i32.or $push64=, $pop61, $pop63
4563 ; NO-SIMD128-NEXT:    i32.store8 0($0), $pop64
4564 ; NO-SIMD128-NEXT:    return
4566 ; NO-SIMD128-FAST-LABEL: bitselect_v16i8:
4567 ; 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) -> ()
4568 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
4569 ; NO-SIMD128-FAST-NEXT:    i32.and $push0=, $1, $17
4570 ; NO-SIMD128-FAST-NEXT:    i32.const $push1=, -1
4571 ; NO-SIMD128-FAST-NEXT:    i32.xor $push2=, $1, $pop1
4572 ; NO-SIMD128-FAST-NEXT:    i32.and $push3=, $pop2, $33
4573 ; NO-SIMD128-FAST-NEXT:    i32.or $push4=, $pop0, $pop3
4574 ; NO-SIMD128-FAST-NEXT:    i32.store8 0($0), $pop4
4575 ; NO-SIMD128-FAST-NEXT:    i32.and $push5=, $2, $18
4576 ; NO-SIMD128-FAST-NEXT:    i32.const $push79=, -1
4577 ; NO-SIMD128-FAST-NEXT:    i32.xor $push6=, $2, $pop79
4578 ; NO-SIMD128-FAST-NEXT:    i32.and $push7=, $pop6, $34
4579 ; NO-SIMD128-FAST-NEXT:    i32.or $push8=, $pop5, $pop7
4580 ; NO-SIMD128-FAST-NEXT:    i32.store8 1($0), $pop8
4581 ; NO-SIMD128-FAST-NEXT:    i32.and $push9=, $3, $19
4582 ; NO-SIMD128-FAST-NEXT:    i32.const $push78=, -1
4583 ; NO-SIMD128-FAST-NEXT:    i32.xor $push10=, $3, $pop78
4584 ; NO-SIMD128-FAST-NEXT:    i32.and $push11=, $pop10, $35
4585 ; NO-SIMD128-FAST-NEXT:    i32.or $push12=, $pop9, $pop11
4586 ; NO-SIMD128-FAST-NEXT:    i32.store8 2($0), $pop12
4587 ; NO-SIMD128-FAST-NEXT:    i32.and $push13=, $4, $20
4588 ; NO-SIMD128-FAST-NEXT:    i32.const $push77=, -1
4589 ; NO-SIMD128-FAST-NEXT:    i32.xor $push14=, $4, $pop77
4590 ; NO-SIMD128-FAST-NEXT:    i32.and $push15=, $pop14, $36
4591 ; NO-SIMD128-FAST-NEXT:    i32.or $push16=, $pop13, $pop15
4592 ; NO-SIMD128-FAST-NEXT:    i32.store8 3($0), $pop16
4593 ; NO-SIMD128-FAST-NEXT:    i32.and $push17=, $5, $21
4594 ; NO-SIMD128-FAST-NEXT:    i32.const $push76=, -1
4595 ; NO-SIMD128-FAST-NEXT:    i32.xor $push18=, $5, $pop76
4596 ; NO-SIMD128-FAST-NEXT:    i32.and $push19=, $pop18, $37
4597 ; NO-SIMD128-FAST-NEXT:    i32.or $push20=, $pop17, $pop19
4598 ; NO-SIMD128-FAST-NEXT:    i32.store8 4($0), $pop20
4599 ; NO-SIMD128-FAST-NEXT:    i32.and $push21=, $6, $22
4600 ; NO-SIMD128-FAST-NEXT:    i32.const $push75=, -1
4601 ; NO-SIMD128-FAST-NEXT:    i32.xor $push22=, $6, $pop75
4602 ; NO-SIMD128-FAST-NEXT:    i32.and $push23=, $pop22, $38
4603 ; NO-SIMD128-FAST-NEXT:    i32.or $push24=, $pop21, $pop23
4604 ; NO-SIMD128-FAST-NEXT:    i32.store8 5($0), $pop24
4605 ; NO-SIMD128-FAST-NEXT:    i32.and $push25=, $7, $23
4606 ; NO-SIMD128-FAST-NEXT:    i32.const $push74=, -1
4607 ; NO-SIMD128-FAST-NEXT:    i32.xor $push26=, $7, $pop74
4608 ; NO-SIMD128-FAST-NEXT:    i32.and $push27=, $pop26, $39
4609 ; NO-SIMD128-FAST-NEXT:    i32.or $push28=, $pop25, $pop27
4610 ; NO-SIMD128-FAST-NEXT:    i32.store8 6($0), $pop28
4611 ; NO-SIMD128-FAST-NEXT:    i32.and $push29=, $8, $24
4612 ; NO-SIMD128-FAST-NEXT:    i32.const $push73=, -1
4613 ; NO-SIMD128-FAST-NEXT:    i32.xor $push30=, $8, $pop73
4614 ; NO-SIMD128-FAST-NEXT:    i32.and $push31=, $pop30, $40
4615 ; NO-SIMD128-FAST-NEXT:    i32.or $push32=, $pop29, $pop31
4616 ; NO-SIMD128-FAST-NEXT:    i32.store8 7($0), $pop32
4617 ; NO-SIMD128-FAST-NEXT:    i32.and $push33=, $9, $25
4618 ; NO-SIMD128-FAST-NEXT:    i32.const $push72=, -1
4619 ; NO-SIMD128-FAST-NEXT:    i32.xor $push34=, $9, $pop72
4620 ; NO-SIMD128-FAST-NEXT:    i32.and $push35=, $pop34, $41
4621 ; NO-SIMD128-FAST-NEXT:    i32.or $push36=, $pop33, $pop35
4622 ; NO-SIMD128-FAST-NEXT:    i32.store8 8($0), $pop36
4623 ; NO-SIMD128-FAST-NEXT:    i32.and $push37=, $10, $26
4624 ; NO-SIMD128-FAST-NEXT:    i32.const $push71=, -1
4625 ; NO-SIMD128-FAST-NEXT:    i32.xor $push38=, $10, $pop71
4626 ; NO-SIMD128-FAST-NEXT:    i32.and $push39=, $pop38, $42
4627 ; NO-SIMD128-FAST-NEXT:    i32.or $push40=, $pop37, $pop39
4628 ; NO-SIMD128-FAST-NEXT:    i32.store8 9($0), $pop40
4629 ; NO-SIMD128-FAST-NEXT:    i32.and $push41=, $11, $27
4630 ; NO-SIMD128-FAST-NEXT:    i32.const $push70=, -1
4631 ; NO-SIMD128-FAST-NEXT:    i32.xor $push42=, $11, $pop70
4632 ; NO-SIMD128-FAST-NEXT:    i32.and $push43=, $pop42, $43
4633 ; NO-SIMD128-FAST-NEXT:    i32.or $push44=, $pop41, $pop43
4634 ; NO-SIMD128-FAST-NEXT:    i32.store8 10($0), $pop44
4635 ; NO-SIMD128-FAST-NEXT:    i32.and $push45=, $12, $28
4636 ; NO-SIMD128-FAST-NEXT:    i32.const $push69=, -1
4637 ; NO-SIMD128-FAST-NEXT:    i32.xor $push46=, $12, $pop69
4638 ; NO-SIMD128-FAST-NEXT:    i32.and $push47=, $pop46, $44
4639 ; NO-SIMD128-FAST-NEXT:    i32.or $push48=, $pop45, $pop47
4640 ; NO-SIMD128-FAST-NEXT:    i32.store8 11($0), $pop48
4641 ; NO-SIMD128-FAST-NEXT:    i32.and $push49=, $13, $29
4642 ; NO-SIMD128-FAST-NEXT:    i32.const $push68=, -1
4643 ; NO-SIMD128-FAST-NEXT:    i32.xor $push50=, $13, $pop68
4644 ; NO-SIMD128-FAST-NEXT:    i32.and $push51=, $pop50, $45
4645 ; NO-SIMD128-FAST-NEXT:    i32.or $push52=, $pop49, $pop51
4646 ; NO-SIMD128-FAST-NEXT:    i32.store8 12($0), $pop52
4647 ; NO-SIMD128-FAST-NEXT:    i32.and $push53=, $14, $30
4648 ; NO-SIMD128-FAST-NEXT:    i32.const $push67=, -1
4649 ; NO-SIMD128-FAST-NEXT:    i32.xor $push54=, $14, $pop67
4650 ; NO-SIMD128-FAST-NEXT:    i32.and $push55=, $pop54, $46
4651 ; NO-SIMD128-FAST-NEXT:    i32.or $push56=, $pop53, $pop55
4652 ; NO-SIMD128-FAST-NEXT:    i32.store8 13($0), $pop56
4653 ; NO-SIMD128-FAST-NEXT:    i32.and $push57=, $15, $31
4654 ; NO-SIMD128-FAST-NEXT:    i32.const $push66=, -1
4655 ; NO-SIMD128-FAST-NEXT:    i32.xor $push58=, $15, $pop66
4656 ; NO-SIMD128-FAST-NEXT:    i32.and $push59=, $pop58, $47
4657 ; NO-SIMD128-FAST-NEXT:    i32.or $push60=, $pop57, $pop59
4658 ; NO-SIMD128-FAST-NEXT:    i32.store8 14($0), $pop60
4659 ; NO-SIMD128-FAST-NEXT:    i32.and $push61=, $16, $32
4660 ; NO-SIMD128-FAST-NEXT:    i32.const $push65=, -1
4661 ; NO-SIMD128-FAST-NEXT:    i32.xor $push62=, $16, $pop65
4662 ; NO-SIMD128-FAST-NEXT:    i32.and $push63=, $pop62, $48
4663 ; NO-SIMD128-FAST-NEXT:    i32.or $push64=, $pop61, $pop63
4664 ; NO-SIMD128-FAST-NEXT:    i32.store8 15($0), $pop64
4665 ; NO-SIMD128-FAST-NEXT:    return
4666   %masked_v1 = and <16 x i8> %c, %v1
4667   %inv_mask = xor <16 x i8> %c,
4668     <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1,
4669      i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
4670   %masked_v2 = and <16 x i8> %inv_mask, %v2
4671   %a = or <16 x i8> %masked_v1, %masked_v2
4672   ret <16 x i8> %a
4675 define <16 x i8> @bitselect_xor_v16i8(<16 x i8> %c, <16 x i8> %v1, <16 x i8> %v2) {
4676 ; SIMD128-LABEL: bitselect_xor_v16i8:
4677 ; SIMD128:         .functype bitselect_xor_v16i8 (v128, v128, v128) -> (v128)
4678 ; SIMD128-NEXT:  # %bb.0:
4679 ; SIMD128-NEXT:    v128.bitselect $push0=, $1, $2, $0
4680 ; SIMD128-NEXT:    return $pop0
4682 ; SIMD128-FAST-LABEL: bitselect_xor_v16i8:
4683 ; SIMD128-FAST:         .functype bitselect_xor_v16i8 (v128, v128, v128) -> (v128)
4684 ; SIMD128-FAST-NEXT:  # %bb.0:
4685 ; SIMD128-FAST-NEXT:    v128.xor $push2=, $1, $2
4686 ; SIMD128-FAST-NEXT:    v128.and $push1=, $pop2, $0
4687 ; SIMD128-FAST-NEXT:    v128.xor $push0=, $pop1, $2
4688 ; SIMD128-FAST-NEXT:    return $pop0
4690 ; NO-SIMD128-LABEL: bitselect_xor_v16i8:
4691 ; 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) -> ()
4692 ; NO-SIMD128-NEXT:  # %bb.0:
4693 ; NO-SIMD128-NEXT:    i32.xor $push0=, $32, $48
4694 ; NO-SIMD128-NEXT:    i32.and $push1=, $pop0, $16
4695 ; NO-SIMD128-NEXT:    i32.xor $push2=, $pop1, $48
4696 ; NO-SIMD128-NEXT:    i32.store8 15($0), $pop2
4697 ; NO-SIMD128-NEXT:    i32.xor $push3=, $31, $47
4698 ; NO-SIMD128-NEXT:    i32.and $push4=, $pop3, $15
4699 ; NO-SIMD128-NEXT:    i32.xor $push5=, $pop4, $47
4700 ; NO-SIMD128-NEXT:    i32.store8 14($0), $pop5
4701 ; NO-SIMD128-NEXT:    i32.xor $push6=, $30, $46
4702 ; NO-SIMD128-NEXT:    i32.and $push7=, $pop6, $14
4703 ; NO-SIMD128-NEXT:    i32.xor $push8=, $pop7, $46
4704 ; NO-SIMD128-NEXT:    i32.store8 13($0), $pop8
4705 ; NO-SIMD128-NEXT:    i32.xor $push9=, $29, $45
4706 ; NO-SIMD128-NEXT:    i32.and $push10=, $pop9, $13
4707 ; NO-SIMD128-NEXT:    i32.xor $push11=, $pop10, $45
4708 ; NO-SIMD128-NEXT:    i32.store8 12($0), $pop11
4709 ; NO-SIMD128-NEXT:    i32.xor $push12=, $28, $44
4710 ; NO-SIMD128-NEXT:    i32.and $push13=, $pop12, $12
4711 ; NO-SIMD128-NEXT:    i32.xor $push14=, $pop13, $44
4712 ; NO-SIMD128-NEXT:    i32.store8 11($0), $pop14
4713 ; NO-SIMD128-NEXT:    i32.xor $push15=, $27, $43
4714 ; NO-SIMD128-NEXT:    i32.and $push16=, $pop15, $11
4715 ; NO-SIMD128-NEXT:    i32.xor $push17=, $pop16, $43
4716 ; NO-SIMD128-NEXT:    i32.store8 10($0), $pop17
4717 ; NO-SIMD128-NEXT:    i32.xor $push18=, $26, $42
4718 ; NO-SIMD128-NEXT:    i32.and $push19=, $pop18, $10
4719 ; NO-SIMD128-NEXT:    i32.xor $push20=, $pop19, $42
4720 ; NO-SIMD128-NEXT:    i32.store8 9($0), $pop20
4721 ; NO-SIMD128-NEXT:    i32.xor $push21=, $25, $41
4722 ; NO-SIMD128-NEXT:    i32.and $push22=, $pop21, $9
4723 ; NO-SIMD128-NEXT:    i32.xor $push23=, $pop22, $41
4724 ; NO-SIMD128-NEXT:    i32.store8 8($0), $pop23
4725 ; NO-SIMD128-NEXT:    i32.xor $push24=, $24, $40
4726 ; NO-SIMD128-NEXT:    i32.and $push25=, $pop24, $8
4727 ; NO-SIMD128-NEXT:    i32.xor $push26=, $pop25, $40
4728 ; NO-SIMD128-NEXT:    i32.store8 7($0), $pop26
4729 ; NO-SIMD128-NEXT:    i32.xor $push27=, $23, $39
4730 ; NO-SIMD128-NEXT:    i32.and $push28=, $pop27, $7
4731 ; NO-SIMD128-NEXT:    i32.xor $push29=, $pop28, $39
4732 ; NO-SIMD128-NEXT:    i32.store8 6($0), $pop29
4733 ; NO-SIMD128-NEXT:    i32.xor $push30=, $22, $38
4734 ; NO-SIMD128-NEXT:    i32.and $push31=, $pop30, $6
4735 ; NO-SIMD128-NEXT:    i32.xor $push32=, $pop31, $38
4736 ; NO-SIMD128-NEXT:    i32.store8 5($0), $pop32
4737 ; NO-SIMD128-NEXT:    i32.xor $push33=, $21, $37
4738 ; NO-SIMD128-NEXT:    i32.and $push34=, $pop33, $5
4739 ; NO-SIMD128-NEXT:    i32.xor $push35=, $pop34, $37
4740 ; NO-SIMD128-NEXT:    i32.store8 4($0), $pop35
4741 ; NO-SIMD128-NEXT:    i32.xor $push36=, $20, $36
4742 ; NO-SIMD128-NEXT:    i32.and $push37=, $pop36, $4
4743 ; NO-SIMD128-NEXT:    i32.xor $push38=, $pop37, $36
4744 ; NO-SIMD128-NEXT:    i32.store8 3($0), $pop38
4745 ; NO-SIMD128-NEXT:    i32.xor $push39=, $19, $35
4746 ; NO-SIMD128-NEXT:    i32.and $push40=, $pop39, $3
4747 ; NO-SIMD128-NEXT:    i32.xor $push41=, $pop40, $35
4748 ; NO-SIMD128-NEXT:    i32.store8 2($0), $pop41
4749 ; NO-SIMD128-NEXT:    i32.xor $push42=, $18, $34
4750 ; NO-SIMD128-NEXT:    i32.and $push43=, $pop42, $2
4751 ; NO-SIMD128-NEXT:    i32.xor $push44=, $pop43, $34
4752 ; NO-SIMD128-NEXT:    i32.store8 1($0), $pop44
4753 ; NO-SIMD128-NEXT:    i32.xor $push45=, $17, $33
4754 ; NO-SIMD128-NEXT:    i32.and $push46=, $pop45, $1
4755 ; NO-SIMD128-NEXT:    i32.xor $push47=, $pop46, $33
4756 ; NO-SIMD128-NEXT:    i32.store8 0($0), $pop47
4757 ; NO-SIMD128-NEXT:    return
4759 ; NO-SIMD128-FAST-LABEL: bitselect_xor_v16i8:
4760 ; 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) -> ()
4761 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
4762 ; NO-SIMD128-FAST-NEXT:    i32.xor $push0=, $17, $33
4763 ; NO-SIMD128-FAST-NEXT:    i32.and $push1=, $pop0, $1
4764 ; NO-SIMD128-FAST-NEXT:    i32.xor $push2=, $pop1, $33
4765 ; NO-SIMD128-FAST-NEXT:    i32.store8 0($0), $pop2
4766 ; NO-SIMD128-FAST-NEXT:    i32.xor $push3=, $18, $34
4767 ; NO-SIMD128-FAST-NEXT:    i32.and $push4=, $pop3, $2
4768 ; NO-SIMD128-FAST-NEXT:    i32.xor $push5=, $pop4, $34
4769 ; NO-SIMD128-FAST-NEXT:    i32.store8 1($0), $pop5
4770 ; NO-SIMD128-FAST-NEXT:    i32.xor $push6=, $19, $35
4771 ; NO-SIMD128-FAST-NEXT:    i32.and $push7=, $pop6, $3
4772 ; NO-SIMD128-FAST-NEXT:    i32.xor $push8=, $pop7, $35
4773 ; NO-SIMD128-FAST-NEXT:    i32.store8 2($0), $pop8
4774 ; NO-SIMD128-FAST-NEXT:    i32.xor $push9=, $20, $36
4775 ; NO-SIMD128-FAST-NEXT:    i32.and $push10=, $pop9, $4
4776 ; NO-SIMD128-FAST-NEXT:    i32.xor $push11=, $pop10, $36
4777 ; NO-SIMD128-FAST-NEXT:    i32.store8 3($0), $pop11
4778 ; NO-SIMD128-FAST-NEXT:    i32.xor $push12=, $21, $37
4779 ; NO-SIMD128-FAST-NEXT:    i32.and $push13=, $pop12, $5
4780 ; NO-SIMD128-FAST-NEXT:    i32.xor $push14=, $pop13, $37
4781 ; NO-SIMD128-FAST-NEXT:    i32.store8 4($0), $pop14
4782 ; NO-SIMD128-FAST-NEXT:    i32.xor $push15=, $22, $38
4783 ; NO-SIMD128-FAST-NEXT:    i32.and $push16=, $pop15, $6
4784 ; NO-SIMD128-FAST-NEXT:    i32.xor $push17=, $pop16, $38
4785 ; NO-SIMD128-FAST-NEXT:    i32.store8 5($0), $pop17
4786 ; NO-SIMD128-FAST-NEXT:    i32.xor $push18=, $23, $39
4787 ; NO-SIMD128-FAST-NEXT:    i32.and $push19=, $pop18, $7
4788 ; NO-SIMD128-FAST-NEXT:    i32.xor $push20=, $pop19, $39
4789 ; NO-SIMD128-FAST-NEXT:    i32.store8 6($0), $pop20
4790 ; NO-SIMD128-FAST-NEXT:    i32.xor $push21=, $24, $40
4791 ; NO-SIMD128-FAST-NEXT:    i32.and $push22=, $pop21, $8
4792 ; NO-SIMD128-FAST-NEXT:    i32.xor $push23=, $pop22, $40
4793 ; NO-SIMD128-FAST-NEXT:    i32.store8 7($0), $pop23
4794 ; NO-SIMD128-FAST-NEXT:    i32.xor $push24=, $25, $41
4795 ; NO-SIMD128-FAST-NEXT:    i32.and $push25=, $pop24, $9
4796 ; NO-SIMD128-FAST-NEXT:    i32.xor $push26=, $pop25, $41
4797 ; NO-SIMD128-FAST-NEXT:    i32.store8 8($0), $pop26
4798 ; NO-SIMD128-FAST-NEXT:    i32.xor $push27=, $26, $42
4799 ; NO-SIMD128-FAST-NEXT:    i32.and $push28=, $pop27, $10
4800 ; NO-SIMD128-FAST-NEXT:    i32.xor $push29=, $pop28, $42
4801 ; NO-SIMD128-FAST-NEXT:    i32.store8 9($0), $pop29
4802 ; NO-SIMD128-FAST-NEXT:    i32.xor $push30=, $27, $43
4803 ; NO-SIMD128-FAST-NEXT:    i32.and $push31=, $pop30, $11
4804 ; NO-SIMD128-FAST-NEXT:    i32.xor $push32=, $pop31, $43
4805 ; NO-SIMD128-FAST-NEXT:    i32.store8 10($0), $pop32
4806 ; NO-SIMD128-FAST-NEXT:    i32.xor $push33=, $28, $44
4807 ; NO-SIMD128-FAST-NEXT:    i32.and $push34=, $pop33, $12
4808 ; NO-SIMD128-FAST-NEXT:    i32.xor $push35=, $pop34, $44
4809 ; NO-SIMD128-FAST-NEXT:    i32.store8 11($0), $pop35
4810 ; NO-SIMD128-FAST-NEXT:    i32.xor $push36=, $29, $45
4811 ; NO-SIMD128-FAST-NEXT:    i32.and $push37=, $pop36, $13
4812 ; NO-SIMD128-FAST-NEXT:    i32.xor $push38=, $pop37, $45
4813 ; NO-SIMD128-FAST-NEXT:    i32.store8 12($0), $pop38
4814 ; NO-SIMD128-FAST-NEXT:    i32.xor $push39=, $30, $46
4815 ; NO-SIMD128-FAST-NEXT:    i32.and $push40=, $pop39, $14
4816 ; NO-SIMD128-FAST-NEXT:    i32.xor $push41=, $pop40, $46
4817 ; NO-SIMD128-FAST-NEXT:    i32.store8 13($0), $pop41
4818 ; NO-SIMD128-FAST-NEXT:    i32.xor $push42=, $31, $47
4819 ; NO-SIMD128-FAST-NEXT:    i32.and $push43=, $pop42, $15
4820 ; NO-SIMD128-FAST-NEXT:    i32.xor $push44=, $pop43, $47
4821 ; NO-SIMD128-FAST-NEXT:    i32.store8 14($0), $pop44
4822 ; NO-SIMD128-FAST-NEXT:    i32.xor $push45=, $32, $48
4823 ; NO-SIMD128-FAST-NEXT:    i32.and $push46=, $pop45, $16
4824 ; NO-SIMD128-FAST-NEXT:    i32.xor $push47=, $pop46, $48
4825 ; NO-SIMD128-FAST-NEXT:    i32.store8 15($0), $pop47
4826 ; NO-SIMD128-FAST-NEXT:    return
4827  %xor1 = xor <16 x i8> %v1, %v2
4828  %and = and <16 x i8> %xor1, %c
4829  %a = xor <16 x i8> %and, %v2
4830  ret <16 x i8> %a
4833 define <16 x i8> @bitselect_xor_reversed_v16i8(<16 x i8> %c, <16 x i8> %v1, <16 x i8> %v2) {
4834 ; SIMD128-LABEL: bitselect_xor_reversed_v16i8:
4835 ; SIMD128:         .functype bitselect_xor_reversed_v16i8 (v128, v128, v128) -> (v128)
4836 ; SIMD128-NEXT:  # %bb.0:
4837 ; SIMD128-NEXT:    v128.bitselect $push0=, $2, $1, $0
4838 ; SIMD128-NEXT:    return $pop0
4840 ; SIMD128-FAST-LABEL: bitselect_xor_reversed_v16i8:
4841 ; SIMD128-FAST:         .functype bitselect_xor_reversed_v16i8 (v128, v128, v128) -> (v128)
4842 ; SIMD128-FAST-NEXT:  # %bb.0:
4843 ; SIMD128-FAST-NEXT:    v128.xor $push1=, $1, $2
4844 ; SIMD128-FAST-NEXT:    v128.not $push2=, $0
4845 ; SIMD128-FAST-NEXT:    v128.and $push3=, $pop1, $pop2
4846 ; SIMD128-FAST-NEXT:    v128.xor $push0=, $pop3, $2
4847 ; SIMD128-FAST-NEXT:    return $pop0
4849 ; NO-SIMD128-LABEL: bitselect_xor_reversed_v16i8:
4850 ; 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) -> ()
4851 ; NO-SIMD128-NEXT:  # %bb.0:
4852 ; NO-SIMD128-NEXT:    i32.xor $push2=, $32, $48
4853 ; NO-SIMD128-NEXT:    i32.const $push0=, -1
4854 ; NO-SIMD128-NEXT:    i32.xor $push1=, $16, $pop0
4855 ; NO-SIMD128-NEXT:    i32.and $push3=, $pop2, $pop1
4856 ; NO-SIMD128-NEXT:    i32.xor $push4=, $pop3, $48
4857 ; NO-SIMD128-NEXT:    i32.store8 15($0), $pop4
4858 ; NO-SIMD128-NEXT:    i32.xor $push6=, $31, $47
4859 ; NO-SIMD128-NEXT:    i32.const $push79=, -1
4860 ; NO-SIMD128-NEXT:    i32.xor $push5=, $15, $pop79
4861 ; NO-SIMD128-NEXT:    i32.and $push7=, $pop6, $pop5
4862 ; NO-SIMD128-NEXT:    i32.xor $push8=, $pop7, $47
4863 ; NO-SIMD128-NEXT:    i32.store8 14($0), $pop8
4864 ; NO-SIMD128-NEXT:    i32.xor $push10=, $30, $46
4865 ; NO-SIMD128-NEXT:    i32.const $push78=, -1
4866 ; NO-SIMD128-NEXT:    i32.xor $push9=, $14, $pop78
4867 ; NO-SIMD128-NEXT:    i32.and $push11=, $pop10, $pop9
4868 ; NO-SIMD128-NEXT:    i32.xor $push12=, $pop11, $46
4869 ; NO-SIMD128-NEXT:    i32.store8 13($0), $pop12
4870 ; NO-SIMD128-NEXT:    i32.xor $push14=, $29, $45
4871 ; NO-SIMD128-NEXT:    i32.const $push77=, -1
4872 ; NO-SIMD128-NEXT:    i32.xor $push13=, $13, $pop77
4873 ; NO-SIMD128-NEXT:    i32.and $push15=, $pop14, $pop13
4874 ; NO-SIMD128-NEXT:    i32.xor $push16=, $pop15, $45
4875 ; NO-SIMD128-NEXT:    i32.store8 12($0), $pop16
4876 ; NO-SIMD128-NEXT:    i32.xor $push18=, $28, $44
4877 ; NO-SIMD128-NEXT:    i32.const $push76=, -1
4878 ; NO-SIMD128-NEXT:    i32.xor $push17=, $12, $pop76
4879 ; NO-SIMD128-NEXT:    i32.and $push19=, $pop18, $pop17
4880 ; NO-SIMD128-NEXT:    i32.xor $push20=, $pop19, $44
4881 ; NO-SIMD128-NEXT:    i32.store8 11($0), $pop20
4882 ; NO-SIMD128-NEXT:    i32.xor $push22=, $27, $43
4883 ; NO-SIMD128-NEXT:    i32.const $push75=, -1
4884 ; NO-SIMD128-NEXT:    i32.xor $push21=, $11, $pop75
4885 ; NO-SIMD128-NEXT:    i32.and $push23=, $pop22, $pop21
4886 ; NO-SIMD128-NEXT:    i32.xor $push24=, $pop23, $43
4887 ; NO-SIMD128-NEXT:    i32.store8 10($0), $pop24
4888 ; NO-SIMD128-NEXT:    i32.xor $push26=, $26, $42
4889 ; NO-SIMD128-NEXT:    i32.const $push74=, -1
4890 ; NO-SIMD128-NEXT:    i32.xor $push25=, $10, $pop74
4891 ; NO-SIMD128-NEXT:    i32.and $push27=, $pop26, $pop25
4892 ; NO-SIMD128-NEXT:    i32.xor $push28=, $pop27, $42
4893 ; NO-SIMD128-NEXT:    i32.store8 9($0), $pop28
4894 ; NO-SIMD128-NEXT:    i32.xor $push30=, $25, $41
4895 ; NO-SIMD128-NEXT:    i32.const $push73=, -1
4896 ; NO-SIMD128-NEXT:    i32.xor $push29=, $9, $pop73
4897 ; NO-SIMD128-NEXT:    i32.and $push31=, $pop30, $pop29
4898 ; NO-SIMD128-NEXT:    i32.xor $push32=, $pop31, $41
4899 ; NO-SIMD128-NEXT:    i32.store8 8($0), $pop32
4900 ; NO-SIMD128-NEXT:    i32.xor $push34=, $24, $40
4901 ; NO-SIMD128-NEXT:    i32.const $push72=, -1
4902 ; NO-SIMD128-NEXT:    i32.xor $push33=, $8, $pop72
4903 ; NO-SIMD128-NEXT:    i32.and $push35=, $pop34, $pop33
4904 ; NO-SIMD128-NEXT:    i32.xor $push36=, $pop35, $40
4905 ; NO-SIMD128-NEXT:    i32.store8 7($0), $pop36
4906 ; NO-SIMD128-NEXT:    i32.xor $push38=, $23, $39
4907 ; NO-SIMD128-NEXT:    i32.const $push71=, -1
4908 ; NO-SIMD128-NEXT:    i32.xor $push37=, $7, $pop71
4909 ; NO-SIMD128-NEXT:    i32.and $push39=, $pop38, $pop37
4910 ; NO-SIMD128-NEXT:    i32.xor $push40=, $pop39, $39
4911 ; NO-SIMD128-NEXT:    i32.store8 6($0), $pop40
4912 ; NO-SIMD128-NEXT:    i32.xor $push42=, $22, $38
4913 ; NO-SIMD128-NEXT:    i32.const $push70=, -1
4914 ; NO-SIMD128-NEXT:    i32.xor $push41=, $6, $pop70
4915 ; NO-SIMD128-NEXT:    i32.and $push43=, $pop42, $pop41
4916 ; NO-SIMD128-NEXT:    i32.xor $push44=, $pop43, $38
4917 ; NO-SIMD128-NEXT:    i32.store8 5($0), $pop44
4918 ; NO-SIMD128-NEXT:    i32.xor $push46=, $21, $37
4919 ; NO-SIMD128-NEXT:    i32.const $push69=, -1
4920 ; NO-SIMD128-NEXT:    i32.xor $push45=, $5, $pop69
4921 ; NO-SIMD128-NEXT:    i32.and $push47=, $pop46, $pop45
4922 ; NO-SIMD128-NEXT:    i32.xor $push48=, $pop47, $37
4923 ; NO-SIMD128-NEXT:    i32.store8 4($0), $pop48
4924 ; NO-SIMD128-NEXT:    i32.xor $push50=, $20, $36
4925 ; NO-SIMD128-NEXT:    i32.const $push68=, -1
4926 ; NO-SIMD128-NEXT:    i32.xor $push49=, $4, $pop68
4927 ; NO-SIMD128-NEXT:    i32.and $push51=, $pop50, $pop49
4928 ; NO-SIMD128-NEXT:    i32.xor $push52=, $pop51, $36
4929 ; NO-SIMD128-NEXT:    i32.store8 3($0), $pop52
4930 ; NO-SIMD128-NEXT:    i32.xor $push54=, $19, $35
4931 ; NO-SIMD128-NEXT:    i32.const $push67=, -1
4932 ; NO-SIMD128-NEXT:    i32.xor $push53=, $3, $pop67
4933 ; NO-SIMD128-NEXT:    i32.and $push55=, $pop54, $pop53
4934 ; NO-SIMD128-NEXT:    i32.xor $push56=, $pop55, $35
4935 ; NO-SIMD128-NEXT:    i32.store8 2($0), $pop56
4936 ; NO-SIMD128-NEXT:    i32.xor $push58=, $18, $34
4937 ; NO-SIMD128-NEXT:    i32.const $push66=, -1
4938 ; NO-SIMD128-NEXT:    i32.xor $push57=, $2, $pop66
4939 ; NO-SIMD128-NEXT:    i32.and $push59=, $pop58, $pop57
4940 ; NO-SIMD128-NEXT:    i32.xor $push60=, $pop59, $34
4941 ; NO-SIMD128-NEXT:    i32.store8 1($0), $pop60
4942 ; NO-SIMD128-NEXT:    i32.xor $push62=, $17, $33
4943 ; NO-SIMD128-NEXT:    i32.const $push65=, -1
4944 ; NO-SIMD128-NEXT:    i32.xor $push61=, $1, $pop65
4945 ; NO-SIMD128-NEXT:    i32.and $push63=, $pop62, $pop61
4946 ; NO-SIMD128-NEXT:    i32.xor $push64=, $pop63, $33
4947 ; NO-SIMD128-NEXT:    i32.store8 0($0), $pop64
4948 ; NO-SIMD128-NEXT:    return
4950 ; NO-SIMD128-FAST-LABEL: bitselect_xor_reversed_v16i8:
4951 ; 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) -> ()
4952 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
4953 ; NO-SIMD128-FAST-NEXT:    i32.xor $push2=, $17, $33
4954 ; NO-SIMD128-FAST-NEXT:    i32.const $push0=, -1
4955 ; NO-SIMD128-FAST-NEXT:    i32.xor $push1=, $1, $pop0
4956 ; NO-SIMD128-FAST-NEXT:    i32.and $push3=, $pop2, $pop1
4957 ; NO-SIMD128-FAST-NEXT:    i32.xor $push4=, $pop3, $33
4958 ; NO-SIMD128-FAST-NEXT:    i32.store8 0($0), $pop4
4959 ; NO-SIMD128-FAST-NEXT:    i32.xor $push6=, $18, $34
4960 ; NO-SIMD128-FAST-NEXT:    i32.const $push79=, -1
4961 ; NO-SIMD128-FAST-NEXT:    i32.xor $push5=, $2, $pop79
4962 ; NO-SIMD128-FAST-NEXT:    i32.and $push7=, $pop6, $pop5
4963 ; NO-SIMD128-FAST-NEXT:    i32.xor $push8=, $pop7, $34
4964 ; NO-SIMD128-FAST-NEXT:    i32.store8 1($0), $pop8
4965 ; NO-SIMD128-FAST-NEXT:    i32.xor $push10=, $19, $35
4966 ; NO-SIMD128-FAST-NEXT:    i32.const $push78=, -1
4967 ; NO-SIMD128-FAST-NEXT:    i32.xor $push9=, $3, $pop78
4968 ; NO-SIMD128-FAST-NEXT:    i32.and $push11=, $pop10, $pop9
4969 ; NO-SIMD128-FAST-NEXT:    i32.xor $push12=, $pop11, $35
4970 ; NO-SIMD128-FAST-NEXT:    i32.store8 2($0), $pop12
4971 ; NO-SIMD128-FAST-NEXT:    i32.xor $push14=, $20, $36
4972 ; NO-SIMD128-FAST-NEXT:    i32.const $push77=, -1
4973 ; NO-SIMD128-FAST-NEXT:    i32.xor $push13=, $4, $pop77
4974 ; NO-SIMD128-FAST-NEXT:    i32.and $push15=, $pop14, $pop13
4975 ; NO-SIMD128-FAST-NEXT:    i32.xor $push16=, $pop15, $36
4976 ; NO-SIMD128-FAST-NEXT:    i32.store8 3($0), $pop16
4977 ; NO-SIMD128-FAST-NEXT:    i32.xor $push18=, $21, $37
4978 ; NO-SIMD128-FAST-NEXT:    i32.const $push76=, -1
4979 ; NO-SIMD128-FAST-NEXT:    i32.xor $push17=, $5, $pop76
4980 ; NO-SIMD128-FAST-NEXT:    i32.and $push19=, $pop18, $pop17
4981 ; NO-SIMD128-FAST-NEXT:    i32.xor $push20=, $pop19, $37
4982 ; NO-SIMD128-FAST-NEXT:    i32.store8 4($0), $pop20
4983 ; NO-SIMD128-FAST-NEXT:    i32.xor $push22=, $22, $38
4984 ; NO-SIMD128-FAST-NEXT:    i32.const $push75=, -1
4985 ; NO-SIMD128-FAST-NEXT:    i32.xor $push21=, $6, $pop75
4986 ; NO-SIMD128-FAST-NEXT:    i32.and $push23=, $pop22, $pop21
4987 ; NO-SIMD128-FAST-NEXT:    i32.xor $push24=, $pop23, $38
4988 ; NO-SIMD128-FAST-NEXT:    i32.store8 5($0), $pop24
4989 ; NO-SIMD128-FAST-NEXT:    i32.xor $push26=, $23, $39
4990 ; NO-SIMD128-FAST-NEXT:    i32.const $push74=, -1
4991 ; NO-SIMD128-FAST-NEXT:    i32.xor $push25=, $7, $pop74
4992 ; NO-SIMD128-FAST-NEXT:    i32.and $push27=, $pop26, $pop25
4993 ; NO-SIMD128-FAST-NEXT:    i32.xor $push28=, $pop27, $39
4994 ; NO-SIMD128-FAST-NEXT:    i32.store8 6($0), $pop28
4995 ; NO-SIMD128-FAST-NEXT:    i32.xor $push30=, $24, $40
4996 ; NO-SIMD128-FAST-NEXT:    i32.const $push73=, -1
4997 ; NO-SIMD128-FAST-NEXT:    i32.xor $push29=, $8, $pop73
4998 ; NO-SIMD128-FAST-NEXT:    i32.and $push31=, $pop30, $pop29
4999 ; NO-SIMD128-FAST-NEXT:    i32.xor $push32=, $pop31, $40
5000 ; NO-SIMD128-FAST-NEXT:    i32.store8 7($0), $pop32
5001 ; NO-SIMD128-FAST-NEXT:    i32.xor $push34=, $25, $41
5002 ; NO-SIMD128-FAST-NEXT:    i32.const $push72=, -1
5003 ; NO-SIMD128-FAST-NEXT:    i32.xor $push33=, $9, $pop72
5004 ; NO-SIMD128-FAST-NEXT:    i32.and $push35=, $pop34, $pop33
5005 ; NO-SIMD128-FAST-NEXT:    i32.xor $push36=, $pop35, $41
5006 ; NO-SIMD128-FAST-NEXT:    i32.store8 8($0), $pop36
5007 ; NO-SIMD128-FAST-NEXT:    i32.xor $push38=, $26, $42
5008 ; NO-SIMD128-FAST-NEXT:    i32.const $push71=, -1
5009 ; NO-SIMD128-FAST-NEXT:    i32.xor $push37=, $10, $pop71
5010 ; NO-SIMD128-FAST-NEXT:    i32.and $push39=, $pop38, $pop37
5011 ; NO-SIMD128-FAST-NEXT:    i32.xor $push40=, $pop39, $42
5012 ; NO-SIMD128-FAST-NEXT:    i32.store8 9($0), $pop40
5013 ; NO-SIMD128-FAST-NEXT:    i32.xor $push42=, $27, $43
5014 ; NO-SIMD128-FAST-NEXT:    i32.const $push70=, -1
5015 ; NO-SIMD128-FAST-NEXT:    i32.xor $push41=, $11, $pop70
5016 ; NO-SIMD128-FAST-NEXT:    i32.and $push43=, $pop42, $pop41
5017 ; NO-SIMD128-FAST-NEXT:    i32.xor $push44=, $pop43, $43
5018 ; NO-SIMD128-FAST-NEXT:    i32.store8 10($0), $pop44
5019 ; NO-SIMD128-FAST-NEXT:    i32.xor $push46=, $28, $44
5020 ; NO-SIMD128-FAST-NEXT:    i32.const $push69=, -1
5021 ; NO-SIMD128-FAST-NEXT:    i32.xor $push45=, $12, $pop69
5022 ; NO-SIMD128-FAST-NEXT:    i32.and $push47=, $pop46, $pop45
5023 ; NO-SIMD128-FAST-NEXT:    i32.xor $push48=, $pop47, $44
5024 ; NO-SIMD128-FAST-NEXT:    i32.store8 11($0), $pop48
5025 ; NO-SIMD128-FAST-NEXT:    i32.xor $push50=, $29, $45
5026 ; NO-SIMD128-FAST-NEXT:    i32.const $push68=, -1
5027 ; NO-SIMD128-FAST-NEXT:    i32.xor $push49=, $13, $pop68
5028 ; NO-SIMD128-FAST-NEXT:    i32.and $push51=, $pop50, $pop49
5029 ; NO-SIMD128-FAST-NEXT:    i32.xor $push52=, $pop51, $45
5030 ; NO-SIMD128-FAST-NEXT:    i32.store8 12($0), $pop52
5031 ; NO-SIMD128-FAST-NEXT:    i32.xor $push54=, $30, $46
5032 ; NO-SIMD128-FAST-NEXT:    i32.const $push67=, -1
5033 ; NO-SIMD128-FAST-NEXT:    i32.xor $push53=, $14, $pop67
5034 ; NO-SIMD128-FAST-NEXT:    i32.and $push55=, $pop54, $pop53
5035 ; NO-SIMD128-FAST-NEXT:    i32.xor $push56=, $pop55, $46
5036 ; NO-SIMD128-FAST-NEXT:    i32.store8 13($0), $pop56
5037 ; NO-SIMD128-FAST-NEXT:    i32.xor $push58=, $31, $47
5038 ; NO-SIMD128-FAST-NEXT:    i32.const $push66=, -1
5039 ; NO-SIMD128-FAST-NEXT:    i32.xor $push57=, $15, $pop66
5040 ; NO-SIMD128-FAST-NEXT:    i32.and $push59=, $pop58, $pop57
5041 ; NO-SIMD128-FAST-NEXT:    i32.xor $push60=, $pop59, $47
5042 ; NO-SIMD128-FAST-NEXT:    i32.store8 14($0), $pop60
5043 ; NO-SIMD128-FAST-NEXT:    i32.xor $push62=, $32, $48
5044 ; NO-SIMD128-FAST-NEXT:    i32.const $push65=, -1
5045 ; NO-SIMD128-FAST-NEXT:    i32.xor $push61=, $16, $pop65
5046 ; NO-SIMD128-FAST-NEXT:    i32.and $push63=, $pop62, $pop61
5047 ; NO-SIMD128-FAST-NEXT:    i32.xor $push64=, $pop63, $48
5048 ; NO-SIMD128-FAST-NEXT:    i32.store8 15($0), $pop64
5049 ; NO-SIMD128-FAST-NEXT:    return
5050  %xor1 = xor <16 x i8> %v1, %v2
5051  %notc = xor <16 x i8> %c, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1,
5052                             i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
5053  %and = and <16 x i8> %xor1, %notc
5054  %a = xor <16 x i8> %and, %v2
5055  ret <16 x i8> %a
5058 ; ==============================================================================
5059 ; 8 x i16
5060 ; ==============================================================================
5061 define <8 x i16> @add_v8i16(<8 x i16> %x, <8 x i16> %y) {
5062 ; SIMD128-LABEL: add_v8i16:
5063 ; SIMD128:         .functype add_v8i16 (v128, v128) -> (v128)
5064 ; SIMD128-NEXT:  # %bb.0:
5065 ; SIMD128-NEXT:    i16x8.add $push0=, $0, $1
5066 ; SIMD128-NEXT:    return $pop0
5068 ; SIMD128-FAST-LABEL: add_v8i16:
5069 ; SIMD128-FAST:         .functype add_v8i16 (v128, v128) -> (v128)
5070 ; SIMD128-FAST-NEXT:  # %bb.0:
5071 ; SIMD128-FAST-NEXT:    i16x8.add $push0=, $0, $1
5072 ; SIMD128-FAST-NEXT:    return $pop0
5074 ; NO-SIMD128-LABEL: add_v8i16:
5075 ; NO-SIMD128:         .functype add_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
5076 ; NO-SIMD128-NEXT:  # %bb.0:
5077 ; NO-SIMD128-NEXT:    i32.add $push0=, $8, $16
5078 ; NO-SIMD128-NEXT:    i32.store16 14($0), $pop0
5079 ; NO-SIMD128-NEXT:    i32.add $push1=, $7, $15
5080 ; NO-SIMD128-NEXT:    i32.store16 12($0), $pop1
5081 ; NO-SIMD128-NEXT:    i32.add $push2=, $6, $14
5082 ; NO-SIMD128-NEXT:    i32.store16 10($0), $pop2
5083 ; NO-SIMD128-NEXT:    i32.add $push3=, $5, $13
5084 ; NO-SIMD128-NEXT:    i32.store16 8($0), $pop3
5085 ; NO-SIMD128-NEXT:    i32.add $push4=, $4, $12
5086 ; NO-SIMD128-NEXT:    i32.store16 6($0), $pop4
5087 ; NO-SIMD128-NEXT:    i32.add $push5=, $3, $11
5088 ; NO-SIMD128-NEXT:    i32.store16 4($0), $pop5
5089 ; NO-SIMD128-NEXT:    i32.add $push6=, $2, $10
5090 ; NO-SIMD128-NEXT:    i32.store16 2($0), $pop6
5091 ; NO-SIMD128-NEXT:    i32.add $push7=, $1, $9
5092 ; NO-SIMD128-NEXT:    i32.store16 0($0), $pop7
5093 ; NO-SIMD128-NEXT:    return
5095 ; NO-SIMD128-FAST-LABEL: add_v8i16:
5096 ; NO-SIMD128-FAST:         .functype add_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
5097 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
5098 ; NO-SIMD128-FAST-NEXT:    i32.add $push0=, $1, $9
5099 ; NO-SIMD128-FAST-NEXT:    i32.store16 0($0), $pop0
5100 ; NO-SIMD128-FAST-NEXT:    i32.add $push1=, $2, $10
5101 ; NO-SIMD128-FAST-NEXT:    i32.store16 2($0), $pop1
5102 ; NO-SIMD128-FAST-NEXT:    i32.add $push2=, $3, $11
5103 ; NO-SIMD128-FAST-NEXT:    i32.store16 4($0), $pop2
5104 ; NO-SIMD128-FAST-NEXT:    i32.add $push3=, $4, $12
5105 ; NO-SIMD128-FAST-NEXT:    i32.store16 6($0), $pop3
5106 ; NO-SIMD128-FAST-NEXT:    i32.add $push4=, $5, $13
5107 ; NO-SIMD128-FAST-NEXT:    i32.store16 8($0), $pop4
5108 ; NO-SIMD128-FAST-NEXT:    i32.add $push5=, $6, $14
5109 ; NO-SIMD128-FAST-NEXT:    i32.store16 10($0), $pop5
5110 ; NO-SIMD128-FAST-NEXT:    i32.add $push6=, $7, $15
5111 ; NO-SIMD128-FAST-NEXT:    i32.store16 12($0), $pop6
5112 ; NO-SIMD128-FAST-NEXT:    i32.add $push7=, $8, $16
5113 ; NO-SIMD128-FAST-NEXT:    i32.store16 14($0), $pop7
5114 ; NO-SIMD128-FAST-NEXT:    return
5115   %a = add <8 x i16> %x, %y
5116   ret <8 x i16> %a
5119 define <8 x i16> @sub_v8i16(<8 x i16> %x, <8 x i16> %y) {
5120 ; SIMD128-LABEL: sub_v8i16:
5121 ; SIMD128:         .functype sub_v8i16 (v128, v128) -> (v128)
5122 ; SIMD128-NEXT:  # %bb.0:
5123 ; SIMD128-NEXT:    i16x8.sub $push0=, $0, $1
5124 ; SIMD128-NEXT:    return $pop0
5126 ; SIMD128-FAST-LABEL: sub_v8i16:
5127 ; SIMD128-FAST:         .functype sub_v8i16 (v128, v128) -> (v128)
5128 ; SIMD128-FAST-NEXT:  # %bb.0:
5129 ; SIMD128-FAST-NEXT:    i16x8.sub $push0=, $0, $1
5130 ; SIMD128-FAST-NEXT:    return $pop0
5132 ; NO-SIMD128-LABEL: sub_v8i16:
5133 ; NO-SIMD128:         .functype sub_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
5134 ; NO-SIMD128-NEXT:  # %bb.0:
5135 ; NO-SIMD128-NEXT:    i32.sub $push0=, $8, $16
5136 ; NO-SIMD128-NEXT:    i32.store16 14($0), $pop0
5137 ; NO-SIMD128-NEXT:    i32.sub $push1=, $7, $15
5138 ; NO-SIMD128-NEXT:    i32.store16 12($0), $pop1
5139 ; NO-SIMD128-NEXT:    i32.sub $push2=, $6, $14
5140 ; NO-SIMD128-NEXT:    i32.store16 10($0), $pop2
5141 ; NO-SIMD128-NEXT:    i32.sub $push3=, $5, $13
5142 ; NO-SIMD128-NEXT:    i32.store16 8($0), $pop3
5143 ; NO-SIMD128-NEXT:    i32.sub $push4=, $4, $12
5144 ; NO-SIMD128-NEXT:    i32.store16 6($0), $pop4
5145 ; NO-SIMD128-NEXT:    i32.sub $push5=, $3, $11
5146 ; NO-SIMD128-NEXT:    i32.store16 4($0), $pop5
5147 ; NO-SIMD128-NEXT:    i32.sub $push6=, $2, $10
5148 ; NO-SIMD128-NEXT:    i32.store16 2($0), $pop6
5149 ; NO-SIMD128-NEXT:    i32.sub $push7=, $1, $9
5150 ; NO-SIMD128-NEXT:    i32.store16 0($0), $pop7
5151 ; NO-SIMD128-NEXT:    return
5153 ; NO-SIMD128-FAST-LABEL: sub_v8i16:
5154 ; NO-SIMD128-FAST:         .functype sub_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
5155 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
5156 ; NO-SIMD128-FAST-NEXT:    i32.sub $push0=, $1, $9
5157 ; NO-SIMD128-FAST-NEXT:    i32.store16 0($0), $pop0
5158 ; NO-SIMD128-FAST-NEXT:    i32.sub $push1=, $2, $10
5159 ; NO-SIMD128-FAST-NEXT:    i32.store16 2($0), $pop1
5160 ; NO-SIMD128-FAST-NEXT:    i32.sub $push2=, $3, $11
5161 ; NO-SIMD128-FAST-NEXT:    i32.store16 4($0), $pop2
5162 ; NO-SIMD128-FAST-NEXT:    i32.sub $push3=, $4, $12
5163 ; NO-SIMD128-FAST-NEXT:    i32.store16 6($0), $pop3
5164 ; NO-SIMD128-FAST-NEXT:    i32.sub $push4=, $5, $13
5165 ; NO-SIMD128-FAST-NEXT:    i32.store16 8($0), $pop4
5166 ; NO-SIMD128-FAST-NEXT:    i32.sub $push5=, $6, $14
5167 ; NO-SIMD128-FAST-NEXT:    i32.store16 10($0), $pop5
5168 ; NO-SIMD128-FAST-NEXT:    i32.sub $push6=, $7, $15
5169 ; NO-SIMD128-FAST-NEXT:    i32.store16 12($0), $pop6
5170 ; NO-SIMD128-FAST-NEXT:    i32.sub $push7=, $8, $16
5171 ; NO-SIMD128-FAST-NEXT:    i32.store16 14($0), $pop7
5172 ; NO-SIMD128-FAST-NEXT:    return
5173   %a = sub <8 x i16> %x, %y
5174   ret <8 x i16> %a
5177 define <8 x i16> @mul_v8i16(<8 x i16> %x, <8 x i16> %y) {
5178 ; SIMD128-LABEL: mul_v8i16:
5179 ; SIMD128:         .functype mul_v8i16 (v128, v128) -> (v128)
5180 ; SIMD128-NEXT:  # %bb.0:
5181 ; SIMD128-NEXT:    i16x8.mul $push0=, $0, $1
5182 ; SIMD128-NEXT:    return $pop0
5184 ; SIMD128-FAST-LABEL: mul_v8i16:
5185 ; SIMD128-FAST:         .functype mul_v8i16 (v128, v128) -> (v128)
5186 ; SIMD128-FAST-NEXT:  # %bb.0:
5187 ; SIMD128-FAST-NEXT:    i16x8.mul $push0=, $0, $1
5188 ; SIMD128-FAST-NEXT:    return $pop0
5190 ; NO-SIMD128-LABEL: mul_v8i16:
5191 ; NO-SIMD128:         .functype mul_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
5192 ; NO-SIMD128-NEXT:  # %bb.0:
5193 ; NO-SIMD128-NEXT:    i32.mul $push0=, $8, $16
5194 ; NO-SIMD128-NEXT:    i32.store16 14($0), $pop0
5195 ; NO-SIMD128-NEXT:    i32.mul $push1=, $7, $15
5196 ; NO-SIMD128-NEXT:    i32.store16 12($0), $pop1
5197 ; NO-SIMD128-NEXT:    i32.mul $push2=, $6, $14
5198 ; NO-SIMD128-NEXT:    i32.store16 10($0), $pop2
5199 ; NO-SIMD128-NEXT:    i32.mul $push3=, $5, $13
5200 ; NO-SIMD128-NEXT:    i32.store16 8($0), $pop3
5201 ; NO-SIMD128-NEXT:    i32.mul $push4=, $4, $12
5202 ; NO-SIMD128-NEXT:    i32.store16 6($0), $pop4
5203 ; NO-SIMD128-NEXT:    i32.mul $push5=, $3, $11
5204 ; NO-SIMD128-NEXT:    i32.store16 4($0), $pop5
5205 ; NO-SIMD128-NEXT:    i32.mul $push6=, $2, $10
5206 ; NO-SIMD128-NEXT:    i32.store16 2($0), $pop6
5207 ; NO-SIMD128-NEXT:    i32.mul $push7=, $1, $9
5208 ; NO-SIMD128-NEXT:    i32.store16 0($0), $pop7
5209 ; NO-SIMD128-NEXT:    return
5211 ; NO-SIMD128-FAST-LABEL: mul_v8i16:
5212 ; NO-SIMD128-FAST:         .functype mul_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
5213 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
5214 ; NO-SIMD128-FAST-NEXT:    i32.mul $push0=, $1, $9
5215 ; NO-SIMD128-FAST-NEXT:    i32.store16 0($0), $pop0
5216 ; NO-SIMD128-FAST-NEXT:    i32.mul $push1=, $2, $10
5217 ; NO-SIMD128-FAST-NEXT:    i32.store16 2($0), $pop1
5218 ; NO-SIMD128-FAST-NEXT:    i32.mul $push2=, $3, $11
5219 ; NO-SIMD128-FAST-NEXT:    i32.store16 4($0), $pop2
5220 ; NO-SIMD128-FAST-NEXT:    i32.mul $push3=, $4, $12
5221 ; NO-SIMD128-FAST-NEXT:    i32.store16 6($0), $pop3
5222 ; NO-SIMD128-FAST-NEXT:    i32.mul $push4=, $5, $13
5223 ; NO-SIMD128-FAST-NEXT:    i32.store16 8($0), $pop4
5224 ; NO-SIMD128-FAST-NEXT:    i32.mul $push5=, $6, $14
5225 ; NO-SIMD128-FAST-NEXT:    i32.store16 10($0), $pop5
5226 ; NO-SIMD128-FAST-NEXT:    i32.mul $push6=, $7, $15
5227 ; NO-SIMD128-FAST-NEXT:    i32.store16 12($0), $pop6
5228 ; NO-SIMD128-FAST-NEXT:    i32.mul $push7=, $8, $16
5229 ; NO-SIMD128-FAST-NEXT:    i32.store16 14($0), $pop7
5230 ; NO-SIMD128-FAST-NEXT:    return
5231   %a = mul <8 x i16> %x, %y
5232   ret <8 x i16> %a
5235 define <8 x i16> @min_s_v8i16(<8 x i16> %x, <8 x i16> %y) {
5236 ; SIMD128-LABEL: min_s_v8i16:
5237 ; SIMD128:         .functype min_s_v8i16 (v128, v128) -> (v128)
5238 ; SIMD128-NEXT:  # %bb.0:
5239 ; SIMD128-NEXT:    i16x8.min_s $push0=, $0, $1
5240 ; SIMD128-NEXT:    return $pop0
5242 ; SIMD128-FAST-LABEL: min_s_v8i16:
5243 ; SIMD128-FAST:         .functype min_s_v8i16 (v128, v128) -> (v128)
5244 ; SIMD128-FAST-NEXT:  # %bb.0:
5245 ; SIMD128-FAST-NEXT:    i16x8.min_s $push0=, $0, $1
5246 ; SIMD128-FAST-NEXT:    return $pop0
5248 ; NO-SIMD128-LABEL: min_s_v8i16:
5249 ; NO-SIMD128:         .functype min_s_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
5250 ; NO-SIMD128-NEXT:  # %bb.0:
5251 ; NO-SIMD128-NEXT:    i32.extend16_s $push1=, $8
5252 ; NO-SIMD128-NEXT:    i32.extend16_s $push0=, $16
5253 ; NO-SIMD128-NEXT:    i32.lt_s $push2=, $pop1, $pop0
5254 ; NO-SIMD128-NEXT:    i32.select $push3=, $8, $16, $pop2
5255 ; NO-SIMD128-NEXT:    i32.store16 14($0), $pop3
5256 ; NO-SIMD128-NEXT:    i32.extend16_s $push5=, $7
5257 ; NO-SIMD128-NEXT:    i32.extend16_s $push4=, $15
5258 ; NO-SIMD128-NEXT:    i32.lt_s $push6=, $pop5, $pop4
5259 ; NO-SIMD128-NEXT:    i32.select $push7=, $7, $15, $pop6
5260 ; NO-SIMD128-NEXT:    i32.store16 12($0), $pop7
5261 ; NO-SIMD128-NEXT:    i32.extend16_s $push9=, $6
5262 ; NO-SIMD128-NEXT:    i32.extend16_s $push8=, $14
5263 ; NO-SIMD128-NEXT:    i32.lt_s $push10=, $pop9, $pop8
5264 ; NO-SIMD128-NEXT:    i32.select $push11=, $6, $14, $pop10
5265 ; NO-SIMD128-NEXT:    i32.store16 10($0), $pop11
5266 ; NO-SIMD128-NEXT:    i32.extend16_s $push13=, $5
5267 ; NO-SIMD128-NEXT:    i32.extend16_s $push12=, $13
5268 ; NO-SIMD128-NEXT:    i32.lt_s $push14=, $pop13, $pop12
5269 ; NO-SIMD128-NEXT:    i32.select $push15=, $5, $13, $pop14
5270 ; NO-SIMD128-NEXT:    i32.store16 8($0), $pop15
5271 ; NO-SIMD128-NEXT:    i32.extend16_s $push17=, $4
5272 ; NO-SIMD128-NEXT:    i32.extend16_s $push16=, $12
5273 ; NO-SIMD128-NEXT:    i32.lt_s $push18=, $pop17, $pop16
5274 ; NO-SIMD128-NEXT:    i32.select $push19=, $4, $12, $pop18
5275 ; NO-SIMD128-NEXT:    i32.store16 6($0), $pop19
5276 ; NO-SIMD128-NEXT:    i32.extend16_s $push21=, $3
5277 ; NO-SIMD128-NEXT:    i32.extend16_s $push20=, $11
5278 ; NO-SIMD128-NEXT:    i32.lt_s $push22=, $pop21, $pop20
5279 ; NO-SIMD128-NEXT:    i32.select $push23=, $3, $11, $pop22
5280 ; NO-SIMD128-NEXT:    i32.store16 4($0), $pop23
5281 ; NO-SIMD128-NEXT:    i32.extend16_s $push25=, $2
5282 ; NO-SIMD128-NEXT:    i32.extend16_s $push24=, $10
5283 ; NO-SIMD128-NEXT:    i32.lt_s $push26=, $pop25, $pop24
5284 ; NO-SIMD128-NEXT:    i32.select $push27=, $2, $10, $pop26
5285 ; NO-SIMD128-NEXT:    i32.store16 2($0), $pop27
5286 ; NO-SIMD128-NEXT:    i32.extend16_s $push29=, $1
5287 ; NO-SIMD128-NEXT:    i32.extend16_s $push28=, $9
5288 ; NO-SIMD128-NEXT:    i32.lt_s $push30=, $pop29, $pop28
5289 ; NO-SIMD128-NEXT:    i32.select $push31=, $1, $9, $pop30
5290 ; NO-SIMD128-NEXT:    i32.store16 0($0), $pop31
5291 ; NO-SIMD128-NEXT:    return
5293 ; NO-SIMD128-FAST-LABEL: min_s_v8i16:
5294 ; NO-SIMD128-FAST:         .functype min_s_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
5295 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
5296 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push1=, $1
5297 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push0=, $9
5298 ; NO-SIMD128-FAST-NEXT:    i32.lt_s $push2=, $pop1, $pop0
5299 ; NO-SIMD128-FAST-NEXT:    i32.select $push3=, $1, $9, $pop2
5300 ; NO-SIMD128-FAST-NEXT:    i32.store16 0($0), $pop3
5301 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push5=, $2
5302 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push4=, $10
5303 ; NO-SIMD128-FAST-NEXT:    i32.lt_s $push6=, $pop5, $pop4
5304 ; NO-SIMD128-FAST-NEXT:    i32.select $push7=, $2, $10, $pop6
5305 ; NO-SIMD128-FAST-NEXT:    i32.store16 2($0), $pop7
5306 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push9=, $3
5307 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push8=, $11
5308 ; NO-SIMD128-FAST-NEXT:    i32.lt_s $push10=, $pop9, $pop8
5309 ; NO-SIMD128-FAST-NEXT:    i32.select $push11=, $3, $11, $pop10
5310 ; NO-SIMD128-FAST-NEXT:    i32.store16 4($0), $pop11
5311 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push13=, $4
5312 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push12=, $12
5313 ; NO-SIMD128-FAST-NEXT:    i32.lt_s $push14=, $pop13, $pop12
5314 ; NO-SIMD128-FAST-NEXT:    i32.select $push15=, $4, $12, $pop14
5315 ; NO-SIMD128-FAST-NEXT:    i32.store16 6($0), $pop15
5316 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push17=, $5
5317 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push16=, $13
5318 ; NO-SIMD128-FAST-NEXT:    i32.lt_s $push18=, $pop17, $pop16
5319 ; NO-SIMD128-FAST-NEXT:    i32.select $push19=, $5, $13, $pop18
5320 ; NO-SIMD128-FAST-NEXT:    i32.store16 8($0), $pop19
5321 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push21=, $6
5322 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push20=, $14
5323 ; NO-SIMD128-FAST-NEXT:    i32.lt_s $push22=, $pop21, $pop20
5324 ; NO-SIMD128-FAST-NEXT:    i32.select $push23=, $6, $14, $pop22
5325 ; NO-SIMD128-FAST-NEXT:    i32.store16 10($0), $pop23
5326 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push25=, $7
5327 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push24=, $15
5328 ; NO-SIMD128-FAST-NEXT:    i32.lt_s $push26=, $pop25, $pop24
5329 ; NO-SIMD128-FAST-NEXT:    i32.select $push27=, $7, $15, $pop26
5330 ; NO-SIMD128-FAST-NEXT:    i32.store16 12($0), $pop27
5331 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push29=, $8
5332 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push28=, $16
5333 ; NO-SIMD128-FAST-NEXT:    i32.lt_s $push30=, $pop29, $pop28
5334 ; NO-SIMD128-FAST-NEXT:    i32.select $push31=, $8, $16, $pop30
5335 ; NO-SIMD128-FAST-NEXT:    i32.store16 14($0), $pop31
5336 ; NO-SIMD128-FAST-NEXT:    return
5337   %c = icmp slt <8 x i16> %x, %y
5338   %a = select <8 x i1> %c, <8 x i16> %x, <8 x i16> %y
5339   ret <8 x i16> %a
5342 define <8 x i16> @min_u_v8i16(<8 x i16> %x, <8 x i16> %y) {
5343 ; SIMD128-LABEL: min_u_v8i16:
5344 ; SIMD128:         .functype min_u_v8i16 (v128, v128) -> (v128)
5345 ; SIMD128-NEXT:  # %bb.0:
5346 ; SIMD128-NEXT:    i16x8.min_u $push0=, $0, $1
5347 ; SIMD128-NEXT:    return $pop0
5349 ; SIMD128-FAST-LABEL: min_u_v8i16:
5350 ; SIMD128-FAST:         .functype min_u_v8i16 (v128, v128) -> (v128)
5351 ; SIMD128-FAST-NEXT:  # %bb.0:
5352 ; SIMD128-FAST-NEXT:    i16x8.min_u $push0=, $0, $1
5353 ; SIMD128-FAST-NEXT:    return $pop0
5355 ; NO-SIMD128-LABEL: min_u_v8i16:
5356 ; NO-SIMD128:         .functype min_u_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
5357 ; NO-SIMD128-NEXT:  # %bb.0:
5358 ; NO-SIMD128-NEXT:    i32.const $push0=, 65535
5359 ; NO-SIMD128-NEXT:    i32.and $push2=, $8, $pop0
5360 ; NO-SIMD128-NEXT:    i32.const $push47=, 65535
5361 ; NO-SIMD128-NEXT:    i32.and $push1=, $16, $pop47
5362 ; NO-SIMD128-NEXT:    i32.lt_u $push3=, $pop2, $pop1
5363 ; NO-SIMD128-NEXT:    i32.select $push4=, $8, $16, $pop3
5364 ; NO-SIMD128-NEXT:    i32.store16 14($0), $pop4
5365 ; NO-SIMD128-NEXT:    i32.const $push46=, 65535
5366 ; NO-SIMD128-NEXT:    i32.and $push6=, $7, $pop46
5367 ; NO-SIMD128-NEXT:    i32.const $push45=, 65535
5368 ; NO-SIMD128-NEXT:    i32.and $push5=, $15, $pop45
5369 ; NO-SIMD128-NEXT:    i32.lt_u $push7=, $pop6, $pop5
5370 ; NO-SIMD128-NEXT:    i32.select $push8=, $7, $15, $pop7
5371 ; NO-SIMD128-NEXT:    i32.store16 12($0), $pop8
5372 ; NO-SIMD128-NEXT:    i32.const $push44=, 65535
5373 ; NO-SIMD128-NEXT:    i32.and $push10=, $6, $pop44
5374 ; NO-SIMD128-NEXT:    i32.const $push43=, 65535
5375 ; NO-SIMD128-NEXT:    i32.and $push9=, $14, $pop43
5376 ; NO-SIMD128-NEXT:    i32.lt_u $push11=, $pop10, $pop9
5377 ; NO-SIMD128-NEXT:    i32.select $push12=, $6, $14, $pop11
5378 ; NO-SIMD128-NEXT:    i32.store16 10($0), $pop12
5379 ; NO-SIMD128-NEXT:    i32.const $push42=, 65535
5380 ; NO-SIMD128-NEXT:    i32.and $push14=, $5, $pop42
5381 ; NO-SIMD128-NEXT:    i32.const $push41=, 65535
5382 ; NO-SIMD128-NEXT:    i32.and $push13=, $13, $pop41
5383 ; NO-SIMD128-NEXT:    i32.lt_u $push15=, $pop14, $pop13
5384 ; NO-SIMD128-NEXT:    i32.select $push16=, $5, $13, $pop15
5385 ; NO-SIMD128-NEXT:    i32.store16 8($0), $pop16
5386 ; NO-SIMD128-NEXT:    i32.const $push40=, 65535
5387 ; NO-SIMD128-NEXT:    i32.and $push18=, $4, $pop40
5388 ; NO-SIMD128-NEXT:    i32.const $push39=, 65535
5389 ; NO-SIMD128-NEXT:    i32.and $push17=, $12, $pop39
5390 ; NO-SIMD128-NEXT:    i32.lt_u $push19=, $pop18, $pop17
5391 ; NO-SIMD128-NEXT:    i32.select $push20=, $4, $12, $pop19
5392 ; NO-SIMD128-NEXT:    i32.store16 6($0), $pop20
5393 ; NO-SIMD128-NEXT:    i32.const $push38=, 65535
5394 ; NO-SIMD128-NEXT:    i32.and $push22=, $3, $pop38
5395 ; NO-SIMD128-NEXT:    i32.const $push37=, 65535
5396 ; NO-SIMD128-NEXT:    i32.and $push21=, $11, $pop37
5397 ; NO-SIMD128-NEXT:    i32.lt_u $push23=, $pop22, $pop21
5398 ; NO-SIMD128-NEXT:    i32.select $push24=, $3, $11, $pop23
5399 ; NO-SIMD128-NEXT:    i32.store16 4($0), $pop24
5400 ; NO-SIMD128-NEXT:    i32.const $push36=, 65535
5401 ; NO-SIMD128-NEXT:    i32.and $push26=, $2, $pop36
5402 ; NO-SIMD128-NEXT:    i32.const $push35=, 65535
5403 ; NO-SIMD128-NEXT:    i32.and $push25=, $10, $pop35
5404 ; NO-SIMD128-NEXT:    i32.lt_u $push27=, $pop26, $pop25
5405 ; NO-SIMD128-NEXT:    i32.select $push28=, $2, $10, $pop27
5406 ; NO-SIMD128-NEXT:    i32.store16 2($0), $pop28
5407 ; NO-SIMD128-NEXT:    i32.const $push34=, 65535
5408 ; NO-SIMD128-NEXT:    i32.and $push30=, $1, $pop34
5409 ; NO-SIMD128-NEXT:    i32.const $push33=, 65535
5410 ; NO-SIMD128-NEXT:    i32.and $push29=, $9, $pop33
5411 ; NO-SIMD128-NEXT:    i32.lt_u $push31=, $pop30, $pop29
5412 ; NO-SIMD128-NEXT:    i32.select $push32=, $1, $9, $pop31
5413 ; NO-SIMD128-NEXT:    i32.store16 0($0), $pop32
5414 ; NO-SIMD128-NEXT:    return
5416 ; NO-SIMD128-FAST-LABEL: min_u_v8i16:
5417 ; NO-SIMD128-FAST:         .functype min_u_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
5418 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
5419 ; NO-SIMD128-FAST-NEXT:    i32.const $push0=, 65535
5420 ; NO-SIMD128-FAST-NEXT:    i32.and $push2=, $1, $pop0
5421 ; NO-SIMD128-FAST-NEXT:    i32.const $push47=, 65535
5422 ; NO-SIMD128-FAST-NEXT:    i32.and $push1=, $9, $pop47
5423 ; NO-SIMD128-FAST-NEXT:    i32.lt_u $push3=, $pop2, $pop1
5424 ; NO-SIMD128-FAST-NEXT:    i32.select $push4=, $1, $9, $pop3
5425 ; NO-SIMD128-FAST-NEXT:    i32.store16 0($0), $pop4
5426 ; NO-SIMD128-FAST-NEXT:    i32.const $push46=, 65535
5427 ; NO-SIMD128-FAST-NEXT:    i32.and $push6=, $2, $pop46
5428 ; NO-SIMD128-FAST-NEXT:    i32.const $push45=, 65535
5429 ; NO-SIMD128-FAST-NEXT:    i32.and $push5=, $10, $pop45
5430 ; NO-SIMD128-FAST-NEXT:    i32.lt_u $push7=, $pop6, $pop5
5431 ; NO-SIMD128-FAST-NEXT:    i32.select $push8=, $2, $10, $pop7
5432 ; NO-SIMD128-FAST-NEXT:    i32.store16 2($0), $pop8
5433 ; NO-SIMD128-FAST-NEXT:    i32.const $push44=, 65535
5434 ; NO-SIMD128-FAST-NEXT:    i32.and $push10=, $3, $pop44
5435 ; NO-SIMD128-FAST-NEXT:    i32.const $push43=, 65535
5436 ; NO-SIMD128-FAST-NEXT:    i32.and $push9=, $11, $pop43
5437 ; NO-SIMD128-FAST-NEXT:    i32.lt_u $push11=, $pop10, $pop9
5438 ; NO-SIMD128-FAST-NEXT:    i32.select $push12=, $3, $11, $pop11
5439 ; NO-SIMD128-FAST-NEXT:    i32.store16 4($0), $pop12
5440 ; NO-SIMD128-FAST-NEXT:    i32.const $push42=, 65535
5441 ; NO-SIMD128-FAST-NEXT:    i32.and $push14=, $4, $pop42
5442 ; NO-SIMD128-FAST-NEXT:    i32.const $push41=, 65535
5443 ; NO-SIMD128-FAST-NEXT:    i32.and $push13=, $12, $pop41
5444 ; NO-SIMD128-FAST-NEXT:    i32.lt_u $push15=, $pop14, $pop13
5445 ; NO-SIMD128-FAST-NEXT:    i32.select $push16=, $4, $12, $pop15
5446 ; NO-SIMD128-FAST-NEXT:    i32.store16 6($0), $pop16
5447 ; NO-SIMD128-FAST-NEXT:    i32.const $push40=, 65535
5448 ; NO-SIMD128-FAST-NEXT:    i32.and $push18=, $5, $pop40
5449 ; NO-SIMD128-FAST-NEXT:    i32.const $push39=, 65535
5450 ; NO-SIMD128-FAST-NEXT:    i32.and $push17=, $13, $pop39
5451 ; NO-SIMD128-FAST-NEXT:    i32.lt_u $push19=, $pop18, $pop17
5452 ; NO-SIMD128-FAST-NEXT:    i32.select $push20=, $5, $13, $pop19
5453 ; NO-SIMD128-FAST-NEXT:    i32.store16 8($0), $pop20
5454 ; NO-SIMD128-FAST-NEXT:    i32.const $push38=, 65535
5455 ; NO-SIMD128-FAST-NEXT:    i32.and $push22=, $6, $pop38
5456 ; NO-SIMD128-FAST-NEXT:    i32.const $push37=, 65535
5457 ; NO-SIMD128-FAST-NEXT:    i32.and $push21=, $14, $pop37
5458 ; NO-SIMD128-FAST-NEXT:    i32.lt_u $push23=, $pop22, $pop21
5459 ; NO-SIMD128-FAST-NEXT:    i32.select $push24=, $6, $14, $pop23
5460 ; NO-SIMD128-FAST-NEXT:    i32.store16 10($0), $pop24
5461 ; NO-SIMD128-FAST-NEXT:    i32.const $push36=, 65535
5462 ; NO-SIMD128-FAST-NEXT:    i32.and $push26=, $7, $pop36
5463 ; NO-SIMD128-FAST-NEXT:    i32.const $push35=, 65535
5464 ; NO-SIMD128-FAST-NEXT:    i32.and $push25=, $15, $pop35
5465 ; NO-SIMD128-FAST-NEXT:    i32.lt_u $push27=, $pop26, $pop25
5466 ; NO-SIMD128-FAST-NEXT:    i32.select $push28=, $7, $15, $pop27
5467 ; NO-SIMD128-FAST-NEXT:    i32.store16 12($0), $pop28
5468 ; NO-SIMD128-FAST-NEXT:    i32.const $push34=, 65535
5469 ; NO-SIMD128-FAST-NEXT:    i32.and $push30=, $8, $pop34
5470 ; NO-SIMD128-FAST-NEXT:    i32.const $push33=, 65535
5471 ; NO-SIMD128-FAST-NEXT:    i32.and $push29=, $16, $pop33
5472 ; NO-SIMD128-FAST-NEXT:    i32.lt_u $push31=, $pop30, $pop29
5473 ; NO-SIMD128-FAST-NEXT:    i32.select $push32=, $8, $16, $pop31
5474 ; NO-SIMD128-FAST-NEXT:    i32.store16 14($0), $pop32
5475 ; NO-SIMD128-FAST-NEXT:    return
5476   %c = icmp ult <8 x i16> %x, %y
5477   %a = select <8 x i1> %c, <8 x i16> %x, <8 x i16> %y
5478   ret <8 x i16> %a
5481 define <8 x i16> @max_s_v8i16(<8 x i16> %x, <8 x i16> %y) {
5482 ; SIMD128-LABEL: max_s_v8i16:
5483 ; SIMD128:         .functype max_s_v8i16 (v128, v128) -> (v128)
5484 ; SIMD128-NEXT:  # %bb.0:
5485 ; SIMD128-NEXT:    i16x8.max_s $push0=, $0, $1
5486 ; SIMD128-NEXT:    return $pop0
5488 ; SIMD128-FAST-LABEL: max_s_v8i16:
5489 ; SIMD128-FAST:         .functype max_s_v8i16 (v128, v128) -> (v128)
5490 ; SIMD128-FAST-NEXT:  # %bb.0:
5491 ; SIMD128-FAST-NEXT:    i16x8.max_s $push0=, $0, $1
5492 ; SIMD128-FAST-NEXT:    return $pop0
5494 ; NO-SIMD128-LABEL: max_s_v8i16:
5495 ; NO-SIMD128:         .functype max_s_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
5496 ; NO-SIMD128-NEXT:  # %bb.0:
5497 ; NO-SIMD128-NEXT:    i32.extend16_s $push1=, $8
5498 ; NO-SIMD128-NEXT:    i32.extend16_s $push0=, $16
5499 ; NO-SIMD128-NEXT:    i32.gt_s $push2=, $pop1, $pop0
5500 ; NO-SIMD128-NEXT:    i32.select $push3=, $8, $16, $pop2
5501 ; NO-SIMD128-NEXT:    i32.store16 14($0), $pop3
5502 ; NO-SIMD128-NEXT:    i32.extend16_s $push5=, $7
5503 ; NO-SIMD128-NEXT:    i32.extend16_s $push4=, $15
5504 ; NO-SIMD128-NEXT:    i32.gt_s $push6=, $pop5, $pop4
5505 ; NO-SIMD128-NEXT:    i32.select $push7=, $7, $15, $pop6
5506 ; NO-SIMD128-NEXT:    i32.store16 12($0), $pop7
5507 ; NO-SIMD128-NEXT:    i32.extend16_s $push9=, $6
5508 ; NO-SIMD128-NEXT:    i32.extend16_s $push8=, $14
5509 ; NO-SIMD128-NEXT:    i32.gt_s $push10=, $pop9, $pop8
5510 ; NO-SIMD128-NEXT:    i32.select $push11=, $6, $14, $pop10
5511 ; NO-SIMD128-NEXT:    i32.store16 10($0), $pop11
5512 ; NO-SIMD128-NEXT:    i32.extend16_s $push13=, $5
5513 ; NO-SIMD128-NEXT:    i32.extend16_s $push12=, $13
5514 ; NO-SIMD128-NEXT:    i32.gt_s $push14=, $pop13, $pop12
5515 ; NO-SIMD128-NEXT:    i32.select $push15=, $5, $13, $pop14
5516 ; NO-SIMD128-NEXT:    i32.store16 8($0), $pop15
5517 ; NO-SIMD128-NEXT:    i32.extend16_s $push17=, $4
5518 ; NO-SIMD128-NEXT:    i32.extend16_s $push16=, $12
5519 ; NO-SIMD128-NEXT:    i32.gt_s $push18=, $pop17, $pop16
5520 ; NO-SIMD128-NEXT:    i32.select $push19=, $4, $12, $pop18
5521 ; NO-SIMD128-NEXT:    i32.store16 6($0), $pop19
5522 ; NO-SIMD128-NEXT:    i32.extend16_s $push21=, $3
5523 ; NO-SIMD128-NEXT:    i32.extend16_s $push20=, $11
5524 ; NO-SIMD128-NEXT:    i32.gt_s $push22=, $pop21, $pop20
5525 ; NO-SIMD128-NEXT:    i32.select $push23=, $3, $11, $pop22
5526 ; NO-SIMD128-NEXT:    i32.store16 4($0), $pop23
5527 ; NO-SIMD128-NEXT:    i32.extend16_s $push25=, $2
5528 ; NO-SIMD128-NEXT:    i32.extend16_s $push24=, $10
5529 ; NO-SIMD128-NEXT:    i32.gt_s $push26=, $pop25, $pop24
5530 ; NO-SIMD128-NEXT:    i32.select $push27=, $2, $10, $pop26
5531 ; NO-SIMD128-NEXT:    i32.store16 2($0), $pop27
5532 ; NO-SIMD128-NEXT:    i32.extend16_s $push29=, $1
5533 ; NO-SIMD128-NEXT:    i32.extend16_s $push28=, $9
5534 ; NO-SIMD128-NEXT:    i32.gt_s $push30=, $pop29, $pop28
5535 ; NO-SIMD128-NEXT:    i32.select $push31=, $1, $9, $pop30
5536 ; NO-SIMD128-NEXT:    i32.store16 0($0), $pop31
5537 ; NO-SIMD128-NEXT:    return
5539 ; NO-SIMD128-FAST-LABEL: max_s_v8i16:
5540 ; NO-SIMD128-FAST:         .functype max_s_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
5541 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
5542 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push1=, $1
5543 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push0=, $9
5544 ; NO-SIMD128-FAST-NEXT:    i32.gt_s $push2=, $pop1, $pop0
5545 ; NO-SIMD128-FAST-NEXT:    i32.select $push3=, $1, $9, $pop2
5546 ; NO-SIMD128-FAST-NEXT:    i32.store16 0($0), $pop3
5547 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push5=, $2
5548 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push4=, $10
5549 ; NO-SIMD128-FAST-NEXT:    i32.gt_s $push6=, $pop5, $pop4
5550 ; NO-SIMD128-FAST-NEXT:    i32.select $push7=, $2, $10, $pop6
5551 ; NO-SIMD128-FAST-NEXT:    i32.store16 2($0), $pop7
5552 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push9=, $3
5553 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push8=, $11
5554 ; NO-SIMD128-FAST-NEXT:    i32.gt_s $push10=, $pop9, $pop8
5555 ; NO-SIMD128-FAST-NEXT:    i32.select $push11=, $3, $11, $pop10
5556 ; NO-SIMD128-FAST-NEXT:    i32.store16 4($0), $pop11
5557 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push13=, $4
5558 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push12=, $12
5559 ; NO-SIMD128-FAST-NEXT:    i32.gt_s $push14=, $pop13, $pop12
5560 ; NO-SIMD128-FAST-NEXT:    i32.select $push15=, $4, $12, $pop14
5561 ; NO-SIMD128-FAST-NEXT:    i32.store16 6($0), $pop15
5562 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push17=, $5
5563 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push16=, $13
5564 ; NO-SIMD128-FAST-NEXT:    i32.gt_s $push18=, $pop17, $pop16
5565 ; NO-SIMD128-FAST-NEXT:    i32.select $push19=, $5, $13, $pop18
5566 ; NO-SIMD128-FAST-NEXT:    i32.store16 8($0), $pop19
5567 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push21=, $6
5568 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push20=, $14
5569 ; NO-SIMD128-FAST-NEXT:    i32.gt_s $push22=, $pop21, $pop20
5570 ; NO-SIMD128-FAST-NEXT:    i32.select $push23=, $6, $14, $pop22
5571 ; NO-SIMD128-FAST-NEXT:    i32.store16 10($0), $pop23
5572 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push25=, $7
5573 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push24=, $15
5574 ; NO-SIMD128-FAST-NEXT:    i32.gt_s $push26=, $pop25, $pop24
5575 ; NO-SIMD128-FAST-NEXT:    i32.select $push27=, $7, $15, $pop26
5576 ; NO-SIMD128-FAST-NEXT:    i32.store16 12($0), $pop27
5577 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push29=, $8
5578 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push28=, $16
5579 ; NO-SIMD128-FAST-NEXT:    i32.gt_s $push30=, $pop29, $pop28
5580 ; NO-SIMD128-FAST-NEXT:    i32.select $push31=, $8, $16, $pop30
5581 ; NO-SIMD128-FAST-NEXT:    i32.store16 14($0), $pop31
5582 ; NO-SIMD128-FAST-NEXT:    return
5583   %c = icmp sgt <8 x i16> %x, %y
5584   %a = select <8 x i1> %c, <8 x i16> %x, <8 x i16> %y
5585   ret <8 x i16> %a
5588 define <8 x i16> @max_u_v8i16(<8 x i16> %x, <8 x i16> %y) {
5589 ; SIMD128-LABEL: max_u_v8i16:
5590 ; SIMD128:         .functype max_u_v8i16 (v128, v128) -> (v128)
5591 ; SIMD128-NEXT:  # %bb.0:
5592 ; SIMD128-NEXT:    i16x8.max_u $push0=, $0, $1
5593 ; SIMD128-NEXT:    return $pop0
5595 ; SIMD128-FAST-LABEL: max_u_v8i16:
5596 ; SIMD128-FAST:         .functype max_u_v8i16 (v128, v128) -> (v128)
5597 ; SIMD128-FAST-NEXT:  # %bb.0:
5598 ; SIMD128-FAST-NEXT:    i16x8.max_u $push0=, $0, $1
5599 ; SIMD128-FAST-NEXT:    return $pop0
5601 ; NO-SIMD128-LABEL: max_u_v8i16:
5602 ; NO-SIMD128:         .functype max_u_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
5603 ; NO-SIMD128-NEXT:  # %bb.0:
5604 ; NO-SIMD128-NEXT:    i32.const $push0=, 65535
5605 ; NO-SIMD128-NEXT:    i32.and $push2=, $8, $pop0
5606 ; NO-SIMD128-NEXT:    i32.const $push47=, 65535
5607 ; NO-SIMD128-NEXT:    i32.and $push1=, $16, $pop47
5608 ; NO-SIMD128-NEXT:    i32.gt_u $push3=, $pop2, $pop1
5609 ; NO-SIMD128-NEXT:    i32.select $push4=, $8, $16, $pop3
5610 ; NO-SIMD128-NEXT:    i32.store16 14($0), $pop4
5611 ; NO-SIMD128-NEXT:    i32.const $push46=, 65535
5612 ; NO-SIMD128-NEXT:    i32.and $push6=, $7, $pop46
5613 ; NO-SIMD128-NEXT:    i32.const $push45=, 65535
5614 ; NO-SIMD128-NEXT:    i32.and $push5=, $15, $pop45
5615 ; NO-SIMD128-NEXT:    i32.gt_u $push7=, $pop6, $pop5
5616 ; NO-SIMD128-NEXT:    i32.select $push8=, $7, $15, $pop7
5617 ; NO-SIMD128-NEXT:    i32.store16 12($0), $pop8
5618 ; NO-SIMD128-NEXT:    i32.const $push44=, 65535
5619 ; NO-SIMD128-NEXT:    i32.and $push10=, $6, $pop44
5620 ; NO-SIMD128-NEXT:    i32.const $push43=, 65535
5621 ; NO-SIMD128-NEXT:    i32.and $push9=, $14, $pop43
5622 ; NO-SIMD128-NEXT:    i32.gt_u $push11=, $pop10, $pop9
5623 ; NO-SIMD128-NEXT:    i32.select $push12=, $6, $14, $pop11
5624 ; NO-SIMD128-NEXT:    i32.store16 10($0), $pop12
5625 ; NO-SIMD128-NEXT:    i32.const $push42=, 65535
5626 ; NO-SIMD128-NEXT:    i32.and $push14=, $5, $pop42
5627 ; NO-SIMD128-NEXT:    i32.const $push41=, 65535
5628 ; NO-SIMD128-NEXT:    i32.and $push13=, $13, $pop41
5629 ; NO-SIMD128-NEXT:    i32.gt_u $push15=, $pop14, $pop13
5630 ; NO-SIMD128-NEXT:    i32.select $push16=, $5, $13, $pop15
5631 ; NO-SIMD128-NEXT:    i32.store16 8($0), $pop16
5632 ; NO-SIMD128-NEXT:    i32.const $push40=, 65535
5633 ; NO-SIMD128-NEXT:    i32.and $push18=, $4, $pop40
5634 ; NO-SIMD128-NEXT:    i32.const $push39=, 65535
5635 ; NO-SIMD128-NEXT:    i32.and $push17=, $12, $pop39
5636 ; NO-SIMD128-NEXT:    i32.gt_u $push19=, $pop18, $pop17
5637 ; NO-SIMD128-NEXT:    i32.select $push20=, $4, $12, $pop19
5638 ; NO-SIMD128-NEXT:    i32.store16 6($0), $pop20
5639 ; NO-SIMD128-NEXT:    i32.const $push38=, 65535
5640 ; NO-SIMD128-NEXT:    i32.and $push22=, $3, $pop38
5641 ; NO-SIMD128-NEXT:    i32.const $push37=, 65535
5642 ; NO-SIMD128-NEXT:    i32.and $push21=, $11, $pop37
5643 ; NO-SIMD128-NEXT:    i32.gt_u $push23=, $pop22, $pop21
5644 ; NO-SIMD128-NEXT:    i32.select $push24=, $3, $11, $pop23
5645 ; NO-SIMD128-NEXT:    i32.store16 4($0), $pop24
5646 ; NO-SIMD128-NEXT:    i32.const $push36=, 65535
5647 ; NO-SIMD128-NEXT:    i32.and $push26=, $2, $pop36
5648 ; NO-SIMD128-NEXT:    i32.const $push35=, 65535
5649 ; NO-SIMD128-NEXT:    i32.and $push25=, $10, $pop35
5650 ; NO-SIMD128-NEXT:    i32.gt_u $push27=, $pop26, $pop25
5651 ; NO-SIMD128-NEXT:    i32.select $push28=, $2, $10, $pop27
5652 ; NO-SIMD128-NEXT:    i32.store16 2($0), $pop28
5653 ; NO-SIMD128-NEXT:    i32.const $push34=, 65535
5654 ; NO-SIMD128-NEXT:    i32.and $push30=, $1, $pop34
5655 ; NO-SIMD128-NEXT:    i32.const $push33=, 65535
5656 ; NO-SIMD128-NEXT:    i32.and $push29=, $9, $pop33
5657 ; NO-SIMD128-NEXT:    i32.gt_u $push31=, $pop30, $pop29
5658 ; NO-SIMD128-NEXT:    i32.select $push32=, $1, $9, $pop31
5659 ; NO-SIMD128-NEXT:    i32.store16 0($0), $pop32
5660 ; NO-SIMD128-NEXT:    return
5662 ; NO-SIMD128-FAST-LABEL: max_u_v8i16:
5663 ; NO-SIMD128-FAST:         .functype max_u_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
5664 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
5665 ; NO-SIMD128-FAST-NEXT:    i32.const $push0=, 65535
5666 ; NO-SIMD128-FAST-NEXT:    i32.and $push2=, $1, $pop0
5667 ; NO-SIMD128-FAST-NEXT:    i32.const $push47=, 65535
5668 ; NO-SIMD128-FAST-NEXT:    i32.and $push1=, $9, $pop47
5669 ; NO-SIMD128-FAST-NEXT:    i32.gt_u $push3=, $pop2, $pop1
5670 ; NO-SIMD128-FAST-NEXT:    i32.select $push4=, $1, $9, $pop3
5671 ; NO-SIMD128-FAST-NEXT:    i32.store16 0($0), $pop4
5672 ; NO-SIMD128-FAST-NEXT:    i32.const $push46=, 65535
5673 ; NO-SIMD128-FAST-NEXT:    i32.and $push6=, $2, $pop46
5674 ; NO-SIMD128-FAST-NEXT:    i32.const $push45=, 65535
5675 ; NO-SIMD128-FAST-NEXT:    i32.and $push5=, $10, $pop45
5676 ; NO-SIMD128-FAST-NEXT:    i32.gt_u $push7=, $pop6, $pop5
5677 ; NO-SIMD128-FAST-NEXT:    i32.select $push8=, $2, $10, $pop7
5678 ; NO-SIMD128-FAST-NEXT:    i32.store16 2($0), $pop8
5679 ; NO-SIMD128-FAST-NEXT:    i32.const $push44=, 65535
5680 ; NO-SIMD128-FAST-NEXT:    i32.and $push10=, $3, $pop44
5681 ; NO-SIMD128-FAST-NEXT:    i32.const $push43=, 65535
5682 ; NO-SIMD128-FAST-NEXT:    i32.and $push9=, $11, $pop43
5683 ; NO-SIMD128-FAST-NEXT:    i32.gt_u $push11=, $pop10, $pop9
5684 ; NO-SIMD128-FAST-NEXT:    i32.select $push12=, $3, $11, $pop11
5685 ; NO-SIMD128-FAST-NEXT:    i32.store16 4($0), $pop12
5686 ; NO-SIMD128-FAST-NEXT:    i32.const $push42=, 65535
5687 ; NO-SIMD128-FAST-NEXT:    i32.and $push14=, $4, $pop42
5688 ; NO-SIMD128-FAST-NEXT:    i32.const $push41=, 65535
5689 ; NO-SIMD128-FAST-NEXT:    i32.and $push13=, $12, $pop41
5690 ; NO-SIMD128-FAST-NEXT:    i32.gt_u $push15=, $pop14, $pop13
5691 ; NO-SIMD128-FAST-NEXT:    i32.select $push16=, $4, $12, $pop15
5692 ; NO-SIMD128-FAST-NEXT:    i32.store16 6($0), $pop16
5693 ; NO-SIMD128-FAST-NEXT:    i32.const $push40=, 65535
5694 ; NO-SIMD128-FAST-NEXT:    i32.and $push18=, $5, $pop40
5695 ; NO-SIMD128-FAST-NEXT:    i32.const $push39=, 65535
5696 ; NO-SIMD128-FAST-NEXT:    i32.and $push17=, $13, $pop39
5697 ; NO-SIMD128-FAST-NEXT:    i32.gt_u $push19=, $pop18, $pop17
5698 ; NO-SIMD128-FAST-NEXT:    i32.select $push20=, $5, $13, $pop19
5699 ; NO-SIMD128-FAST-NEXT:    i32.store16 8($0), $pop20
5700 ; NO-SIMD128-FAST-NEXT:    i32.const $push38=, 65535
5701 ; NO-SIMD128-FAST-NEXT:    i32.and $push22=, $6, $pop38
5702 ; NO-SIMD128-FAST-NEXT:    i32.const $push37=, 65535
5703 ; NO-SIMD128-FAST-NEXT:    i32.and $push21=, $14, $pop37
5704 ; NO-SIMD128-FAST-NEXT:    i32.gt_u $push23=, $pop22, $pop21
5705 ; NO-SIMD128-FAST-NEXT:    i32.select $push24=, $6, $14, $pop23
5706 ; NO-SIMD128-FAST-NEXT:    i32.store16 10($0), $pop24
5707 ; NO-SIMD128-FAST-NEXT:    i32.const $push36=, 65535
5708 ; NO-SIMD128-FAST-NEXT:    i32.and $push26=, $7, $pop36
5709 ; NO-SIMD128-FAST-NEXT:    i32.const $push35=, 65535
5710 ; NO-SIMD128-FAST-NEXT:    i32.and $push25=, $15, $pop35
5711 ; NO-SIMD128-FAST-NEXT:    i32.gt_u $push27=, $pop26, $pop25
5712 ; NO-SIMD128-FAST-NEXT:    i32.select $push28=, $7, $15, $pop27
5713 ; NO-SIMD128-FAST-NEXT:    i32.store16 12($0), $pop28
5714 ; NO-SIMD128-FAST-NEXT:    i32.const $push34=, 65535
5715 ; NO-SIMD128-FAST-NEXT:    i32.and $push30=, $8, $pop34
5716 ; NO-SIMD128-FAST-NEXT:    i32.const $push33=, 65535
5717 ; NO-SIMD128-FAST-NEXT:    i32.and $push29=, $16, $pop33
5718 ; NO-SIMD128-FAST-NEXT:    i32.gt_u $push31=, $pop30, $pop29
5719 ; NO-SIMD128-FAST-NEXT:    i32.select $push32=, $8, $16, $pop31
5720 ; NO-SIMD128-FAST-NEXT:    i32.store16 14($0), $pop32
5721 ; NO-SIMD128-FAST-NEXT:    return
5722   %c = icmp ugt <8 x i16> %x, %y
5723   %a = select <8 x i1> %c, <8 x i16> %x, <8 x i16> %y
5724   ret <8 x i16> %a
5727 define <8 x i16> @avgr_u_v8i16(<8 x i16> %x, <8 x i16> %y) {
5728 ; SIMD128-LABEL: avgr_u_v8i16:
5729 ; SIMD128:         .functype avgr_u_v8i16 (v128, v128) -> (v128)
5730 ; SIMD128-NEXT:  # %bb.0:
5731 ; SIMD128-NEXT:    i16x8.avgr_u $push0=, $0, $1
5732 ; SIMD128-NEXT:    return $pop0
5734 ; SIMD128-FAST-LABEL: avgr_u_v8i16:
5735 ; SIMD128-FAST:         .functype avgr_u_v8i16 (v128, v128) -> (v128)
5736 ; SIMD128-FAST-NEXT:  # %bb.0:
5737 ; SIMD128-FAST-NEXT:    i16x8.avgr_u $push0=, $0, $1
5738 ; SIMD128-FAST-NEXT:    return $pop0
5740 ; NO-SIMD128-LABEL: avgr_u_v8i16:
5741 ; NO-SIMD128:         .functype avgr_u_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
5742 ; NO-SIMD128-NEXT:  # %bb.0:
5743 ; NO-SIMD128-NEXT:    i32.add $push0=, $8, $16
5744 ; NO-SIMD128-NEXT:    i32.const $push1=, 1
5745 ; NO-SIMD128-NEXT:    i32.add $push2=, $pop0, $pop1
5746 ; NO-SIMD128-NEXT:    i32.const $push3=, 65534
5747 ; NO-SIMD128-NEXT:    i32.and $push4=, $pop2, $pop3
5748 ; NO-SIMD128-NEXT:    i32.const $push55=, 1
5749 ; NO-SIMD128-NEXT:    i32.shr_u $push5=, $pop4, $pop55
5750 ; NO-SIMD128-NEXT:    i32.store16 14($0), $pop5
5751 ; NO-SIMD128-NEXT:    i32.add $push6=, $7, $15
5752 ; NO-SIMD128-NEXT:    i32.const $push54=, 1
5753 ; NO-SIMD128-NEXT:    i32.add $push7=, $pop6, $pop54
5754 ; NO-SIMD128-NEXT:    i32.const $push53=, 65534
5755 ; NO-SIMD128-NEXT:    i32.and $push8=, $pop7, $pop53
5756 ; NO-SIMD128-NEXT:    i32.const $push52=, 1
5757 ; NO-SIMD128-NEXT:    i32.shr_u $push9=, $pop8, $pop52
5758 ; NO-SIMD128-NEXT:    i32.store16 12($0), $pop9
5759 ; NO-SIMD128-NEXT:    i32.add $push10=, $6, $14
5760 ; NO-SIMD128-NEXT:    i32.const $push51=, 1
5761 ; NO-SIMD128-NEXT:    i32.add $push11=, $pop10, $pop51
5762 ; NO-SIMD128-NEXT:    i32.const $push50=, 65534
5763 ; NO-SIMD128-NEXT:    i32.and $push12=, $pop11, $pop50
5764 ; NO-SIMD128-NEXT:    i32.const $push49=, 1
5765 ; NO-SIMD128-NEXT:    i32.shr_u $push13=, $pop12, $pop49
5766 ; NO-SIMD128-NEXT:    i32.store16 10($0), $pop13
5767 ; NO-SIMD128-NEXT:    i32.add $push14=, $5, $13
5768 ; NO-SIMD128-NEXT:    i32.const $push48=, 1
5769 ; NO-SIMD128-NEXT:    i32.add $push15=, $pop14, $pop48
5770 ; NO-SIMD128-NEXT:    i32.const $push47=, 65534
5771 ; NO-SIMD128-NEXT:    i32.and $push16=, $pop15, $pop47
5772 ; NO-SIMD128-NEXT:    i32.const $push46=, 1
5773 ; NO-SIMD128-NEXT:    i32.shr_u $push17=, $pop16, $pop46
5774 ; NO-SIMD128-NEXT:    i32.store16 8($0), $pop17
5775 ; NO-SIMD128-NEXT:    i32.add $push18=, $4, $12
5776 ; NO-SIMD128-NEXT:    i32.const $push45=, 1
5777 ; NO-SIMD128-NEXT:    i32.add $push19=, $pop18, $pop45
5778 ; NO-SIMD128-NEXT:    i32.const $push44=, 65534
5779 ; NO-SIMD128-NEXT:    i32.and $push20=, $pop19, $pop44
5780 ; NO-SIMD128-NEXT:    i32.const $push43=, 1
5781 ; NO-SIMD128-NEXT:    i32.shr_u $push21=, $pop20, $pop43
5782 ; NO-SIMD128-NEXT:    i32.store16 6($0), $pop21
5783 ; NO-SIMD128-NEXT:    i32.add $push22=, $3, $11
5784 ; NO-SIMD128-NEXT:    i32.const $push42=, 1
5785 ; NO-SIMD128-NEXT:    i32.add $push23=, $pop22, $pop42
5786 ; NO-SIMD128-NEXT:    i32.const $push41=, 65534
5787 ; NO-SIMD128-NEXT:    i32.and $push24=, $pop23, $pop41
5788 ; NO-SIMD128-NEXT:    i32.const $push40=, 1
5789 ; NO-SIMD128-NEXT:    i32.shr_u $push25=, $pop24, $pop40
5790 ; NO-SIMD128-NEXT:    i32.store16 4($0), $pop25
5791 ; NO-SIMD128-NEXT:    i32.add $push26=, $2, $10
5792 ; NO-SIMD128-NEXT:    i32.const $push39=, 1
5793 ; NO-SIMD128-NEXT:    i32.add $push27=, $pop26, $pop39
5794 ; NO-SIMD128-NEXT:    i32.const $push38=, 65534
5795 ; NO-SIMD128-NEXT:    i32.and $push28=, $pop27, $pop38
5796 ; NO-SIMD128-NEXT:    i32.const $push37=, 1
5797 ; NO-SIMD128-NEXT:    i32.shr_u $push29=, $pop28, $pop37
5798 ; NO-SIMD128-NEXT:    i32.store16 2($0), $pop29
5799 ; NO-SIMD128-NEXT:    i32.add $push30=, $1, $9
5800 ; NO-SIMD128-NEXT:    i32.const $push36=, 1
5801 ; NO-SIMD128-NEXT:    i32.add $push31=, $pop30, $pop36
5802 ; NO-SIMD128-NEXT:    i32.const $push35=, 65534
5803 ; NO-SIMD128-NEXT:    i32.and $push32=, $pop31, $pop35
5804 ; NO-SIMD128-NEXT:    i32.const $push34=, 1
5805 ; NO-SIMD128-NEXT:    i32.shr_u $push33=, $pop32, $pop34
5806 ; NO-SIMD128-NEXT:    i32.store16 0($0), $pop33
5807 ; NO-SIMD128-NEXT:    return
5809 ; NO-SIMD128-FAST-LABEL: avgr_u_v8i16:
5810 ; NO-SIMD128-FAST:         .functype avgr_u_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
5811 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
5812 ; NO-SIMD128-FAST-NEXT:    i32.add $push0=, $1, $9
5813 ; NO-SIMD128-FAST-NEXT:    i32.const $push1=, 1
5814 ; NO-SIMD128-FAST-NEXT:    i32.add $push2=, $pop0, $pop1
5815 ; NO-SIMD128-FAST-NEXT:    i32.const $push3=, 65534
5816 ; NO-SIMD128-FAST-NEXT:    i32.and $push4=, $pop2, $pop3
5817 ; NO-SIMD128-FAST-NEXT:    i32.const $push55=, 1
5818 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push5=, $pop4, $pop55
5819 ; NO-SIMD128-FAST-NEXT:    i32.store16 0($0), $pop5
5820 ; NO-SIMD128-FAST-NEXT:    i32.add $push6=, $2, $10
5821 ; NO-SIMD128-FAST-NEXT:    i32.const $push54=, 1
5822 ; NO-SIMD128-FAST-NEXT:    i32.add $push7=, $pop6, $pop54
5823 ; NO-SIMD128-FAST-NEXT:    i32.const $push53=, 65534
5824 ; NO-SIMD128-FAST-NEXT:    i32.and $push8=, $pop7, $pop53
5825 ; NO-SIMD128-FAST-NEXT:    i32.const $push52=, 1
5826 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push9=, $pop8, $pop52
5827 ; NO-SIMD128-FAST-NEXT:    i32.store16 2($0), $pop9
5828 ; NO-SIMD128-FAST-NEXT:    i32.add $push10=, $3, $11
5829 ; NO-SIMD128-FAST-NEXT:    i32.const $push51=, 1
5830 ; NO-SIMD128-FAST-NEXT:    i32.add $push11=, $pop10, $pop51
5831 ; NO-SIMD128-FAST-NEXT:    i32.const $push50=, 65534
5832 ; NO-SIMD128-FAST-NEXT:    i32.and $push12=, $pop11, $pop50
5833 ; NO-SIMD128-FAST-NEXT:    i32.const $push49=, 1
5834 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push13=, $pop12, $pop49
5835 ; NO-SIMD128-FAST-NEXT:    i32.store16 4($0), $pop13
5836 ; NO-SIMD128-FAST-NEXT:    i32.add $push14=, $4, $12
5837 ; NO-SIMD128-FAST-NEXT:    i32.const $push48=, 1
5838 ; NO-SIMD128-FAST-NEXT:    i32.add $push15=, $pop14, $pop48
5839 ; NO-SIMD128-FAST-NEXT:    i32.const $push47=, 65534
5840 ; NO-SIMD128-FAST-NEXT:    i32.and $push16=, $pop15, $pop47
5841 ; NO-SIMD128-FAST-NEXT:    i32.const $push46=, 1
5842 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push17=, $pop16, $pop46
5843 ; NO-SIMD128-FAST-NEXT:    i32.store16 6($0), $pop17
5844 ; NO-SIMD128-FAST-NEXT:    i32.add $push18=, $5, $13
5845 ; NO-SIMD128-FAST-NEXT:    i32.const $push45=, 1
5846 ; NO-SIMD128-FAST-NEXT:    i32.add $push19=, $pop18, $pop45
5847 ; NO-SIMD128-FAST-NEXT:    i32.const $push44=, 65534
5848 ; NO-SIMD128-FAST-NEXT:    i32.and $push20=, $pop19, $pop44
5849 ; NO-SIMD128-FAST-NEXT:    i32.const $push43=, 1
5850 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push21=, $pop20, $pop43
5851 ; NO-SIMD128-FAST-NEXT:    i32.store16 8($0), $pop21
5852 ; NO-SIMD128-FAST-NEXT:    i32.add $push22=, $6, $14
5853 ; NO-SIMD128-FAST-NEXT:    i32.const $push42=, 1
5854 ; NO-SIMD128-FAST-NEXT:    i32.add $push23=, $pop22, $pop42
5855 ; NO-SIMD128-FAST-NEXT:    i32.const $push41=, 65534
5856 ; NO-SIMD128-FAST-NEXT:    i32.and $push24=, $pop23, $pop41
5857 ; NO-SIMD128-FAST-NEXT:    i32.const $push40=, 1
5858 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push25=, $pop24, $pop40
5859 ; NO-SIMD128-FAST-NEXT:    i32.store16 10($0), $pop25
5860 ; NO-SIMD128-FAST-NEXT:    i32.add $push26=, $7, $15
5861 ; NO-SIMD128-FAST-NEXT:    i32.const $push39=, 1
5862 ; NO-SIMD128-FAST-NEXT:    i32.add $push27=, $pop26, $pop39
5863 ; NO-SIMD128-FAST-NEXT:    i32.const $push38=, 65534
5864 ; NO-SIMD128-FAST-NEXT:    i32.and $push28=, $pop27, $pop38
5865 ; NO-SIMD128-FAST-NEXT:    i32.const $push37=, 1
5866 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push29=, $pop28, $pop37
5867 ; NO-SIMD128-FAST-NEXT:    i32.store16 12($0), $pop29
5868 ; NO-SIMD128-FAST-NEXT:    i32.add $push30=, $8, $16
5869 ; NO-SIMD128-FAST-NEXT:    i32.const $push36=, 1
5870 ; NO-SIMD128-FAST-NEXT:    i32.add $push31=, $pop30, $pop36
5871 ; NO-SIMD128-FAST-NEXT:    i32.const $push35=, 65534
5872 ; NO-SIMD128-FAST-NEXT:    i32.and $push32=, $pop31, $pop35
5873 ; NO-SIMD128-FAST-NEXT:    i32.const $push34=, 1
5874 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push33=, $pop32, $pop34
5875 ; NO-SIMD128-FAST-NEXT:    i32.store16 14($0), $pop33
5876 ; NO-SIMD128-FAST-NEXT:    return
5877   %a = add nuw <8 x i16> %x, %y
5878   %b = add nuw <8 x i16> %a, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
5879   %c = udiv <8 x i16> %b, <i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2>
5880   ret <8 x i16> %c
5883 define <8 x i16> @avgr_u_v8i16_wrap(<8 x i16> %x, <8 x i16> %y) {
5884 ; SIMD128-LABEL: avgr_u_v8i16_wrap:
5885 ; SIMD128:         .functype avgr_u_v8i16_wrap (v128, v128) -> (v128)
5886 ; SIMD128-NEXT:  # %bb.0:
5887 ; SIMD128-NEXT:    i16x8.add $push0=, $0, $1
5888 ; SIMD128-NEXT:    v128.const $push1=, 1, 1, 1, 1, 1, 1, 1, 1
5889 ; SIMD128-NEXT:    i16x8.add $push2=, $pop0, $pop1
5890 ; SIMD128-NEXT:    i32.const $push3=, 1
5891 ; SIMD128-NEXT:    i16x8.shr_u $push4=, $pop2, $pop3
5892 ; SIMD128-NEXT:    return $pop4
5894 ; SIMD128-FAST-LABEL: avgr_u_v8i16_wrap:
5895 ; SIMD128-FAST:         .functype avgr_u_v8i16_wrap (v128, v128) -> (v128)
5896 ; SIMD128-FAST-NEXT:  # %bb.0:
5897 ; SIMD128-FAST-NEXT:    i16x8.add $push2=, $0, $1
5898 ; SIMD128-FAST-NEXT:    v128.const $push3=, 1, 1, 1, 1, 1, 1, 1, 1
5899 ; SIMD128-FAST-NEXT:    i16x8.add $push1=, $pop2, $pop3
5900 ; SIMD128-FAST-NEXT:    i32.const $push4=, 1
5901 ; SIMD128-FAST-NEXT:    i16x8.shr_u $push0=, $pop1, $pop4
5902 ; SIMD128-FAST-NEXT:    return $pop0
5904 ; NO-SIMD128-LABEL: avgr_u_v8i16_wrap:
5905 ; NO-SIMD128:         .functype avgr_u_v8i16_wrap (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
5906 ; NO-SIMD128-NEXT:  # %bb.0:
5907 ; NO-SIMD128-NEXT:    i32.add $push0=, $8, $16
5908 ; NO-SIMD128-NEXT:    i32.const $push1=, 1
5909 ; NO-SIMD128-NEXT:    i32.add $push2=, $pop0, $pop1
5910 ; NO-SIMD128-NEXT:    i32.const $push3=, 65534
5911 ; NO-SIMD128-NEXT:    i32.and $push4=, $pop2, $pop3
5912 ; NO-SIMD128-NEXT:    i32.const $push55=, 1
5913 ; NO-SIMD128-NEXT:    i32.shr_u $push5=, $pop4, $pop55
5914 ; NO-SIMD128-NEXT:    i32.store16 14($0), $pop5
5915 ; NO-SIMD128-NEXT:    i32.add $push6=, $7, $15
5916 ; NO-SIMD128-NEXT:    i32.const $push54=, 1
5917 ; NO-SIMD128-NEXT:    i32.add $push7=, $pop6, $pop54
5918 ; NO-SIMD128-NEXT:    i32.const $push53=, 65534
5919 ; NO-SIMD128-NEXT:    i32.and $push8=, $pop7, $pop53
5920 ; NO-SIMD128-NEXT:    i32.const $push52=, 1
5921 ; NO-SIMD128-NEXT:    i32.shr_u $push9=, $pop8, $pop52
5922 ; NO-SIMD128-NEXT:    i32.store16 12($0), $pop9
5923 ; NO-SIMD128-NEXT:    i32.add $push10=, $6, $14
5924 ; NO-SIMD128-NEXT:    i32.const $push51=, 1
5925 ; NO-SIMD128-NEXT:    i32.add $push11=, $pop10, $pop51
5926 ; NO-SIMD128-NEXT:    i32.const $push50=, 65534
5927 ; NO-SIMD128-NEXT:    i32.and $push12=, $pop11, $pop50
5928 ; NO-SIMD128-NEXT:    i32.const $push49=, 1
5929 ; NO-SIMD128-NEXT:    i32.shr_u $push13=, $pop12, $pop49
5930 ; NO-SIMD128-NEXT:    i32.store16 10($0), $pop13
5931 ; NO-SIMD128-NEXT:    i32.add $push14=, $5, $13
5932 ; NO-SIMD128-NEXT:    i32.const $push48=, 1
5933 ; NO-SIMD128-NEXT:    i32.add $push15=, $pop14, $pop48
5934 ; NO-SIMD128-NEXT:    i32.const $push47=, 65534
5935 ; NO-SIMD128-NEXT:    i32.and $push16=, $pop15, $pop47
5936 ; NO-SIMD128-NEXT:    i32.const $push46=, 1
5937 ; NO-SIMD128-NEXT:    i32.shr_u $push17=, $pop16, $pop46
5938 ; NO-SIMD128-NEXT:    i32.store16 8($0), $pop17
5939 ; NO-SIMD128-NEXT:    i32.add $push18=, $4, $12
5940 ; NO-SIMD128-NEXT:    i32.const $push45=, 1
5941 ; NO-SIMD128-NEXT:    i32.add $push19=, $pop18, $pop45
5942 ; NO-SIMD128-NEXT:    i32.const $push44=, 65534
5943 ; NO-SIMD128-NEXT:    i32.and $push20=, $pop19, $pop44
5944 ; NO-SIMD128-NEXT:    i32.const $push43=, 1
5945 ; NO-SIMD128-NEXT:    i32.shr_u $push21=, $pop20, $pop43
5946 ; NO-SIMD128-NEXT:    i32.store16 6($0), $pop21
5947 ; NO-SIMD128-NEXT:    i32.add $push22=, $3, $11
5948 ; NO-SIMD128-NEXT:    i32.const $push42=, 1
5949 ; NO-SIMD128-NEXT:    i32.add $push23=, $pop22, $pop42
5950 ; NO-SIMD128-NEXT:    i32.const $push41=, 65534
5951 ; NO-SIMD128-NEXT:    i32.and $push24=, $pop23, $pop41
5952 ; NO-SIMD128-NEXT:    i32.const $push40=, 1
5953 ; NO-SIMD128-NEXT:    i32.shr_u $push25=, $pop24, $pop40
5954 ; NO-SIMD128-NEXT:    i32.store16 4($0), $pop25
5955 ; NO-SIMD128-NEXT:    i32.add $push26=, $2, $10
5956 ; NO-SIMD128-NEXT:    i32.const $push39=, 1
5957 ; NO-SIMD128-NEXT:    i32.add $push27=, $pop26, $pop39
5958 ; NO-SIMD128-NEXT:    i32.const $push38=, 65534
5959 ; NO-SIMD128-NEXT:    i32.and $push28=, $pop27, $pop38
5960 ; NO-SIMD128-NEXT:    i32.const $push37=, 1
5961 ; NO-SIMD128-NEXT:    i32.shr_u $push29=, $pop28, $pop37
5962 ; NO-SIMD128-NEXT:    i32.store16 2($0), $pop29
5963 ; NO-SIMD128-NEXT:    i32.add $push30=, $1, $9
5964 ; NO-SIMD128-NEXT:    i32.const $push36=, 1
5965 ; NO-SIMD128-NEXT:    i32.add $push31=, $pop30, $pop36
5966 ; NO-SIMD128-NEXT:    i32.const $push35=, 65534
5967 ; NO-SIMD128-NEXT:    i32.and $push32=, $pop31, $pop35
5968 ; NO-SIMD128-NEXT:    i32.const $push34=, 1
5969 ; NO-SIMD128-NEXT:    i32.shr_u $push33=, $pop32, $pop34
5970 ; NO-SIMD128-NEXT:    i32.store16 0($0), $pop33
5971 ; NO-SIMD128-NEXT:    return
5973 ; NO-SIMD128-FAST-LABEL: avgr_u_v8i16_wrap:
5974 ; 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) -> ()
5975 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
5976 ; NO-SIMD128-FAST-NEXT:    i32.add $push0=, $1, $9
5977 ; NO-SIMD128-FAST-NEXT:    i32.const $push1=, 1
5978 ; NO-SIMD128-FAST-NEXT:    i32.add $push2=, $pop0, $pop1
5979 ; NO-SIMD128-FAST-NEXT:    i32.const $push3=, 65534
5980 ; NO-SIMD128-FAST-NEXT:    i32.and $push4=, $pop2, $pop3
5981 ; NO-SIMD128-FAST-NEXT:    i32.const $push55=, 1
5982 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push5=, $pop4, $pop55
5983 ; NO-SIMD128-FAST-NEXT:    i32.store16 0($0), $pop5
5984 ; NO-SIMD128-FAST-NEXT:    i32.add $push6=, $2, $10
5985 ; NO-SIMD128-FAST-NEXT:    i32.const $push54=, 1
5986 ; NO-SIMD128-FAST-NEXT:    i32.add $push7=, $pop6, $pop54
5987 ; NO-SIMD128-FAST-NEXT:    i32.const $push53=, 65534
5988 ; NO-SIMD128-FAST-NEXT:    i32.and $push8=, $pop7, $pop53
5989 ; NO-SIMD128-FAST-NEXT:    i32.const $push52=, 1
5990 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push9=, $pop8, $pop52
5991 ; NO-SIMD128-FAST-NEXT:    i32.store16 2($0), $pop9
5992 ; NO-SIMD128-FAST-NEXT:    i32.add $push10=, $3, $11
5993 ; NO-SIMD128-FAST-NEXT:    i32.const $push51=, 1
5994 ; NO-SIMD128-FAST-NEXT:    i32.add $push11=, $pop10, $pop51
5995 ; NO-SIMD128-FAST-NEXT:    i32.const $push50=, 65534
5996 ; NO-SIMD128-FAST-NEXT:    i32.and $push12=, $pop11, $pop50
5997 ; NO-SIMD128-FAST-NEXT:    i32.const $push49=, 1
5998 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push13=, $pop12, $pop49
5999 ; NO-SIMD128-FAST-NEXT:    i32.store16 4($0), $pop13
6000 ; NO-SIMD128-FAST-NEXT:    i32.add $push14=, $4, $12
6001 ; NO-SIMD128-FAST-NEXT:    i32.const $push48=, 1
6002 ; NO-SIMD128-FAST-NEXT:    i32.add $push15=, $pop14, $pop48
6003 ; NO-SIMD128-FAST-NEXT:    i32.const $push47=, 65534
6004 ; NO-SIMD128-FAST-NEXT:    i32.and $push16=, $pop15, $pop47
6005 ; NO-SIMD128-FAST-NEXT:    i32.const $push46=, 1
6006 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push17=, $pop16, $pop46
6007 ; NO-SIMD128-FAST-NEXT:    i32.store16 6($0), $pop17
6008 ; NO-SIMD128-FAST-NEXT:    i32.add $push18=, $5, $13
6009 ; NO-SIMD128-FAST-NEXT:    i32.const $push45=, 1
6010 ; NO-SIMD128-FAST-NEXT:    i32.add $push19=, $pop18, $pop45
6011 ; NO-SIMD128-FAST-NEXT:    i32.const $push44=, 65534
6012 ; NO-SIMD128-FAST-NEXT:    i32.and $push20=, $pop19, $pop44
6013 ; NO-SIMD128-FAST-NEXT:    i32.const $push43=, 1
6014 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push21=, $pop20, $pop43
6015 ; NO-SIMD128-FAST-NEXT:    i32.store16 8($0), $pop21
6016 ; NO-SIMD128-FAST-NEXT:    i32.add $push22=, $6, $14
6017 ; NO-SIMD128-FAST-NEXT:    i32.const $push42=, 1
6018 ; NO-SIMD128-FAST-NEXT:    i32.add $push23=, $pop22, $pop42
6019 ; NO-SIMD128-FAST-NEXT:    i32.const $push41=, 65534
6020 ; NO-SIMD128-FAST-NEXT:    i32.and $push24=, $pop23, $pop41
6021 ; NO-SIMD128-FAST-NEXT:    i32.const $push40=, 1
6022 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push25=, $pop24, $pop40
6023 ; NO-SIMD128-FAST-NEXT:    i32.store16 10($0), $pop25
6024 ; NO-SIMD128-FAST-NEXT:    i32.add $push26=, $7, $15
6025 ; NO-SIMD128-FAST-NEXT:    i32.const $push39=, 1
6026 ; NO-SIMD128-FAST-NEXT:    i32.add $push27=, $pop26, $pop39
6027 ; NO-SIMD128-FAST-NEXT:    i32.const $push38=, 65534
6028 ; NO-SIMD128-FAST-NEXT:    i32.and $push28=, $pop27, $pop38
6029 ; NO-SIMD128-FAST-NEXT:    i32.const $push37=, 1
6030 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push29=, $pop28, $pop37
6031 ; NO-SIMD128-FAST-NEXT:    i32.store16 12($0), $pop29
6032 ; NO-SIMD128-FAST-NEXT:    i32.add $push30=, $8, $16
6033 ; NO-SIMD128-FAST-NEXT:    i32.const $push36=, 1
6034 ; NO-SIMD128-FAST-NEXT:    i32.add $push31=, $pop30, $pop36
6035 ; NO-SIMD128-FAST-NEXT:    i32.const $push35=, 65534
6036 ; NO-SIMD128-FAST-NEXT:    i32.and $push32=, $pop31, $pop35
6037 ; NO-SIMD128-FAST-NEXT:    i32.const $push34=, 1
6038 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push33=, $pop32, $pop34
6039 ; NO-SIMD128-FAST-NEXT:    i32.store16 14($0), $pop33
6040 ; NO-SIMD128-FAST-NEXT:    return
6041   %a = add <8 x i16> %x, %y
6042   %b = add <8 x i16> %a, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
6043   %c = udiv <8 x i16> %b, <i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2>
6044   ret <8 x i16> %c
6047 define <8 x i16> @abs_v8i16(<8 x i16> %x) {
6048 ; SIMD128-LABEL: abs_v8i16:
6049 ; SIMD128:         .functype abs_v8i16 (v128) -> (v128)
6050 ; SIMD128-NEXT:  # %bb.0:
6051 ; SIMD128-NEXT:    i16x8.abs $push0=, $0
6052 ; SIMD128-NEXT:    return $pop0
6054 ; SIMD128-FAST-LABEL: abs_v8i16:
6055 ; SIMD128-FAST:         .functype abs_v8i16 (v128) -> (v128)
6056 ; SIMD128-FAST-NEXT:  # %bb.0:
6057 ; SIMD128-FAST-NEXT:    i16x8.abs $push0=, $0
6058 ; SIMD128-FAST-NEXT:    return $pop0
6060 ; NO-SIMD128-LABEL: abs_v8i16:
6061 ; NO-SIMD128:         .functype abs_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
6062 ; NO-SIMD128-NEXT:  # %bb.0:
6063 ; NO-SIMD128-NEXT:    i32.extend16_s $push0=, $8
6064 ; NO-SIMD128-NEXT:    i32.const $push1=, 15
6065 ; NO-SIMD128-NEXT:    i32.shr_s $push47=, $pop0, $pop1
6066 ; NO-SIMD128-NEXT:    local.tee $push46=, $9=, $pop47
6067 ; NO-SIMD128-NEXT:    i32.xor $push2=, $8, $pop46
6068 ; NO-SIMD128-NEXT:    i32.sub $push3=, $pop2, $9
6069 ; NO-SIMD128-NEXT:    i32.store16 14($0), $pop3
6070 ; NO-SIMD128-NEXT:    i32.extend16_s $push4=, $7
6071 ; NO-SIMD128-NEXT:    i32.const $push45=, 15
6072 ; NO-SIMD128-NEXT:    i32.shr_s $push44=, $pop4, $pop45
6073 ; NO-SIMD128-NEXT:    local.tee $push43=, $8=, $pop44
6074 ; NO-SIMD128-NEXT:    i32.xor $push5=, $7, $pop43
6075 ; NO-SIMD128-NEXT:    i32.sub $push6=, $pop5, $8
6076 ; NO-SIMD128-NEXT:    i32.store16 12($0), $pop6
6077 ; NO-SIMD128-NEXT:    i32.extend16_s $push7=, $6
6078 ; NO-SIMD128-NEXT:    i32.const $push42=, 15
6079 ; NO-SIMD128-NEXT:    i32.shr_s $push41=, $pop7, $pop42
6080 ; NO-SIMD128-NEXT:    local.tee $push40=, $8=, $pop41
6081 ; NO-SIMD128-NEXT:    i32.xor $push8=, $6, $pop40
6082 ; NO-SIMD128-NEXT:    i32.sub $push9=, $pop8, $8
6083 ; NO-SIMD128-NEXT:    i32.store16 10($0), $pop9
6084 ; NO-SIMD128-NEXT:    i32.extend16_s $push10=, $5
6085 ; NO-SIMD128-NEXT:    i32.const $push39=, 15
6086 ; NO-SIMD128-NEXT:    i32.shr_s $push38=, $pop10, $pop39
6087 ; NO-SIMD128-NEXT:    local.tee $push37=, $8=, $pop38
6088 ; NO-SIMD128-NEXT:    i32.xor $push11=, $5, $pop37
6089 ; NO-SIMD128-NEXT:    i32.sub $push12=, $pop11, $8
6090 ; NO-SIMD128-NEXT:    i32.store16 8($0), $pop12
6091 ; NO-SIMD128-NEXT:    i32.extend16_s $push13=, $4
6092 ; NO-SIMD128-NEXT:    i32.const $push36=, 15
6093 ; NO-SIMD128-NEXT:    i32.shr_s $push35=, $pop13, $pop36
6094 ; NO-SIMD128-NEXT:    local.tee $push34=, $8=, $pop35
6095 ; NO-SIMD128-NEXT:    i32.xor $push14=, $4, $pop34
6096 ; NO-SIMD128-NEXT:    i32.sub $push15=, $pop14, $8
6097 ; NO-SIMD128-NEXT:    i32.store16 6($0), $pop15
6098 ; NO-SIMD128-NEXT:    i32.extend16_s $push16=, $3
6099 ; NO-SIMD128-NEXT:    i32.const $push33=, 15
6100 ; NO-SIMD128-NEXT:    i32.shr_s $push32=, $pop16, $pop33
6101 ; NO-SIMD128-NEXT:    local.tee $push31=, $8=, $pop32
6102 ; NO-SIMD128-NEXT:    i32.xor $push17=, $3, $pop31
6103 ; NO-SIMD128-NEXT:    i32.sub $push18=, $pop17, $8
6104 ; NO-SIMD128-NEXT:    i32.store16 4($0), $pop18
6105 ; NO-SIMD128-NEXT:    i32.extend16_s $push19=, $2
6106 ; NO-SIMD128-NEXT:    i32.const $push30=, 15
6107 ; NO-SIMD128-NEXT:    i32.shr_s $push29=, $pop19, $pop30
6108 ; NO-SIMD128-NEXT:    local.tee $push28=, $8=, $pop29
6109 ; NO-SIMD128-NEXT:    i32.xor $push20=, $2, $pop28
6110 ; NO-SIMD128-NEXT:    i32.sub $push21=, $pop20, $8
6111 ; NO-SIMD128-NEXT:    i32.store16 2($0), $pop21
6112 ; NO-SIMD128-NEXT:    i32.extend16_s $push22=, $1
6113 ; NO-SIMD128-NEXT:    i32.const $push27=, 15
6114 ; NO-SIMD128-NEXT:    i32.shr_s $push26=, $pop22, $pop27
6115 ; NO-SIMD128-NEXT:    local.tee $push25=, $8=, $pop26
6116 ; NO-SIMD128-NEXT:    i32.xor $push23=, $1, $pop25
6117 ; NO-SIMD128-NEXT:    i32.sub $push24=, $pop23, $8
6118 ; NO-SIMD128-NEXT:    i32.store16 0($0), $pop24
6119 ; NO-SIMD128-NEXT:    return
6121 ; NO-SIMD128-FAST-LABEL: abs_v8i16:
6122 ; NO-SIMD128-FAST:         .functype abs_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
6123 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
6124 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push0=, $1
6125 ; NO-SIMD128-FAST-NEXT:    i32.const $push1=, 15
6126 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push47=, $pop0, $pop1
6127 ; NO-SIMD128-FAST-NEXT:    local.tee $push46=, $9=, $pop47
6128 ; NO-SIMD128-FAST-NEXT:    i32.xor $push2=, $1, $pop46
6129 ; NO-SIMD128-FAST-NEXT:    i32.sub $push3=, $pop2, $9
6130 ; NO-SIMD128-FAST-NEXT:    i32.store16 0($0), $pop3
6131 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push4=, $2
6132 ; NO-SIMD128-FAST-NEXT:    i32.const $push45=, 15
6133 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push44=, $pop4, $pop45
6134 ; NO-SIMD128-FAST-NEXT:    local.tee $push43=, $1=, $pop44
6135 ; NO-SIMD128-FAST-NEXT:    i32.xor $push5=, $2, $pop43
6136 ; NO-SIMD128-FAST-NEXT:    i32.sub $push6=, $pop5, $1
6137 ; NO-SIMD128-FAST-NEXT:    i32.store16 2($0), $pop6
6138 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push7=, $3
6139 ; NO-SIMD128-FAST-NEXT:    i32.const $push42=, 15
6140 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push41=, $pop7, $pop42
6141 ; NO-SIMD128-FAST-NEXT:    local.tee $push40=, $2=, $pop41
6142 ; NO-SIMD128-FAST-NEXT:    i32.xor $push8=, $3, $pop40
6143 ; NO-SIMD128-FAST-NEXT:    i32.sub $push9=, $pop8, $2
6144 ; NO-SIMD128-FAST-NEXT:    i32.store16 4($0), $pop9
6145 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push10=, $4
6146 ; NO-SIMD128-FAST-NEXT:    i32.const $push39=, 15
6147 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push38=, $pop10, $pop39
6148 ; NO-SIMD128-FAST-NEXT:    local.tee $push37=, $3=, $pop38
6149 ; NO-SIMD128-FAST-NEXT:    i32.xor $push11=, $4, $pop37
6150 ; NO-SIMD128-FAST-NEXT:    i32.sub $push12=, $pop11, $3
6151 ; NO-SIMD128-FAST-NEXT:    i32.store16 6($0), $pop12
6152 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push13=, $5
6153 ; NO-SIMD128-FAST-NEXT:    i32.const $push36=, 15
6154 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push35=, $pop13, $pop36
6155 ; NO-SIMD128-FAST-NEXT:    local.tee $push34=, $4=, $pop35
6156 ; NO-SIMD128-FAST-NEXT:    i32.xor $push14=, $5, $pop34
6157 ; NO-SIMD128-FAST-NEXT:    i32.sub $push15=, $pop14, $4
6158 ; NO-SIMD128-FAST-NEXT:    i32.store16 8($0), $pop15
6159 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push16=, $6
6160 ; NO-SIMD128-FAST-NEXT:    i32.const $push33=, 15
6161 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push32=, $pop16, $pop33
6162 ; NO-SIMD128-FAST-NEXT:    local.tee $push31=, $5=, $pop32
6163 ; NO-SIMD128-FAST-NEXT:    i32.xor $push17=, $6, $pop31
6164 ; NO-SIMD128-FAST-NEXT:    i32.sub $push18=, $pop17, $5
6165 ; NO-SIMD128-FAST-NEXT:    i32.store16 10($0), $pop18
6166 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push19=, $7
6167 ; NO-SIMD128-FAST-NEXT:    i32.const $push30=, 15
6168 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push29=, $pop19, $pop30
6169 ; NO-SIMD128-FAST-NEXT:    local.tee $push28=, $6=, $pop29
6170 ; NO-SIMD128-FAST-NEXT:    i32.xor $push20=, $7, $pop28
6171 ; NO-SIMD128-FAST-NEXT:    i32.sub $push21=, $pop20, $6
6172 ; NO-SIMD128-FAST-NEXT:    i32.store16 12($0), $pop21
6173 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push22=, $8
6174 ; NO-SIMD128-FAST-NEXT:    i32.const $push27=, 15
6175 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push26=, $pop22, $pop27
6176 ; NO-SIMD128-FAST-NEXT:    local.tee $push25=, $7=, $pop26
6177 ; NO-SIMD128-FAST-NEXT:    i32.xor $push23=, $8, $pop25
6178 ; NO-SIMD128-FAST-NEXT:    i32.sub $push24=, $pop23, $7
6179 ; NO-SIMD128-FAST-NEXT:    i32.store16 14($0), $pop24
6180 ; NO-SIMD128-FAST-NEXT:    return
6181   %a = sub <8 x i16> zeroinitializer, %x
6182   %b = icmp slt <8 x i16> %x, zeroinitializer
6183   %c = select <8 x i1> %b, <8 x i16> %a, <8 x i16> %x
6184   ret <8 x i16> %c
6187 define <8 x i16> @neg_v8i16(<8 x i16> %x) {
6188 ; SIMD128-LABEL: neg_v8i16:
6189 ; SIMD128:         .functype neg_v8i16 (v128) -> (v128)
6190 ; SIMD128-NEXT:  # %bb.0:
6191 ; SIMD128-NEXT:    i16x8.neg $push0=, $0
6192 ; SIMD128-NEXT:    return $pop0
6194 ; SIMD128-FAST-LABEL: neg_v8i16:
6195 ; SIMD128-FAST:         .functype neg_v8i16 (v128) -> (v128)
6196 ; SIMD128-FAST-NEXT:  # %bb.0:
6197 ; SIMD128-FAST-NEXT:    i16x8.neg $push0=, $0
6198 ; SIMD128-FAST-NEXT:    return $pop0
6200 ; NO-SIMD128-LABEL: neg_v8i16:
6201 ; NO-SIMD128:         .functype neg_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
6202 ; NO-SIMD128-NEXT:  # %bb.0:
6203 ; NO-SIMD128-NEXT:    i32.const $push0=, 0
6204 ; NO-SIMD128-NEXT:    i32.sub $push1=, $pop0, $8
6205 ; NO-SIMD128-NEXT:    i32.store16 14($0), $pop1
6206 ; NO-SIMD128-NEXT:    i32.const $push15=, 0
6207 ; NO-SIMD128-NEXT:    i32.sub $push2=, $pop15, $7
6208 ; NO-SIMD128-NEXT:    i32.store16 12($0), $pop2
6209 ; NO-SIMD128-NEXT:    i32.const $push14=, 0
6210 ; NO-SIMD128-NEXT:    i32.sub $push3=, $pop14, $6
6211 ; NO-SIMD128-NEXT:    i32.store16 10($0), $pop3
6212 ; NO-SIMD128-NEXT:    i32.const $push13=, 0
6213 ; NO-SIMD128-NEXT:    i32.sub $push4=, $pop13, $5
6214 ; NO-SIMD128-NEXT:    i32.store16 8($0), $pop4
6215 ; NO-SIMD128-NEXT:    i32.const $push12=, 0
6216 ; NO-SIMD128-NEXT:    i32.sub $push5=, $pop12, $4
6217 ; NO-SIMD128-NEXT:    i32.store16 6($0), $pop5
6218 ; NO-SIMD128-NEXT:    i32.const $push11=, 0
6219 ; NO-SIMD128-NEXT:    i32.sub $push6=, $pop11, $3
6220 ; NO-SIMD128-NEXT:    i32.store16 4($0), $pop6
6221 ; NO-SIMD128-NEXT:    i32.const $push10=, 0
6222 ; NO-SIMD128-NEXT:    i32.sub $push7=, $pop10, $2
6223 ; NO-SIMD128-NEXT:    i32.store16 2($0), $pop7
6224 ; NO-SIMD128-NEXT:    i32.const $push9=, 0
6225 ; NO-SIMD128-NEXT:    i32.sub $push8=, $pop9, $1
6226 ; NO-SIMD128-NEXT:    i32.store16 0($0), $pop8
6227 ; NO-SIMD128-NEXT:    return
6229 ; NO-SIMD128-FAST-LABEL: neg_v8i16:
6230 ; NO-SIMD128-FAST:         .functype neg_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
6231 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
6232 ; NO-SIMD128-FAST-NEXT:    i32.const $push0=, 0
6233 ; NO-SIMD128-FAST-NEXT:    i32.sub $push1=, $pop0, $1
6234 ; NO-SIMD128-FAST-NEXT:    i32.store16 0($0), $pop1
6235 ; NO-SIMD128-FAST-NEXT:    i32.const $push15=, 0
6236 ; NO-SIMD128-FAST-NEXT:    i32.sub $push2=, $pop15, $2
6237 ; NO-SIMD128-FAST-NEXT:    i32.store16 2($0), $pop2
6238 ; NO-SIMD128-FAST-NEXT:    i32.const $push14=, 0
6239 ; NO-SIMD128-FAST-NEXT:    i32.sub $push3=, $pop14, $3
6240 ; NO-SIMD128-FAST-NEXT:    i32.store16 4($0), $pop3
6241 ; NO-SIMD128-FAST-NEXT:    i32.const $push13=, 0
6242 ; NO-SIMD128-FAST-NEXT:    i32.sub $push4=, $pop13, $4
6243 ; NO-SIMD128-FAST-NEXT:    i32.store16 6($0), $pop4
6244 ; NO-SIMD128-FAST-NEXT:    i32.const $push12=, 0
6245 ; NO-SIMD128-FAST-NEXT:    i32.sub $push5=, $pop12, $5
6246 ; NO-SIMD128-FAST-NEXT:    i32.store16 8($0), $pop5
6247 ; NO-SIMD128-FAST-NEXT:    i32.const $push11=, 0
6248 ; NO-SIMD128-FAST-NEXT:    i32.sub $push6=, $pop11, $6
6249 ; NO-SIMD128-FAST-NEXT:    i32.store16 10($0), $pop6
6250 ; NO-SIMD128-FAST-NEXT:    i32.const $push10=, 0
6251 ; NO-SIMD128-FAST-NEXT:    i32.sub $push7=, $pop10, $7
6252 ; NO-SIMD128-FAST-NEXT:    i32.store16 12($0), $pop7
6253 ; NO-SIMD128-FAST-NEXT:    i32.const $push9=, 0
6254 ; NO-SIMD128-FAST-NEXT:    i32.sub $push8=, $pop9, $8
6255 ; NO-SIMD128-FAST-NEXT:    i32.store16 14($0), $pop8
6256 ; NO-SIMD128-FAST-NEXT:    return
6257   %a = sub <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>,
6258                      %x
6259   ret <8 x i16> %a
6262 define <8 x i16> @shl_v8i16(<8 x i16> %v, i16 %x) {
6263 ; SIMD128-LABEL: shl_v8i16:
6264 ; SIMD128:         .functype shl_v8i16 (v128, i32) -> (v128)
6265 ; SIMD128-NEXT:  # %bb.0:
6266 ; SIMD128-NEXT:    i16x8.shl $push0=, $0, $1
6267 ; SIMD128-NEXT:    return $pop0
6269 ; SIMD128-FAST-LABEL: shl_v8i16:
6270 ; SIMD128-FAST:         .functype shl_v8i16 (v128, i32) -> (v128)
6271 ; SIMD128-FAST-NEXT:  # %bb.0:
6272 ; SIMD128-FAST-NEXT:    i16x8.shl $push0=, $0, $1
6273 ; SIMD128-FAST-NEXT:    return $pop0
6275 ; NO-SIMD128-LABEL: shl_v8i16:
6276 ; NO-SIMD128:         .functype shl_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
6277 ; NO-SIMD128-NEXT:  # %bb.0:
6278 ; NO-SIMD128-NEXT:    i32.const $push0=, 65535
6279 ; NO-SIMD128-NEXT:    i32.and $push10=, $9, $pop0
6280 ; NO-SIMD128-NEXT:    local.tee $push9=, $9=, $pop10
6281 ; NO-SIMD128-NEXT:    i32.shl $push1=, $8, $pop9
6282 ; NO-SIMD128-NEXT:    i32.store16 14($0), $pop1
6283 ; NO-SIMD128-NEXT:    i32.shl $push2=, $7, $9
6284 ; NO-SIMD128-NEXT:    i32.store16 12($0), $pop2
6285 ; NO-SIMD128-NEXT:    i32.shl $push3=, $6, $9
6286 ; NO-SIMD128-NEXT:    i32.store16 10($0), $pop3
6287 ; NO-SIMD128-NEXT:    i32.shl $push4=, $5, $9
6288 ; NO-SIMD128-NEXT:    i32.store16 8($0), $pop4
6289 ; NO-SIMD128-NEXT:    i32.shl $push5=, $4, $9
6290 ; NO-SIMD128-NEXT:    i32.store16 6($0), $pop5
6291 ; NO-SIMD128-NEXT:    i32.shl $push6=, $3, $9
6292 ; NO-SIMD128-NEXT:    i32.store16 4($0), $pop6
6293 ; NO-SIMD128-NEXT:    i32.shl $push7=, $2, $9
6294 ; NO-SIMD128-NEXT:    i32.store16 2($0), $pop7
6295 ; NO-SIMD128-NEXT:    i32.shl $push8=, $1, $9
6296 ; NO-SIMD128-NEXT:    i32.store16 0($0), $pop8
6297 ; NO-SIMD128-NEXT:    return
6299 ; NO-SIMD128-FAST-LABEL: shl_v8i16:
6300 ; NO-SIMD128-FAST:         .functype shl_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
6301 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
6302 ; NO-SIMD128-FAST-NEXT:    i32.const $push0=, 65535
6303 ; NO-SIMD128-FAST-NEXT:    i32.and $push10=, $9, $pop0
6304 ; NO-SIMD128-FAST-NEXT:    local.tee $push9=, $9=, $pop10
6305 ; NO-SIMD128-FAST-NEXT:    i32.shl $push1=, $2, $pop9
6306 ; NO-SIMD128-FAST-NEXT:    i32.store16 2($0), $pop1
6307 ; NO-SIMD128-FAST-NEXT:    i32.shl $push2=, $1, $9
6308 ; NO-SIMD128-FAST-NEXT:    i32.store16 0($0), $pop2
6309 ; NO-SIMD128-FAST-NEXT:    i32.shl $push3=, $3, $9
6310 ; NO-SIMD128-FAST-NEXT:    i32.store16 4($0), $pop3
6311 ; NO-SIMD128-FAST-NEXT:    i32.shl $push4=, $4, $9
6312 ; NO-SIMD128-FAST-NEXT:    i32.store16 6($0), $pop4
6313 ; NO-SIMD128-FAST-NEXT:    i32.shl $push5=, $5, $9
6314 ; NO-SIMD128-FAST-NEXT:    i32.store16 8($0), $pop5
6315 ; NO-SIMD128-FAST-NEXT:    i32.shl $push6=, $6, $9
6316 ; NO-SIMD128-FAST-NEXT:    i32.store16 10($0), $pop6
6317 ; NO-SIMD128-FAST-NEXT:    i32.shl $push7=, $7, $9
6318 ; NO-SIMD128-FAST-NEXT:    i32.store16 12($0), $pop7
6319 ; NO-SIMD128-FAST-NEXT:    i32.shl $push8=, $8, $9
6320 ; NO-SIMD128-FAST-NEXT:    i32.store16 14($0), $pop8
6321 ; NO-SIMD128-FAST-NEXT:    return
6322   %t = insertelement <8 x i16> undef, i16 %x, i32 0
6323   %s = shufflevector <8 x i16> %t, <8 x i16> undef,
6324     <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
6325   %a = shl <8 x i16> %v, %s
6326   ret <8 x i16> %a
6329 define <8 x i16> @shl_const_v8i16(<8 x i16> %v) {
6330 ; SIMD128-LABEL: shl_const_v8i16:
6331 ; SIMD128:         .functype shl_const_v8i16 (v128) -> (v128)
6332 ; SIMD128-NEXT:  # %bb.0:
6333 ; SIMD128-NEXT:    i32.const $push0=, 5
6334 ; SIMD128-NEXT:    i16x8.shl $push1=, $0, $pop0
6335 ; SIMD128-NEXT:    return $pop1
6337 ; SIMD128-FAST-LABEL: shl_const_v8i16:
6338 ; SIMD128-FAST:         .functype shl_const_v8i16 (v128) -> (v128)
6339 ; SIMD128-FAST-NEXT:  # %bb.0:
6340 ; SIMD128-FAST-NEXT:    i32.const $push1=, 5
6341 ; SIMD128-FAST-NEXT:    i16x8.shl $push0=, $0, $pop1
6342 ; SIMD128-FAST-NEXT:    return $pop0
6344 ; NO-SIMD128-LABEL: shl_const_v8i16:
6345 ; NO-SIMD128:         .functype shl_const_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
6346 ; NO-SIMD128-NEXT:  # %bb.0:
6347 ; NO-SIMD128-NEXT:    i32.const $push0=, 5
6348 ; NO-SIMD128-NEXT:    i32.shl $push1=, $8, $pop0
6349 ; NO-SIMD128-NEXT:    i32.store16 14($0), $pop1
6350 ; NO-SIMD128-NEXT:    i32.const $push15=, 5
6351 ; NO-SIMD128-NEXT:    i32.shl $push2=, $7, $pop15
6352 ; NO-SIMD128-NEXT:    i32.store16 12($0), $pop2
6353 ; NO-SIMD128-NEXT:    i32.const $push14=, 5
6354 ; NO-SIMD128-NEXT:    i32.shl $push3=, $6, $pop14
6355 ; NO-SIMD128-NEXT:    i32.store16 10($0), $pop3
6356 ; NO-SIMD128-NEXT:    i32.const $push13=, 5
6357 ; NO-SIMD128-NEXT:    i32.shl $push4=, $5, $pop13
6358 ; NO-SIMD128-NEXT:    i32.store16 8($0), $pop4
6359 ; NO-SIMD128-NEXT:    i32.const $push12=, 5
6360 ; NO-SIMD128-NEXT:    i32.shl $push5=, $4, $pop12
6361 ; NO-SIMD128-NEXT:    i32.store16 6($0), $pop5
6362 ; NO-SIMD128-NEXT:    i32.const $push11=, 5
6363 ; NO-SIMD128-NEXT:    i32.shl $push6=, $3, $pop11
6364 ; NO-SIMD128-NEXT:    i32.store16 4($0), $pop6
6365 ; NO-SIMD128-NEXT:    i32.const $push10=, 5
6366 ; NO-SIMD128-NEXT:    i32.shl $push7=, $2, $pop10
6367 ; NO-SIMD128-NEXT:    i32.store16 2($0), $pop7
6368 ; NO-SIMD128-NEXT:    i32.const $push9=, 5
6369 ; NO-SIMD128-NEXT:    i32.shl $push8=, $1, $pop9
6370 ; NO-SIMD128-NEXT:    i32.store16 0($0), $pop8
6371 ; NO-SIMD128-NEXT:    return
6373 ; NO-SIMD128-FAST-LABEL: shl_const_v8i16:
6374 ; NO-SIMD128-FAST:         .functype shl_const_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
6375 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
6376 ; NO-SIMD128-FAST-NEXT:    i32.const $push0=, 5
6377 ; NO-SIMD128-FAST-NEXT:    i32.shl $push1=, $1, $pop0
6378 ; NO-SIMD128-FAST-NEXT:    i32.store16 0($0), $pop1
6379 ; NO-SIMD128-FAST-NEXT:    i32.const $push15=, 5
6380 ; NO-SIMD128-FAST-NEXT:    i32.shl $push2=, $2, $pop15
6381 ; NO-SIMD128-FAST-NEXT:    i32.store16 2($0), $pop2
6382 ; NO-SIMD128-FAST-NEXT:    i32.const $push14=, 5
6383 ; NO-SIMD128-FAST-NEXT:    i32.shl $push3=, $3, $pop14
6384 ; NO-SIMD128-FAST-NEXT:    i32.store16 4($0), $pop3
6385 ; NO-SIMD128-FAST-NEXT:    i32.const $push13=, 5
6386 ; NO-SIMD128-FAST-NEXT:    i32.shl $push4=, $4, $pop13
6387 ; NO-SIMD128-FAST-NEXT:    i32.store16 6($0), $pop4
6388 ; NO-SIMD128-FAST-NEXT:    i32.const $push12=, 5
6389 ; NO-SIMD128-FAST-NEXT:    i32.shl $push5=, $5, $pop12
6390 ; NO-SIMD128-FAST-NEXT:    i32.store16 8($0), $pop5
6391 ; NO-SIMD128-FAST-NEXT:    i32.const $push11=, 5
6392 ; NO-SIMD128-FAST-NEXT:    i32.shl $push6=, $6, $pop11
6393 ; NO-SIMD128-FAST-NEXT:    i32.store16 10($0), $pop6
6394 ; NO-SIMD128-FAST-NEXT:    i32.const $push10=, 5
6395 ; NO-SIMD128-FAST-NEXT:    i32.shl $push7=, $7, $pop10
6396 ; NO-SIMD128-FAST-NEXT:    i32.store16 12($0), $pop7
6397 ; NO-SIMD128-FAST-NEXT:    i32.const $push9=, 5
6398 ; NO-SIMD128-FAST-NEXT:    i32.shl $push8=, $8, $pop9
6399 ; NO-SIMD128-FAST-NEXT:    i32.store16 14($0), $pop8
6400 ; NO-SIMD128-FAST-NEXT:    return
6401   %a = shl <8 x i16> %v,
6402     <i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5>
6403   ret <8 x i16> %a
6406 define <8 x i16> @shl_vec_v8i16(<8 x i16> %v, <8 x i16> %x) {
6407 ; SIMD128-LABEL: shl_vec_v8i16:
6408 ; SIMD128:         .functype shl_vec_v8i16 (v128, v128) -> (v128)
6409 ; SIMD128-NEXT:  # %bb.0:
6410 ; SIMD128-NEXT:    i16x8.extract_lane_u $push7=, $0, 0
6411 ; SIMD128-NEXT:    i16x8.extract_lane_u $push5=, $1, 0
6412 ; SIMD128-NEXT:    i32.const $push1=, 15
6413 ; SIMD128-NEXT:    i32.and $push6=, $pop5, $pop1
6414 ; SIMD128-NEXT:    i32.shl $push8=, $pop7, $pop6
6415 ; SIMD128-NEXT:    i16x8.splat $push9=, $pop8
6416 ; SIMD128-NEXT:    i16x8.extract_lane_u $push3=, $0, 1
6417 ; SIMD128-NEXT:    i16x8.extract_lane_u $push0=, $1, 1
6418 ; SIMD128-NEXT:    i32.const $push47=, 15
6419 ; SIMD128-NEXT:    i32.and $push2=, $pop0, $pop47
6420 ; SIMD128-NEXT:    i32.shl $push4=, $pop3, $pop2
6421 ; SIMD128-NEXT:    i16x8.replace_lane $push10=, $pop9, 1, $pop4
6422 ; SIMD128-NEXT:    i16x8.extract_lane_u $push13=, $0, 2
6423 ; SIMD128-NEXT:    i16x8.extract_lane_u $push11=, $1, 2
6424 ; SIMD128-NEXT:    i32.const $push46=, 15
6425 ; SIMD128-NEXT:    i32.and $push12=, $pop11, $pop46
6426 ; SIMD128-NEXT:    i32.shl $push14=, $pop13, $pop12
6427 ; SIMD128-NEXT:    i16x8.replace_lane $push15=, $pop10, 2, $pop14
6428 ; SIMD128-NEXT:    i16x8.extract_lane_u $push18=, $0, 3
6429 ; SIMD128-NEXT:    i16x8.extract_lane_u $push16=, $1, 3
6430 ; SIMD128-NEXT:    i32.const $push45=, 15
6431 ; SIMD128-NEXT:    i32.and $push17=, $pop16, $pop45
6432 ; SIMD128-NEXT:    i32.shl $push19=, $pop18, $pop17
6433 ; SIMD128-NEXT:    i16x8.replace_lane $push20=, $pop15, 3, $pop19
6434 ; SIMD128-NEXT:    i16x8.extract_lane_u $push23=, $0, 4
6435 ; SIMD128-NEXT:    i16x8.extract_lane_u $push21=, $1, 4
6436 ; SIMD128-NEXT:    i32.const $push44=, 15
6437 ; SIMD128-NEXT:    i32.and $push22=, $pop21, $pop44
6438 ; SIMD128-NEXT:    i32.shl $push24=, $pop23, $pop22
6439 ; SIMD128-NEXT:    i16x8.replace_lane $push25=, $pop20, 4, $pop24
6440 ; SIMD128-NEXT:    i16x8.extract_lane_u $push28=, $0, 5
6441 ; SIMD128-NEXT:    i16x8.extract_lane_u $push26=, $1, 5
6442 ; SIMD128-NEXT:    i32.const $push43=, 15
6443 ; SIMD128-NEXT:    i32.and $push27=, $pop26, $pop43
6444 ; SIMD128-NEXT:    i32.shl $push29=, $pop28, $pop27
6445 ; SIMD128-NEXT:    i16x8.replace_lane $push30=, $pop25, 5, $pop29
6446 ; SIMD128-NEXT:    i16x8.extract_lane_u $push33=, $0, 6
6447 ; SIMD128-NEXT:    i16x8.extract_lane_u $push31=, $1, 6
6448 ; SIMD128-NEXT:    i32.const $push42=, 15
6449 ; SIMD128-NEXT:    i32.and $push32=, $pop31, $pop42
6450 ; SIMD128-NEXT:    i32.shl $push34=, $pop33, $pop32
6451 ; SIMD128-NEXT:    i16x8.replace_lane $push35=, $pop30, 6, $pop34
6452 ; SIMD128-NEXT:    i16x8.extract_lane_u $push38=, $0, 7
6453 ; SIMD128-NEXT:    i16x8.extract_lane_u $push36=, $1, 7
6454 ; SIMD128-NEXT:    i32.const $push41=, 15
6455 ; SIMD128-NEXT:    i32.and $push37=, $pop36, $pop41
6456 ; SIMD128-NEXT:    i32.shl $push39=, $pop38, $pop37
6457 ; SIMD128-NEXT:    i16x8.replace_lane $push40=, $pop35, 7, $pop39
6458 ; SIMD128-NEXT:    return $pop40
6460 ; SIMD128-FAST-LABEL: shl_vec_v8i16:
6461 ; SIMD128-FAST:         .functype shl_vec_v8i16 (v128, v128) -> (v128)
6462 ; SIMD128-FAST-NEXT:  # %bb.0:
6463 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push8=, $0, 0
6464 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push6=, $1, 0
6465 ; SIMD128-FAST-NEXT:    i32.const $push2=, 15
6466 ; SIMD128-FAST-NEXT:    i32.and $push7=, $pop6, $pop2
6467 ; SIMD128-FAST-NEXT:    i32.shl $push9=, $pop8, $pop7
6468 ; SIMD128-FAST-NEXT:    i16x8.splat $push10=, $pop9
6469 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push4=, $0, 1
6470 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push1=, $1, 1
6471 ; SIMD128-FAST-NEXT:    i32.const $push47=, 15
6472 ; SIMD128-FAST-NEXT:    i32.and $push3=, $pop1, $pop47
6473 ; SIMD128-FAST-NEXT:    i32.shl $push5=, $pop4, $pop3
6474 ; SIMD128-FAST-NEXT:    i16x8.replace_lane $push11=, $pop10, 1, $pop5
6475 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push14=, $0, 2
6476 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push12=, $1, 2
6477 ; SIMD128-FAST-NEXT:    i32.const $push46=, 15
6478 ; SIMD128-FAST-NEXT:    i32.and $push13=, $pop12, $pop46
6479 ; SIMD128-FAST-NEXT:    i32.shl $push15=, $pop14, $pop13
6480 ; SIMD128-FAST-NEXT:    i16x8.replace_lane $push16=, $pop11, 2, $pop15
6481 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push19=, $0, 3
6482 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push17=, $1, 3
6483 ; SIMD128-FAST-NEXT:    i32.const $push45=, 15
6484 ; SIMD128-FAST-NEXT:    i32.and $push18=, $pop17, $pop45
6485 ; SIMD128-FAST-NEXT:    i32.shl $push20=, $pop19, $pop18
6486 ; SIMD128-FAST-NEXT:    i16x8.replace_lane $push21=, $pop16, 3, $pop20
6487 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push24=, $0, 4
6488 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push22=, $1, 4
6489 ; SIMD128-FAST-NEXT:    i32.const $push44=, 15
6490 ; SIMD128-FAST-NEXT:    i32.and $push23=, $pop22, $pop44
6491 ; SIMD128-FAST-NEXT:    i32.shl $push25=, $pop24, $pop23
6492 ; SIMD128-FAST-NEXT:    i16x8.replace_lane $push26=, $pop21, 4, $pop25
6493 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push29=, $0, 5
6494 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push27=, $1, 5
6495 ; SIMD128-FAST-NEXT:    i32.const $push43=, 15
6496 ; SIMD128-FAST-NEXT:    i32.and $push28=, $pop27, $pop43
6497 ; SIMD128-FAST-NEXT:    i32.shl $push30=, $pop29, $pop28
6498 ; SIMD128-FAST-NEXT:    i16x8.replace_lane $push31=, $pop26, 5, $pop30
6499 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push34=, $0, 6
6500 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push32=, $1, 6
6501 ; SIMD128-FAST-NEXT:    i32.const $push42=, 15
6502 ; SIMD128-FAST-NEXT:    i32.and $push33=, $pop32, $pop42
6503 ; SIMD128-FAST-NEXT:    i32.shl $push35=, $pop34, $pop33
6504 ; SIMD128-FAST-NEXT:    i16x8.replace_lane $push36=, $pop31, 6, $pop35
6505 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push39=, $0, 7
6506 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push37=, $1, 7
6507 ; SIMD128-FAST-NEXT:    i32.const $push41=, 15
6508 ; SIMD128-FAST-NEXT:    i32.and $push38=, $pop37, $pop41
6509 ; SIMD128-FAST-NEXT:    i32.shl $push40=, $pop39, $pop38
6510 ; SIMD128-FAST-NEXT:    i16x8.replace_lane $push0=, $pop36, 7, $pop40
6511 ; SIMD128-FAST-NEXT:    return $pop0
6513 ; NO-SIMD128-LABEL: shl_vec_v8i16:
6514 ; NO-SIMD128:         .functype shl_vec_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
6515 ; NO-SIMD128-NEXT:  # %bb.0:
6516 ; NO-SIMD128-NEXT:    i32.const $push0=, 65535
6517 ; NO-SIMD128-NEXT:    i32.and $push1=, $16, $pop0
6518 ; NO-SIMD128-NEXT:    i32.shl $push2=, $8, $pop1
6519 ; NO-SIMD128-NEXT:    i32.store16 14($0), $pop2
6520 ; NO-SIMD128-NEXT:    i32.const $push23=, 65535
6521 ; NO-SIMD128-NEXT:    i32.and $push3=, $15, $pop23
6522 ; NO-SIMD128-NEXT:    i32.shl $push4=, $7, $pop3
6523 ; NO-SIMD128-NEXT:    i32.store16 12($0), $pop4
6524 ; NO-SIMD128-NEXT:    i32.const $push22=, 65535
6525 ; NO-SIMD128-NEXT:    i32.and $push5=, $14, $pop22
6526 ; NO-SIMD128-NEXT:    i32.shl $push6=, $6, $pop5
6527 ; NO-SIMD128-NEXT:    i32.store16 10($0), $pop6
6528 ; NO-SIMD128-NEXT:    i32.const $push21=, 65535
6529 ; NO-SIMD128-NEXT:    i32.and $push7=, $13, $pop21
6530 ; NO-SIMD128-NEXT:    i32.shl $push8=, $5, $pop7
6531 ; NO-SIMD128-NEXT:    i32.store16 8($0), $pop8
6532 ; NO-SIMD128-NEXT:    i32.const $push20=, 65535
6533 ; NO-SIMD128-NEXT:    i32.and $push9=, $12, $pop20
6534 ; NO-SIMD128-NEXT:    i32.shl $push10=, $4, $pop9
6535 ; NO-SIMD128-NEXT:    i32.store16 6($0), $pop10
6536 ; NO-SIMD128-NEXT:    i32.const $push19=, 65535
6537 ; NO-SIMD128-NEXT:    i32.and $push11=, $11, $pop19
6538 ; NO-SIMD128-NEXT:    i32.shl $push12=, $3, $pop11
6539 ; NO-SIMD128-NEXT:    i32.store16 4($0), $pop12
6540 ; NO-SIMD128-NEXT:    i32.const $push18=, 65535
6541 ; NO-SIMD128-NEXT:    i32.and $push13=, $10, $pop18
6542 ; NO-SIMD128-NEXT:    i32.shl $push14=, $2, $pop13
6543 ; NO-SIMD128-NEXT:    i32.store16 2($0), $pop14
6544 ; NO-SIMD128-NEXT:    i32.const $push17=, 65535
6545 ; NO-SIMD128-NEXT:    i32.and $push15=, $9, $pop17
6546 ; NO-SIMD128-NEXT:    i32.shl $push16=, $1, $pop15
6547 ; NO-SIMD128-NEXT:    i32.store16 0($0), $pop16
6548 ; NO-SIMD128-NEXT:    return
6550 ; NO-SIMD128-FAST-LABEL: shl_vec_v8i16:
6551 ; NO-SIMD128-FAST:         .functype shl_vec_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
6552 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
6553 ; NO-SIMD128-FAST-NEXT:    i32.const $push0=, 65535
6554 ; NO-SIMD128-FAST-NEXT:    i32.and $push1=, $9, $pop0
6555 ; NO-SIMD128-FAST-NEXT:    i32.shl $push2=, $1, $pop1
6556 ; NO-SIMD128-FAST-NEXT:    i32.store16 0($0), $pop2
6557 ; NO-SIMD128-FAST-NEXT:    i32.const $push23=, 65535
6558 ; NO-SIMD128-FAST-NEXT:    i32.and $push3=, $10, $pop23
6559 ; NO-SIMD128-FAST-NEXT:    i32.shl $push4=, $2, $pop3
6560 ; NO-SIMD128-FAST-NEXT:    i32.store16 2($0), $pop4
6561 ; NO-SIMD128-FAST-NEXT:    i32.const $push22=, 65535
6562 ; NO-SIMD128-FAST-NEXT:    i32.and $push5=, $11, $pop22
6563 ; NO-SIMD128-FAST-NEXT:    i32.shl $push6=, $3, $pop5
6564 ; NO-SIMD128-FAST-NEXT:    i32.store16 4($0), $pop6
6565 ; NO-SIMD128-FAST-NEXT:    i32.const $push21=, 65535
6566 ; NO-SIMD128-FAST-NEXT:    i32.and $push7=, $12, $pop21
6567 ; NO-SIMD128-FAST-NEXT:    i32.shl $push8=, $4, $pop7
6568 ; NO-SIMD128-FAST-NEXT:    i32.store16 6($0), $pop8
6569 ; NO-SIMD128-FAST-NEXT:    i32.const $push20=, 65535
6570 ; NO-SIMD128-FAST-NEXT:    i32.and $push9=, $13, $pop20
6571 ; NO-SIMD128-FAST-NEXT:    i32.shl $push10=, $5, $pop9
6572 ; NO-SIMD128-FAST-NEXT:    i32.store16 8($0), $pop10
6573 ; NO-SIMD128-FAST-NEXT:    i32.const $push19=, 65535
6574 ; NO-SIMD128-FAST-NEXT:    i32.and $push11=, $14, $pop19
6575 ; NO-SIMD128-FAST-NEXT:    i32.shl $push12=, $6, $pop11
6576 ; NO-SIMD128-FAST-NEXT:    i32.store16 10($0), $pop12
6577 ; NO-SIMD128-FAST-NEXT:    i32.const $push18=, 65535
6578 ; NO-SIMD128-FAST-NEXT:    i32.and $push13=, $15, $pop18
6579 ; NO-SIMD128-FAST-NEXT:    i32.shl $push14=, $7, $pop13
6580 ; NO-SIMD128-FAST-NEXT:    i32.store16 12($0), $pop14
6581 ; NO-SIMD128-FAST-NEXT:    i32.const $push17=, 65535
6582 ; NO-SIMD128-FAST-NEXT:    i32.and $push15=, $16, $pop17
6583 ; NO-SIMD128-FAST-NEXT:    i32.shl $push16=, $8, $pop15
6584 ; NO-SIMD128-FAST-NEXT:    i32.store16 14($0), $pop16
6585 ; NO-SIMD128-FAST-NEXT:    return
6586   %a = shl <8 x i16> %v, %x
6587   ret <8 x i16> %a
6590 define <8 x i16> @shr_s_v8i16(<8 x i16> %v, i16 %x) {
6591 ; SIMD128-LABEL: shr_s_v8i16:
6592 ; SIMD128:         .functype shr_s_v8i16 (v128, i32) -> (v128)
6593 ; SIMD128-NEXT:  # %bb.0:
6594 ; SIMD128-NEXT:    i16x8.shr_s $push0=, $0, $1
6595 ; SIMD128-NEXT:    return $pop0
6597 ; SIMD128-FAST-LABEL: shr_s_v8i16:
6598 ; SIMD128-FAST:         .functype shr_s_v8i16 (v128, i32) -> (v128)
6599 ; SIMD128-FAST-NEXT:  # %bb.0:
6600 ; SIMD128-FAST-NEXT:    i16x8.shr_s $push0=, $0, $1
6601 ; SIMD128-FAST-NEXT:    return $pop0
6603 ; NO-SIMD128-LABEL: shr_s_v8i16:
6604 ; NO-SIMD128:         .functype shr_s_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
6605 ; NO-SIMD128-NEXT:  # %bb.0:
6606 ; NO-SIMD128-NEXT:    i32.extend16_s $push1=, $8
6607 ; NO-SIMD128-NEXT:    i32.const $push0=, 65535
6608 ; NO-SIMD128-NEXT:    i32.and $push18=, $9, $pop0
6609 ; NO-SIMD128-NEXT:    local.tee $push17=, $9=, $pop18
6610 ; NO-SIMD128-NEXT:    i32.shr_s $push2=, $pop1, $pop17
6611 ; NO-SIMD128-NEXT:    i32.store16 14($0), $pop2
6612 ; NO-SIMD128-NEXT:    i32.extend16_s $push3=, $7
6613 ; NO-SIMD128-NEXT:    i32.shr_s $push4=, $pop3, $9
6614 ; NO-SIMD128-NEXT:    i32.store16 12($0), $pop4
6615 ; NO-SIMD128-NEXT:    i32.extend16_s $push5=, $6
6616 ; NO-SIMD128-NEXT:    i32.shr_s $push6=, $pop5, $9
6617 ; NO-SIMD128-NEXT:    i32.store16 10($0), $pop6
6618 ; NO-SIMD128-NEXT:    i32.extend16_s $push7=, $5
6619 ; NO-SIMD128-NEXT:    i32.shr_s $push8=, $pop7, $9
6620 ; NO-SIMD128-NEXT:    i32.store16 8($0), $pop8
6621 ; NO-SIMD128-NEXT:    i32.extend16_s $push9=, $4
6622 ; NO-SIMD128-NEXT:    i32.shr_s $push10=, $pop9, $9
6623 ; NO-SIMD128-NEXT:    i32.store16 6($0), $pop10
6624 ; NO-SIMD128-NEXT:    i32.extend16_s $push11=, $3
6625 ; NO-SIMD128-NEXT:    i32.shr_s $push12=, $pop11, $9
6626 ; NO-SIMD128-NEXT:    i32.store16 4($0), $pop12
6627 ; NO-SIMD128-NEXT:    i32.extend16_s $push13=, $2
6628 ; NO-SIMD128-NEXT:    i32.shr_s $push14=, $pop13, $9
6629 ; NO-SIMD128-NEXT:    i32.store16 2($0), $pop14
6630 ; NO-SIMD128-NEXT:    i32.extend16_s $push15=, $1
6631 ; NO-SIMD128-NEXT:    i32.shr_s $push16=, $pop15, $9
6632 ; NO-SIMD128-NEXT:    i32.store16 0($0), $pop16
6633 ; NO-SIMD128-NEXT:    return
6635 ; NO-SIMD128-FAST-LABEL: shr_s_v8i16:
6636 ; NO-SIMD128-FAST:         .functype shr_s_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
6637 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
6638 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push1=, $1
6639 ; NO-SIMD128-FAST-NEXT:    i32.const $push0=, 65535
6640 ; NO-SIMD128-FAST-NEXT:    i32.and $push18=, $9, $pop0
6641 ; NO-SIMD128-FAST-NEXT:    local.tee $push17=, $1=, $pop18
6642 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push2=, $pop1, $pop17
6643 ; NO-SIMD128-FAST-NEXT:    i32.store16 0($0), $pop2
6644 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push3=, $2
6645 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push4=, $pop3, $1
6646 ; NO-SIMD128-FAST-NEXT:    i32.store16 2($0), $pop4
6647 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push5=, $3
6648 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push6=, $pop5, $1
6649 ; NO-SIMD128-FAST-NEXT:    i32.store16 4($0), $pop6
6650 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push7=, $4
6651 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push8=, $pop7, $1
6652 ; NO-SIMD128-FAST-NEXT:    i32.store16 6($0), $pop8
6653 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push9=, $5
6654 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push10=, $pop9, $1
6655 ; NO-SIMD128-FAST-NEXT:    i32.store16 8($0), $pop10
6656 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push11=, $6
6657 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push12=, $pop11, $1
6658 ; NO-SIMD128-FAST-NEXT:    i32.store16 10($0), $pop12
6659 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push13=, $7
6660 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push14=, $pop13, $1
6661 ; NO-SIMD128-FAST-NEXT:    i32.store16 12($0), $pop14
6662 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push15=, $8
6663 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push16=, $pop15, $1
6664 ; NO-SIMD128-FAST-NEXT:    i32.store16 14($0), $pop16
6665 ; NO-SIMD128-FAST-NEXT:    return
6666   %t = insertelement <8 x i16> undef, i16 %x, i32 0
6667   %s = shufflevector <8 x i16> %t, <8 x i16> undef,
6668     <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
6669   %a = ashr <8 x i16> %v, %s
6670   ret <8 x i16> %a
6673 define <8 x i16> @shr_s_vec_v8i16(<8 x i16> %v, <8 x i16> %x) {
6674 ; SIMD128-LABEL: shr_s_vec_v8i16:
6675 ; SIMD128:         .functype shr_s_vec_v8i16 (v128, v128) -> (v128)
6676 ; SIMD128-NEXT:  # %bb.0:
6677 ; SIMD128-NEXT:    i16x8.extract_lane_s $push7=, $0, 0
6678 ; SIMD128-NEXT:    i16x8.extract_lane_u $push5=, $1, 0
6679 ; SIMD128-NEXT:    i32.const $push1=, 15
6680 ; SIMD128-NEXT:    i32.and $push6=, $pop5, $pop1
6681 ; SIMD128-NEXT:    i32.shr_s $push8=, $pop7, $pop6
6682 ; SIMD128-NEXT:    i16x8.splat $push9=, $pop8
6683 ; SIMD128-NEXT:    i16x8.extract_lane_s $push3=, $0, 1
6684 ; SIMD128-NEXT:    i16x8.extract_lane_u $push0=, $1, 1
6685 ; SIMD128-NEXT:    i32.const $push47=, 15
6686 ; SIMD128-NEXT:    i32.and $push2=, $pop0, $pop47
6687 ; SIMD128-NEXT:    i32.shr_s $push4=, $pop3, $pop2
6688 ; SIMD128-NEXT:    i16x8.replace_lane $push10=, $pop9, 1, $pop4
6689 ; SIMD128-NEXT:    i16x8.extract_lane_s $push13=, $0, 2
6690 ; SIMD128-NEXT:    i16x8.extract_lane_u $push11=, $1, 2
6691 ; SIMD128-NEXT:    i32.const $push46=, 15
6692 ; SIMD128-NEXT:    i32.and $push12=, $pop11, $pop46
6693 ; SIMD128-NEXT:    i32.shr_s $push14=, $pop13, $pop12
6694 ; SIMD128-NEXT:    i16x8.replace_lane $push15=, $pop10, 2, $pop14
6695 ; SIMD128-NEXT:    i16x8.extract_lane_s $push18=, $0, 3
6696 ; SIMD128-NEXT:    i16x8.extract_lane_u $push16=, $1, 3
6697 ; SIMD128-NEXT:    i32.const $push45=, 15
6698 ; SIMD128-NEXT:    i32.and $push17=, $pop16, $pop45
6699 ; SIMD128-NEXT:    i32.shr_s $push19=, $pop18, $pop17
6700 ; SIMD128-NEXT:    i16x8.replace_lane $push20=, $pop15, 3, $pop19
6701 ; SIMD128-NEXT:    i16x8.extract_lane_s $push23=, $0, 4
6702 ; SIMD128-NEXT:    i16x8.extract_lane_u $push21=, $1, 4
6703 ; SIMD128-NEXT:    i32.const $push44=, 15
6704 ; SIMD128-NEXT:    i32.and $push22=, $pop21, $pop44
6705 ; SIMD128-NEXT:    i32.shr_s $push24=, $pop23, $pop22
6706 ; SIMD128-NEXT:    i16x8.replace_lane $push25=, $pop20, 4, $pop24
6707 ; SIMD128-NEXT:    i16x8.extract_lane_s $push28=, $0, 5
6708 ; SIMD128-NEXT:    i16x8.extract_lane_u $push26=, $1, 5
6709 ; SIMD128-NEXT:    i32.const $push43=, 15
6710 ; SIMD128-NEXT:    i32.and $push27=, $pop26, $pop43
6711 ; SIMD128-NEXT:    i32.shr_s $push29=, $pop28, $pop27
6712 ; SIMD128-NEXT:    i16x8.replace_lane $push30=, $pop25, 5, $pop29
6713 ; SIMD128-NEXT:    i16x8.extract_lane_s $push33=, $0, 6
6714 ; SIMD128-NEXT:    i16x8.extract_lane_u $push31=, $1, 6
6715 ; SIMD128-NEXT:    i32.const $push42=, 15
6716 ; SIMD128-NEXT:    i32.and $push32=, $pop31, $pop42
6717 ; SIMD128-NEXT:    i32.shr_s $push34=, $pop33, $pop32
6718 ; SIMD128-NEXT:    i16x8.replace_lane $push35=, $pop30, 6, $pop34
6719 ; SIMD128-NEXT:    i16x8.extract_lane_s $push38=, $0, 7
6720 ; SIMD128-NEXT:    i16x8.extract_lane_u $push36=, $1, 7
6721 ; SIMD128-NEXT:    i32.const $push41=, 15
6722 ; SIMD128-NEXT:    i32.and $push37=, $pop36, $pop41
6723 ; SIMD128-NEXT:    i32.shr_s $push39=, $pop38, $pop37
6724 ; SIMD128-NEXT:    i16x8.replace_lane $push40=, $pop35, 7, $pop39
6725 ; SIMD128-NEXT:    return $pop40
6727 ; SIMD128-FAST-LABEL: shr_s_vec_v8i16:
6728 ; SIMD128-FAST:         .functype shr_s_vec_v8i16 (v128, v128) -> (v128)
6729 ; SIMD128-FAST-NEXT:  # %bb.0:
6730 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_s $push8=, $0, 0
6731 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push6=, $1, 0
6732 ; SIMD128-FAST-NEXT:    i32.const $push2=, 15
6733 ; SIMD128-FAST-NEXT:    i32.and $push7=, $pop6, $pop2
6734 ; SIMD128-FAST-NEXT:    i32.shr_s $push9=, $pop8, $pop7
6735 ; SIMD128-FAST-NEXT:    i16x8.splat $push10=, $pop9
6736 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_s $push4=, $0, 1
6737 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push1=, $1, 1
6738 ; SIMD128-FAST-NEXT:    i32.const $push47=, 15
6739 ; SIMD128-FAST-NEXT:    i32.and $push3=, $pop1, $pop47
6740 ; SIMD128-FAST-NEXT:    i32.shr_s $push5=, $pop4, $pop3
6741 ; SIMD128-FAST-NEXT:    i16x8.replace_lane $push11=, $pop10, 1, $pop5
6742 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_s $push14=, $0, 2
6743 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push12=, $1, 2
6744 ; SIMD128-FAST-NEXT:    i32.const $push46=, 15
6745 ; SIMD128-FAST-NEXT:    i32.and $push13=, $pop12, $pop46
6746 ; SIMD128-FAST-NEXT:    i32.shr_s $push15=, $pop14, $pop13
6747 ; SIMD128-FAST-NEXT:    i16x8.replace_lane $push16=, $pop11, 2, $pop15
6748 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_s $push19=, $0, 3
6749 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push17=, $1, 3
6750 ; SIMD128-FAST-NEXT:    i32.const $push45=, 15
6751 ; SIMD128-FAST-NEXT:    i32.and $push18=, $pop17, $pop45
6752 ; SIMD128-FAST-NEXT:    i32.shr_s $push20=, $pop19, $pop18
6753 ; SIMD128-FAST-NEXT:    i16x8.replace_lane $push21=, $pop16, 3, $pop20
6754 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_s $push24=, $0, 4
6755 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push22=, $1, 4
6756 ; SIMD128-FAST-NEXT:    i32.const $push44=, 15
6757 ; SIMD128-FAST-NEXT:    i32.and $push23=, $pop22, $pop44
6758 ; SIMD128-FAST-NEXT:    i32.shr_s $push25=, $pop24, $pop23
6759 ; SIMD128-FAST-NEXT:    i16x8.replace_lane $push26=, $pop21, 4, $pop25
6760 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_s $push29=, $0, 5
6761 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push27=, $1, 5
6762 ; SIMD128-FAST-NEXT:    i32.const $push43=, 15
6763 ; SIMD128-FAST-NEXT:    i32.and $push28=, $pop27, $pop43
6764 ; SIMD128-FAST-NEXT:    i32.shr_s $push30=, $pop29, $pop28
6765 ; SIMD128-FAST-NEXT:    i16x8.replace_lane $push31=, $pop26, 5, $pop30
6766 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_s $push34=, $0, 6
6767 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push32=, $1, 6
6768 ; SIMD128-FAST-NEXT:    i32.const $push42=, 15
6769 ; SIMD128-FAST-NEXT:    i32.and $push33=, $pop32, $pop42
6770 ; SIMD128-FAST-NEXT:    i32.shr_s $push35=, $pop34, $pop33
6771 ; SIMD128-FAST-NEXT:    i16x8.replace_lane $push36=, $pop31, 6, $pop35
6772 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_s $push39=, $0, 7
6773 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push37=, $1, 7
6774 ; SIMD128-FAST-NEXT:    i32.const $push41=, 15
6775 ; SIMD128-FAST-NEXT:    i32.and $push38=, $pop37, $pop41
6776 ; SIMD128-FAST-NEXT:    i32.shr_s $push40=, $pop39, $pop38
6777 ; SIMD128-FAST-NEXT:    i16x8.replace_lane $push0=, $pop36, 7, $pop40
6778 ; SIMD128-FAST-NEXT:    return $pop0
6780 ; NO-SIMD128-LABEL: shr_s_vec_v8i16:
6781 ; NO-SIMD128:         .functype shr_s_vec_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
6782 ; NO-SIMD128-NEXT:  # %bb.0:
6783 ; NO-SIMD128-NEXT:    i32.extend16_s $push2=, $8
6784 ; NO-SIMD128-NEXT:    i32.const $push0=, 65535
6785 ; NO-SIMD128-NEXT:    i32.and $push1=, $16, $pop0
6786 ; NO-SIMD128-NEXT:    i32.shr_s $push3=, $pop2, $pop1
6787 ; NO-SIMD128-NEXT:    i32.store16 14($0), $pop3
6788 ; NO-SIMD128-NEXT:    i32.extend16_s $push5=, $7
6789 ; NO-SIMD128-NEXT:    i32.const $push31=, 65535
6790 ; NO-SIMD128-NEXT:    i32.and $push4=, $15, $pop31
6791 ; NO-SIMD128-NEXT:    i32.shr_s $push6=, $pop5, $pop4
6792 ; NO-SIMD128-NEXT:    i32.store16 12($0), $pop6
6793 ; NO-SIMD128-NEXT:    i32.extend16_s $push8=, $6
6794 ; NO-SIMD128-NEXT:    i32.const $push30=, 65535
6795 ; NO-SIMD128-NEXT:    i32.and $push7=, $14, $pop30
6796 ; NO-SIMD128-NEXT:    i32.shr_s $push9=, $pop8, $pop7
6797 ; NO-SIMD128-NEXT:    i32.store16 10($0), $pop9
6798 ; NO-SIMD128-NEXT:    i32.extend16_s $push11=, $5
6799 ; NO-SIMD128-NEXT:    i32.const $push29=, 65535
6800 ; NO-SIMD128-NEXT:    i32.and $push10=, $13, $pop29
6801 ; NO-SIMD128-NEXT:    i32.shr_s $push12=, $pop11, $pop10
6802 ; NO-SIMD128-NEXT:    i32.store16 8($0), $pop12
6803 ; NO-SIMD128-NEXT:    i32.extend16_s $push14=, $4
6804 ; NO-SIMD128-NEXT:    i32.const $push28=, 65535
6805 ; NO-SIMD128-NEXT:    i32.and $push13=, $12, $pop28
6806 ; NO-SIMD128-NEXT:    i32.shr_s $push15=, $pop14, $pop13
6807 ; NO-SIMD128-NEXT:    i32.store16 6($0), $pop15
6808 ; NO-SIMD128-NEXT:    i32.extend16_s $push17=, $3
6809 ; NO-SIMD128-NEXT:    i32.const $push27=, 65535
6810 ; NO-SIMD128-NEXT:    i32.and $push16=, $11, $pop27
6811 ; NO-SIMD128-NEXT:    i32.shr_s $push18=, $pop17, $pop16
6812 ; NO-SIMD128-NEXT:    i32.store16 4($0), $pop18
6813 ; NO-SIMD128-NEXT:    i32.extend16_s $push20=, $2
6814 ; NO-SIMD128-NEXT:    i32.const $push26=, 65535
6815 ; NO-SIMD128-NEXT:    i32.and $push19=, $10, $pop26
6816 ; NO-SIMD128-NEXT:    i32.shr_s $push21=, $pop20, $pop19
6817 ; NO-SIMD128-NEXT:    i32.store16 2($0), $pop21
6818 ; NO-SIMD128-NEXT:    i32.extend16_s $push23=, $1
6819 ; NO-SIMD128-NEXT:    i32.const $push25=, 65535
6820 ; NO-SIMD128-NEXT:    i32.and $push22=, $9, $pop25
6821 ; NO-SIMD128-NEXT:    i32.shr_s $push24=, $pop23, $pop22
6822 ; NO-SIMD128-NEXT:    i32.store16 0($0), $pop24
6823 ; NO-SIMD128-NEXT:    return
6825 ; NO-SIMD128-FAST-LABEL: shr_s_vec_v8i16:
6826 ; 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) -> ()
6827 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
6828 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push2=, $1
6829 ; NO-SIMD128-FAST-NEXT:    i32.const $push0=, 65535
6830 ; NO-SIMD128-FAST-NEXT:    i32.and $push1=, $9, $pop0
6831 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push3=, $pop2, $pop1
6832 ; NO-SIMD128-FAST-NEXT:    i32.store16 0($0), $pop3
6833 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push5=, $2
6834 ; NO-SIMD128-FAST-NEXT:    i32.const $push31=, 65535
6835 ; NO-SIMD128-FAST-NEXT:    i32.and $push4=, $10, $pop31
6836 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push6=, $pop5, $pop4
6837 ; NO-SIMD128-FAST-NEXT:    i32.store16 2($0), $pop6
6838 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push8=, $3
6839 ; NO-SIMD128-FAST-NEXT:    i32.const $push30=, 65535
6840 ; NO-SIMD128-FAST-NEXT:    i32.and $push7=, $11, $pop30
6841 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push9=, $pop8, $pop7
6842 ; NO-SIMD128-FAST-NEXT:    i32.store16 4($0), $pop9
6843 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push11=, $4
6844 ; NO-SIMD128-FAST-NEXT:    i32.const $push29=, 65535
6845 ; NO-SIMD128-FAST-NEXT:    i32.and $push10=, $12, $pop29
6846 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push12=, $pop11, $pop10
6847 ; NO-SIMD128-FAST-NEXT:    i32.store16 6($0), $pop12
6848 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push14=, $5
6849 ; NO-SIMD128-FAST-NEXT:    i32.const $push28=, 65535
6850 ; NO-SIMD128-FAST-NEXT:    i32.and $push13=, $13, $pop28
6851 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push15=, $pop14, $pop13
6852 ; NO-SIMD128-FAST-NEXT:    i32.store16 8($0), $pop15
6853 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push17=, $6
6854 ; NO-SIMD128-FAST-NEXT:    i32.const $push27=, 65535
6855 ; NO-SIMD128-FAST-NEXT:    i32.and $push16=, $14, $pop27
6856 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push18=, $pop17, $pop16
6857 ; NO-SIMD128-FAST-NEXT:    i32.store16 10($0), $pop18
6858 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push20=, $7
6859 ; NO-SIMD128-FAST-NEXT:    i32.const $push26=, 65535
6860 ; NO-SIMD128-FAST-NEXT:    i32.and $push19=, $15, $pop26
6861 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push21=, $pop20, $pop19
6862 ; NO-SIMD128-FAST-NEXT:    i32.store16 12($0), $pop21
6863 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push23=, $8
6864 ; NO-SIMD128-FAST-NEXT:    i32.const $push25=, 65535
6865 ; NO-SIMD128-FAST-NEXT:    i32.and $push22=, $16, $pop25
6866 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push24=, $pop23, $pop22
6867 ; NO-SIMD128-FAST-NEXT:    i32.store16 14($0), $pop24
6868 ; NO-SIMD128-FAST-NEXT:    return
6869   %a = ashr <8 x i16> %v, %x
6870   ret <8 x i16> %a
6873 define <8 x i16> @shr_u_v8i16(<8 x i16> %v, i16 %x) {
6874 ; SIMD128-LABEL: shr_u_v8i16:
6875 ; SIMD128:         .functype shr_u_v8i16 (v128, i32) -> (v128)
6876 ; SIMD128-NEXT:  # %bb.0:
6877 ; SIMD128-NEXT:    i16x8.shr_u $push0=, $0, $1
6878 ; SIMD128-NEXT:    return $pop0
6880 ; SIMD128-FAST-LABEL: shr_u_v8i16:
6881 ; SIMD128-FAST:         .functype shr_u_v8i16 (v128, i32) -> (v128)
6882 ; SIMD128-FAST-NEXT:  # %bb.0:
6883 ; SIMD128-FAST-NEXT:    i16x8.shr_u $push0=, $0, $1
6884 ; SIMD128-FAST-NEXT:    return $pop0
6886 ; NO-SIMD128-LABEL: shr_u_v8i16:
6887 ; NO-SIMD128:         .functype shr_u_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
6888 ; NO-SIMD128-NEXT:  # %bb.0:
6889 ; NO-SIMD128-NEXT:    i32.const $push0=, 65535
6890 ; NO-SIMD128-NEXT:    i32.and $push1=, $8, $pop0
6891 ; NO-SIMD128-NEXT:    i32.const $push26=, 65535
6892 ; NO-SIMD128-NEXT:    i32.and $push25=, $9, $pop26
6893 ; NO-SIMD128-NEXT:    local.tee $push24=, $9=, $pop25
6894 ; NO-SIMD128-NEXT:    i32.shr_u $push2=, $pop1, $pop24
6895 ; NO-SIMD128-NEXT:    i32.store16 14($0), $pop2
6896 ; NO-SIMD128-NEXT:    i32.const $push23=, 65535
6897 ; NO-SIMD128-NEXT:    i32.and $push3=, $7, $pop23
6898 ; NO-SIMD128-NEXT:    i32.shr_u $push4=, $pop3, $9
6899 ; NO-SIMD128-NEXT:    i32.store16 12($0), $pop4
6900 ; NO-SIMD128-NEXT:    i32.const $push22=, 65535
6901 ; NO-SIMD128-NEXT:    i32.and $push5=, $6, $pop22
6902 ; NO-SIMD128-NEXT:    i32.shr_u $push6=, $pop5, $9
6903 ; NO-SIMD128-NEXT:    i32.store16 10($0), $pop6
6904 ; NO-SIMD128-NEXT:    i32.const $push21=, 65535
6905 ; NO-SIMD128-NEXT:    i32.and $push7=, $5, $pop21
6906 ; NO-SIMD128-NEXT:    i32.shr_u $push8=, $pop7, $9
6907 ; NO-SIMD128-NEXT:    i32.store16 8($0), $pop8
6908 ; NO-SIMD128-NEXT:    i32.const $push20=, 65535
6909 ; NO-SIMD128-NEXT:    i32.and $push9=, $4, $pop20
6910 ; NO-SIMD128-NEXT:    i32.shr_u $push10=, $pop9, $9
6911 ; NO-SIMD128-NEXT:    i32.store16 6($0), $pop10
6912 ; NO-SIMD128-NEXT:    i32.const $push19=, 65535
6913 ; NO-SIMD128-NEXT:    i32.and $push11=, $3, $pop19
6914 ; NO-SIMD128-NEXT:    i32.shr_u $push12=, $pop11, $9
6915 ; NO-SIMD128-NEXT:    i32.store16 4($0), $pop12
6916 ; NO-SIMD128-NEXT:    i32.const $push18=, 65535
6917 ; NO-SIMD128-NEXT:    i32.and $push13=, $2, $pop18
6918 ; NO-SIMD128-NEXT:    i32.shr_u $push14=, $pop13, $9
6919 ; NO-SIMD128-NEXT:    i32.store16 2($0), $pop14
6920 ; NO-SIMD128-NEXT:    i32.const $push17=, 65535
6921 ; NO-SIMD128-NEXT:    i32.and $push15=, $1, $pop17
6922 ; NO-SIMD128-NEXT:    i32.shr_u $push16=, $pop15, $9
6923 ; NO-SIMD128-NEXT:    i32.store16 0($0), $pop16
6924 ; NO-SIMD128-NEXT:    return
6926 ; NO-SIMD128-FAST-LABEL: shr_u_v8i16:
6927 ; NO-SIMD128-FAST:         .functype shr_u_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
6928 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
6929 ; NO-SIMD128-FAST-NEXT:    i32.const $push0=, 65535
6930 ; NO-SIMD128-FAST-NEXT:    i32.and $push1=, $1, $pop0
6931 ; NO-SIMD128-FAST-NEXT:    i32.const $push26=, 65535
6932 ; NO-SIMD128-FAST-NEXT:    i32.and $push25=, $9, $pop26
6933 ; NO-SIMD128-FAST-NEXT:    local.tee $push24=, $1=, $pop25
6934 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push2=, $pop1, $pop24
6935 ; NO-SIMD128-FAST-NEXT:    i32.store16 0($0), $pop2
6936 ; NO-SIMD128-FAST-NEXT:    i32.const $push23=, 65535
6937 ; NO-SIMD128-FAST-NEXT:    i32.and $push3=, $2, $pop23
6938 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push4=, $pop3, $1
6939 ; NO-SIMD128-FAST-NEXT:    i32.store16 2($0), $pop4
6940 ; NO-SIMD128-FAST-NEXT:    i32.const $push22=, 65535
6941 ; NO-SIMD128-FAST-NEXT:    i32.and $push5=, $3, $pop22
6942 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push6=, $pop5, $1
6943 ; NO-SIMD128-FAST-NEXT:    i32.store16 4($0), $pop6
6944 ; NO-SIMD128-FAST-NEXT:    i32.const $push21=, 65535
6945 ; NO-SIMD128-FAST-NEXT:    i32.and $push7=, $4, $pop21
6946 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push8=, $pop7, $1
6947 ; NO-SIMD128-FAST-NEXT:    i32.store16 6($0), $pop8
6948 ; NO-SIMD128-FAST-NEXT:    i32.const $push20=, 65535
6949 ; NO-SIMD128-FAST-NEXT:    i32.and $push9=, $5, $pop20
6950 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push10=, $pop9, $1
6951 ; NO-SIMD128-FAST-NEXT:    i32.store16 8($0), $pop10
6952 ; NO-SIMD128-FAST-NEXT:    i32.const $push19=, 65535
6953 ; NO-SIMD128-FAST-NEXT:    i32.and $push11=, $6, $pop19
6954 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push12=, $pop11, $1
6955 ; NO-SIMD128-FAST-NEXT:    i32.store16 10($0), $pop12
6956 ; NO-SIMD128-FAST-NEXT:    i32.const $push18=, 65535
6957 ; NO-SIMD128-FAST-NEXT:    i32.and $push13=, $7, $pop18
6958 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push14=, $pop13, $1
6959 ; NO-SIMD128-FAST-NEXT:    i32.store16 12($0), $pop14
6960 ; NO-SIMD128-FAST-NEXT:    i32.const $push17=, 65535
6961 ; NO-SIMD128-FAST-NEXT:    i32.and $push15=, $8, $pop17
6962 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push16=, $pop15, $1
6963 ; NO-SIMD128-FAST-NEXT:    i32.store16 14($0), $pop16
6964 ; NO-SIMD128-FAST-NEXT:    return
6965   %t = insertelement <8 x i16> undef, i16 %x, i32 0
6966   %s = shufflevector <8 x i16> %t, <8 x i16> undef,
6967     <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
6968   %a = lshr <8 x i16> %v, %s
6969   ret <8 x i16> %a
6972 define <8 x i16> @shr_u_vec_v8i16(<8 x i16> %v, <8 x i16> %x) {
6973 ; SIMD128-LABEL: shr_u_vec_v8i16:
6974 ; SIMD128:         .functype shr_u_vec_v8i16 (v128, v128) -> (v128)
6975 ; SIMD128-NEXT:  # %bb.0:
6976 ; SIMD128-NEXT:    i16x8.extract_lane_u $push7=, $0, 0
6977 ; SIMD128-NEXT:    i16x8.extract_lane_u $push5=, $1, 0
6978 ; SIMD128-NEXT:    i32.const $push1=, 15
6979 ; SIMD128-NEXT:    i32.and $push6=, $pop5, $pop1
6980 ; SIMD128-NEXT:    i32.shr_u $push8=, $pop7, $pop6
6981 ; SIMD128-NEXT:    i16x8.splat $push9=, $pop8
6982 ; SIMD128-NEXT:    i16x8.extract_lane_u $push3=, $0, 1
6983 ; SIMD128-NEXT:    i16x8.extract_lane_u $push0=, $1, 1
6984 ; SIMD128-NEXT:    i32.const $push47=, 15
6985 ; SIMD128-NEXT:    i32.and $push2=, $pop0, $pop47
6986 ; SIMD128-NEXT:    i32.shr_u $push4=, $pop3, $pop2
6987 ; SIMD128-NEXT:    i16x8.replace_lane $push10=, $pop9, 1, $pop4
6988 ; SIMD128-NEXT:    i16x8.extract_lane_u $push13=, $0, 2
6989 ; SIMD128-NEXT:    i16x8.extract_lane_u $push11=, $1, 2
6990 ; SIMD128-NEXT:    i32.const $push46=, 15
6991 ; SIMD128-NEXT:    i32.and $push12=, $pop11, $pop46
6992 ; SIMD128-NEXT:    i32.shr_u $push14=, $pop13, $pop12
6993 ; SIMD128-NEXT:    i16x8.replace_lane $push15=, $pop10, 2, $pop14
6994 ; SIMD128-NEXT:    i16x8.extract_lane_u $push18=, $0, 3
6995 ; SIMD128-NEXT:    i16x8.extract_lane_u $push16=, $1, 3
6996 ; SIMD128-NEXT:    i32.const $push45=, 15
6997 ; SIMD128-NEXT:    i32.and $push17=, $pop16, $pop45
6998 ; SIMD128-NEXT:    i32.shr_u $push19=, $pop18, $pop17
6999 ; SIMD128-NEXT:    i16x8.replace_lane $push20=, $pop15, 3, $pop19
7000 ; SIMD128-NEXT:    i16x8.extract_lane_u $push23=, $0, 4
7001 ; SIMD128-NEXT:    i16x8.extract_lane_u $push21=, $1, 4
7002 ; SIMD128-NEXT:    i32.const $push44=, 15
7003 ; SIMD128-NEXT:    i32.and $push22=, $pop21, $pop44
7004 ; SIMD128-NEXT:    i32.shr_u $push24=, $pop23, $pop22
7005 ; SIMD128-NEXT:    i16x8.replace_lane $push25=, $pop20, 4, $pop24
7006 ; SIMD128-NEXT:    i16x8.extract_lane_u $push28=, $0, 5
7007 ; SIMD128-NEXT:    i16x8.extract_lane_u $push26=, $1, 5
7008 ; SIMD128-NEXT:    i32.const $push43=, 15
7009 ; SIMD128-NEXT:    i32.and $push27=, $pop26, $pop43
7010 ; SIMD128-NEXT:    i32.shr_u $push29=, $pop28, $pop27
7011 ; SIMD128-NEXT:    i16x8.replace_lane $push30=, $pop25, 5, $pop29
7012 ; SIMD128-NEXT:    i16x8.extract_lane_u $push33=, $0, 6
7013 ; SIMD128-NEXT:    i16x8.extract_lane_u $push31=, $1, 6
7014 ; SIMD128-NEXT:    i32.const $push42=, 15
7015 ; SIMD128-NEXT:    i32.and $push32=, $pop31, $pop42
7016 ; SIMD128-NEXT:    i32.shr_u $push34=, $pop33, $pop32
7017 ; SIMD128-NEXT:    i16x8.replace_lane $push35=, $pop30, 6, $pop34
7018 ; SIMD128-NEXT:    i16x8.extract_lane_u $push38=, $0, 7
7019 ; SIMD128-NEXT:    i16x8.extract_lane_u $push36=, $1, 7
7020 ; SIMD128-NEXT:    i32.const $push41=, 15
7021 ; SIMD128-NEXT:    i32.and $push37=, $pop36, $pop41
7022 ; SIMD128-NEXT:    i32.shr_u $push39=, $pop38, $pop37
7023 ; SIMD128-NEXT:    i16x8.replace_lane $push40=, $pop35, 7, $pop39
7024 ; SIMD128-NEXT:    return $pop40
7026 ; SIMD128-FAST-LABEL: shr_u_vec_v8i16:
7027 ; SIMD128-FAST:         .functype shr_u_vec_v8i16 (v128, v128) -> (v128)
7028 ; SIMD128-FAST-NEXT:  # %bb.0:
7029 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push8=, $0, 0
7030 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push6=, $1, 0
7031 ; SIMD128-FAST-NEXT:    i32.const $push2=, 15
7032 ; SIMD128-FAST-NEXT:    i32.and $push7=, $pop6, $pop2
7033 ; SIMD128-FAST-NEXT:    i32.shr_u $push9=, $pop8, $pop7
7034 ; SIMD128-FAST-NEXT:    i16x8.splat $push10=, $pop9
7035 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push4=, $0, 1
7036 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push1=, $1, 1
7037 ; SIMD128-FAST-NEXT:    i32.const $push47=, 15
7038 ; SIMD128-FAST-NEXT:    i32.and $push3=, $pop1, $pop47
7039 ; SIMD128-FAST-NEXT:    i32.shr_u $push5=, $pop4, $pop3
7040 ; SIMD128-FAST-NEXT:    i16x8.replace_lane $push11=, $pop10, 1, $pop5
7041 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push14=, $0, 2
7042 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push12=, $1, 2
7043 ; SIMD128-FAST-NEXT:    i32.const $push46=, 15
7044 ; SIMD128-FAST-NEXT:    i32.and $push13=, $pop12, $pop46
7045 ; SIMD128-FAST-NEXT:    i32.shr_u $push15=, $pop14, $pop13
7046 ; SIMD128-FAST-NEXT:    i16x8.replace_lane $push16=, $pop11, 2, $pop15
7047 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push19=, $0, 3
7048 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push17=, $1, 3
7049 ; SIMD128-FAST-NEXT:    i32.const $push45=, 15
7050 ; SIMD128-FAST-NEXT:    i32.and $push18=, $pop17, $pop45
7051 ; SIMD128-FAST-NEXT:    i32.shr_u $push20=, $pop19, $pop18
7052 ; SIMD128-FAST-NEXT:    i16x8.replace_lane $push21=, $pop16, 3, $pop20
7053 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push24=, $0, 4
7054 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push22=, $1, 4
7055 ; SIMD128-FAST-NEXT:    i32.const $push44=, 15
7056 ; SIMD128-FAST-NEXT:    i32.and $push23=, $pop22, $pop44
7057 ; SIMD128-FAST-NEXT:    i32.shr_u $push25=, $pop24, $pop23
7058 ; SIMD128-FAST-NEXT:    i16x8.replace_lane $push26=, $pop21, 4, $pop25
7059 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push29=, $0, 5
7060 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push27=, $1, 5
7061 ; SIMD128-FAST-NEXT:    i32.const $push43=, 15
7062 ; SIMD128-FAST-NEXT:    i32.and $push28=, $pop27, $pop43
7063 ; SIMD128-FAST-NEXT:    i32.shr_u $push30=, $pop29, $pop28
7064 ; SIMD128-FAST-NEXT:    i16x8.replace_lane $push31=, $pop26, 5, $pop30
7065 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push34=, $0, 6
7066 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push32=, $1, 6
7067 ; SIMD128-FAST-NEXT:    i32.const $push42=, 15
7068 ; SIMD128-FAST-NEXT:    i32.and $push33=, $pop32, $pop42
7069 ; SIMD128-FAST-NEXT:    i32.shr_u $push35=, $pop34, $pop33
7070 ; SIMD128-FAST-NEXT:    i16x8.replace_lane $push36=, $pop31, 6, $pop35
7071 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push39=, $0, 7
7072 ; SIMD128-FAST-NEXT:    i16x8.extract_lane_u $push37=, $1, 7
7073 ; SIMD128-FAST-NEXT:    i32.const $push41=, 15
7074 ; SIMD128-FAST-NEXT:    i32.and $push38=, $pop37, $pop41
7075 ; SIMD128-FAST-NEXT:    i32.shr_u $push40=, $pop39, $pop38
7076 ; SIMD128-FAST-NEXT:    i16x8.replace_lane $push0=, $pop36, 7, $pop40
7077 ; SIMD128-FAST-NEXT:    return $pop0
7079 ; NO-SIMD128-LABEL: shr_u_vec_v8i16:
7080 ; NO-SIMD128:         .functype shr_u_vec_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
7081 ; NO-SIMD128-NEXT:  # %bb.0:
7082 ; NO-SIMD128-NEXT:    i32.const $push0=, 65535
7083 ; NO-SIMD128-NEXT:    i32.and $push2=, $8, $pop0
7084 ; NO-SIMD128-NEXT:    i32.const $push39=, 65535
7085 ; NO-SIMD128-NEXT:    i32.and $push1=, $16, $pop39
7086 ; NO-SIMD128-NEXT:    i32.shr_u $push3=, $pop2, $pop1
7087 ; NO-SIMD128-NEXT:    i32.store16 14($0), $pop3
7088 ; NO-SIMD128-NEXT:    i32.const $push38=, 65535
7089 ; NO-SIMD128-NEXT:    i32.and $push5=, $7, $pop38
7090 ; NO-SIMD128-NEXT:    i32.const $push37=, 65535
7091 ; NO-SIMD128-NEXT:    i32.and $push4=, $15, $pop37
7092 ; NO-SIMD128-NEXT:    i32.shr_u $push6=, $pop5, $pop4
7093 ; NO-SIMD128-NEXT:    i32.store16 12($0), $pop6
7094 ; NO-SIMD128-NEXT:    i32.const $push36=, 65535
7095 ; NO-SIMD128-NEXT:    i32.and $push8=, $6, $pop36
7096 ; NO-SIMD128-NEXT:    i32.const $push35=, 65535
7097 ; NO-SIMD128-NEXT:    i32.and $push7=, $14, $pop35
7098 ; NO-SIMD128-NEXT:    i32.shr_u $push9=, $pop8, $pop7
7099 ; NO-SIMD128-NEXT:    i32.store16 10($0), $pop9
7100 ; NO-SIMD128-NEXT:    i32.const $push34=, 65535
7101 ; NO-SIMD128-NEXT:    i32.and $push11=, $5, $pop34
7102 ; NO-SIMD128-NEXT:    i32.const $push33=, 65535
7103 ; NO-SIMD128-NEXT:    i32.and $push10=, $13, $pop33
7104 ; NO-SIMD128-NEXT:    i32.shr_u $push12=, $pop11, $pop10
7105 ; NO-SIMD128-NEXT:    i32.store16 8($0), $pop12
7106 ; NO-SIMD128-NEXT:    i32.const $push32=, 65535
7107 ; NO-SIMD128-NEXT:    i32.and $push14=, $4, $pop32
7108 ; NO-SIMD128-NEXT:    i32.const $push31=, 65535
7109 ; NO-SIMD128-NEXT:    i32.and $push13=, $12, $pop31
7110 ; NO-SIMD128-NEXT:    i32.shr_u $push15=, $pop14, $pop13
7111 ; NO-SIMD128-NEXT:    i32.store16 6($0), $pop15
7112 ; NO-SIMD128-NEXT:    i32.const $push30=, 65535
7113 ; NO-SIMD128-NEXT:    i32.and $push17=, $3, $pop30
7114 ; NO-SIMD128-NEXT:    i32.const $push29=, 65535
7115 ; NO-SIMD128-NEXT:    i32.and $push16=, $11, $pop29
7116 ; NO-SIMD128-NEXT:    i32.shr_u $push18=, $pop17, $pop16
7117 ; NO-SIMD128-NEXT:    i32.store16 4($0), $pop18
7118 ; NO-SIMD128-NEXT:    i32.const $push28=, 65535
7119 ; NO-SIMD128-NEXT:    i32.and $push20=, $2, $pop28
7120 ; NO-SIMD128-NEXT:    i32.const $push27=, 65535
7121 ; NO-SIMD128-NEXT:    i32.and $push19=, $10, $pop27
7122 ; NO-SIMD128-NEXT:    i32.shr_u $push21=, $pop20, $pop19
7123 ; NO-SIMD128-NEXT:    i32.store16 2($0), $pop21
7124 ; NO-SIMD128-NEXT:    i32.const $push26=, 65535
7125 ; NO-SIMD128-NEXT:    i32.and $push23=, $1, $pop26
7126 ; NO-SIMD128-NEXT:    i32.const $push25=, 65535
7127 ; NO-SIMD128-NEXT:    i32.and $push22=, $9, $pop25
7128 ; NO-SIMD128-NEXT:    i32.shr_u $push24=, $pop23, $pop22
7129 ; NO-SIMD128-NEXT:    i32.store16 0($0), $pop24
7130 ; NO-SIMD128-NEXT:    return
7132 ; NO-SIMD128-FAST-LABEL: shr_u_vec_v8i16:
7133 ; 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) -> ()
7134 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
7135 ; NO-SIMD128-FAST-NEXT:    i32.const $push0=, 65535
7136 ; NO-SIMD128-FAST-NEXT:    i32.and $push2=, $1, $pop0
7137 ; NO-SIMD128-FAST-NEXT:    i32.const $push39=, 65535
7138 ; NO-SIMD128-FAST-NEXT:    i32.and $push1=, $9, $pop39
7139 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push3=, $pop2, $pop1
7140 ; NO-SIMD128-FAST-NEXT:    i32.store16 0($0), $pop3
7141 ; NO-SIMD128-FAST-NEXT:    i32.const $push38=, 65535
7142 ; NO-SIMD128-FAST-NEXT:    i32.and $push5=, $2, $pop38
7143 ; NO-SIMD128-FAST-NEXT:    i32.const $push37=, 65535
7144 ; NO-SIMD128-FAST-NEXT:    i32.and $push4=, $10, $pop37
7145 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push6=, $pop5, $pop4
7146 ; NO-SIMD128-FAST-NEXT:    i32.store16 2($0), $pop6
7147 ; NO-SIMD128-FAST-NEXT:    i32.const $push36=, 65535
7148 ; NO-SIMD128-FAST-NEXT:    i32.and $push8=, $3, $pop36
7149 ; NO-SIMD128-FAST-NEXT:    i32.const $push35=, 65535
7150 ; NO-SIMD128-FAST-NEXT:    i32.and $push7=, $11, $pop35
7151 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push9=, $pop8, $pop7
7152 ; NO-SIMD128-FAST-NEXT:    i32.store16 4($0), $pop9
7153 ; NO-SIMD128-FAST-NEXT:    i32.const $push34=, 65535
7154 ; NO-SIMD128-FAST-NEXT:    i32.and $push11=, $4, $pop34
7155 ; NO-SIMD128-FAST-NEXT:    i32.const $push33=, 65535
7156 ; NO-SIMD128-FAST-NEXT:    i32.and $push10=, $12, $pop33
7157 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push12=, $pop11, $pop10
7158 ; NO-SIMD128-FAST-NEXT:    i32.store16 6($0), $pop12
7159 ; NO-SIMD128-FAST-NEXT:    i32.const $push32=, 65535
7160 ; NO-SIMD128-FAST-NEXT:    i32.and $push14=, $5, $pop32
7161 ; NO-SIMD128-FAST-NEXT:    i32.const $push31=, 65535
7162 ; NO-SIMD128-FAST-NEXT:    i32.and $push13=, $13, $pop31
7163 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push15=, $pop14, $pop13
7164 ; NO-SIMD128-FAST-NEXT:    i32.store16 8($0), $pop15
7165 ; NO-SIMD128-FAST-NEXT:    i32.const $push30=, 65535
7166 ; NO-SIMD128-FAST-NEXT:    i32.and $push17=, $6, $pop30
7167 ; NO-SIMD128-FAST-NEXT:    i32.const $push29=, 65535
7168 ; NO-SIMD128-FAST-NEXT:    i32.and $push16=, $14, $pop29
7169 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push18=, $pop17, $pop16
7170 ; NO-SIMD128-FAST-NEXT:    i32.store16 10($0), $pop18
7171 ; NO-SIMD128-FAST-NEXT:    i32.const $push28=, 65535
7172 ; NO-SIMD128-FAST-NEXT:    i32.and $push20=, $7, $pop28
7173 ; NO-SIMD128-FAST-NEXT:    i32.const $push27=, 65535
7174 ; NO-SIMD128-FAST-NEXT:    i32.and $push19=, $15, $pop27
7175 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push21=, $pop20, $pop19
7176 ; NO-SIMD128-FAST-NEXT:    i32.store16 12($0), $pop21
7177 ; NO-SIMD128-FAST-NEXT:    i32.const $push26=, 65535
7178 ; NO-SIMD128-FAST-NEXT:    i32.and $push23=, $8, $pop26
7179 ; NO-SIMD128-FAST-NEXT:    i32.const $push25=, 65535
7180 ; NO-SIMD128-FAST-NEXT:    i32.and $push22=, $16, $pop25
7181 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push24=, $pop23, $pop22
7182 ; NO-SIMD128-FAST-NEXT:    i32.store16 14($0), $pop24
7183 ; NO-SIMD128-FAST-NEXT:    return
7184   %a = lshr <8 x i16> %v, %x
7185   ret <8 x i16> %a
7188 define <8 x i16> @and_v8i16(<8 x i16> %x, <8 x i16> %y) {
7189 ; SIMD128-LABEL: and_v8i16:
7190 ; SIMD128:         .functype and_v8i16 (v128, v128) -> (v128)
7191 ; SIMD128-NEXT:  # %bb.0:
7192 ; SIMD128-NEXT:    v128.and $push0=, $0, $1
7193 ; SIMD128-NEXT:    return $pop0
7195 ; SIMD128-FAST-LABEL: and_v8i16:
7196 ; SIMD128-FAST:         .functype and_v8i16 (v128, v128) -> (v128)
7197 ; SIMD128-FAST-NEXT:  # %bb.0:
7198 ; SIMD128-FAST-NEXT:    v128.and $push0=, $0, $1
7199 ; SIMD128-FAST-NEXT:    return $pop0
7201 ; NO-SIMD128-LABEL: and_v8i16:
7202 ; NO-SIMD128:         .functype and_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
7203 ; NO-SIMD128-NEXT:  # %bb.0:
7204 ; NO-SIMD128-NEXT:    i32.and $push0=, $8, $16
7205 ; NO-SIMD128-NEXT:    i32.store16 14($0), $pop0
7206 ; NO-SIMD128-NEXT:    i32.and $push1=, $7, $15
7207 ; NO-SIMD128-NEXT:    i32.store16 12($0), $pop1
7208 ; NO-SIMD128-NEXT:    i32.and $push2=, $6, $14
7209 ; NO-SIMD128-NEXT:    i32.store16 10($0), $pop2
7210 ; NO-SIMD128-NEXT:    i32.and $push3=, $5, $13
7211 ; NO-SIMD128-NEXT:    i32.store16 8($0), $pop3
7212 ; NO-SIMD128-NEXT:    i32.and $push4=, $4, $12
7213 ; NO-SIMD128-NEXT:    i32.store16 6($0), $pop4
7214 ; NO-SIMD128-NEXT:    i32.and $push5=, $3, $11
7215 ; NO-SIMD128-NEXT:    i32.store16 4($0), $pop5
7216 ; NO-SIMD128-NEXT:    i32.and $push6=, $2, $10
7217 ; NO-SIMD128-NEXT:    i32.store16 2($0), $pop6
7218 ; NO-SIMD128-NEXT:    i32.and $push7=, $1, $9
7219 ; NO-SIMD128-NEXT:    i32.store16 0($0), $pop7
7220 ; NO-SIMD128-NEXT:    return
7222 ; NO-SIMD128-FAST-LABEL: and_v8i16:
7223 ; NO-SIMD128-FAST:         .functype and_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
7224 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
7225 ; NO-SIMD128-FAST-NEXT:    i32.and $push0=, $1, $9
7226 ; NO-SIMD128-FAST-NEXT:    i32.store16 0($0), $pop0
7227 ; NO-SIMD128-FAST-NEXT:    i32.and $push1=, $2, $10
7228 ; NO-SIMD128-FAST-NEXT:    i32.store16 2($0), $pop1
7229 ; NO-SIMD128-FAST-NEXT:    i32.and $push2=, $3, $11
7230 ; NO-SIMD128-FAST-NEXT:    i32.store16 4($0), $pop2
7231 ; NO-SIMD128-FAST-NEXT:    i32.and $push3=, $4, $12
7232 ; NO-SIMD128-FAST-NEXT:    i32.store16 6($0), $pop3
7233 ; NO-SIMD128-FAST-NEXT:    i32.and $push4=, $5, $13
7234 ; NO-SIMD128-FAST-NEXT:    i32.store16 8($0), $pop4
7235 ; NO-SIMD128-FAST-NEXT:    i32.and $push5=, $6, $14
7236 ; NO-SIMD128-FAST-NEXT:    i32.store16 10($0), $pop5
7237 ; NO-SIMD128-FAST-NEXT:    i32.and $push6=, $7, $15
7238 ; NO-SIMD128-FAST-NEXT:    i32.store16 12($0), $pop6
7239 ; NO-SIMD128-FAST-NEXT:    i32.and $push7=, $8, $16
7240 ; NO-SIMD128-FAST-NEXT:    i32.store16 14($0), $pop7
7241 ; NO-SIMD128-FAST-NEXT:    return
7242   %a = and <8 x i16> %x, %y
7243   ret <8 x i16> %a
7246 define <8 x i16> @or_v8i16(<8 x i16> %x, <8 x i16> %y) {
7247 ; SIMD128-LABEL: or_v8i16:
7248 ; SIMD128:         .functype or_v8i16 (v128, v128) -> (v128)
7249 ; SIMD128-NEXT:  # %bb.0:
7250 ; SIMD128-NEXT:    v128.or $push0=, $0, $1
7251 ; SIMD128-NEXT:    return $pop0
7253 ; SIMD128-FAST-LABEL: or_v8i16:
7254 ; SIMD128-FAST:         .functype or_v8i16 (v128, v128) -> (v128)
7255 ; SIMD128-FAST-NEXT:  # %bb.0:
7256 ; SIMD128-FAST-NEXT:    v128.or $push0=, $0, $1
7257 ; SIMD128-FAST-NEXT:    return $pop0
7259 ; NO-SIMD128-LABEL: or_v8i16:
7260 ; NO-SIMD128:         .functype or_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
7261 ; NO-SIMD128-NEXT:  # %bb.0:
7262 ; NO-SIMD128-NEXT:    i32.or $push0=, $8, $16
7263 ; NO-SIMD128-NEXT:    i32.store16 14($0), $pop0
7264 ; NO-SIMD128-NEXT:    i32.or $push1=, $7, $15
7265 ; NO-SIMD128-NEXT:    i32.store16 12($0), $pop1
7266 ; NO-SIMD128-NEXT:    i32.or $push2=, $6, $14
7267 ; NO-SIMD128-NEXT:    i32.store16 10($0), $pop2
7268 ; NO-SIMD128-NEXT:    i32.or $push3=, $5, $13
7269 ; NO-SIMD128-NEXT:    i32.store16 8($0), $pop3
7270 ; NO-SIMD128-NEXT:    i32.or $push4=, $4, $12
7271 ; NO-SIMD128-NEXT:    i32.store16 6($0), $pop4
7272 ; NO-SIMD128-NEXT:    i32.or $push5=, $3, $11
7273 ; NO-SIMD128-NEXT:    i32.store16 4($0), $pop5
7274 ; NO-SIMD128-NEXT:    i32.or $push6=, $2, $10
7275 ; NO-SIMD128-NEXT:    i32.store16 2($0), $pop6
7276 ; NO-SIMD128-NEXT:    i32.or $push7=, $1, $9
7277 ; NO-SIMD128-NEXT:    i32.store16 0($0), $pop7
7278 ; NO-SIMD128-NEXT:    return
7280 ; NO-SIMD128-FAST-LABEL: or_v8i16:
7281 ; NO-SIMD128-FAST:         .functype or_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
7282 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
7283 ; NO-SIMD128-FAST-NEXT:    i32.or $push0=, $1, $9
7284 ; NO-SIMD128-FAST-NEXT:    i32.store16 0($0), $pop0
7285 ; NO-SIMD128-FAST-NEXT:    i32.or $push1=, $2, $10
7286 ; NO-SIMD128-FAST-NEXT:    i32.store16 2($0), $pop1
7287 ; NO-SIMD128-FAST-NEXT:    i32.or $push2=, $3, $11
7288 ; NO-SIMD128-FAST-NEXT:    i32.store16 4($0), $pop2
7289 ; NO-SIMD128-FAST-NEXT:    i32.or $push3=, $4, $12
7290 ; NO-SIMD128-FAST-NEXT:    i32.store16 6($0), $pop3
7291 ; NO-SIMD128-FAST-NEXT:    i32.or $push4=, $5, $13
7292 ; NO-SIMD128-FAST-NEXT:    i32.store16 8($0), $pop4
7293 ; NO-SIMD128-FAST-NEXT:    i32.or $push5=, $6, $14
7294 ; NO-SIMD128-FAST-NEXT:    i32.store16 10($0), $pop5
7295 ; NO-SIMD128-FAST-NEXT:    i32.or $push6=, $7, $15
7296 ; NO-SIMD128-FAST-NEXT:    i32.store16 12($0), $pop6
7297 ; NO-SIMD128-FAST-NEXT:    i32.or $push7=, $8, $16
7298 ; NO-SIMD128-FAST-NEXT:    i32.store16 14($0), $pop7
7299 ; NO-SIMD128-FAST-NEXT:    return
7300   %a = or <8 x i16> %x, %y
7301   ret <8 x i16> %a
7304 define <8 x i16> @xor_v8i16(<8 x i16> %x, <8 x i16> %y) {
7305 ; SIMD128-LABEL: xor_v8i16:
7306 ; SIMD128:         .functype xor_v8i16 (v128, v128) -> (v128)
7307 ; SIMD128-NEXT:  # %bb.0:
7308 ; SIMD128-NEXT:    v128.xor $push0=, $0, $1
7309 ; SIMD128-NEXT:    return $pop0
7311 ; SIMD128-FAST-LABEL: xor_v8i16:
7312 ; SIMD128-FAST:         .functype xor_v8i16 (v128, v128) -> (v128)
7313 ; SIMD128-FAST-NEXT:  # %bb.0:
7314 ; SIMD128-FAST-NEXT:    v128.xor $push0=, $0, $1
7315 ; SIMD128-FAST-NEXT:    return $pop0
7317 ; NO-SIMD128-LABEL: xor_v8i16:
7318 ; NO-SIMD128:         .functype xor_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
7319 ; NO-SIMD128-NEXT:  # %bb.0:
7320 ; NO-SIMD128-NEXT:    i32.xor $push0=, $8, $16
7321 ; NO-SIMD128-NEXT:    i32.store16 14($0), $pop0
7322 ; NO-SIMD128-NEXT:    i32.xor $push1=, $7, $15
7323 ; NO-SIMD128-NEXT:    i32.store16 12($0), $pop1
7324 ; NO-SIMD128-NEXT:    i32.xor $push2=, $6, $14
7325 ; NO-SIMD128-NEXT:    i32.store16 10($0), $pop2
7326 ; NO-SIMD128-NEXT:    i32.xor $push3=, $5, $13
7327 ; NO-SIMD128-NEXT:    i32.store16 8($0), $pop3
7328 ; NO-SIMD128-NEXT:    i32.xor $push4=, $4, $12
7329 ; NO-SIMD128-NEXT:    i32.store16 6($0), $pop4
7330 ; NO-SIMD128-NEXT:    i32.xor $push5=, $3, $11
7331 ; NO-SIMD128-NEXT:    i32.store16 4($0), $pop5
7332 ; NO-SIMD128-NEXT:    i32.xor $push6=, $2, $10
7333 ; NO-SIMD128-NEXT:    i32.store16 2($0), $pop6
7334 ; NO-SIMD128-NEXT:    i32.xor $push7=, $1, $9
7335 ; NO-SIMD128-NEXT:    i32.store16 0($0), $pop7
7336 ; NO-SIMD128-NEXT:    return
7338 ; NO-SIMD128-FAST-LABEL: xor_v8i16:
7339 ; NO-SIMD128-FAST:         .functype xor_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
7340 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
7341 ; NO-SIMD128-FAST-NEXT:    i32.xor $push0=, $1, $9
7342 ; NO-SIMD128-FAST-NEXT:    i32.store16 0($0), $pop0
7343 ; NO-SIMD128-FAST-NEXT:    i32.xor $push1=, $2, $10
7344 ; NO-SIMD128-FAST-NEXT:    i32.store16 2($0), $pop1
7345 ; NO-SIMD128-FAST-NEXT:    i32.xor $push2=, $3, $11
7346 ; NO-SIMD128-FAST-NEXT:    i32.store16 4($0), $pop2
7347 ; NO-SIMD128-FAST-NEXT:    i32.xor $push3=, $4, $12
7348 ; NO-SIMD128-FAST-NEXT:    i32.store16 6($0), $pop3
7349 ; NO-SIMD128-FAST-NEXT:    i32.xor $push4=, $5, $13
7350 ; NO-SIMD128-FAST-NEXT:    i32.store16 8($0), $pop4
7351 ; NO-SIMD128-FAST-NEXT:    i32.xor $push5=, $6, $14
7352 ; NO-SIMD128-FAST-NEXT:    i32.store16 10($0), $pop5
7353 ; NO-SIMD128-FAST-NEXT:    i32.xor $push6=, $7, $15
7354 ; NO-SIMD128-FAST-NEXT:    i32.store16 12($0), $pop6
7355 ; NO-SIMD128-FAST-NEXT:    i32.xor $push7=, $8, $16
7356 ; NO-SIMD128-FAST-NEXT:    i32.store16 14($0), $pop7
7357 ; NO-SIMD128-FAST-NEXT:    return
7358   %a = xor <8 x i16> %x, %y
7359   ret <8 x i16> %a
7362 define <8 x i16> @not_v8i16(<8 x i16> %x) {
7363 ; SIMD128-LABEL: not_v8i16:
7364 ; SIMD128:         .functype not_v8i16 (v128) -> (v128)
7365 ; SIMD128-NEXT:  # %bb.0:
7366 ; SIMD128-NEXT:    v128.not $push0=, $0
7367 ; SIMD128-NEXT:    return $pop0
7369 ; SIMD128-FAST-LABEL: not_v8i16:
7370 ; SIMD128-FAST:         .functype not_v8i16 (v128) -> (v128)
7371 ; SIMD128-FAST-NEXT:  # %bb.0:
7372 ; SIMD128-FAST-NEXT:    v128.not $push0=, $0
7373 ; SIMD128-FAST-NEXT:    return $pop0
7375 ; NO-SIMD128-LABEL: not_v8i16:
7376 ; NO-SIMD128:         .functype not_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
7377 ; NO-SIMD128-NEXT:  # %bb.0:
7378 ; NO-SIMD128-NEXT:    i32.const $push0=, -1
7379 ; NO-SIMD128-NEXT:    i32.xor $push1=, $8, $pop0
7380 ; NO-SIMD128-NEXT:    i32.store16 14($0), $pop1
7381 ; NO-SIMD128-NEXT:    i32.const $push15=, -1
7382 ; NO-SIMD128-NEXT:    i32.xor $push2=, $7, $pop15
7383 ; NO-SIMD128-NEXT:    i32.store16 12($0), $pop2
7384 ; NO-SIMD128-NEXT:    i32.const $push14=, -1
7385 ; NO-SIMD128-NEXT:    i32.xor $push3=, $6, $pop14
7386 ; NO-SIMD128-NEXT:    i32.store16 10($0), $pop3
7387 ; NO-SIMD128-NEXT:    i32.const $push13=, -1
7388 ; NO-SIMD128-NEXT:    i32.xor $push4=, $5, $pop13
7389 ; NO-SIMD128-NEXT:    i32.store16 8($0), $pop4
7390 ; NO-SIMD128-NEXT:    i32.const $push12=, -1
7391 ; NO-SIMD128-NEXT:    i32.xor $push5=, $4, $pop12
7392 ; NO-SIMD128-NEXT:    i32.store16 6($0), $pop5
7393 ; NO-SIMD128-NEXT:    i32.const $push11=, -1
7394 ; NO-SIMD128-NEXT:    i32.xor $push6=, $3, $pop11
7395 ; NO-SIMD128-NEXT:    i32.store16 4($0), $pop6
7396 ; NO-SIMD128-NEXT:    i32.const $push10=, -1
7397 ; NO-SIMD128-NEXT:    i32.xor $push7=, $2, $pop10
7398 ; NO-SIMD128-NEXT:    i32.store16 2($0), $pop7
7399 ; NO-SIMD128-NEXT:    i32.const $push9=, -1
7400 ; NO-SIMD128-NEXT:    i32.xor $push8=, $1, $pop9
7401 ; NO-SIMD128-NEXT:    i32.store16 0($0), $pop8
7402 ; NO-SIMD128-NEXT:    return
7404 ; NO-SIMD128-FAST-LABEL: not_v8i16:
7405 ; NO-SIMD128-FAST:         .functype not_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
7406 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
7407 ; NO-SIMD128-FAST-NEXT:    i32.const $push0=, -1
7408 ; NO-SIMD128-FAST-NEXT:    i32.xor $push1=, $1, $pop0
7409 ; NO-SIMD128-FAST-NEXT:    i32.store16 0($0), $pop1
7410 ; NO-SIMD128-FAST-NEXT:    i32.const $push15=, -1
7411 ; NO-SIMD128-FAST-NEXT:    i32.xor $push2=, $2, $pop15
7412 ; NO-SIMD128-FAST-NEXT:    i32.store16 2($0), $pop2
7413 ; NO-SIMD128-FAST-NEXT:    i32.const $push14=, -1
7414 ; NO-SIMD128-FAST-NEXT:    i32.xor $push3=, $3, $pop14
7415 ; NO-SIMD128-FAST-NEXT:    i32.store16 4($0), $pop3
7416 ; NO-SIMD128-FAST-NEXT:    i32.const $push13=, -1
7417 ; NO-SIMD128-FAST-NEXT:    i32.xor $push4=, $4, $pop13
7418 ; NO-SIMD128-FAST-NEXT:    i32.store16 6($0), $pop4
7419 ; NO-SIMD128-FAST-NEXT:    i32.const $push12=, -1
7420 ; NO-SIMD128-FAST-NEXT:    i32.xor $push5=, $5, $pop12
7421 ; NO-SIMD128-FAST-NEXT:    i32.store16 8($0), $pop5
7422 ; NO-SIMD128-FAST-NEXT:    i32.const $push11=, -1
7423 ; NO-SIMD128-FAST-NEXT:    i32.xor $push6=, $6, $pop11
7424 ; NO-SIMD128-FAST-NEXT:    i32.store16 10($0), $pop6
7425 ; NO-SIMD128-FAST-NEXT:    i32.const $push10=, -1
7426 ; NO-SIMD128-FAST-NEXT:    i32.xor $push7=, $7, $pop10
7427 ; NO-SIMD128-FAST-NEXT:    i32.store16 12($0), $pop7
7428 ; NO-SIMD128-FAST-NEXT:    i32.const $push9=, -1
7429 ; NO-SIMD128-FAST-NEXT:    i32.xor $push8=, $8, $pop9
7430 ; NO-SIMD128-FAST-NEXT:    i32.store16 14($0), $pop8
7431 ; NO-SIMD128-FAST-NEXT:    return
7432   %a = xor <8 x i16> %x, <i16 -1, i16 -1, i16 -1, i16 -1,
7433                           i16 -1, i16 -1, i16 -1, i16 -1>
7434   ret <8 x i16> %a
7437 define <8 x i16> @andnot_v8i16(<8 x i16> %x, <8 x i16> %y) {
7438 ; SIMD128-LABEL: andnot_v8i16:
7439 ; SIMD128:         .functype andnot_v8i16 (v128, v128) -> (v128)
7440 ; SIMD128-NEXT:  # %bb.0:
7441 ; SIMD128-NEXT:    v128.andnot $push0=, $0, $1
7442 ; SIMD128-NEXT:    return $pop0
7444 ; SIMD128-FAST-LABEL: andnot_v8i16:
7445 ; SIMD128-FAST:         .functype andnot_v8i16 (v128, v128) -> (v128)
7446 ; SIMD128-FAST-NEXT:  # %bb.0:
7447 ; SIMD128-FAST-NEXT:    v128.not $push0=, $1
7448 ; SIMD128-FAST-NEXT:    v128.and $push1=, $0, $pop0
7449 ; SIMD128-FAST-NEXT:    return $pop1
7451 ; NO-SIMD128-LABEL: andnot_v8i16:
7452 ; NO-SIMD128:         .functype andnot_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
7453 ; NO-SIMD128-NEXT:  # %bb.0:
7454 ; NO-SIMD128-NEXT:    i32.const $push0=, -1
7455 ; NO-SIMD128-NEXT:    i32.xor $push1=, $16, $pop0
7456 ; NO-SIMD128-NEXT:    i32.and $push2=, $8, $pop1
7457 ; NO-SIMD128-NEXT:    i32.store16 14($0), $pop2
7458 ; NO-SIMD128-NEXT:    i32.const $push23=, -1
7459 ; NO-SIMD128-NEXT:    i32.xor $push3=, $15, $pop23
7460 ; NO-SIMD128-NEXT:    i32.and $push4=, $7, $pop3
7461 ; NO-SIMD128-NEXT:    i32.store16 12($0), $pop4
7462 ; NO-SIMD128-NEXT:    i32.const $push22=, -1
7463 ; NO-SIMD128-NEXT:    i32.xor $push5=, $14, $pop22
7464 ; NO-SIMD128-NEXT:    i32.and $push6=, $6, $pop5
7465 ; NO-SIMD128-NEXT:    i32.store16 10($0), $pop6
7466 ; NO-SIMD128-NEXT:    i32.const $push21=, -1
7467 ; NO-SIMD128-NEXT:    i32.xor $push7=, $13, $pop21
7468 ; NO-SIMD128-NEXT:    i32.and $push8=, $5, $pop7
7469 ; NO-SIMD128-NEXT:    i32.store16 8($0), $pop8
7470 ; NO-SIMD128-NEXT:    i32.const $push20=, -1
7471 ; NO-SIMD128-NEXT:    i32.xor $push9=, $12, $pop20
7472 ; NO-SIMD128-NEXT:    i32.and $push10=, $4, $pop9
7473 ; NO-SIMD128-NEXT:    i32.store16 6($0), $pop10
7474 ; NO-SIMD128-NEXT:    i32.const $push19=, -1
7475 ; NO-SIMD128-NEXT:    i32.xor $push11=, $11, $pop19
7476 ; NO-SIMD128-NEXT:    i32.and $push12=, $3, $pop11
7477 ; NO-SIMD128-NEXT:    i32.store16 4($0), $pop12
7478 ; NO-SIMD128-NEXT:    i32.const $push18=, -1
7479 ; NO-SIMD128-NEXT:    i32.xor $push13=, $10, $pop18
7480 ; NO-SIMD128-NEXT:    i32.and $push14=, $2, $pop13
7481 ; NO-SIMD128-NEXT:    i32.store16 2($0), $pop14
7482 ; NO-SIMD128-NEXT:    i32.const $push17=, -1
7483 ; NO-SIMD128-NEXT:    i32.xor $push15=, $9, $pop17
7484 ; NO-SIMD128-NEXT:    i32.and $push16=, $1, $pop15
7485 ; NO-SIMD128-NEXT:    i32.store16 0($0), $pop16
7486 ; NO-SIMD128-NEXT:    return
7488 ; NO-SIMD128-FAST-LABEL: andnot_v8i16:
7489 ; NO-SIMD128-FAST:         .functype andnot_v8i16 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
7490 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
7491 ; NO-SIMD128-FAST-NEXT:    i32.const $push0=, -1
7492 ; NO-SIMD128-FAST-NEXT:    i32.xor $push1=, $9, $pop0
7493 ; NO-SIMD128-FAST-NEXT:    i32.and $push2=, $1, $pop1
7494 ; NO-SIMD128-FAST-NEXT:    i32.store16 0($0), $pop2
7495 ; NO-SIMD128-FAST-NEXT:    i32.const $push23=, -1
7496 ; NO-SIMD128-FAST-NEXT:    i32.xor $push3=, $10, $pop23
7497 ; NO-SIMD128-FAST-NEXT:    i32.and $push4=, $2, $pop3
7498 ; NO-SIMD128-FAST-NEXT:    i32.store16 2($0), $pop4
7499 ; NO-SIMD128-FAST-NEXT:    i32.const $push22=, -1
7500 ; NO-SIMD128-FAST-NEXT:    i32.xor $push5=, $11, $pop22
7501 ; NO-SIMD128-FAST-NEXT:    i32.and $push6=, $3, $pop5
7502 ; NO-SIMD128-FAST-NEXT:    i32.store16 4($0), $pop6
7503 ; NO-SIMD128-FAST-NEXT:    i32.const $push21=, -1
7504 ; NO-SIMD128-FAST-NEXT:    i32.xor $push7=, $12, $pop21
7505 ; NO-SIMD128-FAST-NEXT:    i32.and $push8=, $4, $pop7
7506 ; NO-SIMD128-FAST-NEXT:    i32.store16 6($0), $pop8
7507 ; NO-SIMD128-FAST-NEXT:    i32.const $push20=, -1
7508 ; NO-SIMD128-FAST-NEXT:    i32.xor $push9=, $13, $pop20
7509 ; NO-SIMD128-FAST-NEXT:    i32.and $push10=, $5, $pop9
7510 ; NO-SIMD128-FAST-NEXT:    i32.store16 8($0), $pop10
7511 ; NO-SIMD128-FAST-NEXT:    i32.const $push19=, -1
7512 ; NO-SIMD128-FAST-NEXT:    i32.xor $push11=, $14, $pop19
7513 ; NO-SIMD128-FAST-NEXT:    i32.and $push12=, $6, $pop11
7514 ; NO-SIMD128-FAST-NEXT:    i32.store16 10($0), $pop12
7515 ; NO-SIMD128-FAST-NEXT:    i32.const $push18=, -1
7516 ; NO-SIMD128-FAST-NEXT:    i32.xor $push13=, $15, $pop18
7517 ; NO-SIMD128-FAST-NEXT:    i32.and $push14=, $7, $pop13
7518 ; NO-SIMD128-FAST-NEXT:    i32.store16 12($0), $pop14
7519 ; NO-SIMD128-FAST-NEXT:    i32.const $push17=, -1
7520 ; NO-SIMD128-FAST-NEXT:    i32.xor $push15=, $16, $pop17
7521 ; NO-SIMD128-FAST-NEXT:    i32.and $push16=, $8, $pop15
7522 ; NO-SIMD128-FAST-NEXT:    i32.store16 14($0), $pop16
7523 ; NO-SIMD128-FAST-NEXT:    return
7524  %inv_y = xor <8 x i16> %y,
7525    <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
7526  %a = and <8 x i16> %x, %inv_y
7527  ret <8 x i16> %a
7530 define <8 x i16> @bitselect_v8i16(<8 x i16> %c, <8 x i16> %v1, <8 x i16> %v2) {
7531 ; SIMD128-LABEL: bitselect_v8i16:
7532 ; SIMD128:         .functype bitselect_v8i16 (v128, v128, v128) -> (v128)
7533 ; SIMD128-NEXT:  # %bb.0:
7534 ; SIMD128-NEXT:    v128.bitselect $push0=, $1, $2, $0
7535 ; SIMD128-NEXT:    return $pop0
7537 ; SIMD128-FAST-LABEL: bitselect_v8i16:
7538 ; SIMD128-FAST:         .functype bitselect_v8i16 (v128, v128, v128) -> (v128)
7539 ; SIMD128-FAST-NEXT:  # %bb.0:
7540 ; SIMD128-FAST-NEXT:    v128.and $push0=, $1, $0
7541 ; SIMD128-FAST-NEXT:    v128.not $push2=, $0
7542 ; SIMD128-FAST-NEXT:    v128.and $push3=, $2, $pop2
7543 ; SIMD128-FAST-NEXT:    v128.or $push1=, $pop0, $pop3
7544 ; SIMD128-FAST-NEXT:    return $pop1
7546 ; NO-SIMD128-LABEL: bitselect_v8i16:
7547 ; 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) -> ()
7548 ; NO-SIMD128-NEXT:  # %bb.0:
7549 ; NO-SIMD128-NEXT:    i32.and $push0=, $16, $8
7550 ; NO-SIMD128-NEXT:    i32.const $push1=, -1
7551 ; NO-SIMD128-NEXT:    i32.xor $push2=, $8, $pop1
7552 ; NO-SIMD128-NEXT:    i32.and $push3=, $24, $pop2
7553 ; NO-SIMD128-NEXT:    i32.or $push4=, $pop0, $pop3
7554 ; NO-SIMD128-NEXT:    i32.store16 14($0), $pop4
7555 ; NO-SIMD128-NEXT:    i32.and $push5=, $15, $7
7556 ; NO-SIMD128-NEXT:    i32.const $push39=, -1
7557 ; NO-SIMD128-NEXT:    i32.xor $push6=, $7, $pop39
7558 ; NO-SIMD128-NEXT:    i32.and $push7=, $23, $pop6
7559 ; NO-SIMD128-NEXT:    i32.or $push8=, $pop5, $pop7
7560 ; NO-SIMD128-NEXT:    i32.store16 12($0), $pop8
7561 ; NO-SIMD128-NEXT:    i32.and $push9=, $14, $6
7562 ; NO-SIMD128-NEXT:    i32.const $push38=, -1
7563 ; NO-SIMD128-NEXT:    i32.xor $push10=, $6, $pop38
7564 ; NO-SIMD128-NEXT:    i32.and $push11=, $22, $pop10
7565 ; NO-SIMD128-NEXT:    i32.or $push12=, $pop9, $pop11
7566 ; NO-SIMD128-NEXT:    i32.store16 10($0), $pop12
7567 ; NO-SIMD128-NEXT:    i32.and $push13=, $13, $5
7568 ; NO-SIMD128-NEXT:    i32.const $push37=, -1
7569 ; NO-SIMD128-NEXT:    i32.xor $push14=, $5, $pop37
7570 ; NO-SIMD128-NEXT:    i32.and $push15=, $21, $pop14
7571 ; NO-SIMD128-NEXT:    i32.or $push16=, $pop13, $pop15
7572 ; NO-SIMD128-NEXT:    i32.store16 8($0), $pop16
7573 ; NO-SIMD128-NEXT:    i32.and $push17=, $12, $4
7574 ; NO-SIMD128-NEXT:    i32.const $push36=, -1
7575 ; NO-SIMD128-NEXT:    i32.xor $push18=, $4, $pop36
7576 ; NO-SIMD128-NEXT:    i32.and $push19=, $20, $pop18
7577 ; NO-SIMD128-NEXT:    i32.or $push20=, $pop17, $pop19
7578 ; NO-SIMD128-NEXT:    i32.store16 6($0), $pop20
7579 ; NO-SIMD128-NEXT:    i32.and $push21=, $11, $3
7580 ; NO-SIMD128-NEXT:    i32.const $push35=, -1
7581 ; NO-SIMD128-NEXT:    i32.xor $push22=, $3, $pop35
7582 ; NO-SIMD128-NEXT:    i32.and $push23=, $19, $pop22
7583 ; NO-SIMD128-NEXT:    i32.or $push24=, $pop21, $pop23
7584 ; NO-SIMD128-NEXT:    i32.store16 4($0), $pop24
7585 ; NO-SIMD128-NEXT:    i32.and $push25=, $10, $2
7586 ; NO-SIMD128-NEXT:    i32.const $push34=, -1
7587 ; NO-SIMD128-NEXT:    i32.xor $push26=, $2, $pop34
7588 ; NO-SIMD128-NEXT:    i32.and $push27=, $18, $pop26
7589 ; NO-SIMD128-NEXT:    i32.or $push28=, $pop25, $pop27
7590 ; NO-SIMD128-NEXT:    i32.store16 2($0), $pop28
7591 ; NO-SIMD128-NEXT:    i32.and $push29=, $9, $1
7592 ; NO-SIMD128-NEXT:    i32.const $push33=, -1
7593 ; NO-SIMD128-NEXT:    i32.xor $push30=, $1, $pop33
7594 ; NO-SIMD128-NEXT:    i32.and $push31=, $17, $pop30
7595 ; NO-SIMD128-NEXT:    i32.or $push32=, $pop29, $pop31
7596 ; NO-SIMD128-NEXT:    i32.store16 0($0), $pop32
7597 ; NO-SIMD128-NEXT:    return
7599 ; NO-SIMD128-FAST-LABEL: bitselect_v8i16:
7600 ; 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) -> ()
7601 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
7602 ; NO-SIMD128-FAST-NEXT:    i32.and $push0=, $9, $1
7603 ; NO-SIMD128-FAST-NEXT:    i32.const $push1=, -1
7604 ; NO-SIMD128-FAST-NEXT:    i32.xor $push2=, $1, $pop1
7605 ; NO-SIMD128-FAST-NEXT:    i32.and $push3=, $17, $pop2
7606 ; NO-SIMD128-FAST-NEXT:    i32.or $push4=, $pop0, $pop3
7607 ; NO-SIMD128-FAST-NEXT:    i32.store16 0($0), $pop4
7608 ; NO-SIMD128-FAST-NEXT:    i32.and $push5=, $10, $2
7609 ; NO-SIMD128-FAST-NEXT:    i32.const $push39=, -1
7610 ; NO-SIMD128-FAST-NEXT:    i32.xor $push6=, $2, $pop39
7611 ; NO-SIMD128-FAST-NEXT:    i32.and $push7=, $18, $pop6
7612 ; NO-SIMD128-FAST-NEXT:    i32.or $push8=, $pop5, $pop7
7613 ; NO-SIMD128-FAST-NEXT:    i32.store16 2($0), $pop8
7614 ; NO-SIMD128-FAST-NEXT:    i32.and $push9=, $11, $3
7615 ; NO-SIMD128-FAST-NEXT:    i32.const $push38=, -1
7616 ; NO-SIMD128-FAST-NEXT:    i32.xor $push10=, $3, $pop38
7617 ; NO-SIMD128-FAST-NEXT:    i32.and $push11=, $19, $pop10
7618 ; NO-SIMD128-FAST-NEXT:    i32.or $push12=, $pop9, $pop11
7619 ; NO-SIMD128-FAST-NEXT:    i32.store16 4($0), $pop12
7620 ; NO-SIMD128-FAST-NEXT:    i32.and $push13=, $12, $4
7621 ; NO-SIMD128-FAST-NEXT:    i32.const $push37=, -1
7622 ; NO-SIMD128-FAST-NEXT:    i32.xor $push14=, $4, $pop37
7623 ; NO-SIMD128-FAST-NEXT:    i32.and $push15=, $20, $pop14
7624 ; NO-SIMD128-FAST-NEXT:    i32.or $push16=, $pop13, $pop15
7625 ; NO-SIMD128-FAST-NEXT:    i32.store16 6($0), $pop16
7626 ; NO-SIMD128-FAST-NEXT:    i32.and $push17=, $13, $5
7627 ; NO-SIMD128-FAST-NEXT:    i32.const $push36=, -1
7628 ; NO-SIMD128-FAST-NEXT:    i32.xor $push18=, $5, $pop36
7629 ; NO-SIMD128-FAST-NEXT:    i32.and $push19=, $21, $pop18
7630 ; NO-SIMD128-FAST-NEXT:    i32.or $push20=, $pop17, $pop19
7631 ; NO-SIMD128-FAST-NEXT:    i32.store16 8($0), $pop20
7632 ; NO-SIMD128-FAST-NEXT:    i32.and $push21=, $14, $6
7633 ; NO-SIMD128-FAST-NEXT:    i32.const $push35=, -1
7634 ; NO-SIMD128-FAST-NEXT:    i32.xor $push22=, $6, $pop35
7635 ; NO-SIMD128-FAST-NEXT:    i32.and $push23=, $22, $pop22
7636 ; NO-SIMD128-FAST-NEXT:    i32.or $push24=, $pop21, $pop23
7637 ; NO-SIMD128-FAST-NEXT:    i32.store16 10($0), $pop24
7638 ; NO-SIMD128-FAST-NEXT:    i32.and $push25=, $15, $7
7639 ; NO-SIMD128-FAST-NEXT:    i32.const $push34=, -1
7640 ; NO-SIMD128-FAST-NEXT:    i32.xor $push26=, $7, $pop34
7641 ; NO-SIMD128-FAST-NEXT:    i32.and $push27=, $23, $pop26
7642 ; NO-SIMD128-FAST-NEXT:    i32.or $push28=, $pop25, $pop27
7643 ; NO-SIMD128-FAST-NEXT:    i32.store16 12($0), $pop28
7644 ; NO-SIMD128-FAST-NEXT:    i32.and $push29=, $16, $8
7645 ; NO-SIMD128-FAST-NEXT:    i32.const $push33=, -1
7646 ; NO-SIMD128-FAST-NEXT:    i32.xor $push30=, $8, $pop33
7647 ; NO-SIMD128-FAST-NEXT:    i32.and $push31=, $24, $pop30
7648 ; NO-SIMD128-FAST-NEXT:    i32.or $push32=, $pop29, $pop31
7649 ; NO-SIMD128-FAST-NEXT:    i32.store16 14($0), $pop32
7650 ; NO-SIMD128-FAST-NEXT:    return
7651   %masked_v1 = and <8 x i16> %v1, %c
7652   %inv_mask = xor <8 x i16>
7653     <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>,
7654     %c
7655   %masked_v2 = and <8 x i16> %v2, %inv_mask
7656   %a = or <8 x i16> %masked_v1, %masked_v2
7657   ret <8 x i16> %a
7660 define <8 x i16> @bitselect_xor_v8i16(<8 x i16> %c, <8 x i16> %v1, <8 x i16> %v2) {
7661 ; SIMD128-LABEL: bitselect_xor_v8i16:
7662 ; SIMD128:         .functype bitselect_xor_v8i16 (v128, v128, v128) -> (v128)
7663 ; SIMD128-NEXT:  # %bb.0:
7664 ; SIMD128-NEXT:    v128.bitselect $push0=, $1, $2, $0
7665 ; SIMD128-NEXT:    return $pop0
7667 ; SIMD128-FAST-LABEL: bitselect_xor_v8i16:
7668 ; SIMD128-FAST:         .functype bitselect_xor_v8i16 (v128, v128, v128) -> (v128)
7669 ; SIMD128-FAST-NEXT:  # %bb.0:
7670 ; SIMD128-FAST-NEXT:    v128.xor $push2=, $1, $2
7671 ; SIMD128-FAST-NEXT:    v128.and $push1=, $pop2, $0
7672 ; SIMD128-FAST-NEXT:    v128.xor $push0=, $pop1, $2
7673 ; SIMD128-FAST-NEXT:    return $pop0
7675 ; NO-SIMD128-LABEL: bitselect_xor_v8i16:
7676 ; 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) -> ()
7677 ; NO-SIMD128-NEXT:  # %bb.0:
7678 ; NO-SIMD128-NEXT:    i32.xor $push0=, $16, $24
7679 ; NO-SIMD128-NEXT:    i32.and $push1=, $pop0, $8
7680 ; NO-SIMD128-NEXT:    i32.xor $push2=, $pop1, $24
7681 ; NO-SIMD128-NEXT:    i32.store16 14($0), $pop2
7682 ; NO-SIMD128-NEXT:    i32.xor $push3=, $15, $23
7683 ; NO-SIMD128-NEXT:    i32.and $push4=, $pop3, $7
7684 ; NO-SIMD128-NEXT:    i32.xor $push5=, $pop4, $23
7685 ; NO-SIMD128-NEXT:    i32.store16 12($0), $pop5
7686 ; NO-SIMD128-NEXT:    i32.xor $push6=, $14, $22
7687 ; NO-SIMD128-NEXT:    i32.and $push7=, $pop6, $6
7688 ; NO-SIMD128-NEXT:    i32.xor $push8=, $pop7, $22
7689 ; NO-SIMD128-NEXT:    i32.store16 10($0), $pop8
7690 ; NO-SIMD128-NEXT:    i32.xor $push9=, $13, $21
7691 ; NO-SIMD128-NEXT:    i32.and $push10=, $pop9, $5
7692 ; NO-SIMD128-NEXT:    i32.xor $push11=, $pop10, $21
7693 ; NO-SIMD128-NEXT:    i32.store16 8($0), $pop11
7694 ; NO-SIMD128-NEXT:    i32.xor $push12=, $12, $20
7695 ; NO-SIMD128-NEXT:    i32.and $push13=, $pop12, $4
7696 ; NO-SIMD128-NEXT:    i32.xor $push14=, $pop13, $20
7697 ; NO-SIMD128-NEXT:    i32.store16 6($0), $pop14
7698 ; NO-SIMD128-NEXT:    i32.xor $push15=, $11, $19
7699 ; NO-SIMD128-NEXT:    i32.and $push16=, $pop15, $3
7700 ; NO-SIMD128-NEXT:    i32.xor $push17=, $pop16, $19
7701 ; NO-SIMD128-NEXT:    i32.store16 4($0), $pop17
7702 ; NO-SIMD128-NEXT:    i32.xor $push18=, $10, $18
7703 ; NO-SIMD128-NEXT:    i32.and $push19=, $pop18, $2
7704 ; NO-SIMD128-NEXT:    i32.xor $push20=, $pop19, $18
7705 ; NO-SIMD128-NEXT:    i32.store16 2($0), $pop20
7706 ; NO-SIMD128-NEXT:    i32.xor $push21=, $9, $17
7707 ; NO-SIMD128-NEXT:    i32.and $push22=, $pop21, $1
7708 ; NO-SIMD128-NEXT:    i32.xor $push23=, $pop22, $17
7709 ; NO-SIMD128-NEXT:    i32.store16 0($0), $pop23
7710 ; NO-SIMD128-NEXT:    return
7712 ; NO-SIMD128-FAST-LABEL: bitselect_xor_v8i16:
7713 ; 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) -> ()
7714 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
7715 ; NO-SIMD128-FAST-NEXT:    i32.xor $push0=, $9, $17
7716 ; NO-SIMD128-FAST-NEXT:    i32.and $push1=, $pop0, $1
7717 ; NO-SIMD128-FAST-NEXT:    i32.xor $push2=, $pop1, $17
7718 ; NO-SIMD128-FAST-NEXT:    i32.store16 0($0), $pop2
7719 ; NO-SIMD128-FAST-NEXT:    i32.xor $push3=, $10, $18
7720 ; NO-SIMD128-FAST-NEXT:    i32.and $push4=, $pop3, $2
7721 ; NO-SIMD128-FAST-NEXT:    i32.xor $push5=, $pop4, $18
7722 ; NO-SIMD128-FAST-NEXT:    i32.store16 2($0), $pop5
7723 ; NO-SIMD128-FAST-NEXT:    i32.xor $push6=, $11, $19
7724 ; NO-SIMD128-FAST-NEXT:    i32.and $push7=, $pop6, $3
7725 ; NO-SIMD128-FAST-NEXT:    i32.xor $push8=, $pop7, $19
7726 ; NO-SIMD128-FAST-NEXT:    i32.store16 4($0), $pop8
7727 ; NO-SIMD128-FAST-NEXT:    i32.xor $push9=, $12, $20
7728 ; NO-SIMD128-FAST-NEXT:    i32.and $push10=, $pop9, $4
7729 ; NO-SIMD128-FAST-NEXT:    i32.xor $push11=, $pop10, $20
7730 ; NO-SIMD128-FAST-NEXT:    i32.store16 6($0), $pop11
7731 ; NO-SIMD128-FAST-NEXT:    i32.xor $push12=, $13, $21
7732 ; NO-SIMD128-FAST-NEXT:    i32.and $push13=, $pop12, $5
7733 ; NO-SIMD128-FAST-NEXT:    i32.xor $push14=, $pop13, $21
7734 ; NO-SIMD128-FAST-NEXT:    i32.store16 8($0), $pop14
7735 ; NO-SIMD128-FAST-NEXT:    i32.xor $push15=, $14, $22
7736 ; NO-SIMD128-FAST-NEXT:    i32.and $push16=, $pop15, $6
7737 ; NO-SIMD128-FAST-NEXT:    i32.xor $push17=, $pop16, $22
7738 ; NO-SIMD128-FAST-NEXT:    i32.store16 10($0), $pop17
7739 ; NO-SIMD128-FAST-NEXT:    i32.xor $push18=, $15, $23
7740 ; NO-SIMD128-FAST-NEXT:    i32.and $push19=, $pop18, $7
7741 ; NO-SIMD128-FAST-NEXT:    i32.xor $push20=, $pop19, $23
7742 ; NO-SIMD128-FAST-NEXT:    i32.store16 12($0), $pop20
7743 ; NO-SIMD128-FAST-NEXT:    i32.xor $push21=, $16, $24
7744 ; NO-SIMD128-FAST-NEXT:    i32.and $push22=, $pop21, $8
7745 ; NO-SIMD128-FAST-NEXT:    i32.xor $push23=, $pop22, $24
7746 ; NO-SIMD128-FAST-NEXT:    i32.store16 14($0), $pop23
7747 ; NO-SIMD128-FAST-NEXT:    return
7748  %xor1 = xor <8 x i16> %v1, %v2
7749  %and = and <8 x i16> %xor1, %c
7750  %a = xor <8 x i16> %and, %v2
7751  ret <8 x i16> %a
7754 define <8 x i16> @bitselect_xor_reversed_v8i16(<8 x i16> %c, <8 x i16> %v1, <8 x i16> %v2) {
7755 ; SIMD128-LABEL: bitselect_xor_reversed_v8i16:
7756 ; SIMD128:         .functype bitselect_xor_reversed_v8i16 (v128, v128, v128) -> (v128)
7757 ; SIMD128-NEXT:  # %bb.0:
7758 ; SIMD128-NEXT:    v128.bitselect $push0=, $2, $1, $0
7759 ; SIMD128-NEXT:    return $pop0
7761 ; SIMD128-FAST-LABEL: bitselect_xor_reversed_v8i16:
7762 ; SIMD128-FAST:         .functype bitselect_xor_reversed_v8i16 (v128, v128, v128) -> (v128)
7763 ; SIMD128-FAST-NEXT:  # %bb.0:
7764 ; SIMD128-FAST-NEXT:    v128.xor $push1=, $1, $2
7765 ; SIMD128-FAST-NEXT:    v128.not $push2=, $0
7766 ; SIMD128-FAST-NEXT:    v128.and $push3=, $pop1, $pop2
7767 ; SIMD128-FAST-NEXT:    v128.xor $push0=, $pop3, $2
7768 ; SIMD128-FAST-NEXT:    return $pop0
7770 ; NO-SIMD128-LABEL: bitselect_xor_reversed_v8i16:
7771 ; 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) -> ()
7772 ; NO-SIMD128-NEXT:  # %bb.0:
7773 ; NO-SIMD128-NEXT:    i32.xor $push2=, $16, $24
7774 ; NO-SIMD128-NEXT:    i32.const $push0=, -1
7775 ; NO-SIMD128-NEXT:    i32.xor $push1=, $8, $pop0
7776 ; NO-SIMD128-NEXT:    i32.and $push3=, $pop2, $pop1
7777 ; NO-SIMD128-NEXT:    i32.xor $push4=, $pop3, $24
7778 ; NO-SIMD128-NEXT:    i32.store16 14($0), $pop4
7779 ; NO-SIMD128-NEXT:    i32.xor $push6=, $15, $23
7780 ; NO-SIMD128-NEXT:    i32.const $push39=, -1
7781 ; NO-SIMD128-NEXT:    i32.xor $push5=, $7, $pop39
7782 ; NO-SIMD128-NEXT:    i32.and $push7=, $pop6, $pop5
7783 ; NO-SIMD128-NEXT:    i32.xor $push8=, $pop7, $23
7784 ; NO-SIMD128-NEXT:    i32.store16 12($0), $pop8
7785 ; NO-SIMD128-NEXT:    i32.xor $push10=, $14, $22
7786 ; NO-SIMD128-NEXT:    i32.const $push38=, -1
7787 ; NO-SIMD128-NEXT:    i32.xor $push9=, $6, $pop38
7788 ; NO-SIMD128-NEXT:    i32.and $push11=, $pop10, $pop9
7789 ; NO-SIMD128-NEXT:    i32.xor $push12=, $pop11, $22
7790 ; NO-SIMD128-NEXT:    i32.store16 10($0), $pop12
7791 ; NO-SIMD128-NEXT:    i32.xor $push14=, $13, $21
7792 ; NO-SIMD128-NEXT:    i32.const $push37=, -1
7793 ; NO-SIMD128-NEXT:    i32.xor $push13=, $5, $pop37
7794 ; NO-SIMD128-NEXT:    i32.and $push15=, $pop14, $pop13
7795 ; NO-SIMD128-NEXT:    i32.xor $push16=, $pop15, $21
7796 ; NO-SIMD128-NEXT:    i32.store16 8($0), $pop16
7797 ; NO-SIMD128-NEXT:    i32.xor $push18=, $12, $20
7798 ; NO-SIMD128-NEXT:    i32.const $push36=, -1
7799 ; NO-SIMD128-NEXT:    i32.xor $push17=, $4, $pop36
7800 ; NO-SIMD128-NEXT:    i32.and $push19=, $pop18, $pop17
7801 ; NO-SIMD128-NEXT:    i32.xor $push20=, $pop19, $20
7802 ; NO-SIMD128-NEXT:    i32.store16 6($0), $pop20
7803 ; NO-SIMD128-NEXT:    i32.xor $push22=, $11, $19
7804 ; NO-SIMD128-NEXT:    i32.const $push35=, -1
7805 ; NO-SIMD128-NEXT:    i32.xor $push21=, $3, $pop35
7806 ; NO-SIMD128-NEXT:    i32.and $push23=, $pop22, $pop21
7807 ; NO-SIMD128-NEXT:    i32.xor $push24=, $pop23, $19
7808 ; NO-SIMD128-NEXT:    i32.store16 4($0), $pop24
7809 ; NO-SIMD128-NEXT:    i32.xor $push26=, $10, $18
7810 ; NO-SIMD128-NEXT:    i32.const $push34=, -1
7811 ; NO-SIMD128-NEXT:    i32.xor $push25=, $2, $pop34
7812 ; NO-SIMD128-NEXT:    i32.and $push27=, $pop26, $pop25
7813 ; NO-SIMD128-NEXT:    i32.xor $push28=, $pop27, $18
7814 ; NO-SIMD128-NEXT:    i32.store16 2($0), $pop28
7815 ; NO-SIMD128-NEXT:    i32.xor $push30=, $9, $17
7816 ; NO-SIMD128-NEXT:    i32.const $push33=, -1
7817 ; NO-SIMD128-NEXT:    i32.xor $push29=, $1, $pop33
7818 ; NO-SIMD128-NEXT:    i32.and $push31=, $pop30, $pop29
7819 ; NO-SIMD128-NEXT:    i32.xor $push32=, $pop31, $17
7820 ; NO-SIMD128-NEXT:    i32.store16 0($0), $pop32
7821 ; NO-SIMD128-NEXT:    return
7823 ; NO-SIMD128-FAST-LABEL: bitselect_xor_reversed_v8i16:
7824 ; 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) -> ()
7825 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
7826 ; NO-SIMD128-FAST-NEXT:    i32.xor $push2=, $9, $17
7827 ; NO-SIMD128-FAST-NEXT:    i32.const $push0=, -1
7828 ; NO-SIMD128-FAST-NEXT:    i32.xor $push1=, $1, $pop0
7829 ; NO-SIMD128-FAST-NEXT:    i32.and $push3=, $pop2, $pop1
7830 ; NO-SIMD128-FAST-NEXT:    i32.xor $push4=, $pop3, $17
7831 ; NO-SIMD128-FAST-NEXT:    i32.store16 0($0), $pop4
7832 ; NO-SIMD128-FAST-NEXT:    i32.xor $push6=, $10, $18
7833 ; NO-SIMD128-FAST-NEXT:    i32.const $push39=, -1
7834 ; NO-SIMD128-FAST-NEXT:    i32.xor $push5=, $2, $pop39
7835 ; NO-SIMD128-FAST-NEXT:    i32.and $push7=, $pop6, $pop5
7836 ; NO-SIMD128-FAST-NEXT:    i32.xor $push8=, $pop7, $18
7837 ; NO-SIMD128-FAST-NEXT:    i32.store16 2($0), $pop8
7838 ; NO-SIMD128-FAST-NEXT:    i32.xor $push10=, $11, $19
7839 ; NO-SIMD128-FAST-NEXT:    i32.const $push38=, -1
7840 ; NO-SIMD128-FAST-NEXT:    i32.xor $push9=, $3, $pop38
7841 ; NO-SIMD128-FAST-NEXT:    i32.and $push11=, $pop10, $pop9
7842 ; NO-SIMD128-FAST-NEXT:    i32.xor $push12=, $pop11, $19
7843 ; NO-SIMD128-FAST-NEXT:    i32.store16 4($0), $pop12
7844 ; NO-SIMD128-FAST-NEXT:    i32.xor $push14=, $12, $20
7845 ; NO-SIMD128-FAST-NEXT:    i32.const $push37=, -1
7846 ; NO-SIMD128-FAST-NEXT:    i32.xor $push13=, $4, $pop37
7847 ; NO-SIMD128-FAST-NEXT:    i32.and $push15=, $pop14, $pop13
7848 ; NO-SIMD128-FAST-NEXT:    i32.xor $push16=, $pop15, $20
7849 ; NO-SIMD128-FAST-NEXT:    i32.store16 6($0), $pop16
7850 ; NO-SIMD128-FAST-NEXT:    i32.xor $push18=, $13, $21
7851 ; NO-SIMD128-FAST-NEXT:    i32.const $push36=, -1
7852 ; NO-SIMD128-FAST-NEXT:    i32.xor $push17=, $5, $pop36
7853 ; NO-SIMD128-FAST-NEXT:    i32.and $push19=, $pop18, $pop17
7854 ; NO-SIMD128-FAST-NEXT:    i32.xor $push20=, $pop19, $21
7855 ; NO-SIMD128-FAST-NEXT:    i32.store16 8($0), $pop20
7856 ; NO-SIMD128-FAST-NEXT:    i32.xor $push22=, $14, $22
7857 ; NO-SIMD128-FAST-NEXT:    i32.const $push35=, -1
7858 ; NO-SIMD128-FAST-NEXT:    i32.xor $push21=, $6, $pop35
7859 ; NO-SIMD128-FAST-NEXT:    i32.and $push23=, $pop22, $pop21
7860 ; NO-SIMD128-FAST-NEXT:    i32.xor $push24=, $pop23, $22
7861 ; NO-SIMD128-FAST-NEXT:    i32.store16 10($0), $pop24
7862 ; NO-SIMD128-FAST-NEXT:    i32.xor $push26=, $15, $23
7863 ; NO-SIMD128-FAST-NEXT:    i32.const $push34=, -1
7864 ; NO-SIMD128-FAST-NEXT:    i32.xor $push25=, $7, $pop34
7865 ; NO-SIMD128-FAST-NEXT:    i32.and $push27=, $pop26, $pop25
7866 ; NO-SIMD128-FAST-NEXT:    i32.xor $push28=, $pop27, $23
7867 ; NO-SIMD128-FAST-NEXT:    i32.store16 12($0), $pop28
7868 ; NO-SIMD128-FAST-NEXT:    i32.xor $push30=, $16, $24
7869 ; NO-SIMD128-FAST-NEXT:    i32.const $push33=, -1
7870 ; NO-SIMD128-FAST-NEXT:    i32.xor $push29=, $8, $pop33
7871 ; NO-SIMD128-FAST-NEXT:    i32.and $push31=, $pop30, $pop29
7872 ; NO-SIMD128-FAST-NEXT:    i32.xor $push32=, $pop31, $24
7873 ; NO-SIMD128-FAST-NEXT:    i32.store16 14($0), $pop32
7874 ; NO-SIMD128-FAST-NEXT:    return
7875  %xor1 = xor <8 x i16> %v1, %v2
7876  %notc = xor <8 x i16> %c, <i16 -1, i16 -1, i16 -1, i16 -1,
7877                             i16 -1, i16 -1, i16 -1, i16 -1>
7878  %and = and <8 x i16> %xor1, %notc
7879  %a = xor <8 x i16> %and, %v2
7880  ret <8 x i16> %a
7883 define <8 x i16> @extmul_low_s_v8i16(<16 x i8> %v1, <16 x i8> %v2) {
7884 ; SIMD128-LABEL: extmul_low_s_v8i16:
7885 ; SIMD128:         .functype extmul_low_s_v8i16 (v128, v128) -> (v128)
7886 ; SIMD128-NEXT:  # %bb.0:
7887 ; SIMD128-NEXT:    i16x8.extmul_low_i8x16_s $push0=, $0, $1
7888 ; SIMD128-NEXT:    return $pop0
7890 ; SIMD128-FAST-LABEL: extmul_low_s_v8i16:
7891 ; SIMD128-FAST:         .functype extmul_low_s_v8i16 (v128, v128) -> (v128)
7892 ; SIMD128-FAST-NEXT:  # %bb.0:
7893 ; SIMD128-FAST-NEXT:    i16x8.extend_low_i8x16_s $push0=, $0
7894 ; SIMD128-FAST-NEXT:    i16x8.extend_low_i8x16_s $push1=, $1
7895 ; SIMD128-FAST-NEXT:    i16x8.mul $push2=, $pop0, $pop1
7896 ; SIMD128-FAST-NEXT:    return $pop2
7898 ; NO-SIMD128-LABEL: extmul_low_s_v8i16:
7899 ; 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) -> ()
7900 ; NO-SIMD128-NEXT:  # %bb.0:
7901 ; NO-SIMD128-NEXT:    i32.extend8_s $push1=, $8
7902 ; NO-SIMD128-NEXT:    i32.extend8_s $push0=, $24
7903 ; NO-SIMD128-NEXT:    i32.mul $push2=, $pop1, $pop0
7904 ; NO-SIMD128-NEXT:    i32.store16 14($0), $pop2
7905 ; NO-SIMD128-NEXT:    i32.extend8_s $push4=, $7
7906 ; NO-SIMD128-NEXT:    i32.extend8_s $push3=, $23
7907 ; NO-SIMD128-NEXT:    i32.mul $push5=, $pop4, $pop3
7908 ; NO-SIMD128-NEXT:    i32.store16 12($0), $pop5
7909 ; NO-SIMD128-NEXT:    i32.extend8_s $push7=, $6
7910 ; NO-SIMD128-NEXT:    i32.extend8_s $push6=, $22
7911 ; NO-SIMD128-NEXT:    i32.mul $push8=, $pop7, $pop6
7912 ; NO-SIMD128-NEXT:    i32.store16 10($0), $pop8
7913 ; NO-SIMD128-NEXT:    i32.extend8_s $push10=, $5
7914 ; NO-SIMD128-NEXT:    i32.extend8_s $push9=, $21
7915 ; NO-SIMD128-NEXT:    i32.mul $push11=, $pop10, $pop9
7916 ; NO-SIMD128-NEXT:    i32.store16 8($0), $pop11
7917 ; NO-SIMD128-NEXT:    i32.extend8_s $push13=, $4
7918 ; NO-SIMD128-NEXT:    i32.extend8_s $push12=, $20
7919 ; NO-SIMD128-NEXT:    i32.mul $push14=, $pop13, $pop12
7920 ; NO-SIMD128-NEXT:    i32.store16 6($0), $pop14
7921 ; NO-SIMD128-NEXT:    i32.extend8_s $push16=, $3
7922 ; NO-SIMD128-NEXT:    i32.extend8_s $push15=, $19
7923 ; NO-SIMD128-NEXT:    i32.mul $push17=, $pop16, $pop15
7924 ; NO-SIMD128-NEXT:    i32.store16 4($0), $pop17
7925 ; NO-SIMD128-NEXT:    i32.extend8_s $push19=, $2
7926 ; NO-SIMD128-NEXT:    i32.extend8_s $push18=, $18
7927 ; NO-SIMD128-NEXT:    i32.mul $push20=, $pop19, $pop18
7928 ; NO-SIMD128-NEXT:    i32.store16 2($0), $pop20
7929 ; NO-SIMD128-NEXT:    i32.extend8_s $push22=, $1
7930 ; NO-SIMD128-NEXT:    i32.extend8_s $push21=, $17
7931 ; NO-SIMD128-NEXT:    i32.mul $push23=, $pop22, $pop21
7932 ; NO-SIMD128-NEXT:    i32.store16 0($0), $pop23
7933 ; NO-SIMD128-NEXT:    return
7935 ; NO-SIMD128-FAST-LABEL: extmul_low_s_v8i16:
7936 ; 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) -> ()
7937 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
7938 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push1=, $1
7939 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push0=, $17
7940 ; NO-SIMD128-FAST-NEXT:    i32.mul $push2=, $pop1, $pop0
7941 ; NO-SIMD128-FAST-NEXT:    i32.store16 0($0), $pop2
7942 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push4=, $2
7943 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push3=, $18
7944 ; NO-SIMD128-FAST-NEXT:    i32.mul $push5=, $pop4, $pop3
7945 ; NO-SIMD128-FAST-NEXT:    i32.store16 2($0), $pop5
7946 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push7=, $3
7947 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push6=, $19
7948 ; NO-SIMD128-FAST-NEXT:    i32.mul $push8=, $pop7, $pop6
7949 ; NO-SIMD128-FAST-NEXT:    i32.store16 4($0), $pop8
7950 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push10=, $4
7951 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push9=, $20
7952 ; NO-SIMD128-FAST-NEXT:    i32.mul $push11=, $pop10, $pop9
7953 ; NO-SIMD128-FAST-NEXT:    i32.store16 6($0), $pop11
7954 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push13=, $5
7955 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push12=, $21
7956 ; NO-SIMD128-FAST-NEXT:    i32.mul $push14=, $pop13, $pop12
7957 ; NO-SIMD128-FAST-NEXT:    i32.store16 8($0), $pop14
7958 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push16=, $6
7959 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push15=, $22
7960 ; NO-SIMD128-FAST-NEXT:    i32.mul $push17=, $pop16, $pop15
7961 ; NO-SIMD128-FAST-NEXT:    i32.store16 10($0), $pop17
7962 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push19=, $7
7963 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push18=, $23
7964 ; NO-SIMD128-FAST-NEXT:    i32.mul $push20=, $pop19, $pop18
7965 ; NO-SIMD128-FAST-NEXT:    i32.store16 12($0), $pop20
7966 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push22=, $8
7967 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push21=, $24
7968 ; NO-SIMD128-FAST-NEXT:    i32.mul $push23=, $pop22, $pop21
7969 ; NO-SIMD128-FAST-NEXT:    i32.store16 14($0), $pop23
7970 ; NO-SIMD128-FAST-NEXT:    return
7971   %low1 = shufflevector <16 x i8> %v1, <16 x i8> undef,
7972            <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
7973   %low2 = shufflevector <16 x i8> %v2, <16 x i8> undef,
7974            <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
7975   %extended1 = sext <8 x i8> %low1 to <8 x i16>
7976   %extended2 = sext <8 x i8> %low2 to <8 x i16>
7977   %a = mul <8 x i16> %extended1, %extended2
7978   ret <8 x i16> %a
7981 define <8 x i16> @extmul_high_s_v8i16(<16 x i8> %v1, <16 x i8> %v2) {
7982 ; SIMD128-LABEL: extmul_high_s_v8i16:
7983 ; SIMD128:         .functype extmul_high_s_v8i16 (v128, v128) -> (v128)
7984 ; SIMD128-NEXT:  # %bb.0:
7985 ; SIMD128-NEXT:    i16x8.extmul_high_i8x16_s $push0=, $0, $1
7986 ; SIMD128-NEXT:    return $pop0
7988 ; SIMD128-FAST-LABEL: extmul_high_s_v8i16:
7989 ; SIMD128-FAST:         .functype extmul_high_s_v8i16 (v128, v128) -> (v128)
7990 ; SIMD128-FAST-NEXT:  # %bb.0:
7991 ; SIMD128-FAST-NEXT:    i16x8.extend_high_i8x16_s $push0=, $0
7992 ; SIMD128-FAST-NEXT:    i16x8.extend_high_i8x16_s $push1=, $1
7993 ; SIMD128-FAST-NEXT:    i16x8.mul $push2=, $pop0, $pop1
7994 ; SIMD128-FAST-NEXT:    return $pop2
7996 ; NO-SIMD128-LABEL: extmul_high_s_v8i16:
7997 ; 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) -> ()
7998 ; NO-SIMD128-NEXT:  # %bb.0:
7999 ; NO-SIMD128-NEXT:    i32.extend8_s $push1=, $16
8000 ; NO-SIMD128-NEXT:    i32.extend8_s $push0=, $32
8001 ; NO-SIMD128-NEXT:    i32.mul $push2=, $pop1, $pop0
8002 ; NO-SIMD128-NEXT:    i32.store16 14($0), $pop2
8003 ; NO-SIMD128-NEXT:    i32.extend8_s $push4=, $15
8004 ; NO-SIMD128-NEXT:    i32.extend8_s $push3=, $31
8005 ; NO-SIMD128-NEXT:    i32.mul $push5=, $pop4, $pop3
8006 ; NO-SIMD128-NEXT:    i32.store16 12($0), $pop5
8007 ; NO-SIMD128-NEXT:    i32.extend8_s $push7=, $14
8008 ; NO-SIMD128-NEXT:    i32.extend8_s $push6=, $30
8009 ; NO-SIMD128-NEXT:    i32.mul $push8=, $pop7, $pop6
8010 ; NO-SIMD128-NEXT:    i32.store16 10($0), $pop8
8011 ; NO-SIMD128-NEXT:    i32.extend8_s $push10=, $13
8012 ; NO-SIMD128-NEXT:    i32.extend8_s $push9=, $29
8013 ; NO-SIMD128-NEXT:    i32.mul $push11=, $pop10, $pop9
8014 ; NO-SIMD128-NEXT:    i32.store16 8($0), $pop11
8015 ; NO-SIMD128-NEXT:    i32.extend8_s $push13=, $12
8016 ; NO-SIMD128-NEXT:    i32.extend8_s $push12=, $28
8017 ; NO-SIMD128-NEXT:    i32.mul $push14=, $pop13, $pop12
8018 ; NO-SIMD128-NEXT:    i32.store16 6($0), $pop14
8019 ; NO-SIMD128-NEXT:    i32.extend8_s $push16=, $11
8020 ; NO-SIMD128-NEXT:    i32.extend8_s $push15=, $27
8021 ; NO-SIMD128-NEXT:    i32.mul $push17=, $pop16, $pop15
8022 ; NO-SIMD128-NEXT:    i32.store16 4($0), $pop17
8023 ; NO-SIMD128-NEXT:    i32.extend8_s $push19=, $10
8024 ; NO-SIMD128-NEXT:    i32.extend8_s $push18=, $26
8025 ; NO-SIMD128-NEXT:    i32.mul $push20=, $pop19, $pop18
8026 ; NO-SIMD128-NEXT:    i32.store16 2($0), $pop20
8027 ; NO-SIMD128-NEXT:    i32.extend8_s $push22=, $9
8028 ; NO-SIMD128-NEXT:    i32.extend8_s $push21=, $25
8029 ; NO-SIMD128-NEXT:    i32.mul $push23=, $pop22, $pop21
8030 ; NO-SIMD128-NEXT:    i32.store16 0($0), $pop23
8031 ; NO-SIMD128-NEXT:    return
8033 ; NO-SIMD128-FAST-LABEL: extmul_high_s_v8i16:
8034 ; 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) -> ()
8035 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
8036 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push1=, $9
8037 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push0=, $25
8038 ; NO-SIMD128-FAST-NEXT:    i32.mul $push2=, $pop1, $pop0
8039 ; NO-SIMD128-FAST-NEXT:    i32.store16 0($0), $pop2
8040 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push4=, $10
8041 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push3=, $26
8042 ; NO-SIMD128-FAST-NEXT:    i32.mul $push5=, $pop4, $pop3
8043 ; NO-SIMD128-FAST-NEXT:    i32.store16 2($0), $pop5
8044 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push7=, $11
8045 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push6=, $27
8046 ; NO-SIMD128-FAST-NEXT:    i32.mul $push8=, $pop7, $pop6
8047 ; NO-SIMD128-FAST-NEXT:    i32.store16 4($0), $pop8
8048 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push10=, $12
8049 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push9=, $28
8050 ; NO-SIMD128-FAST-NEXT:    i32.mul $push11=, $pop10, $pop9
8051 ; NO-SIMD128-FAST-NEXT:    i32.store16 6($0), $pop11
8052 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push13=, $13
8053 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push12=, $29
8054 ; NO-SIMD128-FAST-NEXT:    i32.mul $push14=, $pop13, $pop12
8055 ; NO-SIMD128-FAST-NEXT:    i32.store16 8($0), $pop14
8056 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push16=, $14
8057 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push15=, $30
8058 ; NO-SIMD128-FAST-NEXT:    i32.mul $push17=, $pop16, $pop15
8059 ; NO-SIMD128-FAST-NEXT:    i32.store16 10($0), $pop17
8060 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push19=, $15
8061 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push18=, $31
8062 ; NO-SIMD128-FAST-NEXT:    i32.mul $push20=, $pop19, $pop18
8063 ; NO-SIMD128-FAST-NEXT:    i32.store16 12($0), $pop20
8064 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push22=, $16
8065 ; NO-SIMD128-FAST-NEXT:    i32.extend8_s $push21=, $32
8066 ; NO-SIMD128-FAST-NEXT:    i32.mul $push23=, $pop22, $pop21
8067 ; NO-SIMD128-FAST-NEXT:    i32.store16 14($0), $pop23
8068 ; NO-SIMD128-FAST-NEXT:    return
8069   %high1 = shufflevector <16 x i8> %v1, <16 x i8> undef,
8070            <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
8071   %high2 = shufflevector <16 x i8> %v2, <16 x i8> undef,
8072            <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
8073   %extended1 = sext <8 x i8> %high1 to <8 x i16>
8074   %extended2 = sext <8 x i8> %high2 to <8 x i16>
8075   %a = mul <8 x i16> %extended1, %extended2
8076   ret <8 x i16> %a
8079 define <8 x i16> @extmul_low_u_v8i16(<16 x i8> %v1, <16 x i8> %v2) {
8080 ; SIMD128-LABEL: extmul_low_u_v8i16:
8081 ; SIMD128:         .functype extmul_low_u_v8i16 (v128, v128) -> (v128)
8082 ; SIMD128-NEXT:  # %bb.0:
8083 ; SIMD128-NEXT:    i16x8.extmul_low_i8x16_u $push0=, $0, $1
8084 ; SIMD128-NEXT:    return $pop0
8086 ; SIMD128-FAST-LABEL: extmul_low_u_v8i16:
8087 ; SIMD128-FAST:         .functype extmul_low_u_v8i16 (v128, v128) -> (v128)
8088 ; SIMD128-FAST-NEXT:  # %bb.0:
8089 ; SIMD128-FAST-NEXT:    i16x8.extend_low_i8x16_u $push0=, $0
8090 ; SIMD128-FAST-NEXT:    i16x8.extend_low_i8x16_u $push1=, $1
8091 ; SIMD128-FAST-NEXT:    i16x8.mul $push2=, $pop0, $pop1
8092 ; SIMD128-FAST-NEXT:    return $pop2
8094 ; NO-SIMD128-LABEL: extmul_low_u_v8i16:
8095 ; 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) -> ()
8096 ; NO-SIMD128-NEXT:  # %bb.0:
8097 ; NO-SIMD128-NEXT:    i32.const $push0=, 255
8098 ; NO-SIMD128-NEXT:    i32.and $push2=, $8, $pop0
8099 ; NO-SIMD128-NEXT:    i32.const $push39=, 255
8100 ; NO-SIMD128-NEXT:    i32.and $push1=, $24, $pop39
8101 ; NO-SIMD128-NEXT:    i32.mul $push3=, $pop2, $pop1
8102 ; NO-SIMD128-NEXT:    i32.store16 14($0), $pop3
8103 ; NO-SIMD128-NEXT:    i32.const $push38=, 255
8104 ; NO-SIMD128-NEXT:    i32.and $push5=, $7, $pop38
8105 ; NO-SIMD128-NEXT:    i32.const $push37=, 255
8106 ; NO-SIMD128-NEXT:    i32.and $push4=, $23, $pop37
8107 ; NO-SIMD128-NEXT:    i32.mul $push6=, $pop5, $pop4
8108 ; NO-SIMD128-NEXT:    i32.store16 12($0), $pop6
8109 ; NO-SIMD128-NEXT:    i32.const $push36=, 255
8110 ; NO-SIMD128-NEXT:    i32.and $push8=, $6, $pop36
8111 ; NO-SIMD128-NEXT:    i32.const $push35=, 255
8112 ; NO-SIMD128-NEXT:    i32.and $push7=, $22, $pop35
8113 ; NO-SIMD128-NEXT:    i32.mul $push9=, $pop8, $pop7
8114 ; NO-SIMD128-NEXT:    i32.store16 10($0), $pop9
8115 ; NO-SIMD128-NEXT:    i32.const $push34=, 255
8116 ; NO-SIMD128-NEXT:    i32.and $push11=, $5, $pop34
8117 ; NO-SIMD128-NEXT:    i32.const $push33=, 255
8118 ; NO-SIMD128-NEXT:    i32.and $push10=, $21, $pop33
8119 ; NO-SIMD128-NEXT:    i32.mul $push12=, $pop11, $pop10
8120 ; NO-SIMD128-NEXT:    i32.store16 8($0), $pop12
8121 ; NO-SIMD128-NEXT:    i32.const $push32=, 255
8122 ; NO-SIMD128-NEXT:    i32.and $push14=, $4, $pop32
8123 ; NO-SIMD128-NEXT:    i32.const $push31=, 255
8124 ; NO-SIMD128-NEXT:    i32.and $push13=, $20, $pop31
8125 ; NO-SIMD128-NEXT:    i32.mul $push15=, $pop14, $pop13
8126 ; NO-SIMD128-NEXT:    i32.store16 6($0), $pop15
8127 ; NO-SIMD128-NEXT:    i32.const $push30=, 255
8128 ; NO-SIMD128-NEXT:    i32.and $push17=, $3, $pop30
8129 ; NO-SIMD128-NEXT:    i32.const $push29=, 255
8130 ; NO-SIMD128-NEXT:    i32.and $push16=, $19, $pop29
8131 ; NO-SIMD128-NEXT:    i32.mul $push18=, $pop17, $pop16
8132 ; NO-SIMD128-NEXT:    i32.store16 4($0), $pop18
8133 ; NO-SIMD128-NEXT:    i32.const $push28=, 255
8134 ; NO-SIMD128-NEXT:    i32.and $push20=, $2, $pop28
8135 ; NO-SIMD128-NEXT:    i32.const $push27=, 255
8136 ; NO-SIMD128-NEXT:    i32.and $push19=, $18, $pop27
8137 ; NO-SIMD128-NEXT:    i32.mul $push21=, $pop20, $pop19
8138 ; NO-SIMD128-NEXT:    i32.store16 2($0), $pop21
8139 ; NO-SIMD128-NEXT:    i32.const $push26=, 255
8140 ; NO-SIMD128-NEXT:    i32.and $push23=, $1, $pop26
8141 ; NO-SIMD128-NEXT:    i32.const $push25=, 255
8142 ; NO-SIMD128-NEXT:    i32.and $push22=, $17, $pop25
8143 ; NO-SIMD128-NEXT:    i32.mul $push24=, $pop23, $pop22
8144 ; NO-SIMD128-NEXT:    i32.store16 0($0), $pop24
8145 ; NO-SIMD128-NEXT:    return
8147 ; NO-SIMD128-FAST-LABEL: extmul_low_u_v8i16:
8148 ; 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) -> ()
8149 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
8150 ; NO-SIMD128-FAST-NEXT:    i32.const $push0=, 255
8151 ; NO-SIMD128-FAST-NEXT:    i32.and $push2=, $1, $pop0
8152 ; NO-SIMD128-FAST-NEXT:    i32.const $push39=, 255
8153 ; NO-SIMD128-FAST-NEXT:    i32.and $push1=, $17, $pop39
8154 ; NO-SIMD128-FAST-NEXT:    i32.mul $push3=, $pop2, $pop1
8155 ; NO-SIMD128-FAST-NEXT:    i32.store16 0($0), $pop3
8156 ; NO-SIMD128-FAST-NEXT:    i32.const $push38=, 255
8157 ; NO-SIMD128-FAST-NEXT:    i32.and $push5=, $2, $pop38
8158 ; NO-SIMD128-FAST-NEXT:    i32.const $push37=, 255
8159 ; NO-SIMD128-FAST-NEXT:    i32.and $push4=, $18, $pop37
8160 ; NO-SIMD128-FAST-NEXT:    i32.mul $push6=, $pop5, $pop4
8161 ; NO-SIMD128-FAST-NEXT:    i32.store16 2($0), $pop6
8162 ; NO-SIMD128-FAST-NEXT:    i32.const $push36=, 255
8163 ; NO-SIMD128-FAST-NEXT:    i32.and $push8=, $3, $pop36
8164 ; NO-SIMD128-FAST-NEXT:    i32.const $push35=, 255
8165 ; NO-SIMD128-FAST-NEXT:    i32.and $push7=, $19, $pop35
8166 ; NO-SIMD128-FAST-NEXT:    i32.mul $push9=, $pop8, $pop7
8167 ; NO-SIMD128-FAST-NEXT:    i32.store16 4($0), $pop9
8168 ; NO-SIMD128-FAST-NEXT:    i32.const $push34=, 255
8169 ; NO-SIMD128-FAST-NEXT:    i32.and $push11=, $4, $pop34
8170 ; NO-SIMD128-FAST-NEXT:    i32.const $push33=, 255
8171 ; NO-SIMD128-FAST-NEXT:    i32.and $push10=, $20, $pop33
8172 ; NO-SIMD128-FAST-NEXT:    i32.mul $push12=, $pop11, $pop10
8173 ; NO-SIMD128-FAST-NEXT:    i32.store16 6($0), $pop12
8174 ; NO-SIMD128-FAST-NEXT:    i32.const $push32=, 255
8175 ; NO-SIMD128-FAST-NEXT:    i32.and $push14=, $5, $pop32
8176 ; NO-SIMD128-FAST-NEXT:    i32.const $push31=, 255
8177 ; NO-SIMD128-FAST-NEXT:    i32.and $push13=, $21, $pop31
8178 ; NO-SIMD128-FAST-NEXT:    i32.mul $push15=, $pop14, $pop13
8179 ; NO-SIMD128-FAST-NEXT:    i32.store16 8($0), $pop15
8180 ; NO-SIMD128-FAST-NEXT:    i32.const $push30=, 255
8181 ; NO-SIMD128-FAST-NEXT:    i32.and $push17=, $6, $pop30
8182 ; NO-SIMD128-FAST-NEXT:    i32.const $push29=, 255
8183 ; NO-SIMD128-FAST-NEXT:    i32.and $push16=, $22, $pop29
8184 ; NO-SIMD128-FAST-NEXT:    i32.mul $push18=, $pop17, $pop16
8185 ; NO-SIMD128-FAST-NEXT:    i32.store16 10($0), $pop18
8186 ; NO-SIMD128-FAST-NEXT:    i32.const $push28=, 255
8187 ; NO-SIMD128-FAST-NEXT:    i32.and $push20=, $7, $pop28
8188 ; NO-SIMD128-FAST-NEXT:    i32.const $push27=, 255
8189 ; NO-SIMD128-FAST-NEXT:    i32.and $push19=, $23, $pop27
8190 ; NO-SIMD128-FAST-NEXT:    i32.mul $push21=, $pop20, $pop19
8191 ; NO-SIMD128-FAST-NEXT:    i32.store16 12($0), $pop21
8192 ; NO-SIMD128-FAST-NEXT:    i32.const $push26=, 255
8193 ; NO-SIMD128-FAST-NEXT:    i32.and $push23=, $8, $pop26
8194 ; NO-SIMD128-FAST-NEXT:    i32.const $push25=, 255
8195 ; NO-SIMD128-FAST-NEXT:    i32.and $push22=, $24, $pop25
8196 ; NO-SIMD128-FAST-NEXT:    i32.mul $push24=, $pop23, $pop22
8197 ; NO-SIMD128-FAST-NEXT:    i32.store16 14($0), $pop24
8198 ; NO-SIMD128-FAST-NEXT:    return
8199   %low1 = shufflevector <16 x i8> %v1, <16 x i8> undef,
8200            <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
8201   %low2 = shufflevector <16 x i8> %v2, <16 x i8> undef,
8202            <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
8203   %extended1 = zext <8 x i8> %low1 to <8 x i16>
8204   %extended2 = zext <8 x i8> %low2 to <8 x i16>
8205   %a = mul <8 x i16> %extended1, %extended2
8206   ret <8 x i16> %a
8209 define <8 x i16> @extmul_high_u_v8i16(<16 x i8> %v1, <16 x i8> %v2) {
8210 ; SIMD128-LABEL: extmul_high_u_v8i16:
8211 ; SIMD128:         .functype extmul_high_u_v8i16 (v128, v128) -> (v128)
8212 ; SIMD128-NEXT:  # %bb.0:
8213 ; SIMD128-NEXT:    i16x8.extmul_high_i8x16_u $push0=, $0, $1
8214 ; SIMD128-NEXT:    return $pop0
8216 ; SIMD128-FAST-LABEL: extmul_high_u_v8i16:
8217 ; SIMD128-FAST:         .functype extmul_high_u_v8i16 (v128, v128) -> (v128)
8218 ; SIMD128-FAST-NEXT:  # %bb.0:
8219 ; SIMD128-FAST-NEXT:    i16x8.extend_high_i8x16_u $push0=, $0
8220 ; SIMD128-FAST-NEXT:    i16x8.extend_high_i8x16_u $push1=, $1
8221 ; SIMD128-FAST-NEXT:    i16x8.mul $push2=, $pop0, $pop1
8222 ; SIMD128-FAST-NEXT:    return $pop2
8224 ; NO-SIMD128-LABEL: extmul_high_u_v8i16:
8225 ; 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) -> ()
8226 ; NO-SIMD128-NEXT:  # %bb.0:
8227 ; NO-SIMD128-NEXT:    i32.const $push0=, 255
8228 ; NO-SIMD128-NEXT:    i32.and $push2=, $16, $pop0
8229 ; NO-SIMD128-NEXT:    i32.const $push39=, 255
8230 ; NO-SIMD128-NEXT:    i32.and $push1=, $32, $pop39
8231 ; NO-SIMD128-NEXT:    i32.mul $push3=, $pop2, $pop1
8232 ; NO-SIMD128-NEXT:    i32.store16 14($0), $pop3
8233 ; NO-SIMD128-NEXT:    i32.const $push38=, 255
8234 ; NO-SIMD128-NEXT:    i32.and $push5=, $15, $pop38
8235 ; NO-SIMD128-NEXT:    i32.const $push37=, 255
8236 ; NO-SIMD128-NEXT:    i32.and $push4=, $31, $pop37
8237 ; NO-SIMD128-NEXT:    i32.mul $push6=, $pop5, $pop4
8238 ; NO-SIMD128-NEXT:    i32.store16 12($0), $pop6
8239 ; NO-SIMD128-NEXT:    i32.const $push36=, 255
8240 ; NO-SIMD128-NEXT:    i32.and $push8=, $14, $pop36
8241 ; NO-SIMD128-NEXT:    i32.const $push35=, 255
8242 ; NO-SIMD128-NEXT:    i32.and $push7=, $30, $pop35
8243 ; NO-SIMD128-NEXT:    i32.mul $push9=, $pop8, $pop7
8244 ; NO-SIMD128-NEXT:    i32.store16 10($0), $pop9
8245 ; NO-SIMD128-NEXT:    i32.const $push34=, 255
8246 ; NO-SIMD128-NEXT:    i32.and $push11=, $13, $pop34
8247 ; NO-SIMD128-NEXT:    i32.const $push33=, 255
8248 ; NO-SIMD128-NEXT:    i32.and $push10=, $29, $pop33
8249 ; NO-SIMD128-NEXT:    i32.mul $push12=, $pop11, $pop10
8250 ; NO-SIMD128-NEXT:    i32.store16 8($0), $pop12
8251 ; NO-SIMD128-NEXT:    i32.const $push32=, 255
8252 ; NO-SIMD128-NEXT:    i32.and $push14=, $12, $pop32
8253 ; NO-SIMD128-NEXT:    i32.const $push31=, 255
8254 ; NO-SIMD128-NEXT:    i32.and $push13=, $28, $pop31
8255 ; NO-SIMD128-NEXT:    i32.mul $push15=, $pop14, $pop13
8256 ; NO-SIMD128-NEXT:    i32.store16 6($0), $pop15
8257 ; NO-SIMD128-NEXT:    i32.const $push30=, 255
8258 ; NO-SIMD128-NEXT:    i32.and $push17=, $11, $pop30
8259 ; NO-SIMD128-NEXT:    i32.const $push29=, 255
8260 ; NO-SIMD128-NEXT:    i32.and $push16=, $27, $pop29
8261 ; NO-SIMD128-NEXT:    i32.mul $push18=, $pop17, $pop16
8262 ; NO-SIMD128-NEXT:    i32.store16 4($0), $pop18
8263 ; NO-SIMD128-NEXT:    i32.const $push28=, 255
8264 ; NO-SIMD128-NEXT:    i32.and $push20=, $10, $pop28
8265 ; NO-SIMD128-NEXT:    i32.const $push27=, 255
8266 ; NO-SIMD128-NEXT:    i32.and $push19=, $26, $pop27
8267 ; NO-SIMD128-NEXT:    i32.mul $push21=, $pop20, $pop19
8268 ; NO-SIMD128-NEXT:    i32.store16 2($0), $pop21
8269 ; NO-SIMD128-NEXT:    i32.const $push26=, 255
8270 ; NO-SIMD128-NEXT:    i32.and $push23=, $9, $pop26
8271 ; NO-SIMD128-NEXT:    i32.const $push25=, 255
8272 ; NO-SIMD128-NEXT:    i32.and $push22=, $25, $pop25
8273 ; NO-SIMD128-NEXT:    i32.mul $push24=, $pop23, $pop22
8274 ; NO-SIMD128-NEXT:    i32.store16 0($0), $pop24
8275 ; NO-SIMD128-NEXT:    return
8277 ; NO-SIMD128-FAST-LABEL: extmul_high_u_v8i16:
8278 ; 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) -> ()
8279 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
8280 ; NO-SIMD128-FAST-NEXT:    i32.const $push0=, 255
8281 ; NO-SIMD128-FAST-NEXT:    i32.and $push2=, $9, $pop0
8282 ; NO-SIMD128-FAST-NEXT:    i32.const $push39=, 255
8283 ; NO-SIMD128-FAST-NEXT:    i32.and $push1=, $25, $pop39
8284 ; NO-SIMD128-FAST-NEXT:    i32.mul $push3=, $pop2, $pop1
8285 ; NO-SIMD128-FAST-NEXT:    i32.store16 0($0), $pop3
8286 ; NO-SIMD128-FAST-NEXT:    i32.const $push38=, 255
8287 ; NO-SIMD128-FAST-NEXT:    i32.and $push5=, $10, $pop38
8288 ; NO-SIMD128-FAST-NEXT:    i32.const $push37=, 255
8289 ; NO-SIMD128-FAST-NEXT:    i32.and $push4=, $26, $pop37
8290 ; NO-SIMD128-FAST-NEXT:    i32.mul $push6=, $pop5, $pop4
8291 ; NO-SIMD128-FAST-NEXT:    i32.store16 2($0), $pop6
8292 ; NO-SIMD128-FAST-NEXT:    i32.const $push36=, 255
8293 ; NO-SIMD128-FAST-NEXT:    i32.and $push8=, $11, $pop36
8294 ; NO-SIMD128-FAST-NEXT:    i32.const $push35=, 255
8295 ; NO-SIMD128-FAST-NEXT:    i32.and $push7=, $27, $pop35
8296 ; NO-SIMD128-FAST-NEXT:    i32.mul $push9=, $pop8, $pop7
8297 ; NO-SIMD128-FAST-NEXT:    i32.store16 4($0), $pop9
8298 ; NO-SIMD128-FAST-NEXT:    i32.const $push34=, 255
8299 ; NO-SIMD128-FAST-NEXT:    i32.and $push11=, $12, $pop34
8300 ; NO-SIMD128-FAST-NEXT:    i32.const $push33=, 255
8301 ; NO-SIMD128-FAST-NEXT:    i32.and $push10=, $28, $pop33
8302 ; NO-SIMD128-FAST-NEXT:    i32.mul $push12=, $pop11, $pop10
8303 ; NO-SIMD128-FAST-NEXT:    i32.store16 6($0), $pop12
8304 ; NO-SIMD128-FAST-NEXT:    i32.const $push32=, 255
8305 ; NO-SIMD128-FAST-NEXT:    i32.and $push14=, $13, $pop32
8306 ; NO-SIMD128-FAST-NEXT:    i32.const $push31=, 255
8307 ; NO-SIMD128-FAST-NEXT:    i32.and $push13=, $29, $pop31
8308 ; NO-SIMD128-FAST-NEXT:    i32.mul $push15=, $pop14, $pop13
8309 ; NO-SIMD128-FAST-NEXT:    i32.store16 8($0), $pop15
8310 ; NO-SIMD128-FAST-NEXT:    i32.const $push30=, 255
8311 ; NO-SIMD128-FAST-NEXT:    i32.and $push17=, $14, $pop30
8312 ; NO-SIMD128-FAST-NEXT:    i32.const $push29=, 255
8313 ; NO-SIMD128-FAST-NEXT:    i32.and $push16=, $30, $pop29
8314 ; NO-SIMD128-FAST-NEXT:    i32.mul $push18=, $pop17, $pop16
8315 ; NO-SIMD128-FAST-NEXT:    i32.store16 10($0), $pop18
8316 ; NO-SIMD128-FAST-NEXT:    i32.const $push28=, 255
8317 ; NO-SIMD128-FAST-NEXT:    i32.and $push20=, $15, $pop28
8318 ; NO-SIMD128-FAST-NEXT:    i32.const $push27=, 255
8319 ; NO-SIMD128-FAST-NEXT:    i32.and $push19=, $31, $pop27
8320 ; NO-SIMD128-FAST-NEXT:    i32.mul $push21=, $pop20, $pop19
8321 ; NO-SIMD128-FAST-NEXT:    i32.store16 12($0), $pop21
8322 ; NO-SIMD128-FAST-NEXT:    i32.const $push26=, 255
8323 ; NO-SIMD128-FAST-NEXT:    i32.and $push23=, $16, $pop26
8324 ; NO-SIMD128-FAST-NEXT:    i32.const $push25=, 255
8325 ; NO-SIMD128-FAST-NEXT:    i32.and $push22=, $32, $pop25
8326 ; NO-SIMD128-FAST-NEXT:    i32.mul $push24=, $pop23, $pop22
8327 ; NO-SIMD128-FAST-NEXT:    i32.store16 14($0), $pop24
8328 ; NO-SIMD128-FAST-NEXT:    return
8329   %high1 = shufflevector <16 x i8> %v1, <16 x i8> undef,
8330            <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
8331   %high2 = shufflevector <16 x i8> %v2, <16 x i8> undef,
8332            <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
8333   %extended1 = zext <8 x i8> %high1 to <8 x i16>
8334   %extended2 = zext <8 x i8> %high2 to <8 x i16>
8335   %a = mul <8 x i16> %extended1, %extended2
8336   ret <8 x i16> %a
8339 ; ==============================================================================
8340 ; 4 x i32
8341 ; ==============================================================================
8342 define <4 x i32> @add_v4i32(<4 x i32> %x, <4 x i32> %y) {
8343 ; SIMD128-LABEL: add_v4i32:
8344 ; SIMD128:         .functype add_v4i32 (v128, v128) -> (v128)
8345 ; SIMD128-NEXT:  # %bb.0:
8346 ; SIMD128-NEXT:    i32x4.add $push0=, $0, $1
8347 ; SIMD128-NEXT:    return $pop0
8349 ; SIMD128-FAST-LABEL: add_v4i32:
8350 ; SIMD128-FAST:         .functype add_v4i32 (v128, v128) -> (v128)
8351 ; SIMD128-FAST-NEXT:  # %bb.0:
8352 ; SIMD128-FAST-NEXT:    i32x4.add $push0=, $0, $1
8353 ; SIMD128-FAST-NEXT:    return $pop0
8355 ; NO-SIMD128-LABEL: add_v4i32:
8356 ; NO-SIMD128:         .functype add_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
8357 ; NO-SIMD128-NEXT:  # %bb.0:
8358 ; NO-SIMD128-NEXT:    i32.add $push0=, $4, $8
8359 ; NO-SIMD128-NEXT:    i32.store 12($0), $pop0
8360 ; NO-SIMD128-NEXT:    i32.add $push1=, $3, $7
8361 ; NO-SIMD128-NEXT:    i32.store 8($0), $pop1
8362 ; NO-SIMD128-NEXT:    i32.add $push2=, $2, $6
8363 ; NO-SIMD128-NEXT:    i32.store 4($0), $pop2
8364 ; NO-SIMD128-NEXT:    i32.add $push3=, $1, $5
8365 ; NO-SIMD128-NEXT:    i32.store 0($0), $pop3
8366 ; NO-SIMD128-NEXT:    return
8368 ; NO-SIMD128-FAST-LABEL: add_v4i32:
8369 ; NO-SIMD128-FAST:         .functype add_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
8370 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
8371 ; NO-SIMD128-FAST-NEXT:    i32.add $push0=, $1, $5
8372 ; NO-SIMD128-FAST-NEXT:    i32.store 0($0), $pop0
8373 ; NO-SIMD128-FAST-NEXT:    i32.add $push1=, $2, $6
8374 ; NO-SIMD128-FAST-NEXT:    i32.store 4($0), $pop1
8375 ; NO-SIMD128-FAST-NEXT:    i32.add $push2=, $3, $7
8376 ; NO-SIMD128-FAST-NEXT:    i32.store 8($0), $pop2
8377 ; NO-SIMD128-FAST-NEXT:    i32.add $push3=, $4, $8
8378 ; NO-SIMD128-FAST-NEXT:    i32.store 12($0), $pop3
8379 ; NO-SIMD128-FAST-NEXT:    return
8380   %a = add <4 x i32> %x, %y
8381   ret <4 x i32> %a
8384 define <4 x i32> @sub_v4i32(<4 x i32> %x, <4 x i32> %y) {
8385 ; SIMD128-LABEL: sub_v4i32:
8386 ; SIMD128:         .functype sub_v4i32 (v128, v128) -> (v128)
8387 ; SIMD128-NEXT:  # %bb.0:
8388 ; SIMD128-NEXT:    i32x4.sub $push0=, $0, $1
8389 ; SIMD128-NEXT:    return $pop0
8391 ; SIMD128-FAST-LABEL: sub_v4i32:
8392 ; SIMD128-FAST:         .functype sub_v4i32 (v128, v128) -> (v128)
8393 ; SIMD128-FAST-NEXT:  # %bb.0:
8394 ; SIMD128-FAST-NEXT:    i32x4.sub $push0=, $0, $1
8395 ; SIMD128-FAST-NEXT:    return $pop0
8397 ; NO-SIMD128-LABEL: sub_v4i32:
8398 ; NO-SIMD128:         .functype sub_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
8399 ; NO-SIMD128-NEXT:  # %bb.0:
8400 ; NO-SIMD128-NEXT:    i32.sub $push0=, $4, $8
8401 ; NO-SIMD128-NEXT:    i32.store 12($0), $pop0
8402 ; NO-SIMD128-NEXT:    i32.sub $push1=, $3, $7
8403 ; NO-SIMD128-NEXT:    i32.store 8($0), $pop1
8404 ; NO-SIMD128-NEXT:    i32.sub $push2=, $2, $6
8405 ; NO-SIMD128-NEXT:    i32.store 4($0), $pop2
8406 ; NO-SIMD128-NEXT:    i32.sub $push3=, $1, $5
8407 ; NO-SIMD128-NEXT:    i32.store 0($0), $pop3
8408 ; NO-SIMD128-NEXT:    return
8410 ; NO-SIMD128-FAST-LABEL: sub_v4i32:
8411 ; NO-SIMD128-FAST:         .functype sub_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
8412 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
8413 ; NO-SIMD128-FAST-NEXT:    i32.sub $push0=, $1, $5
8414 ; NO-SIMD128-FAST-NEXT:    i32.store 0($0), $pop0
8415 ; NO-SIMD128-FAST-NEXT:    i32.sub $push1=, $2, $6
8416 ; NO-SIMD128-FAST-NEXT:    i32.store 4($0), $pop1
8417 ; NO-SIMD128-FAST-NEXT:    i32.sub $push2=, $3, $7
8418 ; NO-SIMD128-FAST-NEXT:    i32.store 8($0), $pop2
8419 ; NO-SIMD128-FAST-NEXT:    i32.sub $push3=, $4, $8
8420 ; NO-SIMD128-FAST-NEXT:    i32.store 12($0), $pop3
8421 ; NO-SIMD128-FAST-NEXT:    return
8422   %a = sub <4 x i32> %x, %y
8423   ret <4 x i32> %a
8426 define <4 x i32> @mul_v4i32(<4 x i32> %x, <4 x i32> %y) {
8427 ; SIMD128-LABEL: mul_v4i32:
8428 ; SIMD128:         .functype mul_v4i32 (v128, v128) -> (v128)
8429 ; SIMD128-NEXT:  # %bb.0:
8430 ; SIMD128-NEXT:    i32x4.mul $push0=, $0, $1
8431 ; SIMD128-NEXT:    return $pop0
8433 ; SIMD128-FAST-LABEL: mul_v4i32:
8434 ; SIMD128-FAST:         .functype mul_v4i32 (v128, v128) -> (v128)
8435 ; SIMD128-FAST-NEXT:  # %bb.0:
8436 ; SIMD128-FAST-NEXT:    i32x4.mul $push0=, $0, $1
8437 ; SIMD128-FAST-NEXT:    return $pop0
8439 ; NO-SIMD128-LABEL: mul_v4i32:
8440 ; NO-SIMD128:         .functype mul_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
8441 ; NO-SIMD128-NEXT:  # %bb.0:
8442 ; NO-SIMD128-NEXT:    i32.mul $push0=, $4, $8
8443 ; NO-SIMD128-NEXT:    i32.store 12($0), $pop0
8444 ; NO-SIMD128-NEXT:    i32.mul $push1=, $3, $7
8445 ; NO-SIMD128-NEXT:    i32.store 8($0), $pop1
8446 ; NO-SIMD128-NEXT:    i32.mul $push2=, $2, $6
8447 ; NO-SIMD128-NEXT:    i32.store 4($0), $pop2
8448 ; NO-SIMD128-NEXT:    i32.mul $push3=, $1, $5
8449 ; NO-SIMD128-NEXT:    i32.store 0($0), $pop3
8450 ; NO-SIMD128-NEXT:    return
8452 ; NO-SIMD128-FAST-LABEL: mul_v4i32:
8453 ; NO-SIMD128-FAST:         .functype mul_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
8454 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
8455 ; NO-SIMD128-FAST-NEXT:    i32.mul $push0=, $1, $5
8456 ; NO-SIMD128-FAST-NEXT:    i32.store 0($0), $pop0
8457 ; NO-SIMD128-FAST-NEXT:    i32.mul $push1=, $2, $6
8458 ; NO-SIMD128-FAST-NEXT:    i32.store 4($0), $pop1
8459 ; NO-SIMD128-FAST-NEXT:    i32.mul $push2=, $3, $7
8460 ; NO-SIMD128-FAST-NEXT:    i32.store 8($0), $pop2
8461 ; NO-SIMD128-FAST-NEXT:    i32.mul $push3=, $4, $8
8462 ; NO-SIMD128-FAST-NEXT:    i32.store 12($0), $pop3
8463 ; NO-SIMD128-FAST-NEXT:    return
8464   %a = mul <4 x i32> %x, %y
8465   ret <4 x i32> %a
8468 define <4 x i32> @min_s_v4i32(<4 x i32> %x, <4 x i32> %y) {
8469 ; SIMD128-LABEL: min_s_v4i32:
8470 ; SIMD128:         .functype min_s_v4i32 (v128, v128) -> (v128)
8471 ; SIMD128-NEXT:  # %bb.0:
8472 ; SIMD128-NEXT:    i32x4.min_s $push0=, $0, $1
8473 ; SIMD128-NEXT:    return $pop0
8475 ; SIMD128-FAST-LABEL: min_s_v4i32:
8476 ; SIMD128-FAST:         .functype min_s_v4i32 (v128, v128) -> (v128)
8477 ; SIMD128-FAST-NEXT:  # %bb.0:
8478 ; SIMD128-FAST-NEXT:    i32x4.min_s $push0=, $0, $1
8479 ; SIMD128-FAST-NEXT:    return $pop0
8481 ; NO-SIMD128-LABEL: min_s_v4i32:
8482 ; NO-SIMD128:         .functype min_s_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
8483 ; NO-SIMD128-NEXT:  # %bb.0:
8484 ; NO-SIMD128-NEXT:    i32.lt_s $push0=, $4, $8
8485 ; NO-SIMD128-NEXT:    i32.select $push1=, $4, $8, $pop0
8486 ; NO-SIMD128-NEXT:    i32.store 12($0), $pop1
8487 ; NO-SIMD128-NEXT:    i32.lt_s $push2=, $3, $7
8488 ; NO-SIMD128-NEXT:    i32.select $push3=, $3, $7, $pop2
8489 ; NO-SIMD128-NEXT:    i32.store 8($0), $pop3
8490 ; NO-SIMD128-NEXT:    i32.lt_s $push4=, $2, $6
8491 ; NO-SIMD128-NEXT:    i32.select $push5=, $2, $6, $pop4
8492 ; NO-SIMD128-NEXT:    i32.store 4($0), $pop5
8493 ; NO-SIMD128-NEXT:    i32.lt_s $push6=, $1, $5
8494 ; NO-SIMD128-NEXT:    i32.select $push7=, $1, $5, $pop6
8495 ; NO-SIMD128-NEXT:    i32.store 0($0), $pop7
8496 ; NO-SIMD128-NEXT:    return
8498 ; NO-SIMD128-FAST-LABEL: min_s_v4i32:
8499 ; NO-SIMD128-FAST:         .functype min_s_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
8500 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
8501 ; NO-SIMD128-FAST-NEXT:    i32.lt_s $push0=, $1, $5
8502 ; NO-SIMD128-FAST-NEXT:    i32.select $push1=, $1, $5, $pop0
8503 ; NO-SIMD128-FAST-NEXT:    i32.store 0($0), $pop1
8504 ; NO-SIMD128-FAST-NEXT:    i32.lt_s $push2=, $2, $6
8505 ; NO-SIMD128-FAST-NEXT:    i32.select $push3=, $2, $6, $pop2
8506 ; NO-SIMD128-FAST-NEXT:    i32.store 4($0), $pop3
8507 ; NO-SIMD128-FAST-NEXT:    i32.lt_s $push4=, $3, $7
8508 ; NO-SIMD128-FAST-NEXT:    i32.select $push5=, $3, $7, $pop4
8509 ; NO-SIMD128-FAST-NEXT:    i32.store 8($0), $pop5
8510 ; NO-SIMD128-FAST-NEXT:    i32.lt_s $push6=, $4, $8
8511 ; NO-SIMD128-FAST-NEXT:    i32.select $push7=, $4, $8, $pop6
8512 ; NO-SIMD128-FAST-NEXT:    i32.store 12($0), $pop7
8513 ; NO-SIMD128-FAST-NEXT:    return
8514   %c = icmp slt <4 x i32> %x, %y
8515   %a = select <4 x i1> %c, <4 x i32> %x, <4 x i32> %y
8516   ret <4 x i32> %a
8519 define <4 x i32> @min_u_v4i32(<4 x i32> %x, <4 x i32> %y) {
8520 ; SIMD128-LABEL: min_u_v4i32:
8521 ; SIMD128:         .functype min_u_v4i32 (v128, v128) -> (v128)
8522 ; SIMD128-NEXT:  # %bb.0:
8523 ; SIMD128-NEXT:    i32x4.min_u $push0=, $0, $1
8524 ; SIMD128-NEXT:    return $pop0
8526 ; SIMD128-FAST-LABEL: min_u_v4i32:
8527 ; SIMD128-FAST:         .functype min_u_v4i32 (v128, v128) -> (v128)
8528 ; SIMD128-FAST-NEXT:  # %bb.0:
8529 ; SIMD128-FAST-NEXT:    i32x4.min_u $push0=, $0, $1
8530 ; SIMD128-FAST-NEXT:    return $pop0
8532 ; NO-SIMD128-LABEL: min_u_v4i32:
8533 ; NO-SIMD128:         .functype min_u_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
8534 ; NO-SIMD128-NEXT:  # %bb.0:
8535 ; NO-SIMD128-NEXT:    i32.lt_u $push0=, $4, $8
8536 ; NO-SIMD128-NEXT:    i32.select $push1=, $4, $8, $pop0
8537 ; NO-SIMD128-NEXT:    i32.store 12($0), $pop1
8538 ; NO-SIMD128-NEXT:    i32.lt_u $push2=, $3, $7
8539 ; NO-SIMD128-NEXT:    i32.select $push3=, $3, $7, $pop2
8540 ; NO-SIMD128-NEXT:    i32.store 8($0), $pop3
8541 ; NO-SIMD128-NEXT:    i32.lt_u $push4=, $2, $6
8542 ; NO-SIMD128-NEXT:    i32.select $push5=, $2, $6, $pop4
8543 ; NO-SIMD128-NEXT:    i32.store 4($0), $pop5
8544 ; NO-SIMD128-NEXT:    i32.lt_u $push6=, $1, $5
8545 ; NO-SIMD128-NEXT:    i32.select $push7=, $1, $5, $pop6
8546 ; NO-SIMD128-NEXT:    i32.store 0($0), $pop7
8547 ; NO-SIMD128-NEXT:    return
8549 ; NO-SIMD128-FAST-LABEL: min_u_v4i32:
8550 ; NO-SIMD128-FAST:         .functype min_u_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
8551 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
8552 ; NO-SIMD128-FAST-NEXT:    i32.lt_u $push0=, $1, $5
8553 ; NO-SIMD128-FAST-NEXT:    i32.select $push1=, $1, $5, $pop0
8554 ; NO-SIMD128-FAST-NEXT:    i32.store 0($0), $pop1
8555 ; NO-SIMD128-FAST-NEXT:    i32.lt_u $push2=, $2, $6
8556 ; NO-SIMD128-FAST-NEXT:    i32.select $push3=, $2, $6, $pop2
8557 ; NO-SIMD128-FAST-NEXT:    i32.store 4($0), $pop3
8558 ; NO-SIMD128-FAST-NEXT:    i32.lt_u $push4=, $3, $7
8559 ; NO-SIMD128-FAST-NEXT:    i32.select $push5=, $3, $7, $pop4
8560 ; NO-SIMD128-FAST-NEXT:    i32.store 8($0), $pop5
8561 ; NO-SIMD128-FAST-NEXT:    i32.lt_u $push6=, $4, $8
8562 ; NO-SIMD128-FAST-NEXT:    i32.select $push7=, $4, $8, $pop6
8563 ; NO-SIMD128-FAST-NEXT:    i32.store 12($0), $pop7
8564 ; NO-SIMD128-FAST-NEXT:    return
8565   %c = icmp ult <4 x i32> %x, %y
8566   %a = select <4 x i1> %c, <4 x i32> %x, <4 x i32> %y
8567   ret <4 x i32> %a
8570 define <4 x i32> @max_s_v4i32(<4 x i32> %x, <4 x i32> %y) {
8571 ; SIMD128-LABEL: max_s_v4i32:
8572 ; SIMD128:         .functype max_s_v4i32 (v128, v128) -> (v128)
8573 ; SIMD128-NEXT:  # %bb.0:
8574 ; SIMD128-NEXT:    i32x4.max_s $push0=, $0, $1
8575 ; SIMD128-NEXT:    return $pop0
8577 ; SIMD128-FAST-LABEL: max_s_v4i32:
8578 ; SIMD128-FAST:         .functype max_s_v4i32 (v128, v128) -> (v128)
8579 ; SIMD128-FAST-NEXT:  # %bb.0:
8580 ; SIMD128-FAST-NEXT:    i32x4.max_s $push0=, $0, $1
8581 ; SIMD128-FAST-NEXT:    return $pop0
8583 ; NO-SIMD128-LABEL: max_s_v4i32:
8584 ; NO-SIMD128:         .functype max_s_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
8585 ; NO-SIMD128-NEXT:  # %bb.0:
8586 ; NO-SIMD128-NEXT:    i32.gt_s $push0=, $4, $8
8587 ; NO-SIMD128-NEXT:    i32.select $push1=, $4, $8, $pop0
8588 ; NO-SIMD128-NEXT:    i32.store 12($0), $pop1
8589 ; NO-SIMD128-NEXT:    i32.gt_s $push2=, $3, $7
8590 ; NO-SIMD128-NEXT:    i32.select $push3=, $3, $7, $pop2
8591 ; NO-SIMD128-NEXT:    i32.store 8($0), $pop3
8592 ; NO-SIMD128-NEXT:    i32.gt_s $push4=, $2, $6
8593 ; NO-SIMD128-NEXT:    i32.select $push5=, $2, $6, $pop4
8594 ; NO-SIMD128-NEXT:    i32.store 4($0), $pop5
8595 ; NO-SIMD128-NEXT:    i32.gt_s $push6=, $1, $5
8596 ; NO-SIMD128-NEXT:    i32.select $push7=, $1, $5, $pop6
8597 ; NO-SIMD128-NEXT:    i32.store 0($0), $pop7
8598 ; NO-SIMD128-NEXT:    return
8600 ; NO-SIMD128-FAST-LABEL: max_s_v4i32:
8601 ; NO-SIMD128-FAST:         .functype max_s_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
8602 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
8603 ; NO-SIMD128-FAST-NEXT:    i32.gt_s $push0=, $1, $5
8604 ; NO-SIMD128-FAST-NEXT:    i32.select $push1=, $1, $5, $pop0
8605 ; NO-SIMD128-FAST-NEXT:    i32.store 0($0), $pop1
8606 ; NO-SIMD128-FAST-NEXT:    i32.gt_s $push2=, $2, $6
8607 ; NO-SIMD128-FAST-NEXT:    i32.select $push3=, $2, $6, $pop2
8608 ; NO-SIMD128-FAST-NEXT:    i32.store 4($0), $pop3
8609 ; NO-SIMD128-FAST-NEXT:    i32.gt_s $push4=, $3, $7
8610 ; NO-SIMD128-FAST-NEXT:    i32.select $push5=, $3, $7, $pop4
8611 ; NO-SIMD128-FAST-NEXT:    i32.store 8($0), $pop5
8612 ; NO-SIMD128-FAST-NEXT:    i32.gt_s $push6=, $4, $8
8613 ; NO-SIMD128-FAST-NEXT:    i32.select $push7=, $4, $8, $pop6
8614 ; NO-SIMD128-FAST-NEXT:    i32.store 12($0), $pop7
8615 ; NO-SIMD128-FAST-NEXT:    return
8616   %c = icmp sgt <4 x i32> %x, %y
8617   %a = select <4 x i1> %c, <4 x i32> %x, <4 x i32> %y
8618   ret <4 x i32> %a
8621 define <4 x i32> @max_u_v4i32(<4 x i32> %x, <4 x i32> %y) {
8622 ; SIMD128-LABEL: max_u_v4i32:
8623 ; SIMD128:         .functype max_u_v4i32 (v128, v128) -> (v128)
8624 ; SIMD128-NEXT:  # %bb.0:
8625 ; SIMD128-NEXT:    i32x4.max_u $push0=, $0, $1
8626 ; SIMD128-NEXT:    return $pop0
8628 ; SIMD128-FAST-LABEL: max_u_v4i32:
8629 ; SIMD128-FAST:         .functype max_u_v4i32 (v128, v128) -> (v128)
8630 ; SIMD128-FAST-NEXT:  # %bb.0:
8631 ; SIMD128-FAST-NEXT:    i32x4.max_u $push0=, $0, $1
8632 ; SIMD128-FAST-NEXT:    return $pop0
8634 ; NO-SIMD128-LABEL: max_u_v4i32:
8635 ; NO-SIMD128:         .functype max_u_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
8636 ; NO-SIMD128-NEXT:  # %bb.0:
8637 ; NO-SIMD128-NEXT:    i32.gt_u $push0=, $4, $8
8638 ; NO-SIMD128-NEXT:    i32.select $push1=, $4, $8, $pop0
8639 ; NO-SIMD128-NEXT:    i32.store 12($0), $pop1
8640 ; NO-SIMD128-NEXT:    i32.gt_u $push2=, $3, $7
8641 ; NO-SIMD128-NEXT:    i32.select $push3=, $3, $7, $pop2
8642 ; NO-SIMD128-NEXT:    i32.store 8($0), $pop3
8643 ; NO-SIMD128-NEXT:    i32.gt_u $push4=, $2, $6
8644 ; NO-SIMD128-NEXT:    i32.select $push5=, $2, $6, $pop4
8645 ; NO-SIMD128-NEXT:    i32.store 4($0), $pop5
8646 ; NO-SIMD128-NEXT:    i32.gt_u $push6=, $1, $5
8647 ; NO-SIMD128-NEXT:    i32.select $push7=, $1, $5, $pop6
8648 ; NO-SIMD128-NEXT:    i32.store 0($0), $pop7
8649 ; NO-SIMD128-NEXT:    return
8651 ; NO-SIMD128-FAST-LABEL: max_u_v4i32:
8652 ; NO-SIMD128-FAST:         .functype max_u_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
8653 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
8654 ; NO-SIMD128-FAST-NEXT:    i32.gt_u $push0=, $1, $5
8655 ; NO-SIMD128-FAST-NEXT:    i32.select $push1=, $1, $5, $pop0
8656 ; NO-SIMD128-FAST-NEXT:    i32.store 0($0), $pop1
8657 ; NO-SIMD128-FAST-NEXT:    i32.gt_u $push2=, $2, $6
8658 ; NO-SIMD128-FAST-NEXT:    i32.select $push3=, $2, $6, $pop2
8659 ; NO-SIMD128-FAST-NEXT:    i32.store 4($0), $pop3
8660 ; NO-SIMD128-FAST-NEXT:    i32.gt_u $push4=, $3, $7
8661 ; NO-SIMD128-FAST-NEXT:    i32.select $push5=, $3, $7, $pop4
8662 ; NO-SIMD128-FAST-NEXT:    i32.store 8($0), $pop5
8663 ; NO-SIMD128-FAST-NEXT:    i32.gt_u $push6=, $4, $8
8664 ; NO-SIMD128-FAST-NEXT:    i32.select $push7=, $4, $8, $pop6
8665 ; NO-SIMD128-FAST-NEXT:    i32.store 12($0), $pop7
8666 ; NO-SIMD128-FAST-NEXT:    return
8667   %c = icmp ugt <4 x i32> %x, %y
8668   %a = select <4 x i1> %c, <4 x i32> %x, <4 x i32> %y
8669   ret <4 x i32> %a
8672 define <4 x i32> @abs_v4i32(<4 x i32> %x) {
8673 ; SIMD128-LABEL: abs_v4i32:
8674 ; SIMD128:         .functype abs_v4i32 (v128) -> (v128)
8675 ; SIMD128-NEXT:  # %bb.0:
8676 ; SIMD128-NEXT:    i32x4.abs $push0=, $0
8677 ; SIMD128-NEXT:    return $pop0
8679 ; SIMD128-FAST-LABEL: abs_v4i32:
8680 ; SIMD128-FAST:         .functype abs_v4i32 (v128) -> (v128)
8681 ; SIMD128-FAST-NEXT:  # %bb.0:
8682 ; SIMD128-FAST-NEXT:    i32x4.abs $push0=, $0
8683 ; SIMD128-FAST-NEXT:    return $pop0
8685 ; NO-SIMD128-LABEL: abs_v4i32:
8686 ; NO-SIMD128:         .functype abs_v4i32 (i32, i32, i32, i32, i32) -> ()
8687 ; NO-SIMD128-NEXT:  # %bb.0:
8688 ; NO-SIMD128-NEXT:    i32.const $push0=, 31
8689 ; NO-SIMD128-NEXT:    i32.shr_s $push19=, $4, $pop0
8690 ; NO-SIMD128-NEXT:    local.tee $push18=, $5=, $pop19
8691 ; NO-SIMD128-NEXT:    i32.xor $push1=, $4, $pop18
8692 ; NO-SIMD128-NEXT:    i32.sub $push2=, $pop1, $5
8693 ; NO-SIMD128-NEXT:    i32.store 12($0), $pop2
8694 ; NO-SIMD128-NEXT:    i32.const $push17=, 31
8695 ; NO-SIMD128-NEXT:    i32.shr_s $push16=, $3, $pop17
8696 ; NO-SIMD128-NEXT:    local.tee $push15=, $4=, $pop16
8697 ; NO-SIMD128-NEXT:    i32.xor $push3=, $3, $pop15
8698 ; NO-SIMD128-NEXT:    i32.sub $push4=, $pop3, $4
8699 ; NO-SIMD128-NEXT:    i32.store 8($0), $pop4
8700 ; NO-SIMD128-NEXT:    i32.const $push14=, 31
8701 ; NO-SIMD128-NEXT:    i32.shr_s $push13=, $2, $pop14
8702 ; NO-SIMD128-NEXT:    local.tee $push12=, $4=, $pop13
8703 ; NO-SIMD128-NEXT:    i32.xor $push5=, $2, $pop12
8704 ; NO-SIMD128-NEXT:    i32.sub $push6=, $pop5, $4
8705 ; NO-SIMD128-NEXT:    i32.store 4($0), $pop6
8706 ; NO-SIMD128-NEXT:    i32.const $push11=, 31
8707 ; NO-SIMD128-NEXT:    i32.shr_s $push10=, $1, $pop11
8708 ; NO-SIMD128-NEXT:    local.tee $push9=, $4=, $pop10
8709 ; NO-SIMD128-NEXT:    i32.xor $push7=, $1, $pop9
8710 ; NO-SIMD128-NEXT:    i32.sub $push8=, $pop7, $4
8711 ; NO-SIMD128-NEXT:    i32.store 0($0), $pop8
8712 ; NO-SIMD128-NEXT:    return
8714 ; NO-SIMD128-FAST-LABEL: abs_v4i32:
8715 ; NO-SIMD128-FAST:         .functype abs_v4i32 (i32, i32, i32, i32, i32) -> ()
8716 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
8717 ; NO-SIMD128-FAST-NEXT:    i32.const $push0=, 31
8718 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push19=, $1, $pop0
8719 ; NO-SIMD128-FAST-NEXT:    local.tee $push18=, $5=, $pop19
8720 ; NO-SIMD128-FAST-NEXT:    i32.xor $push1=, $1, $pop18
8721 ; NO-SIMD128-FAST-NEXT:    i32.sub $push2=, $pop1, $5
8722 ; NO-SIMD128-FAST-NEXT:    i32.store 0($0), $pop2
8723 ; NO-SIMD128-FAST-NEXT:    i32.const $push17=, 31
8724 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push16=, $2, $pop17
8725 ; NO-SIMD128-FAST-NEXT:    local.tee $push15=, $1=, $pop16
8726 ; NO-SIMD128-FAST-NEXT:    i32.xor $push3=, $2, $pop15
8727 ; NO-SIMD128-FAST-NEXT:    i32.sub $push4=, $pop3, $1
8728 ; NO-SIMD128-FAST-NEXT:    i32.store 4($0), $pop4
8729 ; NO-SIMD128-FAST-NEXT:    i32.const $push14=, 31
8730 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push13=, $3, $pop14
8731 ; NO-SIMD128-FAST-NEXT:    local.tee $push12=, $2=, $pop13
8732 ; NO-SIMD128-FAST-NEXT:    i32.xor $push5=, $3, $pop12
8733 ; NO-SIMD128-FAST-NEXT:    i32.sub $push6=, $pop5, $2
8734 ; NO-SIMD128-FAST-NEXT:    i32.store 8($0), $pop6
8735 ; NO-SIMD128-FAST-NEXT:    i32.const $push11=, 31
8736 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push10=, $4, $pop11
8737 ; NO-SIMD128-FAST-NEXT:    local.tee $push9=, $3=, $pop10
8738 ; NO-SIMD128-FAST-NEXT:    i32.xor $push7=, $4, $pop9
8739 ; NO-SIMD128-FAST-NEXT:    i32.sub $push8=, $pop7, $3
8740 ; NO-SIMD128-FAST-NEXT:    i32.store 12($0), $pop8
8741 ; NO-SIMD128-FAST-NEXT:    return
8742   %a = sub <4 x i32> zeroinitializer, %x
8743   %b = icmp slt <4 x i32> %x, zeroinitializer
8744   %c = select <4 x i1> %b, <4 x i32> %a, <4 x i32> %x
8745   ret <4 x i32> %c
8748 define <4 x i32> @neg_v4i32(<4 x i32> %x) {
8749 ; SIMD128-LABEL: neg_v4i32:
8750 ; SIMD128:         .functype neg_v4i32 (v128) -> (v128)
8751 ; SIMD128-NEXT:  # %bb.0:
8752 ; SIMD128-NEXT:    i32x4.neg $push0=, $0
8753 ; SIMD128-NEXT:    return $pop0
8755 ; SIMD128-FAST-LABEL: neg_v4i32:
8756 ; SIMD128-FAST:         .functype neg_v4i32 (v128) -> (v128)
8757 ; SIMD128-FAST-NEXT:  # %bb.0:
8758 ; SIMD128-FAST-NEXT:    i32x4.neg $push0=, $0
8759 ; SIMD128-FAST-NEXT:    return $pop0
8761 ; NO-SIMD128-LABEL: neg_v4i32:
8762 ; NO-SIMD128:         .functype neg_v4i32 (i32, i32, i32, i32, i32) -> ()
8763 ; NO-SIMD128-NEXT:  # %bb.0:
8764 ; NO-SIMD128-NEXT:    i32.const $push0=, 0
8765 ; NO-SIMD128-NEXT:    i32.sub $push1=, $pop0, $4
8766 ; NO-SIMD128-NEXT:    i32.store 12($0), $pop1
8767 ; NO-SIMD128-NEXT:    i32.const $push7=, 0
8768 ; NO-SIMD128-NEXT:    i32.sub $push2=, $pop7, $3
8769 ; NO-SIMD128-NEXT:    i32.store 8($0), $pop2
8770 ; NO-SIMD128-NEXT:    i32.const $push6=, 0
8771 ; NO-SIMD128-NEXT:    i32.sub $push3=, $pop6, $2
8772 ; NO-SIMD128-NEXT:    i32.store 4($0), $pop3
8773 ; NO-SIMD128-NEXT:    i32.const $push5=, 0
8774 ; NO-SIMD128-NEXT:    i32.sub $push4=, $pop5, $1
8775 ; NO-SIMD128-NEXT:    i32.store 0($0), $pop4
8776 ; NO-SIMD128-NEXT:    return
8778 ; NO-SIMD128-FAST-LABEL: neg_v4i32:
8779 ; NO-SIMD128-FAST:         .functype neg_v4i32 (i32, i32, i32, i32, i32) -> ()
8780 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
8781 ; NO-SIMD128-FAST-NEXT:    i32.const $push0=, 0
8782 ; NO-SIMD128-FAST-NEXT:    i32.sub $push1=, $pop0, $1
8783 ; NO-SIMD128-FAST-NEXT:    i32.store 0($0), $pop1
8784 ; NO-SIMD128-FAST-NEXT:    i32.const $push7=, 0
8785 ; NO-SIMD128-FAST-NEXT:    i32.sub $push2=, $pop7, $2
8786 ; NO-SIMD128-FAST-NEXT:    i32.store 4($0), $pop2
8787 ; NO-SIMD128-FAST-NEXT:    i32.const $push6=, 0
8788 ; NO-SIMD128-FAST-NEXT:    i32.sub $push3=, $pop6, $3
8789 ; NO-SIMD128-FAST-NEXT:    i32.store 8($0), $pop3
8790 ; NO-SIMD128-FAST-NEXT:    i32.const $push5=, 0
8791 ; NO-SIMD128-FAST-NEXT:    i32.sub $push4=, $pop5, $4
8792 ; NO-SIMD128-FAST-NEXT:    i32.store 12($0), $pop4
8793 ; NO-SIMD128-FAST-NEXT:    return
8794   %a = sub <4 x i32> <i32 0, i32 0, i32 0, i32 0>, %x
8795   ret <4 x i32> %a
8798 define <4 x i32> @shl_v4i32(<4 x i32> %v, i32 %x) {
8799 ; SIMD128-LABEL: shl_v4i32:
8800 ; SIMD128:         .functype shl_v4i32 (v128, i32) -> (v128)
8801 ; SIMD128-NEXT:  # %bb.0:
8802 ; SIMD128-NEXT:    i32x4.shl $push0=, $0, $1
8803 ; SIMD128-NEXT:    return $pop0
8805 ; SIMD128-FAST-LABEL: shl_v4i32:
8806 ; SIMD128-FAST:         .functype shl_v4i32 (v128, i32) -> (v128)
8807 ; SIMD128-FAST-NEXT:  # %bb.0:
8808 ; SIMD128-FAST-NEXT:    i32x4.shl $push0=, $0, $1
8809 ; SIMD128-FAST-NEXT:    return $pop0
8811 ; NO-SIMD128-LABEL: shl_v4i32:
8812 ; NO-SIMD128:         .functype shl_v4i32 (i32, i32, i32, i32, i32, i32) -> ()
8813 ; NO-SIMD128-NEXT:  # %bb.0:
8814 ; NO-SIMD128-NEXT:    i32.shl $push0=, $4, $5
8815 ; NO-SIMD128-NEXT:    i32.store 12($0), $pop0
8816 ; NO-SIMD128-NEXT:    i32.shl $push1=, $3, $5
8817 ; NO-SIMD128-NEXT:    i32.store 8($0), $pop1
8818 ; NO-SIMD128-NEXT:    i32.shl $push2=, $2, $5
8819 ; NO-SIMD128-NEXT:    i32.store 4($0), $pop2
8820 ; NO-SIMD128-NEXT:    i32.shl $push3=, $1, $5
8821 ; NO-SIMD128-NEXT:    i32.store 0($0), $pop3
8822 ; NO-SIMD128-NEXT:    return
8824 ; NO-SIMD128-FAST-LABEL: shl_v4i32:
8825 ; NO-SIMD128-FAST:         .functype shl_v4i32 (i32, i32, i32, i32, i32, i32) -> ()
8826 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
8827 ; NO-SIMD128-FAST-NEXT:    i32.shl $push0=, $1, $5
8828 ; NO-SIMD128-FAST-NEXT:    i32.store 0($0), $pop0
8829 ; NO-SIMD128-FAST-NEXT:    i32.shl $push1=, $2, $5
8830 ; NO-SIMD128-FAST-NEXT:    i32.store 4($0), $pop1
8831 ; NO-SIMD128-FAST-NEXT:    i32.shl $push2=, $3, $5
8832 ; NO-SIMD128-FAST-NEXT:    i32.store 8($0), $pop2
8833 ; NO-SIMD128-FAST-NEXT:    i32.shl $push3=, $4, $5
8834 ; NO-SIMD128-FAST-NEXT:    i32.store 12($0), $pop3
8835 ; NO-SIMD128-FAST-NEXT:    return
8836   %t = insertelement <4 x i32> undef, i32 %x, i32 0
8837   %s = shufflevector <4 x i32> %t, <4 x i32> undef,
8838     <4 x i32> <i32 0, i32 0, i32 0, i32 0>
8839   %a = shl <4 x i32> %v, %s
8840   ret <4 x i32> %a
8843 define <4 x i32> @shl_const_v4i32(<4 x i32> %v) {
8844 ; SIMD128-LABEL: shl_const_v4i32:
8845 ; SIMD128:         .functype shl_const_v4i32 (v128) -> (v128)
8846 ; SIMD128-NEXT:  # %bb.0:
8847 ; SIMD128-NEXT:    i32.const $push0=, 5
8848 ; SIMD128-NEXT:    i32x4.shl $push1=, $0, $pop0
8849 ; SIMD128-NEXT:    return $pop1
8851 ; SIMD128-FAST-LABEL: shl_const_v4i32:
8852 ; SIMD128-FAST:         .functype shl_const_v4i32 (v128) -> (v128)
8853 ; SIMD128-FAST-NEXT:  # %bb.0:
8854 ; SIMD128-FAST-NEXT:    i32.const $push1=, 5
8855 ; SIMD128-FAST-NEXT:    i32x4.shl $push0=, $0, $pop1
8856 ; SIMD128-FAST-NEXT:    return $pop0
8858 ; NO-SIMD128-LABEL: shl_const_v4i32:
8859 ; NO-SIMD128:         .functype shl_const_v4i32 (i32, i32, i32, i32, i32) -> ()
8860 ; NO-SIMD128-NEXT:  # %bb.0:
8861 ; NO-SIMD128-NEXT:    i32.const $push0=, 5
8862 ; NO-SIMD128-NEXT:    i32.shl $push1=, $4, $pop0
8863 ; NO-SIMD128-NEXT:    i32.store 12($0), $pop1
8864 ; NO-SIMD128-NEXT:    i32.const $push7=, 5
8865 ; NO-SIMD128-NEXT:    i32.shl $push2=, $3, $pop7
8866 ; NO-SIMD128-NEXT:    i32.store 8($0), $pop2
8867 ; NO-SIMD128-NEXT:    i32.const $push6=, 5
8868 ; NO-SIMD128-NEXT:    i32.shl $push3=, $2, $pop6
8869 ; NO-SIMD128-NEXT:    i32.store 4($0), $pop3
8870 ; NO-SIMD128-NEXT:    i32.const $push5=, 5
8871 ; NO-SIMD128-NEXT:    i32.shl $push4=, $1, $pop5
8872 ; NO-SIMD128-NEXT:    i32.store 0($0), $pop4
8873 ; NO-SIMD128-NEXT:    return
8875 ; NO-SIMD128-FAST-LABEL: shl_const_v4i32:
8876 ; NO-SIMD128-FAST:         .functype shl_const_v4i32 (i32, i32, i32, i32, i32) -> ()
8877 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
8878 ; NO-SIMD128-FAST-NEXT:    i32.const $push0=, 5
8879 ; NO-SIMD128-FAST-NEXT:    i32.shl $push1=, $1, $pop0
8880 ; NO-SIMD128-FAST-NEXT:    i32.store 0($0), $pop1
8881 ; NO-SIMD128-FAST-NEXT:    i32.const $push7=, 5
8882 ; NO-SIMD128-FAST-NEXT:    i32.shl $push2=, $2, $pop7
8883 ; NO-SIMD128-FAST-NEXT:    i32.store 4($0), $pop2
8884 ; NO-SIMD128-FAST-NEXT:    i32.const $push6=, 5
8885 ; NO-SIMD128-FAST-NEXT:    i32.shl $push3=, $3, $pop6
8886 ; NO-SIMD128-FAST-NEXT:    i32.store 8($0), $pop3
8887 ; NO-SIMD128-FAST-NEXT:    i32.const $push5=, 5
8888 ; NO-SIMD128-FAST-NEXT:    i32.shl $push4=, $4, $pop5
8889 ; NO-SIMD128-FAST-NEXT:    i32.store 12($0), $pop4
8890 ; NO-SIMD128-FAST-NEXT:    return
8891   %a = shl <4 x i32> %v, <i32 5, i32 5, i32 5, i32 5>
8892   ret <4 x i32> %a
8895 define <4 x i32> @shl_vec_v4i32(<4 x i32> %v, <4 x i32> %x) {
8896 ; SIMD128-LABEL: shl_vec_v4i32:
8897 ; SIMD128:         .functype shl_vec_v4i32 (v128, v128) -> (v128)
8898 ; SIMD128-NEXT:  # %bb.0:
8899 ; SIMD128-NEXT:    i32x4.extract_lane $push4=, $0, 0
8900 ; SIMD128-NEXT:    i32x4.extract_lane $push3=, $1, 0
8901 ; SIMD128-NEXT:    i32.shl $push5=, $pop4, $pop3
8902 ; SIMD128-NEXT:    i32x4.splat $push6=, $pop5
8903 ; SIMD128-NEXT:    i32x4.extract_lane $push1=, $0, 1
8904 ; SIMD128-NEXT:    i32x4.extract_lane $push0=, $1, 1
8905 ; SIMD128-NEXT:    i32.shl $push2=, $pop1, $pop0
8906 ; SIMD128-NEXT:    i32x4.replace_lane $push7=, $pop6, 1, $pop2
8907 ; SIMD128-NEXT:    i32x4.extract_lane $push9=, $0, 2
8908 ; SIMD128-NEXT:    i32x4.extract_lane $push8=, $1, 2
8909 ; SIMD128-NEXT:    i32.shl $push10=, $pop9, $pop8
8910 ; SIMD128-NEXT:    i32x4.replace_lane $push11=, $pop7, 2, $pop10
8911 ; SIMD128-NEXT:    i32x4.extract_lane $push13=, $0, 3
8912 ; SIMD128-NEXT:    i32x4.extract_lane $push12=, $1, 3
8913 ; SIMD128-NEXT:    i32.shl $push14=, $pop13, $pop12
8914 ; SIMD128-NEXT:    i32x4.replace_lane $push15=, $pop11, 3, $pop14
8915 ; SIMD128-NEXT:    return $pop15
8917 ; SIMD128-FAST-LABEL: shl_vec_v4i32:
8918 ; SIMD128-FAST:         .functype shl_vec_v4i32 (v128, v128) -> (v128)
8919 ; SIMD128-FAST-NEXT:  # %bb.0:
8920 ; SIMD128-FAST-NEXT:    i32x4.extract_lane $push5=, $0, 0
8921 ; SIMD128-FAST-NEXT:    i32x4.extract_lane $push4=, $1, 0
8922 ; SIMD128-FAST-NEXT:    i32.shl $push6=, $pop5, $pop4
8923 ; SIMD128-FAST-NEXT:    i32x4.splat $push7=, $pop6
8924 ; SIMD128-FAST-NEXT:    i32x4.extract_lane $push2=, $0, 1
8925 ; SIMD128-FAST-NEXT:    i32x4.extract_lane $push1=, $1, 1
8926 ; SIMD128-FAST-NEXT:    i32.shl $push3=, $pop2, $pop1
8927 ; SIMD128-FAST-NEXT:    i32x4.replace_lane $push8=, $pop7, 1, $pop3
8928 ; SIMD128-FAST-NEXT:    i32x4.extract_lane $push10=, $0, 2
8929 ; SIMD128-FAST-NEXT:    i32x4.extract_lane $push9=, $1, 2
8930 ; SIMD128-FAST-NEXT:    i32.shl $push11=, $pop10, $pop9
8931 ; SIMD128-FAST-NEXT:    i32x4.replace_lane $push12=, $pop8, 2, $pop11
8932 ; SIMD128-FAST-NEXT:    i32x4.extract_lane $push14=, $0, 3
8933 ; SIMD128-FAST-NEXT:    i32x4.extract_lane $push13=, $1, 3
8934 ; SIMD128-FAST-NEXT:    i32.shl $push15=, $pop14, $pop13
8935 ; SIMD128-FAST-NEXT:    i32x4.replace_lane $push0=, $pop12, 3, $pop15
8936 ; SIMD128-FAST-NEXT:    return $pop0
8938 ; NO-SIMD128-LABEL: shl_vec_v4i32:
8939 ; NO-SIMD128:         .functype shl_vec_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
8940 ; NO-SIMD128-NEXT:  # %bb.0:
8941 ; NO-SIMD128-NEXT:    i32.shl $push0=, $4, $8
8942 ; NO-SIMD128-NEXT:    i32.store 12($0), $pop0
8943 ; NO-SIMD128-NEXT:    i32.shl $push1=, $3, $7
8944 ; NO-SIMD128-NEXT:    i32.store 8($0), $pop1
8945 ; NO-SIMD128-NEXT:    i32.shl $push2=, $2, $6
8946 ; NO-SIMD128-NEXT:    i32.store 4($0), $pop2
8947 ; NO-SIMD128-NEXT:    i32.shl $push3=, $1, $5
8948 ; NO-SIMD128-NEXT:    i32.store 0($0), $pop3
8949 ; NO-SIMD128-NEXT:    return
8951 ; NO-SIMD128-FAST-LABEL: shl_vec_v4i32:
8952 ; NO-SIMD128-FAST:         .functype shl_vec_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
8953 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
8954 ; NO-SIMD128-FAST-NEXT:    i32.shl $push0=, $1, $5
8955 ; NO-SIMD128-FAST-NEXT:    i32.store 0($0), $pop0
8956 ; NO-SIMD128-FAST-NEXT:    i32.shl $push1=, $2, $6
8957 ; NO-SIMD128-FAST-NEXT:    i32.store 4($0), $pop1
8958 ; NO-SIMD128-FAST-NEXT:    i32.shl $push2=, $3, $7
8959 ; NO-SIMD128-FAST-NEXT:    i32.store 8($0), $pop2
8960 ; NO-SIMD128-FAST-NEXT:    i32.shl $push3=, $4, $8
8961 ; NO-SIMD128-FAST-NEXT:    i32.store 12($0), $pop3
8962 ; NO-SIMD128-FAST-NEXT:    return
8963   %a = shl <4 x i32> %v, %x
8964   ret <4 x i32> %a
8967 define <4 x i32> @shr_s_v4i32(<4 x i32> %v, i32 %x) {
8968 ; SIMD128-LABEL: shr_s_v4i32:
8969 ; SIMD128:         .functype shr_s_v4i32 (v128, i32) -> (v128)
8970 ; SIMD128-NEXT:  # %bb.0:
8971 ; SIMD128-NEXT:    i32x4.shr_s $push0=, $0, $1
8972 ; SIMD128-NEXT:    return $pop0
8974 ; SIMD128-FAST-LABEL: shr_s_v4i32:
8975 ; SIMD128-FAST:         .functype shr_s_v4i32 (v128, i32) -> (v128)
8976 ; SIMD128-FAST-NEXT:  # %bb.0:
8977 ; SIMD128-FAST-NEXT:    i32x4.shr_s $push0=, $0, $1
8978 ; SIMD128-FAST-NEXT:    return $pop0
8980 ; NO-SIMD128-LABEL: shr_s_v4i32:
8981 ; NO-SIMD128:         .functype shr_s_v4i32 (i32, i32, i32, i32, i32, i32) -> ()
8982 ; NO-SIMD128-NEXT:  # %bb.0:
8983 ; NO-SIMD128-NEXT:    i32.shr_s $push0=, $4, $5
8984 ; NO-SIMD128-NEXT:    i32.store 12($0), $pop0
8985 ; NO-SIMD128-NEXT:    i32.shr_s $push1=, $3, $5
8986 ; NO-SIMD128-NEXT:    i32.store 8($0), $pop1
8987 ; NO-SIMD128-NEXT:    i32.shr_s $push2=, $2, $5
8988 ; NO-SIMD128-NEXT:    i32.store 4($0), $pop2
8989 ; NO-SIMD128-NEXT:    i32.shr_s $push3=, $1, $5
8990 ; NO-SIMD128-NEXT:    i32.store 0($0), $pop3
8991 ; NO-SIMD128-NEXT:    return
8993 ; NO-SIMD128-FAST-LABEL: shr_s_v4i32:
8994 ; NO-SIMD128-FAST:         .functype shr_s_v4i32 (i32, i32, i32, i32, i32, i32) -> ()
8995 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
8996 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push0=, $1, $5
8997 ; NO-SIMD128-FAST-NEXT:    i32.store 0($0), $pop0
8998 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push1=, $2, $5
8999 ; NO-SIMD128-FAST-NEXT:    i32.store 4($0), $pop1
9000 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push2=, $3, $5
9001 ; NO-SIMD128-FAST-NEXT:    i32.store 8($0), $pop2
9002 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push3=, $4, $5
9003 ; NO-SIMD128-FAST-NEXT:    i32.store 12($0), $pop3
9004 ; NO-SIMD128-FAST-NEXT:    return
9005   %t = insertelement <4 x i32> undef, i32 %x, i32 0
9006   %s = shufflevector <4 x i32> %t, <4 x i32> undef,
9007     <4 x i32> <i32 0, i32 0, i32 0, i32 0>
9008   %a = ashr <4 x i32> %v, %s
9009   ret <4 x i32> %a
9012 define <4 x i32> @shr_s_vec_v4i32(<4 x i32> %v, <4 x i32> %x) {
9013 ; SIMD128-LABEL: shr_s_vec_v4i32:
9014 ; SIMD128:         .functype shr_s_vec_v4i32 (v128, v128) -> (v128)
9015 ; SIMD128-NEXT:  # %bb.0:
9016 ; SIMD128-NEXT:    i32x4.extract_lane $push4=, $0, 0
9017 ; SIMD128-NEXT:    i32x4.extract_lane $push3=, $1, 0
9018 ; SIMD128-NEXT:    i32.shr_s $push5=, $pop4, $pop3
9019 ; SIMD128-NEXT:    i32x4.splat $push6=, $pop5
9020 ; SIMD128-NEXT:    i32x4.extract_lane $push1=, $0, 1
9021 ; SIMD128-NEXT:    i32x4.extract_lane $push0=, $1, 1
9022 ; SIMD128-NEXT:    i32.shr_s $push2=, $pop1, $pop0
9023 ; SIMD128-NEXT:    i32x4.replace_lane $push7=, $pop6, 1, $pop2
9024 ; SIMD128-NEXT:    i32x4.extract_lane $push9=, $0, 2
9025 ; SIMD128-NEXT:    i32x4.extract_lane $push8=, $1, 2
9026 ; SIMD128-NEXT:    i32.shr_s $push10=, $pop9, $pop8
9027 ; SIMD128-NEXT:    i32x4.replace_lane $push11=, $pop7, 2, $pop10
9028 ; SIMD128-NEXT:    i32x4.extract_lane $push13=, $0, 3
9029 ; SIMD128-NEXT:    i32x4.extract_lane $push12=, $1, 3
9030 ; SIMD128-NEXT:    i32.shr_s $push14=, $pop13, $pop12
9031 ; SIMD128-NEXT:    i32x4.replace_lane $push15=, $pop11, 3, $pop14
9032 ; SIMD128-NEXT:    return $pop15
9034 ; SIMD128-FAST-LABEL: shr_s_vec_v4i32:
9035 ; SIMD128-FAST:         .functype shr_s_vec_v4i32 (v128, v128) -> (v128)
9036 ; SIMD128-FAST-NEXT:  # %bb.0:
9037 ; SIMD128-FAST-NEXT:    i32x4.extract_lane $push5=, $0, 0
9038 ; SIMD128-FAST-NEXT:    i32x4.extract_lane $push4=, $1, 0
9039 ; SIMD128-FAST-NEXT:    i32.shr_s $push6=, $pop5, $pop4
9040 ; SIMD128-FAST-NEXT:    i32x4.splat $push7=, $pop6
9041 ; SIMD128-FAST-NEXT:    i32x4.extract_lane $push2=, $0, 1
9042 ; SIMD128-FAST-NEXT:    i32x4.extract_lane $push1=, $1, 1
9043 ; SIMD128-FAST-NEXT:    i32.shr_s $push3=, $pop2, $pop1
9044 ; SIMD128-FAST-NEXT:    i32x4.replace_lane $push8=, $pop7, 1, $pop3
9045 ; SIMD128-FAST-NEXT:    i32x4.extract_lane $push10=, $0, 2
9046 ; SIMD128-FAST-NEXT:    i32x4.extract_lane $push9=, $1, 2
9047 ; SIMD128-FAST-NEXT:    i32.shr_s $push11=, $pop10, $pop9
9048 ; SIMD128-FAST-NEXT:    i32x4.replace_lane $push12=, $pop8, 2, $pop11
9049 ; SIMD128-FAST-NEXT:    i32x4.extract_lane $push14=, $0, 3
9050 ; SIMD128-FAST-NEXT:    i32x4.extract_lane $push13=, $1, 3
9051 ; SIMD128-FAST-NEXT:    i32.shr_s $push15=, $pop14, $pop13
9052 ; SIMD128-FAST-NEXT:    i32x4.replace_lane $push0=, $pop12, 3, $pop15
9053 ; SIMD128-FAST-NEXT:    return $pop0
9055 ; NO-SIMD128-LABEL: shr_s_vec_v4i32:
9056 ; NO-SIMD128:         .functype shr_s_vec_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9057 ; NO-SIMD128-NEXT:  # %bb.0:
9058 ; NO-SIMD128-NEXT:    i32.shr_s $push0=, $4, $8
9059 ; NO-SIMD128-NEXT:    i32.store 12($0), $pop0
9060 ; NO-SIMD128-NEXT:    i32.shr_s $push1=, $3, $7
9061 ; NO-SIMD128-NEXT:    i32.store 8($0), $pop1
9062 ; NO-SIMD128-NEXT:    i32.shr_s $push2=, $2, $6
9063 ; NO-SIMD128-NEXT:    i32.store 4($0), $pop2
9064 ; NO-SIMD128-NEXT:    i32.shr_s $push3=, $1, $5
9065 ; NO-SIMD128-NEXT:    i32.store 0($0), $pop3
9066 ; NO-SIMD128-NEXT:    return
9068 ; NO-SIMD128-FAST-LABEL: shr_s_vec_v4i32:
9069 ; NO-SIMD128-FAST:         .functype shr_s_vec_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9070 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
9071 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push0=, $1, $5
9072 ; NO-SIMD128-FAST-NEXT:    i32.store 0($0), $pop0
9073 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push1=, $2, $6
9074 ; NO-SIMD128-FAST-NEXT:    i32.store 4($0), $pop1
9075 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push2=, $3, $7
9076 ; NO-SIMD128-FAST-NEXT:    i32.store 8($0), $pop2
9077 ; NO-SIMD128-FAST-NEXT:    i32.shr_s $push3=, $4, $8
9078 ; NO-SIMD128-FAST-NEXT:    i32.store 12($0), $pop3
9079 ; NO-SIMD128-FAST-NEXT:    return
9080   %a = ashr <4 x i32> %v, %x
9081   ret <4 x i32> %a
9084 define <4 x i32> @shr_u_v4i32(<4 x i32> %v, i32 %x) {
9085 ; SIMD128-LABEL: shr_u_v4i32:
9086 ; SIMD128:         .functype shr_u_v4i32 (v128, i32) -> (v128)
9087 ; SIMD128-NEXT:  # %bb.0:
9088 ; SIMD128-NEXT:    i32x4.shr_u $push0=, $0, $1
9089 ; SIMD128-NEXT:    return $pop0
9091 ; SIMD128-FAST-LABEL: shr_u_v4i32:
9092 ; SIMD128-FAST:         .functype shr_u_v4i32 (v128, i32) -> (v128)
9093 ; SIMD128-FAST-NEXT:  # %bb.0:
9094 ; SIMD128-FAST-NEXT:    i32x4.shr_u $push0=, $0, $1
9095 ; SIMD128-FAST-NEXT:    return $pop0
9097 ; NO-SIMD128-LABEL: shr_u_v4i32:
9098 ; NO-SIMD128:         .functype shr_u_v4i32 (i32, i32, i32, i32, i32, i32) -> ()
9099 ; NO-SIMD128-NEXT:  # %bb.0:
9100 ; NO-SIMD128-NEXT:    i32.shr_u $push0=, $4, $5
9101 ; NO-SIMD128-NEXT:    i32.store 12($0), $pop0
9102 ; NO-SIMD128-NEXT:    i32.shr_u $push1=, $3, $5
9103 ; NO-SIMD128-NEXT:    i32.store 8($0), $pop1
9104 ; NO-SIMD128-NEXT:    i32.shr_u $push2=, $2, $5
9105 ; NO-SIMD128-NEXT:    i32.store 4($0), $pop2
9106 ; NO-SIMD128-NEXT:    i32.shr_u $push3=, $1, $5
9107 ; NO-SIMD128-NEXT:    i32.store 0($0), $pop3
9108 ; NO-SIMD128-NEXT:    return
9110 ; NO-SIMD128-FAST-LABEL: shr_u_v4i32:
9111 ; NO-SIMD128-FAST:         .functype shr_u_v4i32 (i32, i32, i32, i32, i32, i32) -> ()
9112 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
9113 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push0=, $1, $5
9114 ; NO-SIMD128-FAST-NEXT:    i32.store 0($0), $pop0
9115 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push1=, $2, $5
9116 ; NO-SIMD128-FAST-NEXT:    i32.store 4($0), $pop1
9117 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push2=, $3, $5
9118 ; NO-SIMD128-FAST-NEXT:    i32.store 8($0), $pop2
9119 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push3=, $4, $5
9120 ; NO-SIMD128-FAST-NEXT:    i32.store 12($0), $pop3
9121 ; NO-SIMD128-FAST-NEXT:    return
9122   %t = insertelement <4 x i32> undef, i32 %x, i32 0
9123   %s = shufflevector <4 x i32> %t, <4 x i32> undef,
9124     <4 x i32> <i32 0, i32 0, i32 0, i32 0>
9125   %a = lshr <4 x i32> %v, %s
9126   ret <4 x i32> %a
9129 define <4 x i32> @shr_u_vec_v4i32(<4 x i32> %v, <4 x i32> %x) {
9130 ; SIMD128-LABEL: shr_u_vec_v4i32:
9131 ; SIMD128:         .functype shr_u_vec_v4i32 (v128, v128) -> (v128)
9132 ; SIMD128-NEXT:  # %bb.0:
9133 ; SIMD128-NEXT:    i32x4.extract_lane $push4=, $0, 0
9134 ; SIMD128-NEXT:    i32x4.extract_lane $push3=, $1, 0
9135 ; SIMD128-NEXT:    i32.shr_u $push5=, $pop4, $pop3
9136 ; SIMD128-NEXT:    i32x4.splat $push6=, $pop5
9137 ; SIMD128-NEXT:    i32x4.extract_lane $push1=, $0, 1
9138 ; SIMD128-NEXT:    i32x4.extract_lane $push0=, $1, 1
9139 ; SIMD128-NEXT:    i32.shr_u $push2=, $pop1, $pop0
9140 ; SIMD128-NEXT:    i32x4.replace_lane $push7=, $pop6, 1, $pop2
9141 ; SIMD128-NEXT:    i32x4.extract_lane $push9=, $0, 2
9142 ; SIMD128-NEXT:    i32x4.extract_lane $push8=, $1, 2
9143 ; SIMD128-NEXT:    i32.shr_u $push10=, $pop9, $pop8
9144 ; SIMD128-NEXT:    i32x4.replace_lane $push11=, $pop7, 2, $pop10
9145 ; SIMD128-NEXT:    i32x4.extract_lane $push13=, $0, 3
9146 ; SIMD128-NEXT:    i32x4.extract_lane $push12=, $1, 3
9147 ; SIMD128-NEXT:    i32.shr_u $push14=, $pop13, $pop12
9148 ; SIMD128-NEXT:    i32x4.replace_lane $push15=, $pop11, 3, $pop14
9149 ; SIMD128-NEXT:    return $pop15
9151 ; SIMD128-FAST-LABEL: shr_u_vec_v4i32:
9152 ; SIMD128-FAST:         .functype shr_u_vec_v4i32 (v128, v128) -> (v128)
9153 ; SIMD128-FAST-NEXT:  # %bb.0:
9154 ; SIMD128-FAST-NEXT:    i32x4.extract_lane $push5=, $0, 0
9155 ; SIMD128-FAST-NEXT:    i32x4.extract_lane $push4=, $1, 0
9156 ; SIMD128-FAST-NEXT:    i32.shr_u $push6=, $pop5, $pop4
9157 ; SIMD128-FAST-NEXT:    i32x4.splat $push7=, $pop6
9158 ; SIMD128-FAST-NEXT:    i32x4.extract_lane $push2=, $0, 1
9159 ; SIMD128-FAST-NEXT:    i32x4.extract_lane $push1=, $1, 1
9160 ; SIMD128-FAST-NEXT:    i32.shr_u $push3=, $pop2, $pop1
9161 ; SIMD128-FAST-NEXT:    i32x4.replace_lane $push8=, $pop7, 1, $pop3
9162 ; SIMD128-FAST-NEXT:    i32x4.extract_lane $push10=, $0, 2
9163 ; SIMD128-FAST-NEXT:    i32x4.extract_lane $push9=, $1, 2
9164 ; SIMD128-FAST-NEXT:    i32.shr_u $push11=, $pop10, $pop9
9165 ; SIMD128-FAST-NEXT:    i32x4.replace_lane $push12=, $pop8, 2, $pop11
9166 ; SIMD128-FAST-NEXT:    i32x4.extract_lane $push14=, $0, 3
9167 ; SIMD128-FAST-NEXT:    i32x4.extract_lane $push13=, $1, 3
9168 ; SIMD128-FAST-NEXT:    i32.shr_u $push15=, $pop14, $pop13
9169 ; SIMD128-FAST-NEXT:    i32x4.replace_lane $push0=, $pop12, 3, $pop15
9170 ; SIMD128-FAST-NEXT:    return $pop0
9172 ; NO-SIMD128-LABEL: shr_u_vec_v4i32:
9173 ; NO-SIMD128:         .functype shr_u_vec_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9174 ; NO-SIMD128-NEXT:  # %bb.0:
9175 ; NO-SIMD128-NEXT:    i32.shr_u $push0=, $4, $8
9176 ; NO-SIMD128-NEXT:    i32.store 12($0), $pop0
9177 ; NO-SIMD128-NEXT:    i32.shr_u $push1=, $3, $7
9178 ; NO-SIMD128-NEXT:    i32.store 8($0), $pop1
9179 ; NO-SIMD128-NEXT:    i32.shr_u $push2=, $2, $6
9180 ; NO-SIMD128-NEXT:    i32.store 4($0), $pop2
9181 ; NO-SIMD128-NEXT:    i32.shr_u $push3=, $1, $5
9182 ; NO-SIMD128-NEXT:    i32.store 0($0), $pop3
9183 ; NO-SIMD128-NEXT:    return
9185 ; NO-SIMD128-FAST-LABEL: shr_u_vec_v4i32:
9186 ; NO-SIMD128-FAST:         .functype shr_u_vec_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9187 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
9188 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push0=, $1, $5
9189 ; NO-SIMD128-FAST-NEXT:    i32.store 0($0), $pop0
9190 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push1=, $2, $6
9191 ; NO-SIMD128-FAST-NEXT:    i32.store 4($0), $pop1
9192 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push2=, $3, $7
9193 ; NO-SIMD128-FAST-NEXT:    i32.store 8($0), $pop2
9194 ; NO-SIMD128-FAST-NEXT:    i32.shr_u $push3=, $4, $8
9195 ; NO-SIMD128-FAST-NEXT:    i32.store 12($0), $pop3
9196 ; NO-SIMD128-FAST-NEXT:    return
9197   %a = lshr <4 x i32> %v, %x
9198   ret <4 x i32> %a
9201 define <4 x i32> @and_v4i32(<4 x i32> %x, <4 x i32> %y) {
9202 ; SIMD128-LABEL: and_v4i32:
9203 ; SIMD128:         .functype and_v4i32 (v128, v128) -> (v128)
9204 ; SIMD128-NEXT:  # %bb.0:
9205 ; SIMD128-NEXT:    v128.and $push0=, $0, $1
9206 ; SIMD128-NEXT:    return $pop0
9208 ; SIMD128-FAST-LABEL: and_v4i32:
9209 ; SIMD128-FAST:         .functype and_v4i32 (v128, v128) -> (v128)
9210 ; SIMD128-FAST-NEXT:  # %bb.0:
9211 ; SIMD128-FAST-NEXT:    v128.and $push0=, $0, $1
9212 ; SIMD128-FAST-NEXT:    return $pop0
9214 ; NO-SIMD128-LABEL: and_v4i32:
9215 ; NO-SIMD128:         .functype and_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9216 ; NO-SIMD128-NEXT:  # %bb.0:
9217 ; NO-SIMD128-NEXT:    i32.and $push0=, $4, $8
9218 ; NO-SIMD128-NEXT:    i32.store 12($0), $pop0
9219 ; NO-SIMD128-NEXT:    i32.and $push1=, $3, $7
9220 ; NO-SIMD128-NEXT:    i32.store 8($0), $pop1
9221 ; NO-SIMD128-NEXT:    i32.and $push2=, $2, $6
9222 ; NO-SIMD128-NEXT:    i32.store 4($0), $pop2
9223 ; NO-SIMD128-NEXT:    i32.and $push3=, $1, $5
9224 ; NO-SIMD128-NEXT:    i32.store 0($0), $pop3
9225 ; NO-SIMD128-NEXT:    return
9227 ; NO-SIMD128-FAST-LABEL: and_v4i32:
9228 ; NO-SIMD128-FAST:         .functype and_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9229 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
9230 ; NO-SIMD128-FAST-NEXT:    i32.and $push0=, $1, $5
9231 ; NO-SIMD128-FAST-NEXT:    i32.store 0($0), $pop0
9232 ; NO-SIMD128-FAST-NEXT:    i32.and $push1=, $2, $6
9233 ; NO-SIMD128-FAST-NEXT:    i32.store 4($0), $pop1
9234 ; NO-SIMD128-FAST-NEXT:    i32.and $push2=, $3, $7
9235 ; NO-SIMD128-FAST-NEXT:    i32.store 8($0), $pop2
9236 ; NO-SIMD128-FAST-NEXT:    i32.and $push3=, $4, $8
9237 ; NO-SIMD128-FAST-NEXT:    i32.store 12($0), $pop3
9238 ; NO-SIMD128-FAST-NEXT:    return
9239   %a = and <4 x i32> %x, %y
9240   ret <4 x i32> %a
9243 define <4 x i32> @or_v4i32(<4 x i32> %x, <4 x i32> %y) {
9244 ; SIMD128-LABEL: or_v4i32:
9245 ; SIMD128:         .functype or_v4i32 (v128, v128) -> (v128)
9246 ; SIMD128-NEXT:  # %bb.0:
9247 ; SIMD128-NEXT:    v128.or $push0=, $0, $1
9248 ; SIMD128-NEXT:    return $pop0
9250 ; SIMD128-FAST-LABEL: or_v4i32:
9251 ; SIMD128-FAST:         .functype or_v4i32 (v128, v128) -> (v128)
9252 ; SIMD128-FAST-NEXT:  # %bb.0:
9253 ; SIMD128-FAST-NEXT:    v128.or $push0=, $0, $1
9254 ; SIMD128-FAST-NEXT:    return $pop0
9256 ; NO-SIMD128-LABEL: or_v4i32:
9257 ; NO-SIMD128:         .functype or_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9258 ; NO-SIMD128-NEXT:  # %bb.0:
9259 ; NO-SIMD128-NEXT:    i32.or $push0=, $4, $8
9260 ; NO-SIMD128-NEXT:    i32.store 12($0), $pop0
9261 ; NO-SIMD128-NEXT:    i32.or $push1=, $3, $7
9262 ; NO-SIMD128-NEXT:    i32.store 8($0), $pop1
9263 ; NO-SIMD128-NEXT:    i32.or $push2=, $2, $6
9264 ; NO-SIMD128-NEXT:    i32.store 4($0), $pop2
9265 ; NO-SIMD128-NEXT:    i32.or $push3=, $1, $5
9266 ; NO-SIMD128-NEXT:    i32.store 0($0), $pop3
9267 ; NO-SIMD128-NEXT:    return
9269 ; NO-SIMD128-FAST-LABEL: or_v4i32:
9270 ; NO-SIMD128-FAST:         .functype or_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9271 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
9272 ; NO-SIMD128-FAST-NEXT:    i32.or $push0=, $1, $5
9273 ; NO-SIMD128-FAST-NEXT:    i32.store 0($0), $pop0
9274 ; NO-SIMD128-FAST-NEXT:    i32.or $push1=, $2, $6
9275 ; NO-SIMD128-FAST-NEXT:    i32.store 4($0), $pop1
9276 ; NO-SIMD128-FAST-NEXT:    i32.or $push2=, $3, $7
9277 ; NO-SIMD128-FAST-NEXT:    i32.store 8($0), $pop2
9278 ; NO-SIMD128-FAST-NEXT:    i32.or $push3=, $4, $8
9279 ; NO-SIMD128-FAST-NEXT:    i32.store 12($0), $pop3
9280 ; NO-SIMD128-FAST-NEXT:    return
9281   %a = or <4 x i32> %x, %y
9282   ret <4 x i32> %a
9285 define <4 x i32> @xor_v4i32(<4 x i32> %x, <4 x i32> %y) {
9286 ; SIMD128-LABEL: xor_v4i32:
9287 ; SIMD128:         .functype xor_v4i32 (v128, v128) -> (v128)
9288 ; SIMD128-NEXT:  # %bb.0:
9289 ; SIMD128-NEXT:    v128.xor $push0=, $0, $1
9290 ; SIMD128-NEXT:    return $pop0
9292 ; SIMD128-FAST-LABEL: xor_v4i32:
9293 ; SIMD128-FAST:         .functype xor_v4i32 (v128, v128) -> (v128)
9294 ; SIMD128-FAST-NEXT:  # %bb.0:
9295 ; SIMD128-FAST-NEXT:    v128.xor $push0=, $0, $1
9296 ; SIMD128-FAST-NEXT:    return $pop0
9298 ; NO-SIMD128-LABEL: xor_v4i32:
9299 ; NO-SIMD128:         .functype xor_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9300 ; NO-SIMD128-NEXT:  # %bb.0:
9301 ; NO-SIMD128-NEXT:    i32.xor $push0=, $4, $8
9302 ; NO-SIMD128-NEXT:    i32.store 12($0), $pop0
9303 ; NO-SIMD128-NEXT:    i32.xor $push1=, $3, $7
9304 ; NO-SIMD128-NEXT:    i32.store 8($0), $pop1
9305 ; NO-SIMD128-NEXT:    i32.xor $push2=, $2, $6
9306 ; NO-SIMD128-NEXT:    i32.store 4($0), $pop2
9307 ; NO-SIMD128-NEXT:    i32.xor $push3=, $1, $5
9308 ; NO-SIMD128-NEXT:    i32.store 0($0), $pop3
9309 ; NO-SIMD128-NEXT:    return
9311 ; NO-SIMD128-FAST-LABEL: xor_v4i32:
9312 ; NO-SIMD128-FAST:         .functype xor_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9313 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
9314 ; NO-SIMD128-FAST-NEXT:    i32.xor $push0=, $1, $5
9315 ; NO-SIMD128-FAST-NEXT:    i32.store 0($0), $pop0
9316 ; NO-SIMD128-FAST-NEXT:    i32.xor $push1=, $2, $6
9317 ; NO-SIMD128-FAST-NEXT:    i32.store 4($0), $pop1
9318 ; NO-SIMD128-FAST-NEXT:    i32.xor $push2=, $3, $7
9319 ; NO-SIMD128-FAST-NEXT:    i32.store 8($0), $pop2
9320 ; NO-SIMD128-FAST-NEXT:    i32.xor $push3=, $4, $8
9321 ; NO-SIMD128-FAST-NEXT:    i32.store 12($0), $pop3
9322 ; NO-SIMD128-FAST-NEXT:    return
9323   %a = xor <4 x i32> %x, %y
9324   ret <4 x i32> %a
9327 define <4 x i32> @not_v4i32(<4 x i32> %x) {
9328 ; SIMD128-LABEL: not_v4i32:
9329 ; SIMD128:         .functype not_v4i32 (v128) -> (v128)
9330 ; SIMD128-NEXT:  # %bb.0:
9331 ; SIMD128-NEXT:    v128.not $push0=, $0
9332 ; SIMD128-NEXT:    return $pop0
9334 ; SIMD128-FAST-LABEL: not_v4i32:
9335 ; SIMD128-FAST:         .functype not_v4i32 (v128) -> (v128)
9336 ; SIMD128-FAST-NEXT:  # %bb.0:
9337 ; SIMD128-FAST-NEXT:    v128.not $push0=, $0
9338 ; SIMD128-FAST-NEXT:    return $pop0
9340 ; NO-SIMD128-LABEL: not_v4i32:
9341 ; NO-SIMD128:         .functype not_v4i32 (i32, i32, i32, i32, i32) -> ()
9342 ; NO-SIMD128-NEXT:  # %bb.0:
9343 ; NO-SIMD128-NEXT:    i32.const $push0=, -1
9344 ; NO-SIMD128-NEXT:    i32.xor $push1=, $4, $pop0
9345 ; NO-SIMD128-NEXT:    i32.store 12($0), $pop1
9346 ; NO-SIMD128-NEXT:    i32.const $push7=, -1
9347 ; NO-SIMD128-NEXT:    i32.xor $push2=, $3, $pop7
9348 ; NO-SIMD128-NEXT:    i32.store 8($0), $pop2
9349 ; NO-SIMD128-NEXT:    i32.const $push6=, -1
9350 ; NO-SIMD128-NEXT:    i32.xor $push3=, $2, $pop6
9351 ; NO-SIMD128-NEXT:    i32.store 4($0), $pop3
9352 ; NO-SIMD128-NEXT:    i32.const $push5=, -1
9353 ; NO-SIMD128-NEXT:    i32.xor $push4=, $1, $pop5
9354 ; NO-SIMD128-NEXT:    i32.store 0($0), $pop4
9355 ; NO-SIMD128-NEXT:    return
9357 ; NO-SIMD128-FAST-LABEL: not_v4i32:
9358 ; NO-SIMD128-FAST:         .functype not_v4i32 (i32, i32, i32, i32, i32) -> ()
9359 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
9360 ; NO-SIMD128-FAST-NEXT:    i32.const $push0=, -1
9361 ; NO-SIMD128-FAST-NEXT:    i32.xor $push1=, $1, $pop0
9362 ; NO-SIMD128-FAST-NEXT:    i32.store 0($0), $pop1
9363 ; NO-SIMD128-FAST-NEXT:    i32.const $push7=, -1
9364 ; NO-SIMD128-FAST-NEXT:    i32.xor $push2=, $2, $pop7
9365 ; NO-SIMD128-FAST-NEXT:    i32.store 4($0), $pop2
9366 ; NO-SIMD128-FAST-NEXT:    i32.const $push6=, -1
9367 ; NO-SIMD128-FAST-NEXT:    i32.xor $push3=, $3, $pop6
9368 ; NO-SIMD128-FAST-NEXT:    i32.store 8($0), $pop3
9369 ; NO-SIMD128-FAST-NEXT:    i32.const $push5=, -1
9370 ; NO-SIMD128-FAST-NEXT:    i32.xor $push4=, $4, $pop5
9371 ; NO-SIMD128-FAST-NEXT:    i32.store 12($0), $pop4
9372 ; NO-SIMD128-FAST-NEXT:    return
9373   %a = xor <4 x i32> %x, <i32 -1, i32 -1, i32 -1, i32 -1>
9374   ret <4 x i32> %a
9377 define <4 x i32> @andnot_v4i32(<4 x i32> %x, <4 x i32> %y) {
9378 ; SIMD128-LABEL: andnot_v4i32:
9379 ; SIMD128:         .functype andnot_v4i32 (v128, v128) -> (v128)
9380 ; SIMD128-NEXT:  # %bb.0:
9381 ; SIMD128-NEXT:    v128.andnot $push0=, $0, $1
9382 ; SIMD128-NEXT:    return $pop0
9384 ; SIMD128-FAST-LABEL: andnot_v4i32:
9385 ; SIMD128-FAST:         .functype andnot_v4i32 (v128, v128) -> (v128)
9386 ; SIMD128-FAST-NEXT:  # %bb.0:
9387 ; SIMD128-FAST-NEXT:    v128.not $push0=, $1
9388 ; SIMD128-FAST-NEXT:    v128.and $push1=, $0, $pop0
9389 ; SIMD128-FAST-NEXT:    return $pop1
9391 ; NO-SIMD128-LABEL: andnot_v4i32:
9392 ; NO-SIMD128:         .functype andnot_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9393 ; NO-SIMD128-NEXT:  # %bb.0:
9394 ; NO-SIMD128-NEXT:    i32.const $push0=, -1
9395 ; NO-SIMD128-NEXT:    i32.xor $push1=, $8, $pop0
9396 ; NO-SIMD128-NEXT:    i32.and $push2=, $4, $pop1
9397 ; NO-SIMD128-NEXT:    i32.store 12($0), $pop2
9398 ; NO-SIMD128-NEXT:    i32.const $push11=, -1
9399 ; NO-SIMD128-NEXT:    i32.xor $push3=, $7, $pop11
9400 ; NO-SIMD128-NEXT:    i32.and $push4=, $3, $pop3
9401 ; NO-SIMD128-NEXT:    i32.store 8($0), $pop4
9402 ; NO-SIMD128-NEXT:    i32.const $push10=, -1
9403 ; NO-SIMD128-NEXT:    i32.xor $push5=, $6, $pop10
9404 ; NO-SIMD128-NEXT:    i32.and $push6=, $2, $pop5
9405 ; NO-SIMD128-NEXT:    i32.store 4($0), $pop6
9406 ; NO-SIMD128-NEXT:    i32.const $push9=, -1
9407 ; NO-SIMD128-NEXT:    i32.xor $push7=, $5, $pop9
9408 ; NO-SIMD128-NEXT:    i32.and $push8=, $1, $pop7
9409 ; NO-SIMD128-NEXT:    i32.store 0($0), $pop8
9410 ; NO-SIMD128-NEXT:    return
9412 ; NO-SIMD128-FAST-LABEL: andnot_v4i32:
9413 ; NO-SIMD128-FAST:         .functype andnot_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9414 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
9415 ; NO-SIMD128-FAST-NEXT:    i32.const $push0=, -1
9416 ; NO-SIMD128-FAST-NEXT:    i32.xor $push1=, $5, $pop0
9417 ; NO-SIMD128-FAST-NEXT:    i32.and $push2=, $1, $pop1
9418 ; NO-SIMD128-FAST-NEXT:    i32.store 0($0), $pop2
9419 ; NO-SIMD128-FAST-NEXT:    i32.const $push11=, -1
9420 ; NO-SIMD128-FAST-NEXT:    i32.xor $push3=, $6, $pop11
9421 ; NO-SIMD128-FAST-NEXT:    i32.and $push4=, $2, $pop3
9422 ; NO-SIMD128-FAST-NEXT:    i32.store 4($0), $pop4
9423 ; NO-SIMD128-FAST-NEXT:    i32.const $push10=, -1
9424 ; NO-SIMD128-FAST-NEXT:    i32.xor $push5=, $7, $pop10
9425 ; NO-SIMD128-FAST-NEXT:    i32.and $push6=, $3, $pop5
9426 ; NO-SIMD128-FAST-NEXT:    i32.store 8($0), $pop6
9427 ; NO-SIMD128-FAST-NEXT:    i32.const $push9=, -1
9428 ; NO-SIMD128-FAST-NEXT:    i32.xor $push7=, $8, $pop9
9429 ; NO-SIMD128-FAST-NEXT:    i32.and $push8=, $4, $pop7
9430 ; NO-SIMD128-FAST-NEXT:    i32.store 12($0), $pop8
9431 ; NO-SIMD128-FAST-NEXT:    return
9432  %inv_y = xor <4 x i32> %y, <i32 -1, i32 -1, i32 -1, i32 -1>
9433  %a = and <4 x i32> %x, %inv_y
9434  ret <4 x i32> %a
9437 define <4 x i32> @bitselect_v4i32(<4 x i32> %c, <4 x i32> %v1, <4 x i32> %v2) {
9438 ; SIMD128-LABEL: bitselect_v4i32:
9439 ; SIMD128:         .functype bitselect_v4i32 (v128, v128, v128) -> (v128)
9440 ; SIMD128-NEXT:  # %bb.0:
9441 ; SIMD128-NEXT:    v128.bitselect $push0=, $1, $2, $0
9442 ; SIMD128-NEXT:    return $pop0
9444 ; SIMD128-FAST-LABEL: bitselect_v4i32:
9445 ; SIMD128-FAST:         .functype bitselect_v4i32 (v128, v128, v128) -> (v128)
9446 ; SIMD128-FAST-NEXT:  # %bb.0:
9447 ; SIMD128-FAST-NEXT:    v128.not $push2=, $0
9448 ; SIMD128-FAST-NEXT:    v128.and $push3=, $pop2, $2
9449 ; SIMD128-FAST-NEXT:    v128.and $push0=, $0, $1
9450 ; SIMD128-FAST-NEXT:    v128.or $push1=, $pop3, $pop0
9451 ; SIMD128-FAST-NEXT:    return $pop1
9453 ; NO-SIMD128-LABEL: bitselect_v4i32:
9454 ; NO-SIMD128:         .functype bitselect_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9455 ; NO-SIMD128-NEXT:  # %bb.0:
9456 ; NO-SIMD128-NEXT:    i32.const $push1=, -1
9457 ; NO-SIMD128-NEXT:    i32.xor $push2=, $4, $pop1
9458 ; NO-SIMD128-NEXT:    i32.and $push3=, $pop2, $12
9459 ; NO-SIMD128-NEXT:    i32.and $push0=, $4, $8
9460 ; NO-SIMD128-NEXT:    i32.or $push4=, $pop3, $pop0
9461 ; NO-SIMD128-NEXT:    i32.store 12($0), $pop4
9462 ; NO-SIMD128-NEXT:    i32.const $push19=, -1
9463 ; NO-SIMD128-NEXT:    i32.xor $push6=, $3, $pop19
9464 ; NO-SIMD128-NEXT:    i32.and $push7=, $pop6, $11
9465 ; NO-SIMD128-NEXT:    i32.and $push5=, $3, $7
9466 ; NO-SIMD128-NEXT:    i32.or $push8=, $pop7, $pop5
9467 ; NO-SIMD128-NEXT:    i32.store 8($0), $pop8
9468 ; NO-SIMD128-NEXT:    i32.const $push18=, -1
9469 ; NO-SIMD128-NEXT:    i32.xor $push10=, $2, $pop18
9470 ; NO-SIMD128-NEXT:    i32.and $push11=, $pop10, $10
9471 ; NO-SIMD128-NEXT:    i32.and $push9=, $2, $6
9472 ; NO-SIMD128-NEXT:    i32.or $push12=, $pop11, $pop9
9473 ; NO-SIMD128-NEXT:    i32.store 4($0), $pop12
9474 ; NO-SIMD128-NEXT:    i32.const $push17=, -1
9475 ; NO-SIMD128-NEXT:    i32.xor $push14=, $1, $pop17
9476 ; NO-SIMD128-NEXT:    i32.and $push15=, $pop14, $9
9477 ; NO-SIMD128-NEXT:    i32.and $push13=, $1, $5
9478 ; NO-SIMD128-NEXT:    i32.or $push16=, $pop15, $pop13
9479 ; NO-SIMD128-NEXT:    i32.store 0($0), $pop16
9480 ; NO-SIMD128-NEXT:    return
9482 ; NO-SIMD128-FAST-LABEL: bitselect_v4i32:
9483 ; NO-SIMD128-FAST:         .functype bitselect_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9484 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
9485 ; NO-SIMD128-FAST-NEXT:    i32.const $push1=, -1
9486 ; NO-SIMD128-FAST-NEXT:    i32.xor $push2=, $1, $pop1
9487 ; NO-SIMD128-FAST-NEXT:    i32.and $push3=, $pop2, $9
9488 ; NO-SIMD128-FAST-NEXT:    i32.and $push0=, $1, $5
9489 ; NO-SIMD128-FAST-NEXT:    i32.or $push4=, $pop3, $pop0
9490 ; NO-SIMD128-FAST-NEXT:    i32.store 0($0), $pop4
9491 ; NO-SIMD128-FAST-NEXT:    i32.const $push19=, -1
9492 ; NO-SIMD128-FAST-NEXT:    i32.xor $push6=, $2, $pop19
9493 ; NO-SIMD128-FAST-NEXT:    i32.and $push7=, $pop6, $10
9494 ; NO-SIMD128-FAST-NEXT:    i32.and $push5=, $2, $6
9495 ; NO-SIMD128-FAST-NEXT:    i32.or $push8=, $pop7, $pop5
9496 ; NO-SIMD128-FAST-NEXT:    i32.store 4($0), $pop8
9497 ; NO-SIMD128-FAST-NEXT:    i32.const $push18=, -1
9498 ; NO-SIMD128-FAST-NEXT:    i32.xor $push10=, $3, $pop18
9499 ; NO-SIMD128-FAST-NEXT:    i32.and $push11=, $pop10, $11
9500 ; NO-SIMD128-FAST-NEXT:    i32.and $push9=, $3, $7
9501 ; NO-SIMD128-FAST-NEXT:    i32.or $push12=, $pop11, $pop9
9502 ; NO-SIMD128-FAST-NEXT:    i32.store 8($0), $pop12
9503 ; NO-SIMD128-FAST-NEXT:    i32.const $push17=, -1
9504 ; NO-SIMD128-FAST-NEXT:    i32.xor $push14=, $4, $pop17
9505 ; NO-SIMD128-FAST-NEXT:    i32.and $push15=, $pop14, $12
9506 ; NO-SIMD128-FAST-NEXT:    i32.and $push13=, $4, $8
9507 ; NO-SIMD128-FAST-NEXT:    i32.or $push16=, $pop15, $pop13
9508 ; NO-SIMD128-FAST-NEXT:    i32.store 12($0), $pop16
9509 ; NO-SIMD128-FAST-NEXT:    return
9510   %masked_v1 = and <4 x i32> %c, %v1
9511   %inv_mask = xor <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>, %c
9512   %masked_v2 = and <4 x i32> %inv_mask, %v2
9513   %a = or <4 x i32> %masked_v2, %masked_v1
9514   ret <4 x i32> %a
9517 define <4 x i32> @bitselect_xor_v4i32(<4 x i32> %c, <4 x i32> %v1, <4 x i32> %v2) {
9518 ; SIMD128-LABEL: bitselect_xor_v4i32:
9519 ; SIMD128:         .functype bitselect_xor_v4i32 (v128, v128, v128) -> (v128)
9520 ; SIMD128-NEXT:  # %bb.0:
9521 ; SIMD128-NEXT:    v128.bitselect $push0=, $1, $2, $0
9522 ; SIMD128-NEXT:    return $pop0
9524 ; SIMD128-FAST-LABEL: bitselect_xor_v4i32:
9525 ; SIMD128-FAST:         .functype bitselect_xor_v4i32 (v128, v128, v128) -> (v128)
9526 ; SIMD128-FAST-NEXT:  # %bb.0:
9527 ; SIMD128-FAST-NEXT:    v128.xor $push2=, $1, $2
9528 ; SIMD128-FAST-NEXT:    v128.and $push1=, $pop2, $0
9529 ; SIMD128-FAST-NEXT:    v128.xor $push0=, $pop1, $2
9530 ; SIMD128-FAST-NEXT:    return $pop0
9532 ; NO-SIMD128-LABEL: bitselect_xor_v4i32:
9533 ; NO-SIMD128:         .functype bitselect_xor_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9534 ; NO-SIMD128-NEXT:  # %bb.0:
9535 ; NO-SIMD128-NEXT:    i32.xor $push0=, $8, $12
9536 ; NO-SIMD128-NEXT:    i32.and $push1=, $pop0, $4
9537 ; NO-SIMD128-NEXT:    i32.xor $push2=, $pop1, $12
9538 ; NO-SIMD128-NEXT:    i32.store 12($0), $pop2
9539 ; NO-SIMD128-NEXT:    i32.xor $push3=, $7, $11
9540 ; NO-SIMD128-NEXT:    i32.and $push4=, $pop3, $3
9541 ; NO-SIMD128-NEXT:    i32.xor $push5=, $pop4, $11
9542 ; NO-SIMD128-NEXT:    i32.store 8($0), $pop5
9543 ; NO-SIMD128-NEXT:    i32.xor $push6=, $6, $10
9544 ; NO-SIMD128-NEXT:    i32.and $push7=, $pop6, $2
9545 ; NO-SIMD128-NEXT:    i32.xor $push8=, $pop7, $10
9546 ; NO-SIMD128-NEXT:    i32.store 4($0), $pop8
9547 ; NO-SIMD128-NEXT:    i32.xor $push9=, $5, $9
9548 ; NO-SIMD128-NEXT:    i32.and $push10=, $pop9, $1
9549 ; NO-SIMD128-NEXT:    i32.xor $push11=, $pop10, $9
9550 ; NO-SIMD128-NEXT:    i32.store 0($0), $pop11
9551 ; NO-SIMD128-NEXT:    return
9553 ; NO-SIMD128-FAST-LABEL: bitselect_xor_v4i32:
9554 ; NO-SIMD128-FAST:         .functype bitselect_xor_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9555 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
9556 ; NO-SIMD128-FAST-NEXT:    i32.xor $push0=, $5, $9
9557 ; NO-SIMD128-FAST-NEXT:    i32.and $push1=, $pop0, $1
9558 ; NO-SIMD128-FAST-NEXT:    i32.xor $push2=, $pop1, $9
9559 ; NO-SIMD128-FAST-NEXT:    i32.store 0($0), $pop2
9560 ; NO-SIMD128-FAST-NEXT:    i32.xor $push3=, $6, $10
9561 ; NO-SIMD128-FAST-NEXT:    i32.and $push4=, $pop3, $2
9562 ; NO-SIMD128-FAST-NEXT:    i32.xor $push5=, $pop4, $10
9563 ; NO-SIMD128-FAST-NEXT:    i32.store 4($0), $pop5
9564 ; NO-SIMD128-FAST-NEXT:    i32.xor $push6=, $7, $11
9565 ; NO-SIMD128-FAST-NEXT:    i32.and $push7=, $pop6, $3
9566 ; NO-SIMD128-FAST-NEXT:    i32.xor $push8=, $pop7, $11
9567 ; NO-SIMD128-FAST-NEXT:    i32.store 8($0), $pop8
9568 ; NO-SIMD128-FAST-NEXT:    i32.xor $push9=, $8, $12
9569 ; NO-SIMD128-FAST-NEXT:    i32.and $push10=, $pop9, $4
9570 ; NO-SIMD128-FAST-NEXT:    i32.xor $push11=, $pop10, $12
9571 ; NO-SIMD128-FAST-NEXT:    i32.store 12($0), $pop11
9572 ; NO-SIMD128-FAST-NEXT:    return
9573  %xor1 = xor <4 x i32> %v1, %v2
9574  %and = and <4 x i32> %xor1, %c
9575  %a = xor <4 x i32> %and, %v2
9576  ret <4 x i32> %a
9579 define <4 x i32> @bitselect_xor_reversed_v4i32(<4 x i32> %c, <4 x i32> %v1, <4 x i32> %v2) {
9580 ; SIMD128-LABEL: bitselect_xor_reversed_v4i32:
9581 ; SIMD128:         .functype bitselect_xor_reversed_v4i32 (v128, v128, v128) -> (v128)
9582 ; SIMD128-NEXT:  # %bb.0:
9583 ; SIMD128-NEXT:    v128.bitselect $push0=, $2, $1, $0
9584 ; SIMD128-NEXT:    return $pop0
9586 ; SIMD128-FAST-LABEL: bitselect_xor_reversed_v4i32:
9587 ; SIMD128-FAST:         .functype bitselect_xor_reversed_v4i32 (v128, v128, v128) -> (v128)
9588 ; SIMD128-FAST-NEXT:  # %bb.0:
9589 ; SIMD128-FAST-NEXT:    v128.xor $push1=, $1, $2
9590 ; SIMD128-FAST-NEXT:    v128.not $push2=, $0
9591 ; SIMD128-FAST-NEXT:    v128.and $push3=, $pop1, $pop2
9592 ; SIMD128-FAST-NEXT:    v128.xor $push0=, $pop3, $2
9593 ; SIMD128-FAST-NEXT:    return $pop0
9595 ; NO-SIMD128-LABEL: bitselect_xor_reversed_v4i32:
9596 ; NO-SIMD128:         .functype bitselect_xor_reversed_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9597 ; NO-SIMD128-NEXT:  # %bb.0:
9598 ; NO-SIMD128-NEXT:    i32.xor $push2=, $8, $12
9599 ; NO-SIMD128-NEXT:    i32.const $push0=, -1
9600 ; NO-SIMD128-NEXT:    i32.xor $push1=, $4, $pop0
9601 ; NO-SIMD128-NEXT:    i32.and $push3=, $pop2, $pop1
9602 ; NO-SIMD128-NEXT:    i32.xor $push4=, $pop3, $12
9603 ; NO-SIMD128-NEXT:    i32.store 12($0), $pop4
9604 ; NO-SIMD128-NEXT:    i32.xor $push6=, $7, $11
9605 ; NO-SIMD128-NEXT:    i32.const $push19=, -1
9606 ; NO-SIMD128-NEXT:    i32.xor $push5=, $3, $pop19
9607 ; NO-SIMD128-NEXT:    i32.and $push7=, $pop6, $pop5
9608 ; NO-SIMD128-NEXT:    i32.xor $push8=, $pop7, $11
9609 ; NO-SIMD128-NEXT:    i32.store 8($0), $pop8
9610 ; NO-SIMD128-NEXT:    i32.xor $push10=, $6, $10
9611 ; NO-SIMD128-NEXT:    i32.const $push18=, -1
9612 ; NO-SIMD128-NEXT:    i32.xor $push9=, $2, $pop18
9613 ; NO-SIMD128-NEXT:    i32.and $push11=, $pop10, $pop9
9614 ; NO-SIMD128-NEXT:    i32.xor $push12=, $pop11, $10
9615 ; NO-SIMD128-NEXT:    i32.store 4($0), $pop12
9616 ; NO-SIMD128-NEXT:    i32.xor $push14=, $5, $9
9617 ; NO-SIMD128-NEXT:    i32.const $push17=, -1
9618 ; NO-SIMD128-NEXT:    i32.xor $push13=, $1, $pop17
9619 ; NO-SIMD128-NEXT:    i32.and $push15=, $pop14, $pop13
9620 ; NO-SIMD128-NEXT:    i32.xor $push16=, $pop15, $9
9621 ; NO-SIMD128-NEXT:    i32.store 0($0), $pop16
9622 ; NO-SIMD128-NEXT:    return
9624 ; NO-SIMD128-FAST-LABEL: bitselect_xor_reversed_v4i32:
9625 ; NO-SIMD128-FAST:         .functype bitselect_xor_reversed_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9626 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
9627 ; NO-SIMD128-FAST-NEXT:    i32.xor $push2=, $5, $9
9628 ; NO-SIMD128-FAST-NEXT:    i32.const $push0=, -1
9629 ; NO-SIMD128-FAST-NEXT:    i32.xor $push1=, $1, $pop0
9630 ; NO-SIMD128-FAST-NEXT:    i32.and $push3=, $pop2, $pop1
9631 ; NO-SIMD128-FAST-NEXT:    i32.xor $push4=, $pop3, $9
9632 ; NO-SIMD128-FAST-NEXT:    i32.store 0($0), $pop4
9633 ; NO-SIMD128-FAST-NEXT:    i32.xor $push6=, $6, $10
9634 ; NO-SIMD128-FAST-NEXT:    i32.const $push19=, -1
9635 ; NO-SIMD128-FAST-NEXT:    i32.xor $push5=, $2, $pop19
9636 ; NO-SIMD128-FAST-NEXT:    i32.and $push7=, $pop6, $pop5
9637 ; NO-SIMD128-FAST-NEXT:    i32.xor $push8=, $pop7, $10
9638 ; NO-SIMD128-FAST-NEXT:    i32.store 4($0), $pop8
9639 ; NO-SIMD128-FAST-NEXT:    i32.xor $push10=, $7, $11
9640 ; NO-SIMD128-FAST-NEXT:    i32.const $push18=, -1
9641 ; NO-SIMD128-FAST-NEXT:    i32.xor $push9=, $3, $pop18
9642 ; NO-SIMD128-FAST-NEXT:    i32.and $push11=, $pop10, $pop9
9643 ; NO-SIMD128-FAST-NEXT:    i32.xor $push12=, $pop11, $11
9644 ; NO-SIMD128-FAST-NEXT:    i32.store 8($0), $pop12
9645 ; NO-SIMD128-FAST-NEXT:    i32.xor $push14=, $8, $12
9646 ; NO-SIMD128-FAST-NEXT:    i32.const $push17=, -1
9647 ; NO-SIMD128-FAST-NEXT:    i32.xor $push13=, $4, $pop17
9648 ; NO-SIMD128-FAST-NEXT:    i32.and $push15=, $pop14, $pop13
9649 ; NO-SIMD128-FAST-NEXT:    i32.xor $push16=, $pop15, $12
9650 ; NO-SIMD128-FAST-NEXT:    i32.store 12($0), $pop16
9651 ; NO-SIMD128-FAST-NEXT:    return
9652  %xor1 = xor <4 x i32> %v1, %v2
9653  %notc = xor <4 x i32> %c, <i32 -1, i32 -1, i32 -1, i32 -1>
9654  %and = and <4 x i32> %xor1, %notc
9655  %a = xor <4 x i32> %and, %v2
9656  ret <4 x i32> %a
9659 define <4 x i32> @extmul_low_s_v4i32(<8 x i16> %v1, <8 x i16> %v2) {
9660 ; SIMD128-LABEL: extmul_low_s_v4i32:
9661 ; SIMD128:         .functype extmul_low_s_v4i32 (v128, v128) -> (v128)
9662 ; SIMD128-NEXT:  # %bb.0:
9663 ; SIMD128-NEXT:    i32x4.extmul_low_i16x8_s $push0=, $0, $1
9664 ; SIMD128-NEXT:    return $pop0
9666 ; SIMD128-FAST-LABEL: extmul_low_s_v4i32:
9667 ; SIMD128-FAST:         .functype extmul_low_s_v4i32 (v128, v128) -> (v128)
9668 ; SIMD128-FAST-NEXT:  # %bb.0:
9669 ; SIMD128-FAST-NEXT:    i32x4.extend_low_i16x8_s $push0=, $0
9670 ; SIMD128-FAST-NEXT:    i32x4.extend_low_i16x8_s $push1=, $1
9671 ; SIMD128-FAST-NEXT:    i32x4.mul $push2=, $pop0, $pop1
9672 ; SIMD128-FAST-NEXT:    return $pop2
9674 ; NO-SIMD128-LABEL: extmul_low_s_v4i32:
9675 ; NO-SIMD128:         .functype extmul_low_s_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9676 ; NO-SIMD128-NEXT:  # %bb.0:
9677 ; NO-SIMD128-NEXT:    i32.extend16_s $push1=, $4
9678 ; NO-SIMD128-NEXT:    i32.extend16_s $push0=, $12
9679 ; NO-SIMD128-NEXT:    i32.mul $push2=, $pop1, $pop0
9680 ; NO-SIMD128-NEXT:    i32.store 12($0), $pop2
9681 ; NO-SIMD128-NEXT:    i32.extend16_s $push4=, $3
9682 ; NO-SIMD128-NEXT:    i32.extend16_s $push3=, $11
9683 ; NO-SIMD128-NEXT:    i32.mul $push5=, $pop4, $pop3
9684 ; NO-SIMD128-NEXT:    i32.store 8($0), $pop5
9685 ; NO-SIMD128-NEXT:    i32.extend16_s $push7=, $2
9686 ; NO-SIMD128-NEXT:    i32.extend16_s $push6=, $10
9687 ; NO-SIMD128-NEXT:    i32.mul $push8=, $pop7, $pop6
9688 ; NO-SIMD128-NEXT:    i32.store 4($0), $pop8
9689 ; NO-SIMD128-NEXT:    i32.extend16_s $push10=, $1
9690 ; NO-SIMD128-NEXT:    i32.extend16_s $push9=, $9
9691 ; NO-SIMD128-NEXT:    i32.mul $push11=, $pop10, $pop9
9692 ; NO-SIMD128-NEXT:    i32.store 0($0), $pop11
9693 ; NO-SIMD128-NEXT:    return
9695 ; NO-SIMD128-FAST-LABEL: extmul_low_s_v4i32:
9696 ; 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) -> ()
9697 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
9698 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push1=, $1
9699 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push0=, $9
9700 ; NO-SIMD128-FAST-NEXT:    i32.mul $push2=, $pop1, $pop0
9701 ; NO-SIMD128-FAST-NEXT:    i32.store 0($0), $pop2
9702 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push4=, $2
9703 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push3=, $10
9704 ; NO-SIMD128-FAST-NEXT:    i32.mul $push5=, $pop4, $pop3
9705 ; NO-SIMD128-FAST-NEXT:    i32.store 4($0), $pop5
9706 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push7=, $3
9707 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push6=, $11
9708 ; NO-SIMD128-FAST-NEXT:    i32.mul $push8=, $pop7, $pop6
9709 ; NO-SIMD128-FAST-NEXT:    i32.store 8($0), $pop8
9710 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push10=, $4
9711 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push9=, $12
9712 ; NO-SIMD128-FAST-NEXT:    i32.mul $push11=, $pop10, $pop9
9713 ; NO-SIMD128-FAST-NEXT:    i32.store 12($0), $pop11
9714 ; NO-SIMD128-FAST-NEXT:    return
9715   %low1 = shufflevector <8 x i16> %v1, <8 x i16> undef,
9716            <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9717   %low2 = shufflevector <8 x i16> %v2, <8 x i16> undef,
9718            <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9719   %extended1 = sext <4 x i16> %low1 to <4 x i32>
9720   %extended2 = sext <4 x i16> %low2 to <4 x i32>
9721   %a = mul <4 x i32> %extended1, %extended2
9722   ret <4 x i32> %a
9725 define <4 x i32> @extmul_high_s_v4i32(<8 x i16> %v1, <8 x i16> %v2) {
9726 ; SIMD128-LABEL: extmul_high_s_v4i32:
9727 ; SIMD128:         .functype extmul_high_s_v4i32 (v128, v128) -> (v128)
9728 ; SIMD128-NEXT:  # %bb.0:
9729 ; SIMD128-NEXT:    i32x4.extmul_high_i16x8_s $push0=, $0, $1
9730 ; SIMD128-NEXT:    return $pop0
9732 ; SIMD128-FAST-LABEL: extmul_high_s_v4i32:
9733 ; SIMD128-FAST:         .functype extmul_high_s_v4i32 (v128, v128) -> (v128)
9734 ; SIMD128-FAST-NEXT:  # %bb.0:
9735 ; SIMD128-FAST-NEXT:    i32x4.extend_high_i16x8_s $push0=, $0
9736 ; SIMD128-FAST-NEXT:    i32x4.extend_high_i16x8_s $push1=, $1
9737 ; SIMD128-FAST-NEXT:    i32x4.mul $push2=, $pop0, $pop1
9738 ; SIMD128-FAST-NEXT:    return $pop2
9740 ; NO-SIMD128-LABEL: extmul_high_s_v4i32:
9741 ; NO-SIMD128:         .functype extmul_high_s_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9742 ; NO-SIMD128-NEXT:  # %bb.0:
9743 ; NO-SIMD128-NEXT:    i32.extend16_s $push1=, $8
9744 ; NO-SIMD128-NEXT:    i32.extend16_s $push0=, $16
9745 ; NO-SIMD128-NEXT:    i32.mul $push2=, $pop1, $pop0
9746 ; NO-SIMD128-NEXT:    i32.store 12($0), $pop2
9747 ; NO-SIMD128-NEXT:    i32.extend16_s $push4=, $7
9748 ; NO-SIMD128-NEXT:    i32.extend16_s $push3=, $15
9749 ; NO-SIMD128-NEXT:    i32.mul $push5=, $pop4, $pop3
9750 ; NO-SIMD128-NEXT:    i32.store 8($0), $pop5
9751 ; NO-SIMD128-NEXT:    i32.extend16_s $push7=, $6
9752 ; NO-SIMD128-NEXT:    i32.extend16_s $push6=, $14
9753 ; NO-SIMD128-NEXT:    i32.mul $push8=, $pop7, $pop6
9754 ; NO-SIMD128-NEXT:    i32.store 4($0), $pop8
9755 ; NO-SIMD128-NEXT:    i32.extend16_s $push10=, $5
9756 ; NO-SIMD128-NEXT:    i32.extend16_s $push9=, $13
9757 ; NO-SIMD128-NEXT:    i32.mul $push11=, $pop10, $pop9
9758 ; NO-SIMD128-NEXT:    i32.store 0($0), $pop11
9759 ; NO-SIMD128-NEXT:    return
9761 ; NO-SIMD128-FAST-LABEL: extmul_high_s_v4i32:
9762 ; 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) -> ()
9763 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
9764 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push1=, $5
9765 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push0=, $13
9766 ; NO-SIMD128-FAST-NEXT:    i32.mul $push2=, $pop1, $pop0
9767 ; NO-SIMD128-FAST-NEXT:    i32.store 0($0), $pop2
9768 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push4=, $6
9769 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push3=, $14
9770 ; NO-SIMD128-FAST-NEXT:    i32.mul $push5=, $pop4, $pop3
9771 ; NO-SIMD128-FAST-NEXT:    i32.store 4($0), $pop5
9772 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push7=, $7
9773 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push6=, $15
9774 ; NO-SIMD128-FAST-NEXT:    i32.mul $push8=, $pop7, $pop6
9775 ; NO-SIMD128-FAST-NEXT:    i32.store 8($0), $pop8
9776 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push10=, $8
9777 ; NO-SIMD128-FAST-NEXT:    i32.extend16_s $push9=, $16
9778 ; NO-SIMD128-FAST-NEXT:    i32.mul $push11=, $pop10, $pop9
9779 ; NO-SIMD128-FAST-NEXT:    i32.store 12($0), $pop11
9780 ; NO-SIMD128-FAST-NEXT:    return
9781   %high1 = shufflevector <8 x i16> %v1, <8 x i16> undef,
9782            <4 x i32> <i32 4, i32 5, i32 6, i32 7>
9783   %high2 = shufflevector <8 x i16> %v2, <8 x i16> undef,
9784            <4 x i32> <i32 4, i32 5, i32 6, i32 7>
9785   %extended1 = sext <4 x i16> %high1 to <4 x i32>
9786   %extended2 = sext <4 x i16> %high2 to <4 x i32>
9787   %a = mul <4 x i32> %extended1, %extended2
9788   ret <4 x i32> %a
9791 define <4 x i32> @extmul_low_u_v4i32(<8 x i16> %v1, <8 x i16> %v2) {
9792 ; SIMD128-LABEL: extmul_low_u_v4i32:
9793 ; SIMD128:         .functype extmul_low_u_v4i32 (v128, v128) -> (v128)
9794 ; SIMD128-NEXT:  # %bb.0:
9795 ; SIMD128-NEXT:    i32x4.extmul_low_i16x8_u $push0=, $0, $1
9796 ; SIMD128-NEXT:    return $pop0
9798 ; SIMD128-FAST-LABEL: extmul_low_u_v4i32:
9799 ; SIMD128-FAST:         .functype extmul_low_u_v4i32 (v128, v128) -> (v128)
9800 ; SIMD128-FAST-NEXT:  # %bb.0:
9801 ; SIMD128-FAST-NEXT:    i32x4.extend_low_i16x8_u $push0=, $0
9802 ; SIMD128-FAST-NEXT:    i32x4.extend_low_i16x8_u $push1=, $1
9803 ; SIMD128-FAST-NEXT:    i32x4.mul $push2=, $pop0, $pop1
9804 ; SIMD128-FAST-NEXT:    return $pop2
9806 ; NO-SIMD128-LABEL: extmul_low_u_v4i32:
9807 ; NO-SIMD128:         .functype extmul_low_u_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9808 ; NO-SIMD128-NEXT:  # %bb.0:
9809 ; NO-SIMD128-NEXT:    i32.const $push0=, 65535
9810 ; NO-SIMD128-NEXT:    i32.and $push2=, $4, $pop0
9811 ; NO-SIMD128-NEXT:    i32.const $push19=, 65535
9812 ; NO-SIMD128-NEXT:    i32.and $push1=, $12, $pop19
9813 ; NO-SIMD128-NEXT:    i32.mul $push3=, $pop2, $pop1
9814 ; NO-SIMD128-NEXT:    i32.store 12($0), $pop3
9815 ; NO-SIMD128-NEXT:    i32.const $push18=, 65535
9816 ; NO-SIMD128-NEXT:    i32.and $push5=, $3, $pop18
9817 ; NO-SIMD128-NEXT:    i32.const $push17=, 65535
9818 ; NO-SIMD128-NEXT:    i32.and $push4=, $11, $pop17
9819 ; NO-SIMD128-NEXT:    i32.mul $push6=, $pop5, $pop4
9820 ; NO-SIMD128-NEXT:    i32.store 8($0), $pop6
9821 ; NO-SIMD128-NEXT:    i32.const $push16=, 65535
9822 ; NO-SIMD128-NEXT:    i32.and $push8=, $2, $pop16
9823 ; NO-SIMD128-NEXT:    i32.const $push15=, 65535
9824 ; NO-SIMD128-NEXT:    i32.and $push7=, $10, $pop15
9825 ; NO-SIMD128-NEXT:    i32.mul $push9=, $pop8, $pop7
9826 ; NO-SIMD128-NEXT:    i32.store 4($0), $pop9
9827 ; NO-SIMD128-NEXT:    i32.const $push14=, 65535
9828 ; NO-SIMD128-NEXT:    i32.and $push11=, $1, $pop14
9829 ; NO-SIMD128-NEXT:    i32.const $push13=, 65535
9830 ; NO-SIMD128-NEXT:    i32.and $push10=, $9, $pop13
9831 ; NO-SIMD128-NEXT:    i32.mul $push12=, $pop11, $pop10
9832 ; NO-SIMD128-NEXT:    i32.store 0($0), $pop12
9833 ; NO-SIMD128-NEXT:    return
9835 ; NO-SIMD128-FAST-LABEL: extmul_low_u_v4i32:
9836 ; 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) -> ()
9837 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
9838 ; NO-SIMD128-FAST-NEXT:    i32.const $push0=, 65535
9839 ; NO-SIMD128-FAST-NEXT:    i32.and $push2=, $1, $pop0
9840 ; NO-SIMD128-FAST-NEXT:    i32.const $push19=, 65535
9841 ; NO-SIMD128-FAST-NEXT:    i32.and $push1=, $9, $pop19
9842 ; NO-SIMD128-FAST-NEXT:    i32.mul $push3=, $pop2, $pop1
9843 ; NO-SIMD128-FAST-NEXT:    i32.store 0($0), $pop3
9844 ; NO-SIMD128-FAST-NEXT:    i32.const $push18=, 65535
9845 ; NO-SIMD128-FAST-NEXT:    i32.and $push5=, $2, $pop18
9846 ; NO-SIMD128-FAST-NEXT:    i32.const $push17=, 65535
9847 ; NO-SIMD128-FAST-NEXT:    i32.and $push4=, $10, $pop17
9848 ; NO-SIMD128-FAST-NEXT:    i32.mul $push6=, $pop5, $pop4
9849 ; NO-SIMD128-FAST-NEXT:    i32.store 4($0), $pop6
9850 ; NO-SIMD128-FAST-NEXT:    i32.const $push16=, 65535
9851 ; NO-SIMD128-FAST-NEXT:    i32.and $push8=, $3, $pop16
9852 ; NO-SIMD128-FAST-NEXT:    i32.const $push15=, 65535
9853 ; NO-SIMD128-FAST-NEXT:    i32.and $push7=, $11, $pop15
9854 ; NO-SIMD128-FAST-NEXT:    i32.mul $push9=, $pop8, $pop7
9855 ; NO-SIMD128-FAST-NEXT:    i32.store 8($0), $pop9
9856 ; NO-SIMD128-FAST-NEXT:    i32.const $push14=, 65535
9857 ; NO-SIMD128-FAST-NEXT:    i32.and $push11=, $4, $pop14
9858 ; NO-SIMD128-FAST-NEXT:    i32.const $push13=, 65535
9859 ; NO-SIMD128-FAST-NEXT:    i32.and $push10=, $12, $pop13
9860 ; NO-SIMD128-FAST-NEXT:    i32.mul $push12=, $pop11, $pop10
9861 ; NO-SIMD128-FAST-NEXT:    i32.store 12($0), $pop12
9862 ; NO-SIMD128-FAST-NEXT:    return
9863   %low1 = shufflevector <8 x i16> %v1, <8 x i16> undef,
9864            <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9865   %low2 = shufflevector <8 x i16> %v2, <8 x i16> undef,
9866            <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9867   %extended1 = zext <4 x i16> %low1 to <4 x i32>
9868   %extended2 = zext <4 x i16> %low2 to <4 x i32>
9869   %a = mul <4 x i32> %extended1, %extended2
9870   ret <4 x i32> %a
9873 define <4 x i32> @extmul_high_u_v4i32(<8 x i16> %v1, <8 x i16> %v2) {
9874 ; SIMD128-LABEL: extmul_high_u_v4i32:
9875 ; SIMD128:         .functype extmul_high_u_v4i32 (v128, v128) -> (v128)
9876 ; SIMD128-NEXT:  # %bb.0:
9877 ; SIMD128-NEXT:    i32x4.extmul_high_i16x8_u $push0=, $0, $1
9878 ; SIMD128-NEXT:    return $pop0
9880 ; SIMD128-FAST-LABEL: extmul_high_u_v4i32:
9881 ; SIMD128-FAST:         .functype extmul_high_u_v4i32 (v128, v128) -> (v128)
9882 ; SIMD128-FAST-NEXT:  # %bb.0:
9883 ; SIMD128-FAST-NEXT:    i32x4.extend_high_i16x8_u $push0=, $0
9884 ; SIMD128-FAST-NEXT:    i32x4.extend_high_i16x8_u $push1=, $1
9885 ; SIMD128-FAST-NEXT:    i32x4.mul $push2=, $pop0, $pop1
9886 ; SIMD128-FAST-NEXT:    return $pop2
9888 ; NO-SIMD128-LABEL: extmul_high_u_v4i32:
9889 ; NO-SIMD128:         .functype extmul_high_u_v4i32 (i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
9890 ; NO-SIMD128-NEXT:  # %bb.0:
9891 ; NO-SIMD128-NEXT:    i32.const $push0=, 65535
9892 ; NO-SIMD128-NEXT:    i32.and $push2=, $8, $pop0
9893 ; NO-SIMD128-NEXT:    i32.const $push19=, 65535
9894 ; NO-SIMD128-NEXT:    i32.and $push1=, $16, $pop19
9895 ; NO-SIMD128-NEXT:    i32.mul $push3=, $pop2, $pop1
9896 ; NO-SIMD128-NEXT:    i32.store 12($0), $pop3
9897 ; NO-SIMD128-NEXT:    i32.const $push18=, 65535
9898 ; NO-SIMD128-NEXT:    i32.and $push5=, $7, $pop18
9899 ; NO-SIMD128-NEXT:    i32.const $push17=, 65535
9900 ; NO-SIMD128-NEXT:    i32.and $push4=, $15, $pop17
9901 ; NO-SIMD128-NEXT:    i32.mul $push6=, $pop5, $pop4
9902 ; NO-SIMD128-NEXT:    i32.store 8($0), $pop6
9903 ; NO-SIMD128-NEXT:    i32.const $push16=, 65535
9904 ; NO-SIMD128-NEXT:    i32.and $push8=, $6, $pop16
9905 ; NO-SIMD128-NEXT:    i32.const $push15=, 65535
9906 ; NO-SIMD128-NEXT:    i32.and $push7=, $14, $pop15
9907 ; NO-SIMD128-NEXT:    i32.mul $push9=, $pop8, $pop7
9908 ; NO-SIMD128-NEXT:    i32.store 4($0), $pop9
9909 ; NO-SIMD128-NEXT:    i32.const $push14=, 65535
9910 ; NO-SIMD128-NEXT:    i32.and $push11=, $5, $pop14
9911 ; NO-SIMD128-NEXT:    i32.const $push13=, 65535
9912 ; NO-SIMD128-NEXT:    i32.and $push10=, $13, $pop13
9913 ; NO-SIMD128-NEXT:    i32.mul $push12=, $pop11, $pop10
9914 ; NO-SIMD128-NEXT:    i32.store 0($0), $pop12
9915 ; NO-SIMD128-NEXT:    return
9917 ; NO-SIMD128-FAST-LABEL: extmul_high_u_v4i32:
9918 ; 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) -> ()
9919 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
9920 ; NO-SIMD128-FAST-NEXT:    i32.const $push0=, 65535
9921 ; NO-SIMD128-FAST-NEXT:    i32.and $push2=, $5, $pop0
9922 ; NO-SIMD128-FAST-NEXT:    i32.const $push19=, 65535
9923 ; NO-SIMD128-FAST-NEXT:    i32.and $push1=, $13, $pop19
9924 ; NO-SIMD128-FAST-NEXT:    i32.mul $push3=, $pop2, $pop1
9925 ; NO-SIMD128-FAST-NEXT:    i32.store 0($0), $pop3
9926 ; NO-SIMD128-FAST-NEXT:    i32.const $push18=, 65535
9927 ; NO-SIMD128-FAST-NEXT:    i32.and $push5=, $6, $pop18
9928 ; NO-SIMD128-FAST-NEXT:    i32.const $push17=, 65535
9929 ; NO-SIMD128-FAST-NEXT:    i32.and $push4=, $14, $pop17
9930 ; NO-SIMD128-FAST-NEXT:    i32.mul $push6=, $pop5, $pop4
9931 ; NO-SIMD128-FAST-NEXT:    i32.store 4($0), $pop6
9932 ; NO-SIMD128-FAST-NEXT:    i32.const $push16=, 65535
9933 ; NO-SIMD128-FAST-NEXT:    i32.and $push8=, $7, $pop16
9934 ; NO-SIMD128-FAST-NEXT:    i32.const $push15=, 65535
9935 ; NO-SIMD128-FAST-NEXT:    i32.and $push7=, $15, $pop15
9936 ; NO-SIMD128-FAST-NEXT:    i32.mul $push9=, $pop8, $pop7
9937 ; NO-SIMD128-FAST-NEXT:    i32.store 8($0), $pop9
9938 ; NO-SIMD128-FAST-NEXT:    i32.const $push14=, 65535
9939 ; NO-SIMD128-FAST-NEXT:    i32.and $push11=, $8, $pop14
9940 ; NO-SIMD128-FAST-NEXT:    i32.const $push13=, 65535
9941 ; NO-SIMD128-FAST-NEXT:    i32.and $push10=, $16, $pop13
9942 ; NO-SIMD128-FAST-NEXT:    i32.mul $push12=, $pop11, $pop10
9943 ; NO-SIMD128-FAST-NEXT:    i32.store 12($0), $pop12
9944 ; NO-SIMD128-FAST-NEXT:    return
9945   %high1 = shufflevector <8 x i16> %v1, <8 x i16> undef,
9946            <4 x i32> <i32 4, i32 5, i32 6, i32 7>
9947   %high2 = shufflevector <8 x i16> %v2, <8 x i16> undef,
9948            <4 x i32> <i32 4, i32 5, i32 6, i32 7>
9949   %extended1 = zext <4 x i16> %high1 to <4 x i32>
9950   %extended2 = zext <4 x i16> %high2 to <4 x i32>
9951   %a = mul <4 x i32> %extended1, %extended2
9952   ret <4 x i32> %a
9955 ; ==============================================================================
9956 ; 2 x i64
9957 ; ==============================================================================
9958 define <2 x i64> @add_v2i64(<2 x i64> %x, <2 x i64> %y) {
9959 ; SIMD128-LABEL: add_v2i64:
9960 ; SIMD128:         .functype add_v2i64 (v128, v128) -> (v128)
9961 ; SIMD128-NEXT:  # %bb.0:
9962 ; SIMD128-NEXT:    i64x2.add $push0=, $0, $1
9963 ; SIMD128-NEXT:    return $pop0
9965 ; SIMD128-FAST-LABEL: add_v2i64:
9966 ; SIMD128-FAST:         .functype add_v2i64 (v128, v128) -> (v128)
9967 ; SIMD128-FAST-NEXT:  # %bb.0:
9968 ; SIMD128-FAST-NEXT:    i64x2.add $push0=, $0, $1
9969 ; SIMD128-FAST-NEXT:    return $pop0
9971 ; NO-SIMD128-LABEL: add_v2i64:
9972 ; NO-SIMD128:         .functype add_v2i64 (i32, i64, i64, i64, i64) -> ()
9973 ; NO-SIMD128-NEXT:  # %bb.0:
9974 ; NO-SIMD128-NEXT:    i64.add $push0=, $2, $4
9975 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop0
9976 ; NO-SIMD128-NEXT:    i64.add $push1=, $1, $3
9977 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop1
9978 ; NO-SIMD128-NEXT:    return
9980 ; NO-SIMD128-FAST-LABEL: add_v2i64:
9981 ; NO-SIMD128-FAST:         .functype add_v2i64 (i32, i64, i64, i64, i64) -> ()
9982 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
9983 ; NO-SIMD128-FAST-NEXT:    i64.add $push0=, $1, $3
9984 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop0
9985 ; NO-SIMD128-FAST-NEXT:    i64.add $push1=, $2, $4
9986 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop1
9987 ; NO-SIMD128-FAST-NEXT:    return
9988   %a = add <2 x i64> %x, %y
9989   ret <2 x i64> %a
9992 define <2 x i64> @sub_v2i64(<2 x i64> %x, <2 x i64> %y) {
9993 ; SIMD128-LABEL: sub_v2i64:
9994 ; SIMD128:         .functype sub_v2i64 (v128, v128) -> (v128)
9995 ; SIMD128-NEXT:  # %bb.0:
9996 ; SIMD128-NEXT:    i64x2.sub $push0=, $0, $1
9997 ; SIMD128-NEXT:    return $pop0
9999 ; SIMD128-FAST-LABEL: sub_v2i64:
10000 ; SIMD128-FAST:         .functype sub_v2i64 (v128, v128) -> (v128)
10001 ; SIMD128-FAST-NEXT:  # %bb.0:
10002 ; SIMD128-FAST-NEXT:    i64x2.sub $push0=, $0, $1
10003 ; SIMD128-FAST-NEXT:    return $pop0
10005 ; NO-SIMD128-LABEL: sub_v2i64:
10006 ; NO-SIMD128:         .functype sub_v2i64 (i32, i64, i64, i64, i64) -> ()
10007 ; NO-SIMD128-NEXT:  # %bb.0:
10008 ; NO-SIMD128-NEXT:    i64.sub $push0=, $2, $4
10009 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop0
10010 ; NO-SIMD128-NEXT:    i64.sub $push1=, $1, $3
10011 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop1
10012 ; NO-SIMD128-NEXT:    return
10014 ; NO-SIMD128-FAST-LABEL: sub_v2i64:
10015 ; NO-SIMD128-FAST:         .functype sub_v2i64 (i32, i64, i64, i64, i64) -> ()
10016 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
10017 ; NO-SIMD128-FAST-NEXT:    i64.sub $push0=, $1, $3
10018 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop0
10019 ; NO-SIMD128-FAST-NEXT:    i64.sub $push1=, $2, $4
10020 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop1
10021 ; NO-SIMD128-FAST-NEXT:    return
10022   %a = sub <2 x i64> %x, %y
10023   ret <2 x i64> %a
10026 define <2 x i64> @mul_v2i64(<2 x i64> %x, <2 x i64> %y) {
10027 ; SIMD128-LABEL: mul_v2i64:
10028 ; SIMD128:         .functype mul_v2i64 (v128, v128) -> (v128)
10029 ; SIMD128-NEXT:  # %bb.0:
10030 ; SIMD128-NEXT:    i64x2.mul $push0=, $0, $1
10031 ; SIMD128-NEXT:    return $pop0
10033 ; SIMD128-FAST-LABEL: mul_v2i64:
10034 ; SIMD128-FAST:         .functype mul_v2i64 (v128, v128) -> (v128)
10035 ; SIMD128-FAST-NEXT:  # %bb.0:
10036 ; SIMD128-FAST-NEXT:    i64x2.mul $push0=, $0, $1
10037 ; SIMD128-FAST-NEXT:    return $pop0
10039 ; NO-SIMD128-LABEL: mul_v2i64:
10040 ; NO-SIMD128:         .functype mul_v2i64 (i32, i64, i64, i64, i64) -> ()
10041 ; NO-SIMD128-NEXT:  # %bb.0:
10042 ; NO-SIMD128-NEXT:    i64.mul $push0=, $2, $4
10043 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop0
10044 ; NO-SIMD128-NEXT:    i64.mul $push1=, $1, $3
10045 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop1
10046 ; NO-SIMD128-NEXT:    return
10048 ; NO-SIMD128-FAST-LABEL: mul_v2i64:
10049 ; NO-SIMD128-FAST:         .functype mul_v2i64 (i32, i64, i64, i64, i64) -> ()
10050 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
10051 ; NO-SIMD128-FAST-NEXT:    i64.mul $push0=, $1, $3
10052 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop0
10053 ; NO-SIMD128-FAST-NEXT:    i64.mul $push1=, $2, $4
10054 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop1
10055 ; NO-SIMD128-FAST-NEXT:    return
10056   %a = mul <2 x i64> %x, %y
10057   ret <2 x i64> %a
10060 define <2 x i64> @abs_v2i64(<2 x i64> %x) {
10061 ; SIMD128-LABEL: abs_v2i64:
10062 ; SIMD128:         .functype abs_v2i64 (v128) -> (v128)
10063 ; SIMD128-NEXT:  # %bb.0:
10064 ; SIMD128-NEXT:    i64x2.abs $push0=, $0
10065 ; SIMD128-NEXT:    return $pop0
10067 ; SIMD128-FAST-LABEL: abs_v2i64:
10068 ; SIMD128-FAST:         .functype abs_v2i64 (v128) -> (v128)
10069 ; SIMD128-FAST-NEXT:  # %bb.0:
10070 ; SIMD128-FAST-NEXT:    i64x2.abs $push0=, $0
10071 ; SIMD128-FAST-NEXT:    return $pop0
10073 ; NO-SIMD128-LABEL: abs_v2i64:
10074 ; NO-SIMD128:         .functype abs_v2i64 (i32, i64, i64) -> ()
10075 ; NO-SIMD128-NEXT:  # %bb.0:
10076 ; NO-SIMD128-NEXT:    i64.const $push0=, 63
10077 ; NO-SIMD128-NEXT:    i64.shr_s $push9=, $2, $pop0
10078 ; NO-SIMD128-NEXT:    local.tee $push8=, $3=, $pop9
10079 ; NO-SIMD128-NEXT:    i64.xor $push1=, $2, $pop8
10080 ; NO-SIMD128-NEXT:    i64.sub $push2=, $pop1, $3
10081 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop2
10082 ; NO-SIMD128-NEXT:    i64.const $push7=, 63
10083 ; NO-SIMD128-NEXT:    i64.shr_s $push6=, $1, $pop7
10084 ; NO-SIMD128-NEXT:    local.tee $push5=, $2=, $pop6
10085 ; NO-SIMD128-NEXT:    i64.xor $push3=, $1, $pop5
10086 ; NO-SIMD128-NEXT:    i64.sub $push4=, $pop3, $2
10087 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop4
10088 ; NO-SIMD128-NEXT:    return
10090 ; NO-SIMD128-FAST-LABEL: abs_v2i64:
10091 ; NO-SIMD128-FAST:         .functype abs_v2i64 (i32, i64, i64) -> ()
10092 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
10093 ; NO-SIMD128-FAST-NEXT:    i64.const $push0=, 63
10094 ; NO-SIMD128-FAST-NEXT:    i64.shr_s $push9=, $1, $pop0
10095 ; NO-SIMD128-FAST-NEXT:    local.tee $push8=, $3=, $pop9
10096 ; NO-SIMD128-FAST-NEXT:    i64.xor $push1=, $1, $pop8
10097 ; NO-SIMD128-FAST-NEXT:    i64.sub $push2=, $pop1, $3
10098 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop2
10099 ; NO-SIMD128-FAST-NEXT:    i64.const $push7=, 63
10100 ; NO-SIMD128-FAST-NEXT:    i64.shr_s $push6=, $2, $pop7
10101 ; NO-SIMD128-FAST-NEXT:    local.tee $push5=, $1=, $pop6
10102 ; NO-SIMD128-FAST-NEXT:    i64.xor $push3=, $2, $pop5
10103 ; NO-SIMD128-FAST-NEXT:    i64.sub $push4=, $pop3, $1
10104 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop4
10105 ; NO-SIMD128-FAST-NEXT:    return
10106   %a = sub <2 x i64> zeroinitializer, %x
10107   %b = icmp slt <2 x i64> %x, zeroinitializer
10108   %c = select <2 x i1> %b, <2 x i64> %a, <2 x i64> %x
10109   ret <2 x i64> %c
10112 define <2 x i64> @neg_v2i64(<2 x i64> %x) {
10113 ; SIMD128-LABEL: neg_v2i64:
10114 ; SIMD128:         .functype neg_v2i64 (v128) -> (v128)
10115 ; SIMD128-NEXT:  # %bb.0:
10116 ; SIMD128-NEXT:    i64x2.neg $push0=, $0
10117 ; SIMD128-NEXT:    return $pop0
10119 ; SIMD128-FAST-LABEL: neg_v2i64:
10120 ; SIMD128-FAST:         .functype neg_v2i64 (v128) -> (v128)
10121 ; SIMD128-FAST-NEXT:  # %bb.0:
10122 ; SIMD128-FAST-NEXT:    i64x2.neg $push0=, $0
10123 ; SIMD128-FAST-NEXT:    return $pop0
10125 ; NO-SIMD128-LABEL: neg_v2i64:
10126 ; NO-SIMD128:         .functype neg_v2i64 (i32, i64, i64) -> ()
10127 ; NO-SIMD128-NEXT:  # %bb.0:
10128 ; NO-SIMD128-NEXT:    i64.const $push0=, 0
10129 ; NO-SIMD128-NEXT:    i64.sub $push1=, $pop0, $2
10130 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop1
10131 ; NO-SIMD128-NEXT:    i64.const $push3=, 0
10132 ; NO-SIMD128-NEXT:    i64.sub $push2=, $pop3, $1
10133 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop2
10134 ; NO-SIMD128-NEXT:    return
10136 ; NO-SIMD128-FAST-LABEL: neg_v2i64:
10137 ; NO-SIMD128-FAST:         .functype neg_v2i64 (i32, i64, i64) -> ()
10138 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
10139 ; NO-SIMD128-FAST-NEXT:    i64.const $push0=, 0
10140 ; NO-SIMD128-FAST-NEXT:    i64.sub $push1=, $pop0, $1
10141 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop1
10142 ; NO-SIMD128-FAST-NEXT:    i64.const $push3=, 0
10143 ; NO-SIMD128-FAST-NEXT:    i64.sub $push2=, $pop3, $2
10144 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop2
10145 ; NO-SIMD128-FAST-NEXT:    return
10146   %a = sub <2 x i64> <i64 0, i64 0>, %x
10147   ret <2 x i64> %a
10150 define <2 x i64> @shl_v2i64(<2 x i64> %v, i32 %x) {
10151 ; SIMD128-LABEL: shl_v2i64:
10152 ; SIMD128:         .functype shl_v2i64 (v128, i32) -> (v128)
10153 ; SIMD128-NEXT:  # %bb.0:
10154 ; SIMD128-NEXT:    i64x2.shl $push0=, $0, $1
10155 ; SIMD128-NEXT:    return $pop0
10157 ; SIMD128-FAST-LABEL: shl_v2i64:
10158 ; SIMD128-FAST:         .functype shl_v2i64 (v128, i32) -> (v128)
10159 ; SIMD128-FAST-NEXT:  # %bb.0:
10160 ; SIMD128-FAST-NEXT:    i64x2.shl $push0=, $0, $1
10161 ; SIMD128-FAST-NEXT:    return $pop0
10163 ; NO-SIMD128-LABEL: shl_v2i64:
10164 ; NO-SIMD128:         .functype shl_v2i64 (i32, i64, i64, i32) -> ()
10165 ; NO-SIMD128-NEXT:  # %bb.0:
10166 ; NO-SIMD128-NEXT:    i64.extend_i32_u $push3=, $3
10167 ; NO-SIMD128-NEXT:    local.tee $push2=, $4=, $pop3
10168 ; NO-SIMD128-NEXT:    i64.shl $push0=, $2, $pop2
10169 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop0
10170 ; NO-SIMD128-NEXT:    i64.shl $push1=, $1, $4
10171 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop1
10172 ; NO-SIMD128-NEXT:    return
10174 ; NO-SIMD128-FAST-LABEL: shl_v2i64:
10175 ; NO-SIMD128-FAST:         .functype shl_v2i64 (i32, i64, i64, i32) -> ()
10176 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
10177 ; NO-SIMD128-FAST-NEXT:    i64.extend_i32_u $push3=, $3
10178 ; NO-SIMD128-FAST-NEXT:    local.tee $push2=, $4=, $pop3
10179 ; NO-SIMD128-FAST-NEXT:    i64.shl $push0=, $2, $pop2
10180 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop0
10181 ; NO-SIMD128-FAST-NEXT:    i64.shl $push1=, $1, $4
10182 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop1
10183 ; NO-SIMD128-FAST-NEXT:    return
10184   %x2 = zext i32 %x to i64
10185   %t = insertelement <2 x i64> undef, i64 %x2, i32 0
10186   %s = shufflevector <2 x i64> %t, <2 x i64> undef, <2 x i32> <i32 0, i32 0>
10187   %a = shl <2 x i64> %v, %s
10188   ret <2 x i64> %a
10191 define <2 x i64> @shl_sext_v2i64(<2 x i64> %v, i32 %x) {
10192 ; SIMD128-LABEL: shl_sext_v2i64:
10193 ; SIMD128:         .functype shl_sext_v2i64 (v128, i32) -> (v128)
10194 ; SIMD128-NEXT:  # %bb.0:
10195 ; SIMD128-NEXT:    i64x2.shl $push0=, $0, $1
10196 ; SIMD128-NEXT:    return $pop0
10198 ; SIMD128-FAST-LABEL: shl_sext_v2i64:
10199 ; SIMD128-FAST:         .functype shl_sext_v2i64 (v128, i32) -> (v128)
10200 ; SIMD128-FAST-NEXT:  # %bb.0:
10201 ; SIMD128-FAST-NEXT:    i64x2.shl $push0=, $0, $1
10202 ; SIMD128-FAST-NEXT:    return $pop0
10204 ; NO-SIMD128-LABEL: shl_sext_v2i64:
10205 ; NO-SIMD128:         .functype shl_sext_v2i64 (i32, i64, i64, i32) -> ()
10206 ; NO-SIMD128-NEXT:  # %bb.0:
10207 ; NO-SIMD128-NEXT:    i64.extend_i32_s $push3=, $3
10208 ; NO-SIMD128-NEXT:    local.tee $push2=, $4=, $pop3
10209 ; NO-SIMD128-NEXT:    i64.shl $push0=, $2, $pop2
10210 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop0
10211 ; NO-SIMD128-NEXT:    i64.shl $push1=, $1, $4
10212 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop1
10213 ; NO-SIMD128-NEXT:    return
10215 ; NO-SIMD128-FAST-LABEL: shl_sext_v2i64:
10216 ; NO-SIMD128-FAST:         .functype shl_sext_v2i64 (i32, i64, i64, i32) -> ()
10217 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
10218 ; NO-SIMD128-FAST-NEXT:    i64.extend_i32_s $push3=, $3
10219 ; NO-SIMD128-FAST-NEXT:    local.tee $push2=, $4=, $pop3
10220 ; NO-SIMD128-FAST-NEXT:    i64.shl $push0=, $2, $pop2
10221 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop0
10222 ; NO-SIMD128-FAST-NEXT:    i64.shl $push1=, $1, $4
10223 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop1
10224 ; NO-SIMD128-FAST-NEXT:    return
10225   %x2 = sext i32 %x to i64
10226   %t = insertelement <2 x i64> undef, i64 %x2, i32 0
10227   %s = shufflevector <2 x i64> %t, <2 x i64> undef, <2 x i32> <i32 0, i32 0>
10228   %a = shl <2 x i64> %v, %s
10229   ret <2 x i64> %a
10232 define <2 x i64> @shl_noext_v2i64(<2 x i64> %v, i64 %x) {
10233 ; SIMD128-LABEL: shl_noext_v2i64:
10234 ; SIMD128:         .functype shl_noext_v2i64 (v128, i64) -> (v128)
10235 ; SIMD128-NEXT:  # %bb.0:
10236 ; SIMD128-NEXT:    i32.wrap_i64 $push0=, $1
10237 ; SIMD128-NEXT:    i64x2.shl $push1=, $0, $pop0
10238 ; SIMD128-NEXT:    return $pop1
10240 ; SIMD128-FAST-LABEL: shl_noext_v2i64:
10241 ; SIMD128-FAST:         .functype shl_noext_v2i64 (v128, i64) -> (v128)
10242 ; SIMD128-FAST-NEXT:  # %bb.0:
10243 ; SIMD128-FAST-NEXT:    i32.wrap_i64 $push1=, $1
10244 ; SIMD128-FAST-NEXT:    i64x2.shl $push0=, $0, $pop1
10245 ; SIMD128-FAST-NEXT:    return $pop0
10247 ; NO-SIMD128-LABEL: shl_noext_v2i64:
10248 ; NO-SIMD128:         .functype shl_noext_v2i64 (i32, i64, i64, i64) -> ()
10249 ; NO-SIMD128-NEXT:  # %bb.0:
10250 ; NO-SIMD128-NEXT:    i64.shl $push0=, $2, $3
10251 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop0
10252 ; NO-SIMD128-NEXT:    i64.shl $push1=, $1, $3
10253 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop1
10254 ; NO-SIMD128-NEXT:    return
10256 ; NO-SIMD128-FAST-LABEL: shl_noext_v2i64:
10257 ; NO-SIMD128-FAST:         .functype shl_noext_v2i64 (i32, i64, i64, i64) -> ()
10258 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
10259 ; NO-SIMD128-FAST-NEXT:    i64.shl $push0=, $1, $3
10260 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop0
10261 ; NO-SIMD128-FAST-NEXT:    i64.shl $push1=, $2, $3
10262 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop1
10263 ; NO-SIMD128-FAST-NEXT:    return
10264   %t = insertelement <2 x i64> undef, i64 %x, i32 0
10265   %s = shufflevector <2 x i64> %t, <2 x i64> undef, <2 x i32> <i32 0, i32 0>
10266   %a = shl <2 x i64> %v, %s
10267   ret <2 x i64> %a
10270 define <2 x i64> @shl_const_v2i64(<2 x i64> %v) {
10271 ; SIMD128-LABEL: shl_const_v2i64:
10272 ; SIMD128:         .functype shl_const_v2i64 (v128) -> (v128)
10273 ; SIMD128-NEXT:  # %bb.0:
10274 ; SIMD128-NEXT:    i32.const $push0=, 5
10275 ; SIMD128-NEXT:    i64x2.shl $push1=, $0, $pop0
10276 ; SIMD128-NEXT:    return $pop1
10278 ; SIMD128-FAST-LABEL: shl_const_v2i64:
10279 ; SIMD128-FAST:         .functype shl_const_v2i64 (v128) -> (v128)
10280 ; SIMD128-FAST-NEXT:  # %bb.0:
10281 ; SIMD128-FAST-NEXT:    i32.const $push1=, 5
10282 ; SIMD128-FAST-NEXT:    i64x2.shl $push0=, $0, $pop1
10283 ; SIMD128-FAST-NEXT:    return $pop0
10285 ; NO-SIMD128-LABEL: shl_const_v2i64:
10286 ; NO-SIMD128:         .functype shl_const_v2i64 (i32, i64, i64) -> ()
10287 ; NO-SIMD128-NEXT:  # %bb.0:
10288 ; NO-SIMD128-NEXT:    i64.const $push0=, 5
10289 ; NO-SIMD128-NEXT:    i64.shl $push1=, $2, $pop0
10290 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop1
10291 ; NO-SIMD128-NEXT:    i64.const $push3=, 5
10292 ; NO-SIMD128-NEXT:    i64.shl $push2=, $1, $pop3
10293 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop2
10294 ; NO-SIMD128-NEXT:    return
10296 ; NO-SIMD128-FAST-LABEL: shl_const_v2i64:
10297 ; NO-SIMD128-FAST:         .functype shl_const_v2i64 (i32, i64, i64) -> ()
10298 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
10299 ; NO-SIMD128-FAST-NEXT:    i64.const $push0=, 5
10300 ; NO-SIMD128-FAST-NEXT:    i64.shl $push1=, $1, $pop0
10301 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop1
10302 ; NO-SIMD128-FAST-NEXT:    i64.const $push3=, 5
10303 ; NO-SIMD128-FAST-NEXT:    i64.shl $push2=, $2, $pop3
10304 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop2
10305 ; NO-SIMD128-FAST-NEXT:    return
10306   %a = shl <2 x i64> %v, <i64 5, i64 5>
10307   ret <2 x i64> %a
10310 define <2 x i64> @shl_vec_v2i64(<2 x i64> %v, <2 x i64> %x) {
10311 ; SIMD128-LABEL: shl_vec_v2i64:
10312 ; SIMD128:         .functype shl_vec_v2i64 (v128, v128) -> (v128)
10313 ; SIMD128-NEXT:  # %bb.0:
10314 ; SIMD128-NEXT:    i64x2.extract_lane $push4=, $0, 0
10315 ; SIMD128-NEXT:    i64x2.extract_lane $push3=, $1, 0
10316 ; SIMD128-NEXT:    i64.shl $push5=, $pop4, $pop3
10317 ; SIMD128-NEXT:    i64x2.splat $push6=, $pop5
10318 ; SIMD128-NEXT:    i64x2.extract_lane $push1=, $0, 1
10319 ; SIMD128-NEXT:    i64x2.extract_lane $push0=, $1, 1
10320 ; SIMD128-NEXT:    i64.shl $push2=, $pop1, $pop0
10321 ; SIMD128-NEXT:    i64x2.replace_lane $push7=, $pop6, 1, $pop2
10322 ; SIMD128-NEXT:    return $pop7
10324 ; SIMD128-FAST-LABEL: shl_vec_v2i64:
10325 ; SIMD128-FAST:         .functype shl_vec_v2i64 (v128, v128) -> (v128)
10326 ; SIMD128-FAST-NEXT:  # %bb.0:
10327 ; SIMD128-FAST-NEXT:    i64x2.extract_lane $push5=, $0, 0
10328 ; SIMD128-FAST-NEXT:    i64x2.extract_lane $push4=, $1, 0
10329 ; SIMD128-FAST-NEXT:    i64.shl $push6=, $pop5, $pop4
10330 ; SIMD128-FAST-NEXT:    i64x2.splat $push7=, $pop6
10331 ; SIMD128-FAST-NEXT:    i64x2.extract_lane $push2=, $0, 1
10332 ; SIMD128-FAST-NEXT:    i64x2.extract_lane $push1=, $1, 1
10333 ; SIMD128-FAST-NEXT:    i64.shl $push3=, $pop2, $pop1
10334 ; SIMD128-FAST-NEXT:    i64x2.replace_lane $push0=, $pop7, 1, $pop3
10335 ; SIMD128-FAST-NEXT:    return $pop0
10337 ; NO-SIMD128-LABEL: shl_vec_v2i64:
10338 ; NO-SIMD128:         .functype shl_vec_v2i64 (i32, i64, i64, i64, i64) -> ()
10339 ; NO-SIMD128-NEXT:  # %bb.0:
10340 ; NO-SIMD128-NEXT:    i64.shl $push0=, $2, $4
10341 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop0
10342 ; NO-SIMD128-NEXT:    i64.shl $push1=, $1, $3
10343 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop1
10344 ; NO-SIMD128-NEXT:    return
10346 ; NO-SIMD128-FAST-LABEL: shl_vec_v2i64:
10347 ; NO-SIMD128-FAST:         .functype shl_vec_v2i64 (i32, i64, i64, i64, i64) -> ()
10348 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
10349 ; NO-SIMD128-FAST-NEXT:    i64.shl $push0=, $1, $3
10350 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop0
10351 ; NO-SIMD128-FAST-NEXT:    i64.shl $push1=, $2, $4
10352 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop1
10353 ; NO-SIMD128-FAST-NEXT:    return
10354   %a = shl <2 x i64> %v, %x
10355   ret <2 x i64> %a
10358 define <2 x i64> @shr_s_v2i64(<2 x i64> %v, i32 %x) {
10359 ; SIMD128-LABEL: shr_s_v2i64:
10360 ; SIMD128:         .functype shr_s_v2i64 (v128, i32) -> (v128)
10361 ; SIMD128-NEXT:  # %bb.0:
10362 ; SIMD128-NEXT:    i64x2.shr_s $push0=, $0, $1
10363 ; SIMD128-NEXT:    return $pop0
10365 ; SIMD128-FAST-LABEL: shr_s_v2i64:
10366 ; SIMD128-FAST:         .functype shr_s_v2i64 (v128, i32) -> (v128)
10367 ; SIMD128-FAST-NEXT:  # %bb.0:
10368 ; SIMD128-FAST-NEXT:    i64x2.shr_s $push0=, $0, $1
10369 ; SIMD128-FAST-NEXT:    return $pop0
10371 ; NO-SIMD128-LABEL: shr_s_v2i64:
10372 ; NO-SIMD128:         .functype shr_s_v2i64 (i32, i64, i64, i32) -> ()
10373 ; NO-SIMD128-NEXT:  # %bb.0:
10374 ; NO-SIMD128-NEXT:    i64.extend_i32_u $push3=, $3
10375 ; NO-SIMD128-NEXT:    local.tee $push2=, $4=, $pop3
10376 ; NO-SIMD128-NEXT:    i64.shr_s $push0=, $2, $pop2
10377 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop0
10378 ; NO-SIMD128-NEXT:    i64.shr_s $push1=, $1, $4
10379 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop1
10380 ; NO-SIMD128-NEXT:    return
10382 ; NO-SIMD128-FAST-LABEL: shr_s_v2i64:
10383 ; NO-SIMD128-FAST:         .functype shr_s_v2i64 (i32, i64, i64, i32) -> ()
10384 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
10385 ; NO-SIMD128-FAST-NEXT:    i64.extend_i32_u $push3=, $3
10386 ; NO-SIMD128-FAST-NEXT:    local.tee $push2=, $4=, $pop3
10387 ; NO-SIMD128-FAST-NEXT:    i64.shr_s $push0=, $2, $pop2
10388 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop0
10389 ; NO-SIMD128-FAST-NEXT:    i64.shr_s $push1=, $1, $4
10390 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop1
10391 ; NO-SIMD128-FAST-NEXT:    return
10392   %x2 = zext i32 %x to i64
10393   %t = insertelement <2 x i64> undef, i64 %x2, i32 0
10394   %s = shufflevector <2 x i64> %t, <2 x i64> undef, <2 x i32> <i32 0, i32 0>
10395   %a = ashr <2 x i64> %v, %s
10396   ret <2 x i64> %a
10399 define <2 x i64> @shr_s_sext_v2i64(<2 x i64> %v, i32 %x) {
10400 ; SIMD128-LABEL: shr_s_sext_v2i64:
10401 ; SIMD128:         .functype shr_s_sext_v2i64 (v128, i32) -> (v128)
10402 ; SIMD128-NEXT:  # %bb.0:
10403 ; SIMD128-NEXT:    i64x2.shr_s $push0=, $0, $1
10404 ; SIMD128-NEXT:    return $pop0
10406 ; SIMD128-FAST-LABEL: shr_s_sext_v2i64:
10407 ; SIMD128-FAST:         .functype shr_s_sext_v2i64 (v128, i32) -> (v128)
10408 ; SIMD128-FAST-NEXT:  # %bb.0:
10409 ; SIMD128-FAST-NEXT:    i64x2.shr_s $push0=, $0, $1
10410 ; SIMD128-FAST-NEXT:    return $pop0
10412 ; NO-SIMD128-LABEL: shr_s_sext_v2i64:
10413 ; NO-SIMD128:         .functype shr_s_sext_v2i64 (i32, i64, i64, i32) -> ()
10414 ; NO-SIMD128-NEXT:  # %bb.0:
10415 ; NO-SIMD128-NEXT:    i64.extend_i32_s $push3=, $3
10416 ; NO-SIMD128-NEXT:    local.tee $push2=, $4=, $pop3
10417 ; NO-SIMD128-NEXT:    i64.shr_s $push0=, $2, $pop2
10418 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop0
10419 ; NO-SIMD128-NEXT:    i64.shr_s $push1=, $1, $4
10420 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop1
10421 ; NO-SIMD128-NEXT:    return
10423 ; NO-SIMD128-FAST-LABEL: shr_s_sext_v2i64:
10424 ; NO-SIMD128-FAST:         .functype shr_s_sext_v2i64 (i32, i64, i64, i32) -> ()
10425 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
10426 ; NO-SIMD128-FAST-NEXT:    i64.extend_i32_s $push3=, $3
10427 ; NO-SIMD128-FAST-NEXT:    local.tee $push2=, $4=, $pop3
10428 ; NO-SIMD128-FAST-NEXT:    i64.shr_s $push0=, $2, $pop2
10429 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop0
10430 ; NO-SIMD128-FAST-NEXT:    i64.shr_s $push1=, $1, $4
10431 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop1
10432 ; NO-SIMD128-FAST-NEXT:    return
10433   %x2 = sext i32 %x to i64
10434   %t = insertelement <2 x i64> undef, i64 %x2, i32 0
10435   %s = shufflevector <2 x i64> %t, <2 x i64> undef, <2 x i32> <i32 0, i32 0>
10436   %a = ashr <2 x i64> %v, %s
10437   ret <2 x i64> %a
10440 define <2 x i64> @shr_s_noext_v2i64(<2 x i64> %v, i64 %x) {
10441 ; SIMD128-LABEL: shr_s_noext_v2i64:
10442 ; SIMD128:         .functype shr_s_noext_v2i64 (v128, i64) -> (v128)
10443 ; SIMD128-NEXT:  # %bb.0:
10444 ; SIMD128-NEXT:    i32.wrap_i64 $push0=, $1
10445 ; SIMD128-NEXT:    i64x2.shr_s $push1=, $0, $pop0
10446 ; SIMD128-NEXT:    return $pop1
10448 ; SIMD128-FAST-LABEL: shr_s_noext_v2i64:
10449 ; SIMD128-FAST:         .functype shr_s_noext_v2i64 (v128, i64) -> (v128)
10450 ; SIMD128-FAST-NEXT:  # %bb.0:
10451 ; SIMD128-FAST-NEXT:    i32.wrap_i64 $push1=, $1
10452 ; SIMD128-FAST-NEXT:    i64x2.shr_s $push0=, $0, $pop1
10453 ; SIMD128-FAST-NEXT:    return $pop0
10455 ; NO-SIMD128-LABEL: shr_s_noext_v2i64:
10456 ; NO-SIMD128:         .functype shr_s_noext_v2i64 (i32, i64, i64, i64) -> ()
10457 ; NO-SIMD128-NEXT:  # %bb.0:
10458 ; NO-SIMD128-NEXT:    i64.shr_s $push0=, $2, $3
10459 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop0
10460 ; NO-SIMD128-NEXT:    i64.shr_s $push1=, $1, $3
10461 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop1
10462 ; NO-SIMD128-NEXT:    return
10464 ; NO-SIMD128-FAST-LABEL: shr_s_noext_v2i64:
10465 ; NO-SIMD128-FAST:         .functype shr_s_noext_v2i64 (i32, i64, i64, i64) -> ()
10466 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
10467 ; NO-SIMD128-FAST-NEXT:    i64.shr_s $push0=, $1, $3
10468 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop0
10469 ; NO-SIMD128-FAST-NEXT:    i64.shr_s $push1=, $2, $3
10470 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop1
10471 ; NO-SIMD128-FAST-NEXT:    return
10472   %t = insertelement <2 x i64> undef, i64 %x, i32 0
10473   %s = shufflevector <2 x i64> %t, <2 x i64> undef, <2 x i32> <i32 0, i32 0>
10474   %a = ashr <2 x i64> %v, %s
10475   ret <2 x i64> %a
10478 define <2 x i64> @shr_s_const_v2i64(<2 x i64> %v) {
10479 ; SIMD128-LABEL: shr_s_const_v2i64:
10480 ; SIMD128:         .functype shr_s_const_v2i64 (v128) -> (v128)
10481 ; SIMD128-NEXT:  # %bb.0:
10482 ; SIMD128-NEXT:    i32.const $push0=, 5
10483 ; SIMD128-NEXT:    i64x2.shr_s $push1=, $0, $pop0
10484 ; SIMD128-NEXT:    return $pop1
10486 ; SIMD128-FAST-LABEL: shr_s_const_v2i64:
10487 ; SIMD128-FAST:         .functype shr_s_const_v2i64 (v128) -> (v128)
10488 ; SIMD128-FAST-NEXT:  # %bb.0:
10489 ; SIMD128-FAST-NEXT:    i32.const $push1=, 5
10490 ; SIMD128-FAST-NEXT:    i64x2.shr_s $push0=, $0, $pop1
10491 ; SIMD128-FAST-NEXT:    return $pop0
10493 ; NO-SIMD128-LABEL: shr_s_const_v2i64:
10494 ; NO-SIMD128:         .functype shr_s_const_v2i64 (i32, i64, i64) -> ()
10495 ; NO-SIMD128-NEXT:  # %bb.0:
10496 ; NO-SIMD128-NEXT:    i64.const $push0=, 5
10497 ; NO-SIMD128-NEXT:    i64.shr_s $push1=, $2, $pop0
10498 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop1
10499 ; NO-SIMD128-NEXT:    i64.const $push3=, 5
10500 ; NO-SIMD128-NEXT:    i64.shr_s $push2=, $1, $pop3
10501 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop2
10502 ; NO-SIMD128-NEXT:    return
10504 ; NO-SIMD128-FAST-LABEL: shr_s_const_v2i64:
10505 ; NO-SIMD128-FAST:         .functype shr_s_const_v2i64 (i32, i64, i64) -> ()
10506 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
10507 ; NO-SIMD128-FAST-NEXT:    i64.const $push0=, 5
10508 ; NO-SIMD128-FAST-NEXT:    i64.shr_s $push1=, $1, $pop0
10509 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop1
10510 ; NO-SIMD128-FAST-NEXT:    i64.const $push3=, 5
10511 ; NO-SIMD128-FAST-NEXT:    i64.shr_s $push2=, $2, $pop3
10512 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop2
10513 ; NO-SIMD128-FAST-NEXT:    return
10514   %a = ashr <2 x i64> %v, <i64 5, i64 5>
10515   ret <2 x i64> %a
10518 define <2 x i64> @shr_s_vec_v2i64(<2 x i64> %v, <2 x i64> %x) {
10519 ; SIMD128-LABEL: shr_s_vec_v2i64:
10520 ; SIMD128:         .functype shr_s_vec_v2i64 (v128, v128) -> (v128)
10521 ; SIMD128-NEXT:  # %bb.0:
10522 ; SIMD128-NEXT:    i64x2.extract_lane $push4=, $0, 0
10523 ; SIMD128-NEXT:    i64x2.extract_lane $push3=, $1, 0
10524 ; SIMD128-NEXT:    i64.shr_s $push5=, $pop4, $pop3
10525 ; SIMD128-NEXT:    i64x2.splat $push6=, $pop5
10526 ; SIMD128-NEXT:    i64x2.extract_lane $push1=, $0, 1
10527 ; SIMD128-NEXT:    i64x2.extract_lane $push0=, $1, 1
10528 ; SIMD128-NEXT:    i64.shr_s $push2=, $pop1, $pop0
10529 ; SIMD128-NEXT:    i64x2.replace_lane $push7=, $pop6, 1, $pop2
10530 ; SIMD128-NEXT:    return $pop7
10532 ; SIMD128-FAST-LABEL: shr_s_vec_v2i64:
10533 ; SIMD128-FAST:         .functype shr_s_vec_v2i64 (v128, v128) -> (v128)
10534 ; SIMD128-FAST-NEXT:  # %bb.0:
10535 ; SIMD128-FAST-NEXT:    i64x2.extract_lane $push5=, $0, 0
10536 ; SIMD128-FAST-NEXT:    i64x2.extract_lane $push4=, $1, 0
10537 ; SIMD128-FAST-NEXT:    i64.shr_s $push6=, $pop5, $pop4
10538 ; SIMD128-FAST-NEXT:    i64x2.splat $push7=, $pop6
10539 ; SIMD128-FAST-NEXT:    i64x2.extract_lane $push2=, $0, 1
10540 ; SIMD128-FAST-NEXT:    i64x2.extract_lane $push1=, $1, 1
10541 ; SIMD128-FAST-NEXT:    i64.shr_s $push3=, $pop2, $pop1
10542 ; SIMD128-FAST-NEXT:    i64x2.replace_lane $push0=, $pop7, 1, $pop3
10543 ; SIMD128-FAST-NEXT:    return $pop0
10545 ; NO-SIMD128-LABEL: shr_s_vec_v2i64:
10546 ; NO-SIMD128:         .functype shr_s_vec_v2i64 (i32, i64, i64, i64, i64) -> ()
10547 ; NO-SIMD128-NEXT:  # %bb.0:
10548 ; NO-SIMD128-NEXT:    i64.shr_s $push0=, $2, $4
10549 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop0
10550 ; NO-SIMD128-NEXT:    i64.shr_s $push1=, $1, $3
10551 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop1
10552 ; NO-SIMD128-NEXT:    return
10554 ; NO-SIMD128-FAST-LABEL: shr_s_vec_v2i64:
10555 ; NO-SIMD128-FAST:         .functype shr_s_vec_v2i64 (i32, i64, i64, i64, i64) -> ()
10556 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
10557 ; NO-SIMD128-FAST-NEXT:    i64.shr_s $push0=, $1, $3
10558 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop0
10559 ; NO-SIMD128-FAST-NEXT:    i64.shr_s $push1=, $2, $4
10560 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop1
10561 ; NO-SIMD128-FAST-NEXT:    return
10562   %a = ashr <2 x i64> %v, %x
10563   ret <2 x i64> %a
10566 define <2 x i64> @shr_u_v2i64(<2 x i64> %v, i32 %x) {
10567 ; SIMD128-LABEL: shr_u_v2i64:
10568 ; SIMD128:         .functype shr_u_v2i64 (v128, i32) -> (v128)
10569 ; SIMD128-NEXT:  # %bb.0:
10570 ; SIMD128-NEXT:    i64x2.shr_u $push0=, $0, $1
10571 ; SIMD128-NEXT:    return $pop0
10573 ; SIMD128-FAST-LABEL: shr_u_v2i64:
10574 ; SIMD128-FAST:         .functype shr_u_v2i64 (v128, i32) -> (v128)
10575 ; SIMD128-FAST-NEXT:  # %bb.0:
10576 ; SIMD128-FAST-NEXT:    i64x2.shr_u $push0=, $0, $1
10577 ; SIMD128-FAST-NEXT:    return $pop0
10579 ; NO-SIMD128-LABEL: shr_u_v2i64:
10580 ; NO-SIMD128:         .functype shr_u_v2i64 (i32, i64, i64, i32) -> ()
10581 ; NO-SIMD128-NEXT:  # %bb.0:
10582 ; NO-SIMD128-NEXT:    i64.extend_i32_u $push3=, $3
10583 ; NO-SIMD128-NEXT:    local.tee $push2=, $4=, $pop3
10584 ; NO-SIMD128-NEXT:    i64.shr_u $push0=, $2, $pop2
10585 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop0
10586 ; NO-SIMD128-NEXT:    i64.shr_u $push1=, $1, $4
10587 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop1
10588 ; NO-SIMD128-NEXT:    return
10590 ; NO-SIMD128-FAST-LABEL: shr_u_v2i64:
10591 ; NO-SIMD128-FAST:         .functype shr_u_v2i64 (i32, i64, i64, i32) -> ()
10592 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
10593 ; NO-SIMD128-FAST-NEXT:    i64.extend_i32_u $push3=, $3
10594 ; NO-SIMD128-FAST-NEXT:    local.tee $push2=, $4=, $pop3
10595 ; NO-SIMD128-FAST-NEXT:    i64.shr_u $push0=, $2, $pop2
10596 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop0
10597 ; NO-SIMD128-FAST-NEXT:    i64.shr_u $push1=, $1, $4
10598 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop1
10599 ; NO-SIMD128-FAST-NEXT:    return
10600   %x2 = zext i32 %x to i64
10601   %t = insertelement <2 x i64> undef, i64 %x2, i32 0
10602   %s = shufflevector <2 x i64> %t, <2 x i64> undef, <2 x i32> <i32 0, i32 0>
10603   %a = lshr <2 x i64> %v, %s
10604   ret <2 x i64> %a
10607 define <2 x i64> @shr_u_sext_v2i64(<2 x i64> %v, i32 %x) {
10608 ; SIMD128-LABEL: shr_u_sext_v2i64:
10609 ; SIMD128:         .functype shr_u_sext_v2i64 (v128, i32) -> (v128)
10610 ; SIMD128-NEXT:  # %bb.0:
10611 ; SIMD128-NEXT:    i64x2.shr_u $push0=, $0, $1
10612 ; SIMD128-NEXT:    return $pop0
10614 ; SIMD128-FAST-LABEL: shr_u_sext_v2i64:
10615 ; SIMD128-FAST:         .functype shr_u_sext_v2i64 (v128, i32) -> (v128)
10616 ; SIMD128-FAST-NEXT:  # %bb.0:
10617 ; SIMD128-FAST-NEXT:    i64x2.shr_u $push0=, $0, $1
10618 ; SIMD128-FAST-NEXT:    return $pop0
10620 ; NO-SIMD128-LABEL: shr_u_sext_v2i64:
10621 ; NO-SIMD128:         .functype shr_u_sext_v2i64 (i32, i64, i64, i32) -> ()
10622 ; NO-SIMD128-NEXT:  # %bb.0:
10623 ; NO-SIMD128-NEXT:    i64.extend_i32_s $push3=, $3
10624 ; NO-SIMD128-NEXT:    local.tee $push2=, $4=, $pop3
10625 ; NO-SIMD128-NEXT:    i64.shr_u $push0=, $2, $pop2
10626 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop0
10627 ; NO-SIMD128-NEXT:    i64.shr_u $push1=, $1, $4
10628 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop1
10629 ; NO-SIMD128-NEXT:    return
10631 ; NO-SIMD128-FAST-LABEL: shr_u_sext_v2i64:
10632 ; NO-SIMD128-FAST:         .functype shr_u_sext_v2i64 (i32, i64, i64, i32) -> ()
10633 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
10634 ; NO-SIMD128-FAST-NEXT:    i64.extend_i32_s $push3=, $3
10635 ; NO-SIMD128-FAST-NEXT:    local.tee $push2=, $4=, $pop3
10636 ; NO-SIMD128-FAST-NEXT:    i64.shr_u $push0=, $2, $pop2
10637 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop0
10638 ; NO-SIMD128-FAST-NEXT:    i64.shr_u $push1=, $1, $4
10639 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop1
10640 ; NO-SIMD128-FAST-NEXT:    return
10641   %x2 = sext i32 %x to i64
10642   %t = insertelement <2 x i64> undef, i64 %x2, i32 0
10643   %s = shufflevector <2 x i64> %t, <2 x i64> undef, <2 x i32> <i32 0, i32 0>
10644   %a = lshr <2 x i64> %v, %s
10645   ret <2 x i64> %a
10648 define <2 x i64> @shr_u_noext_v2i64(<2 x i64> %v, i64 %x) {
10649 ; SIMD128-LABEL: shr_u_noext_v2i64:
10650 ; SIMD128:         .functype shr_u_noext_v2i64 (v128, i64) -> (v128)
10651 ; SIMD128-NEXT:  # %bb.0:
10652 ; SIMD128-NEXT:    i32.wrap_i64 $push0=, $1
10653 ; SIMD128-NEXT:    i64x2.shr_u $push1=, $0, $pop0
10654 ; SIMD128-NEXT:    return $pop1
10656 ; SIMD128-FAST-LABEL: shr_u_noext_v2i64:
10657 ; SIMD128-FAST:         .functype shr_u_noext_v2i64 (v128, i64) -> (v128)
10658 ; SIMD128-FAST-NEXT:  # %bb.0:
10659 ; SIMD128-FAST-NEXT:    i32.wrap_i64 $push1=, $1
10660 ; SIMD128-FAST-NEXT:    i64x2.shr_u $push0=, $0, $pop1
10661 ; SIMD128-FAST-NEXT:    return $pop0
10663 ; NO-SIMD128-LABEL: shr_u_noext_v2i64:
10664 ; NO-SIMD128:         .functype shr_u_noext_v2i64 (i32, i64, i64, i64) -> ()
10665 ; NO-SIMD128-NEXT:  # %bb.0:
10666 ; NO-SIMD128-NEXT:    i64.shr_u $push0=, $2, $3
10667 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop0
10668 ; NO-SIMD128-NEXT:    i64.shr_u $push1=, $1, $3
10669 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop1
10670 ; NO-SIMD128-NEXT:    return
10672 ; NO-SIMD128-FAST-LABEL: shr_u_noext_v2i64:
10673 ; NO-SIMD128-FAST:         .functype shr_u_noext_v2i64 (i32, i64, i64, i64) -> ()
10674 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
10675 ; NO-SIMD128-FAST-NEXT:    i64.shr_u $push0=, $1, $3
10676 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop0
10677 ; NO-SIMD128-FAST-NEXT:    i64.shr_u $push1=, $2, $3
10678 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop1
10679 ; NO-SIMD128-FAST-NEXT:    return
10680   %t = insertelement <2 x i64> undef, i64 %x, i32 0
10681   %s = shufflevector <2 x i64> %t, <2 x i64> undef, <2 x i32> <i32 0, i32 0>
10682   %a = lshr <2 x i64> %v, %s
10683   ret <2 x i64> %a
10686 define <2 x i64> @shr_u_const_v2i64(<2 x i64> %v) {
10687 ; SIMD128-LABEL: shr_u_const_v2i64:
10688 ; SIMD128:         .functype shr_u_const_v2i64 (v128) -> (v128)
10689 ; SIMD128-NEXT:  # %bb.0:
10690 ; SIMD128-NEXT:    i32.const $push0=, 5
10691 ; SIMD128-NEXT:    i64x2.shr_u $push1=, $0, $pop0
10692 ; SIMD128-NEXT:    return $pop1
10694 ; SIMD128-FAST-LABEL: shr_u_const_v2i64:
10695 ; SIMD128-FAST:         .functype shr_u_const_v2i64 (v128) -> (v128)
10696 ; SIMD128-FAST-NEXT:  # %bb.0:
10697 ; SIMD128-FAST-NEXT:    i32.const $push1=, 5
10698 ; SIMD128-FAST-NEXT:    i64x2.shr_u $push0=, $0, $pop1
10699 ; SIMD128-FAST-NEXT:    return $pop0
10701 ; NO-SIMD128-LABEL: shr_u_const_v2i64:
10702 ; NO-SIMD128:         .functype shr_u_const_v2i64 (i32, i64, i64) -> ()
10703 ; NO-SIMD128-NEXT:  # %bb.0:
10704 ; NO-SIMD128-NEXT:    i64.const $push0=, 5
10705 ; NO-SIMD128-NEXT:    i64.shr_u $push1=, $2, $pop0
10706 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop1
10707 ; NO-SIMD128-NEXT:    i64.const $push3=, 5
10708 ; NO-SIMD128-NEXT:    i64.shr_u $push2=, $1, $pop3
10709 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop2
10710 ; NO-SIMD128-NEXT:    return
10712 ; NO-SIMD128-FAST-LABEL: shr_u_const_v2i64:
10713 ; NO-SIMD128-FAST:         .functype shr_u_const_v2i64 (i32, i64, i64) -> ()
10714 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
10715 ; NO-SIMD128-FAST-NEXT:    i64.const $push0=, 5
10716 ; NO-SIMD128-FAST-NEXT:    i64.shr_u $push1=, $1, $pop0
10717 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop1
10718 ; NO-SIMD128-FAST-NEXT:    i64.const $push3=, 5
10719 ; NO-SIMD128-FAST-NEXT:    i64.shr_u $push2=, $2, $pop3
10720 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop2
10721 ; NO-SIMD128-FAST-NEXT:    return
10722   %a = lshr <2 x i64> %v, <i64 5, i64 5>
10723   ret <2 x i64> %a
10726 define <2 x i64> @shr_u_vec_v2i64(<2 x i64> %v, <2 x i64> %x) {
10727 ; SIMD128-LABEL: shr_u_vec_v2i64:
10728 ; SIMD128:         .functype shr_u_vec_v2i64 (v128, v128) -> (v128)
10729 ; SIMD128-NEXT:  # %bb.0:
10730 ; SIMD128-NEXT:    i64x2.extract_lane $push4=, $0, 0
10731 ; SIMD128-NEXT:    i64x2.extract_lane $push3=, $1, 0
10732 ; SIMD128-NEXT:    i64.shr_u $push5=, $pop4, $pop3
10733 ; SIMD128-NEXT:    i64x2.splat $push6=, $pop5
10734 ; SIMD128-NEXT:    i64x2.extract_lane $push1=, $0, 1
10735 ; SIMD128-NEXT:    i64x2.extract_lane $push0=, $1, 1
10736 ; SIMD128-NEXT:    i64.shr_u $push2=, $pop1, $pop0
10737 ; SIMD128-NEXT:    i64x2.replace_lane $push7=, $pop6, 1, $pop2
10738 ; SIMD128-NEXT:    return $pop7
10740 ; SIMD128-FAST-LABEL: shr_u_vec_v2i64:
10741 ; SIMD128-FAST:         .functype shr_u_vec_v2i64 (v128, v128) -> (v128)
10742 ; SIMD128-FAST-NEXT:  # %bb.0:
10743 ; SIMD128-FAST-NEXT:    i64x2.extract_lane $push5=, $0, 0
10744 ; SIMD128-FAST-NEXT:    i64x2.extract_lane $push4=, $1, 0
10745 ; SIMD128-FAST-NEXT:    i64.shr_u $push6=, $pop5, $pop4
10746 ; SIMD128-FAST-NEXT:    i64x2.splat $push7=, $pop6
10747 ; SIMD128-FAST-NEXT:    i64x2.extract_lane $push2=, $0, 1
10748 ; SIMD128-FAST-NEXT:    i64x2.extract_lane $push1=, $1, 1
10749 ; SIMD128-FAST-NEXT:    i64.shr_u $push3=, $pop2, $pop1
10750 ; SIMD128-FAST-NEXT:    i64x2.replace_lane $push0=, $pop7, 1, $pop3
10751 ; SIMD128-FAST-NEXT:    return $pop0
10753 ; NO-SIMD128-LABEL: shr_u_vec_v2i64:
10754 ; NO-SIMD128:         .functype shr_u_vec_v2i64 (i32, i64, i64, i64, i64) -> ()
10755 ; NO-SIMD128-NEXT:  # %bb.0:
10756 ; NO-SIMD128-NEXT:    i64.shr_u $push0=, $2, $4
10757 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop0
10758 ; NO-SIMD128-NEXT:    i64.shr_u $push1=, $1, $3
10759 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop1
10760 ; NO-SIMD128-NEXT:    return
10762 ; NO-SIMD128-FAST-LABEL: shr_u_vec_v2i64:
10763 ; NO-SIMD128-FAST:         .functype shr_u_vec_v2i64 (i32, i64, i64, i64, i64) -> ()
10764 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
10765 ; NO-SIMD128-FAST-NEXT:    i64.shr_u $push0=, $1, $3
10766 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop0
10767 ; NO-SIMD128-FAST-NEXT:    i64.shr_u $push1=, $2, $4
10768 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop1
10769 ; NO-SIMD128-FAST-NEXT:    return
10770   %a = lshr <2 x i64> %v, %x
10771   ret <2 x i64> %a
10774 define <2 x i64> @and_v2i64(<2 x i64> %x, <2 x i64> %y) {
10775 ; SIMD128-LABEL: and_v2i64:
10776 ; SIMD128:         .functype and_v2i64 (v128, v128) -> (v128)
10777 ; SIMD128-NEXT:  # %bb.0:
10778 ; SIMD128-NEXT:    v128.and $push0=, $0, $1
10779 ; SIMD128-NEXT:    return $pop0
10781 ; SIMD128-FAST-LABEL: and_v2i64:
10782 ; SIMD128-FAST:         .functype and_v2i64 (v128, v128) -> (v128)
10783 ; SIMD128-FAST-NEXT:  # %bb.0:
10784 ; SIMD128-FAST-NEXT:    v128.and $push0=, $0, $1
10785 ; SIMD128-FAST-NEXT:    return $pop0
10787 ; NO-SIMD128-LABEL: and_v2i64:
10788 ; NO-SIMD128:         .functype and_v2i64 (i32, i64, i64, i64, i64) -> ()
10789 ; NO-SIMD128-NEXT:  # %bb.0:
10790 ; NO-SIMD128-NEXT:    i64.and $push0=, $2, $4
10791 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop0
10792 ; NO-SIMD128-NEXT:    i64.and $push1=, $1, $3
10793 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop1
10794 ; NO-SIMD128-NEXT:    return
10796 ; NO-SIMD128-FAST-LABEL: and_v2i64:
10797 ; NO-SIMD128-FAST:         .functype and_v2i64 (i32, i64, i64, i64, i64) -> ()
10798 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
10799 ; NO-SIMD128-FAST-NEXT:    i64.and $push0=, $1, $3
10800 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop0
10801 ; NO-SIMD128-FAST-NEXT:    i64.and $push1=, $2, $4
10802 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop1
10803 ; NO-SIMD128-FAST-NEXT:    return
10804   %a = and <2 x i64> %x, %y
10805   ret <2 x i64> %a
10808 define <2 x i64> @or_v2i64(<2 x i64> %x, <2 x i64> %y) {
10809 ; SIMD128-LABEL: or_v2i64:
10810 ; SIMD128:         .functype or_v2i64 (v128, v128) -> (v128)
10811 ; SIMD128-NEXT:  # %bb.0:
10812 ; SIMD128-NEXT:    v128.or $push0=, $0, $1
10813 ; SIMD128-NEXT:    return $pop0
10815 ; SIMD128-FAST-LABEL: or_v2i64:
10816 ; SIMD128-FAST:         .functype or_v2i64 (v128, v128) -> (v128)
10817 ; SIMD128-FAST-NEXT:  # %bb.0:
10818 ; SIMD128-FAST-NEXT:    v128.or $push0=, $0, $1
10819 ; SIMD128-FAST-NEXT:    return $pop0
10821 ; NO-SIMD128-LABEL: or_v2i64:
10822 ; NO-SIMD128:         .functype or_v2i64 (i32, i64, i64, i64, i64) -> ()
10823 ; NO-SIMD128-NEXT:  # %bb.0:
10824 ; NO-SIMD128-NEXT:    i64.or $push0=, $2, $4
10825 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop0
10826 ; NO-SIMD128-NEXT:    i64.or $push1=, $1, $3
10827 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop1
10828 ; NO-SIMD128-NEXT:    return
10830 ; NO-SIMD128-FAST-LABEL: or_v2i64:
10831 ; NO-SIMD128-FAST:         .functype or_v2i64 (i32, i64, i64, i64, i64) -> ()
10832 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
10833 ; NO-SIMD128-FAST-NEXT:    i64.or $push0=, $1, $3
10834 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop0
10835 ; NO-SIMD128-FAST-NEXT:    i64.or $push1=, $2, $4
10836 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop1
10837 ; NO-SIMD128-FAST-NEXT:    return
10838   %a = or <2 x i64> %x, %y
10839   ret <2 x i64> %a
10842 define <2 x i64> @xor_v2i64(<2 x i64> %x, <2 x i64> %y) {
10843 ; SIMD128-LABEL: xor_v2i64:
10844 ; SIMD128:         .functype xor_v2i64 (v128, v128) -> (v128)
10845 ; SIMD128-NEXT:  # %bb.0:
10846 ; SIMD128-NEXT:    v128.xor $push0=, $0, $1
10847 ; SIMD128-NEXT:    return $pop0
10849 ; SIMD128-FAST-LABEL: xor_v2i64:
10850 ; SIMD128-FAST:         .functype xor_v2i64 (v128, v128) -> (v128)
10851 ; SIMD128-FAST-NEXT:  # %bb.0:
10852 ; SIMD128-FAST-NEXT:    v128.xor $push0=, $0, $1
10853 ; SIMD128-FAST-NEXT:    return $pop0
10855 ; NO-SIMD128-LABEL: xor_v2i64:
10856 ; NO-SIMD128:         .functype xor_v2i64 (i32, i64, i64, i64, i64) -> ()
10857 ; NO-SIMD128-NEXT:  # %bb.0:
10858 ; NO-SIMD128-NEXT:    i64.xor $push0=, $2, $4
10859 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop0
10860 ; NO-SIMD128-NEXT:    i64.xor $push1=, $1, $3
10861 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop1
10862 ; NO-SIMD128-NEXT:    return
10864 ; NO-SIMD128-FAST-LABEL: xor_v2i64:
10865 ; NO-SIMD128-FAST:         .functype xor_v2i64 (i32, i64, i64, i64, i64) -> ()
10866 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
10867 ; NO-SIMD128-FAST-NEXT:    i64.xor $push0=, $1, $3
10868 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop0
10869 ; NO-SIMD128-FAST-NEXT:    i64.xor $push1=, $2, $4
10870 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop1
10871 ; NO-SIMD128-FAST-NEXT:    return
10872   %a = xor <2 x i64> %x, %y
10873   ret <2 x i64> %a
10876 define <2 x i64> @not_v2i64(<2 x i64> %x) {
10877 ; SIMD128-LABEL: not_v2i64:
10878 ; SIMD128:         .functype not_v2i64 (v128) -> (v128)
10879 ; SIMD128-NEXT:  # %bb.0:
10880 ; SIMD128-NEXT:    v128.not $push0=, $0
10881 ; SIMD128-NEXT:    return $pop0
10883 ; SIMD128-FAST-LABEL: not_v2i64:
10884 ; SIMD128-FAST:         .functype not_v2i64 (v128) -> (v128)
10885 ; SIMD128-FAST-NEXT:  # %bb.0:
10886 ; SIMD128-FAST-NEXT:    v128.not $push0=, $0
10887 ; SIMD128-FAST-NEXT:    return $pop0
10889 ; NO-SIMD128-LABEL: not_v2i64:
10890 ; NO-SIMD128:         .functype not_v2i64 (i32, i64, i64) -> ()
10891 ; NO-SIMD128-NEXT:  # %bb.0:
10892 ; NO-SIMD128-NEXT:    i64.const $push0=, -1
10893 ; NO-SIMD128-NEXT:    i64.xor $push1=, $2, $pop0
10894 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop1
10895 ; NO-SIMD128-NEXT:    i64.const $push3=, -1
10896 ; NO-SIMD128-NEXT:    i64.xor $push2=, $1, $pop3
10897 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop2
10898 ; NO-SIMD128-NEXT:    return
10900 ; NO-SIMD128-FAST-LABEL: not_v2i64:
10901 ; NO-SIMD128-FAST:         .functype not_v2i64 (i32, i64, i64) -> ()
10902 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
10903 ; NO-SIMD128-FAST-NEXT:    i64.const $push0=, -1
10904 ; NO-SIMD128-FAST-NEXT:    i64.xor $push1=, $1, $pop0
10905 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop1
10906 ; NO-SIMD128-FAST-NEXT:    i64.const $push3=, -1
10907 ; NO-SIMD128-FAST-NEXT:    i64.xor $push2=, $2, $pop3
10908 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop2
10909 ; NO-SIMD128-FAST-NEXT:    return
10910   %a = xor <2 x i64> %x, <i64 -1, i64 -1>
10911   ret <2 x i64> %a
10914 define <2 x i64> @andnot_v2i64(<2 x i64> %x, <2 x i64> %y) {
10915 ; SIMD128-LABEL: andnot_v2i64:
10916 ; SIMD128:         .functype andnot_v2i64 (v128, v128) -> (v128)
10917 ; SIMD128-NEXT:  # %bb.0:
10918 ; SIMD128-NEXT:    v128.andnot $push0=, $0, $1
10919 ; SIMD128-NEXT:    return $pop0
10921 ; SIMD128-FAST-LABEL: andnot_v2i64:
10922 ; SIMD128-FAST:         .functype andnot_v2i64 (v128, v128) -> (v128)
10923 ; SIMD128-FAST-NEXT:  # %bb.0:
10924 ; SIMD128-FAST-NEXT:    v128.not $push0=, $1
10925 ; SIMD128-FAST-NEXT:    v128.and $push1=, $0, $pop0
10926 ; SIMD128-FAST-NEXT:    return $pop1
10928 ; NO-SIMD128-LABEL: andnot_v2i64:
10929 ; NO-SIMD128:         .functype andnot_v2i64 (i32, i64, i64, i64, i64) -> ()
10930 ; NO-SIMD128-NEXT:  # %bb.0:
10931 ; NO-SIMD128-NEXT:    i64.const $push0=, -1
10932 ; NO-SIMD128-NEXT:    i64.xor $push1=, $4, $pop0
10933 ; NO-SIMD128-NEXT:    i64.and $push2=, $2, $pop1
10934 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop2
10935 ; NO-SIMD128-NEXT:    i64.const $push5=, -1
10936 ; NO-SIMD128-NEXT:    i64.xor $push3=, $3, $pop5
10937 ; NO-SIMD128-NEXT:    i64.and $push4=, $1, $pop3
10938 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop4
10939 ; NO-SIMD128-NEXT:    return
10941 ; NO-SIMD128-FAST-LABEL: andnot_v2i64:
10942 ; NO-SIMD128-FAST:         .functype andnot_v2i64 (i32, i64, i64, i64, i64) -> ()
10943 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
10944 ; NO-SIMD128-FAST-NEXT:    i64.const $push0=, -1
10945 ; NO-SIMD128-FAST-NEXT:    i64.xor $push1=, $3, $pop0
10946 ; NO-SIMD128-FAST-NEXT:    i64.and $push2=, $1, $pop1
10947 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop2
10948 ; NO-SIMD128-FAST-NEXT:    i64.const $push5=, -1
10949 ; NO-SIMD128-FAST-NEXT:    i64.xor $push3=, $4, $pop5
10950 ; NO-SIMD128-FAST-NEXT:    i64.and $push4=, $2, $pop3
10951 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop4
10952 ; NO-SIMD128-FAST-NEXT:    return
10953  %inv_y = xor <2 x i64> %y, <i64 -1, i64 -1>
10954  %a = and <2 x i64> %x, %inv_y
10955  ret <2 x i64> %a
10958 define <2 x i64> @bitselect_v2i64(<2 x i64> %c, <2 x i64> %v1, <2 x i64> %v2) {
10959 ; SIMD128-LABEL: bitselect_v2i64:
10960 ; SIMD128:         .functype bitselect_v2i64 (v128, v128, v128) -> (v128)
10961 ; SIMD128-NEXT:  # %bb.0:
10962 ; SIMD128-NEXT:    v128.bitselect $push0=, $1, $2, $0
10963 ; SIMD128-NEXT:    return $pop0
10965 ; SIMD128-FAST-LABEL: bitselect_v2i64:
10966 ; SIMD128-FAST:         .functype bitselect_v2i64 (v128, v128, v128) -> (v128)
10967 ; SIMD128-FAST-NEXT:  # %bb.0:
10968 ; SIMD128-FAST-NEXT:    v128.not $push2=, $0
10969 ; SIMD128-FAST-NEXT:    v128.and $push3=, $2, $pop2
10970 ; SIMD128-FAST-NEXT:    v128.and $push0=, $1, $0
10971 ; SIMD128-FAST-NEXT:    v128.or $push1=, $pop3, $pop0
10972 ; SIMD128-FAST-NEXT:    return $pop1
10974 ; NO-SIMD128-LABEL: bitselect_v2i64:
10975 ; NO-SIMD128:         .functype bitselect_v2i64 (i32, i64, i64, i64, i64, i64, i64) -> ()
10976 ; NO-SIMD128-NEXT:  # %bb.0:
10977 ; NO-SIMD128-NEXT:    i64.const $push1=, -1
10978 ; NO-SIMD128-NEXT:    i64.xor $push2=, $2, $pop1
10979 ; NO-SIMD128-NEXT:    i64.and $push3=, $6, $pop2
10980 ; NO-SIMD128-NEXT:    i64.and $push0=, $4, $2
10981 ; NO-SIMD128-NEXT:    i64.or $push4=, $pop3, $pop0
10982 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop4
10983 ; NO-SIMD128-NEXT:    i64.const $push9=, -1
10984 ; NO-SIMD128-NEXT:    i64.xor $push6=, $1, $pop9
10985 ; NO-SIMD128-NEXT:    i64.and $push7=, $5, $pop6
10986 ; NO-SIMD128-NEXT:    i64.and $push5=, $3, $1
10987 ; NO-SIMD128-NEXT:    i64.or $push8=, $pop7, $pop5
10988 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop8
10989 ; NO-SIMD128-NEXT:    return
10991 ; NO-SIMD128-FAST-LABEL: bitselect_v2i64:
10992 ; NO-SIMD128-FAST:         .functype bitselect_v2i64 (i32, i64, i64, i64, i64, i64, i64) -> ()
10993 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
10994 ; NO-SIMD128-FAST-NEXT:    i64.const $push1=, -1
10995 ; NO-SIMD128-FAST-NEXT:    i64.xor $push2=, $1, $pop1
10996 ; NO-SIMD128-FAST-NEXT:    i64.and $push3=, $5, $pop2
10997 ; NO-SIMD128-FAST-NEXT:    i64.and $push0=, $3, $1
10998 ; NO-SIMD128-FAST-NEXT:    i64.or $push4=, $pop3, $pop0
10999 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop4
11000 ; NO-SIMD128-FAST-NEXT:    i64.const $push9=, -1
11001 ; NO-SIMD128-FAST-NEXT:    i64.xor $push6=, $2, $pop9
11002 ; NO-SIMD128-FAST-NEXT:    i64.and $push7=, $6, $pop6
11003 ; NO-SIMD128-FAST-NEXT:    i64.and $push5=, $4, $2
11004 ; NO-SIMD128-FAST-NEXT:    i64.or $push8=, $pop7, $pop5
11005 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop8
11006 ; NO-SIMD128-FAST-NEXT:    return
11007   %masked_v1 = and <2 x i64> %v1, %c
11008   %inv_mask = xor <2 x i64> <i64 -1, i64 -1>, %c
11009   %masked_v2 = and <2 x i64> %v2, %inv_mask
11010   %a = or <2 x i64> %masked_v2, %masked_v1
11011   ret <2 x i64> %a
11014 define <2 x i64> @bitselect_xor_v2i64(<2 x i64> %c, <2 x i64> %v1, <2 x i64> %v2) {
11015 ; SIMD128-LABEL: bitselect_xor_v2i64:
11016 ; SIMD128:         .functype bitselect_xor_v2i64 (v128, v128, v128) -> (v128)
11017 ; SIMD128-NEXT:  # %bb.0:
11018 ; SIMD128-NEXT:    v128.bitselect $push0=, $1, $2, $0
11019 ; SIMD128-NEXT:    return $pop0
11021 ; SIMD128-FAST-LABEL: bitselect_xor_v2i64:
11022 ; SIMD128-FAST:         .functype bitselect_xor_v2i64 (v128, v128, v128) -> (v128)
11023 ; SIMD128-FAST-NEXT:  # %bb.0:
11024 ; SIMD128-FAST-NEXT:    v128.xor $push2=, $1, $2
11025 ; SIMD128-FAST-NEXT:    v128.and $push1=, $pop2, $0
11026 ; SIMD128-FAST-NEXT:    v128.xor $push0=, $pop1, $2
11027 ; SIMD128-FAST-NEXT:    return $pop0
11029 ; NO-SIMD128-LABEL: bitselect_xor_v2i64:
11030 ; NO-SIMD128:         .functype bitselect_xor_v2i64 (i32, i64, i64, i64, i64, i64, i64) -> ()
11031 ; NO-SIMD128-NEXT:  # %bb.0:
11032 ; NO-SIMD128-NEXT:    i64.xor $push0=, $4, $6
11033 ; NO-SIMD128-NEXT:    i64.and $push1=, $pop0, $2
11034 ; NO-SIMD128-NEXT:    i64.xor $push2=, $pop1, $6
11035 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop2
11036 ; NO-SIMD128-NEXT:    i64.xor $push3=, $3, $5
11037 ; NO-SIMD128-NEXT:    i64.and $push4=, $pop3, $1
11038 ; NO-SIMD128-NEXT:    i64.xor $push5=, $pop4, $5
11039 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop5
11040 ; NO-SIMD128-NEXT:    return
11042 ; NO-SIMD128-FAST-LABEL: bitselect_xor_v2i64:
11043 ; NO-SIMD128-FAST:         .functype bitselect_xor_v2i64 (i32, i64, i64, i64, i64, i64, i64) -> ()
11044 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
11045 ; NO-SIMD128-FAST-NEXT:    i64.xor $push0=, $3, $5
11046 ; NO-SIMD128-FAST-NEXT:    i64.and $push1=, $pop0, $1
11047 ; NO-SIMD128-FAST-NEXT:    i64.xor $push2=, $pop1, $5
11048 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop2
11049 ; NO-SIMD128-FAST-NEXT:    i64.xor $push3=, $4, $6
11050 ; NO-SIMD128-FAST-NEXT:    i64.and $push4=, $pop3, $2
11051 ; NO-SIMD128-FAST-NEXT:    i64.xor $push5=, $pop4, $6
11052 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop5
11053 ; NO-SIMD128-FAST-NEXT:    return
11054  %xor1 = xor <2 x i64> %v1, %v2
11055  %and = and <2 x i64> %xor1, %c
11056  %a = xor <2 x i64> %and, %v2
11057  ret <2 x i64> %a
11060 define <2 x i64> @bitselect_xor_reversed_v2i64(<2 x i64> %c, <2 x i64> %v1, <2 x i64> %v2) {
11061 ; SIMD128-LABEL: bitselect_xor_reversed_v2i64:
11062 ; SIMD128:         .functype bitselect_xor_reversed_v2i64 (v128, v128, v128) -> (v128)
11063 ; SIMD128-NEXT:  # %bb.0:
11064 ; SIMD128-NEXT:    v128.bitselect $push0=, $2, $1, $0
11065 ; SIMD128-NEXT:    return $pop0
11067 ; SIMD128-FAST-LABEL: bitselect_xor_reversed_v2i64:
11068 ; SIMD128-FAST:         .functype bitselect_xor_reversed_v2i64 (v128, v128, v128) -> (v128)
11069 ; SIMD128-FAST-NEXT:  # %bb.0:
11070 ; SIMD128-FAST-NEXT:    v128.xor $push1=, $1, $2
11071 ; SIMD128-FAST-NEXT:    v128.not $push2=, $0
11072 ; SIMD128-FAST-NEXT:    v128.and $push3=, $pop1, $pop2
11073 ; SIMD128-FAST-NEXT:    v128.xor $push0=, $pop3, $2
11074 ; SIMD128-FAST-NEXT:    return $pop0
11076 ; NO-SIMD128-LABEL: bitselect_xor_reversed_v2i64:
11077 ; NO-SIMD128:         .functype bitselect_xor_reversed_v2i64 (i32, i64, i64, i64, i64, i64, i64) -> ()
11078 ; NO-SIMD128-NEXT:  # %bb.0:
11079 ; NO-SIMD128-NEXT:    i64.xor $push2=, $4, $6
11080 ; NO-SIMD128-NEXT:    i64.const $push0=, -1
11081 ; NO-SIMD128-NEXT:    i64.xor $push1=, $2, $pop0
11082 ; NO-SIMD128-NEXT:    i64.and $push3=, $pop2, $pop1
11083 ; NO-SIMD128-NEXT:    i64.xor $push4=, $pop3, $6
11084 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop4
11085 ; NO-SIMD128-NEXT:    i64.xor $push6=, $3, $5
11086 ; NO-SIMD128-NEXT:    i64.const $push9=, -1
11087 ; NO-SIMD128-NEXT:    i64.xor $push5=, $1, $pop9
11088 ; NO-SIMD128-NEXT:    i64.and $push7=, $pop6, $pop5
11089 ; NO-SIMD128-NEXT:    i64.xor $push8=, $pop7, $5
11090 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop8
11091 ; NO-SIMD128-NEXT:    return
11093 ; NO-SIMD128-FAST-LABEL: bitselect_xor_reversed_v2i64:
11094 ; NO-SIMD128-FAST:         .functype bitselect_xor_reversed_v2i64 (i32, i64, i64, i64, i64, i64, i64) -> ()
11095 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
11096 ; NO-SIMD128-FAST-NEXT:    i64.xor $push2=, $3, $5
11097 ; NO-SIMD128-FAST-NEXT:    i64.const $push0=, -1
11098 ; NO-SIMD128-FAST-NEXT:    i64.xor $push1=, $1, $pop0
11099 ; NO-SIMD128-FAST-NEXT:    i64.and $push3=, $pop2, $pop1
11100 ; NO-SIMD128-FAST-NEXT:    i64.xor $push4=, $pop3, $5
11101 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop4
11102 ; NO-SIMD128-FAST-NEXT:    i64.xor $push6=, $4, $6
11103 ; NO-SIMD128-FAST-NEXT:    i64.const $push9=, -1
11104 ; NO-SIMD128-FAST-NEXT:    i64.xor $push5=, $2, $pop9
11105 ; NO-SIMD128-FAST-NEXT:    i64.and $push7=, $pop6, $pop5
11106 ; NO-SIMD128-FAST-NEXT:    i64.xor $push8=, $pop7, $6
11107 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop8
11108 ; NO-SIMD128-FAST-NEXT:    return
11109  %xor1 = xor <2 x i64> %v1, %v2
11110  %notc = xor <2 x i64> %c, <i64 -1, i64 -1>
11111  %and = and <2 x i64> %xor1, %notc
11112  %a = xor <2 x i64> %and, %v2
11113  ret <2 x i64> %a
11116 define <2 x i64> @extmul_low_s_v2i64(<4 x i32> %v1, <4 x i32> %v2) {
11117 ; SIMD128-LABEL: extmul_low_s_v2i64:
11118 ; SIMD128:         .functype extmul_low_s_v2i64 (v128, v128) -> (v128)
11119 ; SIMD128-NEXT:  # %bb.0:
11120 ; SIMD128-NEXT:    i64x2.extmul_low_i32x4_s $push0=, $0, $1
11121 ; SIMD128-NEXT:    return $pop0
11123 ; SIMD128-FAST-LABEL: extmul_low_s_v2i64:
11124 ; SIMD128-FAST:         .functype extmul_low_s_v2i64 (v128, v128) -> (v128)
11125 ; SIMD128-FAST-NEXT:  # %bb.0:
11126 ; SIMD128-FAST-NEXT:    i64x2.extend_low_i32x4_s $push0=, $0
11127 ; SIMD128-FAST-NEXT:    i64x2.extend_low_i32x4_s $push1=, $1
11128 ; SIMD128-FAST-NEXT:    i64x2.mul $push2=, $pop0, $pop1
11129 ; SIMD128-FAST-NEXT:    return $pop2
11131 ; NO-SIMD128-LABEL: extmul_low_s_v2i64:
11132 ; NO-SIMD128:         .functype extmul_low_s_v2i64 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
11133 ; NO-SIMD128-NEXT:  # %bb.0:
11134 ; NO-SIMD128-NEXT:    i64.extend_i32_s $push1=, $2
11135 ; NO-SIMD128-NEXT:    i64.extend_i32_s $push0=, $6
11136 ; NO-SIMD128-NEXT:    i64.mul $push2=, $pop1, $pop0
11137 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop2
11138 ; NO-SIMD128-NEXT:    i64.extend_i32_s $push4=, $1
11139 ; NO-SIMD128-NEXT:    i64.extend_i32_s $push3=, $5
11140 ; NO-SIMD128-NEXT:    i64.mul $push5=, $pop4, $pop3
11141 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop5
11142 ; NO-SIMD128-NEXT:    return
11144 ; NO-SIMD128-FAST-LABEL: extmul_low_s_v2i64:
11145 ; NO-SIMD128-FAST:         .functype extmul_low_s_v2i64 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
11146 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
11147 ; NO-SIMD128-FAST-NEXT:    i64.extend_i32_s $push1=, $1
11148 ; NO-SIMD128-FAST-NEXT:    i64.extend_i32_s $push0=, $5
11149 ; NO-SIMD128-FAST-NEXT:    i64.mul $push2=, $pop1, $pop0
11150 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop2
11151 ; NO-SIMD128-FAST-NEXT:    i64.extend_i32_s $push4=, $2
11152 ; NO-SIMD128-FAST-NEXT:    i64.extend_i32_s $push3=, $6
11153 ; NO-SIMD128-FAST-NEXT:    i64.mul $push5=, $pop4, $pop3
11154 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop5
11155 ; NO-SIMD128-FAST-NEXT:    return
11156   %low1 = shufflevector <4 x i32> %v1, <4 x i32> undef, <2 x i32> <i32 0, i32 1>
11157   %low2 = shufflevector <4 x i32> %v2, <4 x i32> undef, <2 x i32> <i32 0, i32 1>
11158   %extended1 = sext <2 x i32> %low1 to <2 x i64>
11159   %extended2 = sext <2 x i32> %low2 to <2 x i64>
11160   %a = mul <2 x i64> %extended1, %extended2
11161   ret <2 x i64> %a
11164 define <2 x i64> @extmul_high_s_v2i64(<4 x i32> %v1, <4 x i32> %v2) {
11165 ; SIMD128-LABEL: extmul_high_s_v2i64:
11166 ; SIMD128:         .functype extmul_high_s_v2i64 (v128, v128) -> (v128)
11167 ; SIMD128-NEXT:  # %bb.0:
11168 ; SIMD128-NEXT:    i64x2.extmul_high_i32x4_s $push0=, $0, $1
11169 ; SIMD128-NEXT:    return $pop0
11171 ; SIMD128-FAST-LABEL: extmul_high_s_v2i64:
11172 ; SIMD128-FAST:         .functype extmul_high_s_v2i64 (v128, v128) -> (v128)
11173 ; SIMD128-FAST-NEXT:  # %bb.0:
11174 ; SIMD128-FAST-NEXT:    i64x2.extend_high_i32x4_s $push0=, $0
11175 ; SIMD128-FAST-NEXT:    i64x2.extend_high_i32x4_s $push1=, $1
11176 ; SIMD128-FAST-NEXT:    i64x2.mul $push2=, $pop0, $pop1
11177 ; SIMD128-FAST-NEXT:    return $pop2
11179 ; NO-SIMD128-LABEL: extmul_high_s_v2i64:
11180 ; NO-SIMD128:         .functype extmul_high_s_v2i64 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
11181 ; NO-SIMD128-NEXT:  # %bb.0:
11182 ; NO-SIMD128-NEXT:    i64.extend_i32_s $push1=, $4
11183 ; NO-SIMD128-NEXT:    i64.extend_i32_s $push0=, $8
11184 ; NO-SIMD128-NEXT:    i64.mul $push2=, $pop1, $pop0
11185 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop2
11186 ; NO-SIMD128-NEXT:    i64.extend_i32_s $push4=, $3
11187 ; NO-SIMD128-NEXT:    i64.extend_i32_s $push3=, $7
11188 ; NO-SIMD128-NEXT:    i64.mul $push5=, $pop4, $pop3
11189 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop5
11190 ; NO-SIMD128-NEXT:    return
11192 ; NO-SIMD128-FAST-LABEL: extmul_high_s_v2i64:
11193 ; NO-SIMD128-FAST:         .functype extmul_high_s_v2i64 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
11194 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
11195 ; NO-SIMD128-FAST-NEXT:    i64.extend_i32_s $push1=, $3
11196 ; NO-SIMD128-FAST-NEXT:    i64.extend_i32_s $push0=, $7
11197 ; NO-SIMD128-FAST-NEXT:    i64.mul $push2=, $pop1, $pop0
11198 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop2
11199 ; NO-SIMD128-FAST-NEXT:    i64.extend_i32_s $push4=, $4
11200 ; NO-SIMD128-FAST-NEXT:    i64.extend_i32_s $push3=, $8
11201 ; NO-SIMD128-FAST-NEXT:    i64.mul $push5=, $pop4, $pop3
11202 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop5
11203 ; NO-SIMD128-FAST-NEXT:    return
11204   %high1 = shufflevector <4 x i32> %v1, <4 x i32> undef, <2 x i32> <i32 2, i32 3>
11205   %high2 = shufflevector <4 x i32> %v2, <4 x i32> undef, <2 x i32> <i32 2, i32 3>
11206   %extended1 = sext <2 x i32> %high1 to <2 x i64>
11207   %extended2 = sext <2 x i32> %high2 to <2 x i64>
11208   %a = mul <2 x i64> %extended1, %extended2
11209   ret <2 x i64> %a
11212 define <2 x i64> @extmul_low_u_v2i64(<4 x i32> %v1, <4 x i32> %v2) {
11213 ; SIMD128-LABEL: extmul_low_u_v2i64:
11214 ; SIMD128:         .functype extmul_low_u_v2i64 (v128, v128) -> (v128)
11215 ; SIMD128-NEXT:  # %bb.0:
11216 ; SIMD128-NEXT:    i64x2.extmul_low_i32x4_u $push0=, $0, $1
11217 ; SIMD128-NEXT:    return $pop0
11219 ; SIMD128-FAST-LABEL: extmul_low_u_v2i64:
11220 ; SIMD128-FAST:         .functype extmul_low_u_v2i64 (v128, v128) -> (v128)
11221 ; SIMD128-FAST-NEXT:  # %bb.0:
11222 ; SIMD128-FAST-NEXT:    i64x2.extend_low_i32x4_u $push0=, $0
11223 ; SIMD128-FAST-NEXT:    i64x2.extend_low_i32x4_u $push1=, $1
11224 ; SIMD128-FAST-NEXT:    i64x2.mul $push2=, $pop0, $pop1
11225 ; SIMD128-FAST-NEXT:    return $pop2
11227 ; NO-SIMD128-LABEL: extmul_low_u_v2i64:
11228 ; NO-SIMD128:         .functype extmul_low_u_v2i64 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
11229 ; NO-SIMD128-NEXT:  # %bb.0:
11230 ; NO-SIMD128-NEXT:    i64.extend_i32_u $push1=, $2
11231 ; NO-SIMD128-NEXT:    i64.extend_i32_u $push0=, $6
11232 ; NO-SIMD128-NEXT:    i64.mul $push2=, $pop1, $pop0
11233 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop2
11234 ; NO-SIMD128-NEXT:    i64.extend_i32_u $push4=, $1
11235 ; NO-SIMD128-NEXT:    i64.extend_i32_u $push3=, $5
11236 ; NO-SIMD128-NEXT:    i64.mul $push5=, $pop4, $pop3
11237 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop5
11238 ; NO-SIMD128-NEXT:    return
11240 ; NO-SIMD128-FAST-LABEL: extmul_low_u_v2i64:
11241 ; NO-SIMD128-FAST:         .functype extmul_low_u_v2i64 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
11242 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
11243 ; NO-SIMD128-FAST-NEXT:    i64.extend_i32_u $push1=, $1
11244 ; NO-SIMD128-FAST-NEXT:    i64.extend_i32_u $push0=, $5
11245 ; NO-SIMD128-FAST-NEXT:    i64.mul $push2=, $pop1, $pop0
11246 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop2
11247 ; NO-SIMD128-FAST-NEXT:    i64.extend_i32_u $push4=, $2
11248 ; NO-SIMD128-FAST-NEXT:    i64.extend_i32_u $push3=, $6
11249 ; NO-SIMD128-FAST-NEXT:    i64.mul $push5=, $pop4, $pop3
11250 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop5
11251 ; NO-SIMD128-FAST-NEXT:    return
11252   %low1 = shufflevector <4 x i32> %v1, <4 x i32> undef, <2 x i32> <i32 0, i32 1>
11253   %low2 = shufflevector <4 x i32> %v2, <4 x i32> undef, <2 x i32> <i32 0, i32 1>
11254   %extended1 = zext <2 x i32> %low1 to <2 x i64>
11255   %extended2 = zext <2 x i32> %low2 to <2 x i64>
11256   %a = mul <2 x i64> %extended1, %extended2
11257   ret <2 x i64> %a
11260 define <2 x i64> @extmul_high_u_v2i64(<4 x i32> %v1, <4 x i32> %v2) {
11261 ; SIMD128-LABEL: extmul_high_u_v2i64:
11262 ; SIMD128:         .functype extmul_high_u_v2i64 (v128, v128) -> (v128)
11263 ; SIMD128-NEXT:  # %bb.0:
11264 ; SIMD128-NEXT:    i64x2.extmul_high_i32x4_u $push0=, $0, $1
11265 ; SIMD128-NEXT:    return $pop0
11267 ; SIMD128-FAST-LABEL: extmul_high_u_v2i64:
11268 ; SIMD128-FAST:         .functype extmul_high_u_v2i64 (v128, v128) -> (v128)
11269 ; SIMD128-FAST-NEXT:  # %bb.0:
11270 ; SIMD128-FAST-NEXT:    i64x2.extend_high_i32x4_u $push0=, $0
11271 ; SIMD128-FAST-NEXT:    i64x2.extend_high_i32x4_u $push1=, $1
11272 ; SIMD128-FAST-NEXT:    i64x2.mul $push2=, $pop0, $pop1
11273 ; SIMD128-FAST-NEXT:    return $pop2
11275 ; NO-SIMD128-LABEL: extmul_high_u_v2i64:
11276 ; NO-SIMD128:         .functype extmul_high_u_v2i64 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
11277 ; NO-SIMD128-NEXT:  # %bb.0:
11278 ; NO-SIMD128-NEXT:    i64.extend_i32_u $push1=, $4
11279 ; NO-SIMD128-NEXT:    i64.extend_i32_u $push0=, $8
11280 ; NO-SIMD128-NEXT:    i64.mul $push2=, $pop1, $pop0
11281 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop2
11282 ; NO-SIMD128-NEXT:    i64.extend_i32_u $push4=, $3
11283 ; NO-SIMD128-NEXT:    i64.extend_i32_u $push3=, $7
11284 ; NO-SIMD128-NEXT:    i64.mul $push5=, $pop4, $pop3
11285 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop5
11286 ; NO-SIMD128-NEXT:    return
11288 ; NO-SIMD128-FAST-LABEL: extmul_high_u_v2i64:
11289 ; NO-SIMD128-FAST:         .functype extmul_high_u_v2i64 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
11290 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
11291 ; NO-SIMD128-FAST-NEXT:    i64.extend_i32_u $push1=, $3
11292 ; NO-SIMD128-FAST-NEXT:    i64.extend_i32_u $push0=, $7
11293 ; NO-SIMD128-FAST-NEXT:    i64.mul $push2=, $pop1, $pop0
11294 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop2
11295 ; NO-SIMD128-FAST-NEXT:    i64.extend_i32_u $push4=, $4
11296 ; NO-SIMD128-FAST-NEXT:    i64.extend_i32_u $push3=, $8
11297 ; NO-SIMD128-FAST-NEXT:    i64.mul $push5=, $pop4, $pop3
11298 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop5
11299 ; NO-SIMD128-FAST-NEXT:    return
11300   %high1 = shufflevector <4 x i32> %v1, <4 x i32> undef, <2 x i32> <i32 2, i32 3>
11301   %high2 = shufflevector <4 x i32> %v2, <4 x i32> undef, <2 x i32> <i32 2, i32 3>
11302   %extended1 = zext <2 x i32> %high1 to <2 x i64>
11303   %extended2 = zext <2 x i32> %high2 to <2 x i64>
11304   %a = mul <2 x i64> %extended1, %extended2
11305   ret <2 x i64> %a
11308 ; ==============================================================================
11309 ; 4 x float
11310 ; ==============================================================================
11311 define <4 x float> @neg_v4f32(<4 x float> %x) {
11312   ; nsz makes this semantically equivalent to flipping sign bit
11313 ; SIMD128-LABEL: neg_v4f32:
11314 ; SIMD128:         .functype neg_v4f32 (v128) -> (v128)
11315 ; SIMD128-NEXT:  # %bb.0:
11316 ; SIMD128-NEXT:    f32x4.neg $push0=, $0
11317 ; SIMD128-NEXT:    return $pop0
11319 ; SIMD128-FAST-LABEL: neg_v4f32:
11320 ; SIMD128-FAST:         .functype neg_v4f32 (v128) -> (v128)
11321 ; SIMD128-FAST-NEXT:  # %bb.0:
11322 ; SIMD128-FAST-NEXT:    f32x4.neg $push0=, $0
11323 ; SIMD128-FAST-NEXT:    return $pop0
11325 ; NO-SIMD128-LABEL: neg_v4f32:
11326 ; NO-SIMD128:         .functype neg_v4f32 (i32, f32, f32, f32, f32) -> ()
11327 ; NO-SIMD128-NEXT:  # %bb.0:
11328 ; NO-SIMD128-NEXT:    f32.neg $push0=, $4
11329 ; NO-SIMD128-NEXT:    f32.store 12($0), $pop0
11330 ; NO-SIMD128-NEXT:    f32.neg $push1=, $3
11331 ; NO-SIMD128-NEXT:    f32.store 8($0), $pop1
11332 ; NO-SIMD128-NEXT:    f32.neg $push2=, $2
11333 ; NO-SIMD128-NEXT:    f32.store 4($0), $pop2
11334 ; NO-SIMD128-NEXT:    f32.neg $push3=, $1
11335 ; NO-SIMD128-NEXT:    f32.store 0($0), $pop3
11336 ; NO-SIMD128-NEXT:    return
11338 ; NO-SIMD128-FAST-LABEL: neg_v4f32:
11339 ; NO-SIMD128-FAST:         .functype neg_v4f32 (i32, f32, f32, f32, f32) -> ()
11340 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
11341 ; NO-SIMD128-FAST-NEXT:    f32.neg $push0=, $1
11342 ; NO-SIMD128-FAST-NEXT:    f32.store 0($0), $pop0
11343 ; NO-SIMD128-FAST-NEXT:    f32.neg $push1=, $2
11344 ; NO-SIMD128-FAST-NEXT:    f32.store 4($0), $pop1
11345 ; NO-SIMD128-FAST-NEXT:    f32.neg $push2=, $3
11346 ; NO-SIMD128-FAST-NEXT:    f32.store 8($0), $pop2
11347 ; NO-SIMD128-FAST-NEXT:    f32.neg $push3=, $4
11348 ; NO-SIMD128-FAST-NEXT:    f32.store 12($0), $pop3
11349 ; NO-SIMD128-FAST-NEXT:    return
11350   %a = fsub nsz <4 x float> <float 0.0, float 0.0, float 0.0, float 0.0>, %x
11351   ret <4 x float> %a
11354 declare <4 x float> @llvm.fabs.v4f32(<4 x float>) nounwind readnone
11355 define <4 x float> @abs_v4f32(<4 x float> %x) {
11356 ; SIMD128-LABEL: abs_v4f32:
11357 ; SIMD128:         .functype abs_v4f32 (v128) -> (v128)
11358 ; SIMD128-NEXT:  # %bb.0:
11359 ; SIMD128-NEXT:    f32x4.abs $push0=, $0
11360 ; SIMD128-NEXT:    return $pop0
11362 ; SIMD128-FAST-LABEL: abs_v4f32:
11363 ; SIMD128-FAST:         .functype abs_v4f32 (v128) -> (v128)
11364 ; SIMD128-FAST-NEXT:  # %bb.0:
11365 ; SIMD128-FAST-NEXT:    f32x4.abs $push0=, $0
11366 ; SIMD128-FAST-NEXT:    return $pop0
11368 ; NO-SIMD128-LABEL: abs_v4f32:
11369 ; NO-SIMD128:         .functype abs_v4f32 (i32, f32, f32, f32, f32) -> ()
11370 ; NO-SIMD128-NEXT:  # %bb.0:
11371 ; NO-SIMD128-NEXT:    f32.abs $push0=, $4
11372 ; NO-SIMD128-NEXT:    f32.store 12($0), $pop0
11373 ; NO-SIMD128-NEXT:    f32.abs $push1=, $3
11374 ; NO-SIMD128-NEXT:    f32.store 8($0), $pop1
11375 ; NO-SIMD128-NEXT:    f32.abs $push2=, $2
11376 ; NO-SIMD128-NEXT:    f32.store 4($0), $pop2
11377 ; NO-SIMD128-NEXT:    f32.abs $push3=, $1
11378 ; NO-SIMD128-NEXT:    f32.store 0($0), $pop3
11379 ; NO-SIMD128-NEXT:    return
11381 ; NO-SIMD128-FAST-LABEL: abs_v4f32:
11382 ; NO-SIMD128-FAST:         .functype abs_v4f32 (i32, f32, f32, f32, f32) -> ()
11383 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
11384 ; NO-SIMD128-FAST-NEXT:    f32.abs $push0=, $1
11385 ; NO-SIMD128-FAST-NEXT:    f32.store 0($0), $pop0
11386 ; NO-SIMD128-FAST-NEXT:    f32.abs $push1=, $2
11387 ; NO-SIMD128-FAST-NEXT:    f32.store 4($0), $pop1
11388 ; NO-SIMD128-FAST-NEXT:    f32.abs $push2=, $3
11389 ; NO-SIMD128-FAST-NEXT:    f32.store 8($0), $pop2
11390 ; NO-SIMD128-FAST-NEXT:    f32.abs $push3=, $4
11391 ; NO-SIMD128-FAST-NEXT:    f32.store 12($0), $pop3
11392 ; NO-SIMD128-FAST-NEXT:    return
11393   %a = call <4 x float> @llvm.fabs.v4f32(<4 x float> %x)
11394   ret <4 x float> %a
11397 define <4 x float> @min_unordered_v4f32(<4 x float> %x) {
11398 ; SIMD128-LABEL: min_unordered_v4f32:
11399 ; SIMD128:         .functype min_unordered_v4f32 (v128) -> (v128)
11400 ; SIMD128-NEXT:  # %bb.0:
11401 ; SIMD128-NEXT:    v128.const $push0=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2
11402 ; SIMD128-NEXT:    f32x4.pmin $push1=, $0, $pop0
11403 ; SIMD128-NEXT:    return $pop1
11405 ; SIMD128-FAST-LABEL: min_unordered_v4f32:
11406 ; SIMD128-FAST:         .functype min_unordered_v4f32 (v128) -> (v128)
11407 ; SIMD128-FAST-NEXT:  # %bb.0:
11408 ; SIMD128-FAST-NEXT:    v128.const $push1=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2
11409 ; SIMD128-FAST-NEXT:    f32x4.pmin $push0=, $0, $pop1
11410 ; SIMD128-FAST-NEXT:    return $pop0
11412 ; NO-SIMD128-LABEL: min_unordered_v4f32:
11413 ; NO-SIMD128:         .functype min_unordered_v4f32 (i32, f32, f32, f32, f32) -> ()
11414 ; NO-SIMD128-NEXT:  # %bb.0:
11415 ; NO-SIMD128-NEXT:    f32.const $push0=, 0x1.4p2
11416 ; NO-SIMD128-NEXT:    f32.const $push15=, 0x1.4p2
11417 ; NO-SIMD128-NEXT:    f32.gt $push1=, $4, $pop15
11418 ; NO-SIMD128-NEXT:    f32.select $push2=, $pop0, $4, $pop1
11419 ; NO-SIMD128-NEXT:    f32.store 12($0), $pop2
11420 ; NO-SIMD128-NEXT:    f32.const $push14=, 0x1.4p2
11421 ; NO-SIMD128-NEXT:    f32.const $push13=, 0x1.4p2
11422 ; NO-SIMD128-NEXT:    f32.gt $push3=, $3, $pop13
11423 ; NO-SIMD128-NEXT:    f32.select $push4=, $pop14, $3, $pop3
11424 ; NO-SIMD128-NEXT:    f32.store 8($0), $pop4
11425 ; NO-SIMD128-NEXT:    f32.const $push12=, 0x1.4p2
11426 ; NO-SIMD128-NEXT:    f32.const $push11=, 0x1.4p2
11427 ; NO-SIMD128-NEXT:    f32.gt $push5=, $2, $pop11
11428 ; NO-SIMD128-NEXT:    f32.select $push6=, $pop12, $2, $pop5
11429 ; NO-SIMD128-NEXT:    f32.store 4($0), $pop6
11430 ; NO-SIMD128-NEXT:    f32.const $push10=, 0x1.4p2
11431 ; NO-SIMD128-NEXT:    f32.const $push9=, 0x1.4p2
11432 ; NO-SIMD128-NEXT:    f32.gt $push7=, $1, $pop9
11433 ; NO-SIMD128-NEXT:    f32.select $push8=, $pop10, $1, $pop7
11434 ; NO-SIMD128-NEXT:    f32.store 0($0), $pop8
11435 ; NO-SIMD128-NEXT:    return
11437 ; NO-SIMD128-FAST-LABEL: min_unordered_v4f32:
11438 ; NO-SIMD128-FAST:         .functype min_unordered_v4f32 (i32, f32, f32, f32, f32) -> ()
11439 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
11440 ; NO-SIMD128-FAST-NEXT:    f32.const $push0=, 0x1.4p2
11441 ; NO-SIMD128-FAST-NEXT:    f32.const $push15=, 0x1.4p2
11442 ; NO-SIMD128-FAST-NEXT:    f32.gt $push1=, $1, $pop15
11443 ; NO-SIMD128-FAST-NEXT:    f32.select $push2=, $pop0, $1, $pop1
11444 ; NO-SIMD128-FAST-NEXT:    f32.store 0($0), $pop2
11445 ; NO-SIMD128-FAST-NEXT:    f32.const $push14=, 0x1.4p2
11446 ; NO-SIMD128-FAST-NEXT:    f32.const $push13=, 0x1.4p2
11447 ; NO-SIMD128-FAST-NEXT:    f32.gt $push3=, $2, $pop13
11448 ; NO-SIMD128-FAST-NEXT:    f32.select $push4=, $pop14, $2, $pop3
11449 ; NO-SIMD128-FAST-NEXT:    f32.store 4($0), $pop4
11450 ; NO-SIMD128-FAST-NEXT:    f32.const $push12=, 0x1.4p2
11451 ; NO-SIMD128-FAST-NEXT:    f32.const $push11=, 0x1.4p2
11452 ; NO-SIMD128-FAST-NEXT:    f32.gt $push5=, $3, $pop11
11453 ; NO-SIMD128-FAST-NEXT:    f32.select $push6=, $pop12, $3, $pop5
11454 ; NO-SIMD128-FAST-NEXT:    f32.store 8($0), $pop6
11455 ; NO-SIMD128-FAST-NEXT:    f32.const $push10=, 0x1.4p2
11456 ; NO-SIMD128-FAST-NEXT:    f32.const $push9=, 0x1.4p2
11457 ; NO-SIMD128-FAST-NEXT:    f32.gt $push7=, $4, $pop9
11458 ; NO-SIMD128-FAST-NEXT:    f32.select $push8=, $pop10, $4, $pop7
11459 ; NO-SIMD128-FAST-NEXT:    f32.store 12($0), $pop8
11460 ; NO-SIMD128-FAST-NEXT:    return
11461   %cmps = fcmp ule <4 x float> %x, <float 5., float 5., float 5., float 5.>
11462   %a = select <4 x i1> %cmps, <4 x float> %x,
11463     <4 x float> <float 5., float 5., float 5., float 5.>
11464   ret <4 x float> %a
11467 define <4 x float> @max_unordered_v4f32(<4 x float> %x) {
11468 ; SIMD128-LABEL: max_unordered_v4f32:
11469 ; SIMD128:         .functype max_unordered_v4f32 (v128) -> (v128)
11470 ; SIMD128-NEXT:  # %bb.0:
11471 ; SIMD128-NEXT:    v128.const $push0=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2
11472 ; SIMD128-NEXT:    f32x4.pmax $push1=, $0, $pop0
11473 ; SIMD128-NEXT:    return $pop1
11475 ; SIMD128-FAST-LABEL: max_unordered_v4f32:
11476 ; SIMD128-FAST:         .functype max_unordered_v4f32 (v128) -> (v128)
11477 ; SIMD128-FAST-NEXT:  # %bb.0:
11478 ; SIMD128-FAST-NEXT:    v128.const $push1=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2
11479 ; SIMD128-FAST-NEXT:    f32x4.pmax $push0=, $0, $pop1
11480 ; SIMD128-FAST-NEXT:    return $pop0
11482 ; NO-SIMD128-LABEL: max_unordered_v4f32:
11483 ; NO-SIMD128:         .functype max_unordered_v4f32 (i32, f32, f32, f32, f32) -> ()
11484 ; NO-SIMD128-NEXT:  # %bb.0:
11485 ; NO-SIMD128-NEXT:    f32.const $push0=, 0x1.4p2
11486 ; NO-SIMD128-NEXT:    f32.const $push15=, 0x1.4p2
11487 ; NO-SIMD128-NEXT:    f32.lt $push1=, $4, $pop15
11488 ; NO-SIMD128-NEXT:    f32.select $push2=, $pop0, $4, $pop1
11489 ; NO-SIMD128-NEXT:    f32.store 12($0), $pop2
11490 ; NO-SIMD128-NEXT:    f32.const $push14=, 0x1.4p2
11491 ; NO-SIMD128-NEXT:    f32.const $push13=, 0x1.4p2
11492 ; NO-SIMD128-NEXT:    f32.lt $push3=, $3, $pop13
11493 ; NO-SIMD128-NEXT:    f32.select $push4=, $pop14, $3, $pop3
11494 ; NO-SIMD128-NEXT:    f32.store 8($0), $pop4
11495 ; NO-SIMD128-NEXT:    f32.const $push12=, 0x1.4p2
11496 ; NO-SIMD128-NEXT:    f32.const $push11=, 0x1.4p2
11497 ; NO-SIMD128-NEXT:    f32.lt $push5=, $2, $pop11
11498 ; NO-SIMD128-NEXT:    f32.select $push6=, $pop12, $2, $pop5
11499 ; NO-SIMD128-NEXT:    f32.store 4($0), $pop6
11500 ; NO-SIMD128-NEXT:    f32.const $push10=, 0x1.4p2
11501 ; NO-SIMD128-NEXT:    f32.const $push9=, 0x1.4p2
11502 ; NO-SIMD128-NEXT:    f32.lt $push7=, $1, $pop9
11503 ; NO-SIMD128-NEXT:    f32.select $push8=, $pop10, $1, $pop7
11504 ; NO-SIMD128-NEXT:    f32.store 0($0), $pop8
11505 ; NO-SIMD128-NEXT:    return
11507 ; NO-SIMD128-FAST-LABEL: max_unordered_v4f32:
11508 ; NO-SIMD128-FAST:         .functype max_unordered_v4f32 (i32, f32, f32, f32, f32) -> ()
11509 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
11510 ; NO-SIMD128-FAST-NEXT:    f32.const $push0=, 0x1.4p2
11511 ; NO-SIMD128-FAST-NEXT:    f32.const $push15=, 0x1.4p2
11512 ; NO-SIMD128-FAST-NEXT:    f32.lt $push1=, $1, $pop15
11513 ; NO-SIMD128-FAST-NEXT:    f32.select $push2=, $pop0, $1, $pop1
11514 ; NO-SIMD128-FAST-NEXT:    f32.store 0($0), $pop2
11515 ; NO-SIMD128-FAST-NEXT:    f32.const $push14=, 0x1.4p2
11516 ; NO-SIMD128-FAST-NEXT:    f32.const $push13=, 0x1.4p2
11517 ; NO-SIMD128-FAST-NEXT:    f32.lt $push3=, $2, $pop13
11518 ; NO-SIMD128-FAST-NEXT:    f32.select $push4=, $pop14, $2, $pop3
11519 ; NO-SIMD128-FAST-NEXT:    f32.store 4($0), $pop4
11520 ; NO-SIMD128-FAST-NEXT:    f32.const $push12=, 0x1.4p2
11521 ; NO-SIMD128-FAST-NEXT:    f32.const $push11=, 0x1.4p2
11522 ; NO-SIMD128-FAST-NEXT:    f32.lt $push5=, $3, $pop11
11523 ; NO-SIMD128-FAST-NEXT:    f32.select $push6=, $pop12, $3, $pop5
11524 ; NO-SIMD128-FAST-NEXT:    f32.store 8($0), $pop6
11525 ; NO-SIMD128-FAST-NEXT:    f32.const $push10=, 0x1.4p2
11526 ; NO-SIMD128-FAST-NEXT:    f32.const $push9=, 0x1.4p2
11527 ; NO-SIMD128-FAST-NEXT:    f32.lt $push7=, $4, $pop9
11528 ; NO-SIMD128-FAST-NEXT:    f32.select $push8=, $pop10, $4, $pop7
11529 ; NO-SIMD128-FAST-NEXT:    f32.store 12($0), $pop8
11530 ; NO-SIMD128-FAST-NEXT:    return
11531   %cmps = fcmp uge <4 x float> %x, <float 5., float 5., float 5., float 5.>
11532   %a = select <4 x i1> %cmps, <4 x float> %x,
11533     <4 x float> <float 5., float 5., float 5., float 5.>
11534   ret <4 x float> %a
11537 define <4 x float> @min_ordered_v4f32(<4 x float> %x) {
11538 ; SIMD128-LABEL: min_ordered_v4f32:
11539 ; SIMD128:         .functype min_ordered_v4f32 (v128) -> (v128)
11540 ; SIMD128-NEXT:  # %bb.0:
11541 ; SIMD128-NEXT:    v128.const $push0=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2
11542 ; SIMD128-NEXT:    f32x4.pmin $push1=, $0, $pop0
11543 ; SIMD128-NEXT:    return $pop1
11545 ; SIMD128-FAST-LABEL: min_ordered_v4f32:
11546 ; SIMD128-FAST:         .functype min_ordered_v4f32 (v128) -> (v128)
11547 ; SIMD128-FAST-NEXT:  # %bb.0:
11548 ; SIMD128-FAST-NEXT:    v128.const $push1=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2
11549 ; SIMD128-FAST-NEXT:    f32x4.pmin $push0=, $0, $pop1
11550 ; SIMD128-FAST-NEXT:    return $pop0
11552 ; NO-SIMD128-LABEL: min_ordered_v4f32:
11553 ; NO-SIMD128:         .functype min_ordered_v4f32 (i32, f32, f32, f32, f32) -> ()
11554 ; NO-SIMD128-NEXT:  # %bb.0:
11555 ; NO-SIMD128-NEXT:    f32.const $push0=, 0x1.4p2
11556 ; NO-SIMD128-NEXT:    f32.const $push15=, 0x1.4p2
11557 ; NO-SIMD128-NEXT:    f32.ge $push1=, $4, $pop15
11558 ; NO-SIMD128-NEXT:    f32.select $push2=, $pop0, $4, $pop1
11559 ; NO-SIMD128-NEXT:    f32.store 12($0), $pop2
11560 ; NO-SIMD128-NEXT:    f32.const $push14=, 0x1.4p2
11561 ; NO-SIMD128-NEXT:    f32.const $push13=, 0x1.4p2
11562 ; NO-SIMD128-NEXT:    f32.ge $push3=, $3, $pop13
11563 ; NO-SIMD128-NEXT:    f32.select $push4=, $pop14, $3, $pop3
11564 ; NO-SIMD128-NEXT:    f32.store 8($0), $pop4
11565 ; NO-SIMD128-NEXT:    f32.const $push12=, 0x1.4p2
11566 ; NO-SIMD128-NEXT:    f32.const $push11=, 0x1.4p2
11567 ; NO-SIMD128-NEXT:    f32.ge $push5=, $2, $pop11
11568 ; NO-SIMD128-NEXT:    f32.select $push6=, $pop12, $2, $pop5
11569 ; NO-SIMD128-NEXT:    f32.store 4($0), $pop6
11570 ; NO-SIMD128-NEXT:    f32.const $push10=, 0x1.4p2
11571 ; NO-SIMD128-NEXT:    f32.const $push9=, 0x1.4p2
11572 ; NO-SIMD128-NEXT:    f32.ge $push7=, $1, $pop9
11573 ; NO-SIMD128-NEXT:    f32.select $push8=, $pop10, $1, $pop7
11574 ; NO-SIMD128-NEXT:    f32.store 0($0), $pop8
11575 ; NO-SIMD128-NEXT:    return
11577 ; NO-SIMD128-FAST-LABEL: min_ordered_v4f32:
11578 ; NO-SIMD128-FAST:         .functype min_ordered_v4f32 (i32, f32, f32, f32, f32) -> ()
11579 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
11580 ; NO-SIMD128-FAST-NEXT:    f32.const $push0=, 0x1.4p2
11581 ; NO-SIMD128-FAST-NEXT:    f32.const $push15=, 0x1.4p2
11582 ; NO-SIMD128-FAST-NEXT:    f32.ge $push1=, $1, $pop15
11583 ; NO-SIMD128-FAST-NEXT:    f32.select $push2=, $pop0, $1, $pop1
11584 ; NO-SIMD128-FAST-NEXT:    f32.store 0($0), $pop2
11585 ; NO-SIMD128-FAST-NEXT:    f32.const $push14=, 0x1.4p2
11586 ; NO-SIMD128-FAST-NEXT:    f32.const $push13=, 0x1.4p2
11587 ; NO-SIMD128-FAST-NEXT:    f32.ge $push3=, $2, $pop13
11588 ; NO-SIMD128-FAST-NEXT:    f32.select $push4=, $pop14, $2, $pop3
11589 ; NO-SIMD128-FAST-NEXT:    f32.store 4($0), $pop4
11590 ; NO-SIMD128-FAST-NEXT:    f32.const $push12=, 0x1.4p2
11591 ; NO-SIMD128-FAST-NEXT:    f32.const $push11=, 0x1.4p2
11592 ; NO-SIMD128-FAST-NEXT:    f32.ge $push5=, $3, $pop11
11593 ; NO-SIMD128-FAST-NEXT:    f32.select $push6=, $pop12, $3, $pop5
11594 ; NO-SIMD128-FAST-NEXT:    f32.store 8($0), $pop6
11595 ; NO-SIMD128-FAST-NEXT:    f32.const $push10=, 0x1.4p2
11596 ; NO-SIMD128-FAST-NEXT:    f32.const $push9=, 0x1.4p2
11597 ; NO-SIMD128-FAST-NEXT:    f32.ge $push7=, $4, $pop9
11598 ; NO-SIMD128-FAST-NEXT:    f32.select $push8=, $pop10, $4, $pop7
11599 ; NO-SIMD128-FAST-NEXT:    f32.store 12($0), $pop8
11600 ; NO-SIMD128-FAST-NEXT:    return
11601   %cmps = fcmp ole <4 x float> <float 5., float 5., float 5., float 5.>, %x
11602   %a = select <4 x i1> %cmps,
11603     <4 x float> <float 5., float 5., float 5., float 5.>, <4 x float> %x
11604   ret <4 x float> %a
11607 define <4 x float> @max_ordered_v4f32(<4 x float> %x) {
11608 ; SIMD128-LABEL: max_ordered_v4f32:
11609 ; SIMD128:         .functype max_ordered_v4f32 (v128) -> (v128)
11610 ; SIMD128-NEXT:  # %bb.0:
11611 ; SIMD128-NEXT:    v128.const $push0=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2
11612 ; SIMD128-NEXT:    f32x4.pmax $push1=, $0, $pop0
11613 ; SIMD128-NEXT:    return $pop1
11615 ; SIMD128-FAST-LABEL: max_ordered_v4f32:
11616 ; SIMD128-FAST:         .functype max_ordered_v4f32 (v128) -> (v128)
11617 ; SIMD128-FAST-NEXT:  # %bb.0:
11618 ; SIMD128-FAST-NEXT:    v128.const $push1=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2
11619 ; SIMD128-FAST-NEXT:    f32x4.pmax $push0=, $0, $pop1
11620 ; SIMD128-FAST-NEXT:    return $pop0
11622 ; NO-SIMD128-LABEL: max_ordered_v4f32:
11623 ; NO-SIMD128:         .functype max_ordered_v4f32 (i32, f32, f32, f32, f32) -> ()
11624 ; NO-SIMD128-NEXT:  # %bb.0:
11625 ; NO-SIMD128-NEXT:    f32.const $push0=, 0x1.4p2
11626 ; NO-SIMD128-NEXT:    f32.const $push15=, 0x1.4p2
11627 ; NO-SIMD128-NEXT:    f32.le $push1=, $4, $pop15
11628 ; NO-SIMD128-NEXT:    f32.select $push2=, $pop0, $4, $pop1
11629 ; NO-SIMD128-NEXT:    f32.store 12($0), $pop2
11630 ; NO-SIMD128-NEXT:    f32.const $push14=, 0x1.4p2
11631 ; NO-SIMD128-NEXT:    f32.const $push13=, 0x1.4p2
11632 ; NO-SIMD128-NEXT:    f32.le $push3=, $3, $pop13
11633 ; NO-SIMD128-NEXT:    f32.select $push4=, $pop14, $3, $pop3
11634 ; NO-SIMD128-NEXT:    f32.store 8($0), $pop4
11635 ; NO-SIMD128-NEXT:    f32.const $push12=, 0x1.4p2
11636 ; NO-SIMD128-NEXT:    f32.const $push11=, 0x1.4p2
11637 ; NO-SIMD128-NEXT:    f32.le $push5=, $2, $pop11
11638 ; NO-SIMD128-NEXT:    f32.select $push6=, $pop12, $2, $pop5
11639 ; NO-SIMD128-NEXT:    f32.store 4($0), $pop6
11640 ; NO-SIMD128-NEXT:    f32.const $push10=, 0x1.4p2
11641 ; NO-SIMD128-NEXT:    f32.const $push9=, 0x1.4p2
11642 ; NO-SIMD128-NEXT:    f32.le $push7=, $1, $pop9
11643 ; NO-SIMD128-NEXT:    f32.select $push8=, $pop10, $1, $pop7
11644 ; NO-SIMD128-NEXT:    f32.store 0($0), $pop8
11645 ; NO-SIMD128-NEXT:    return
11647 ; NO-SIMD128-FAST-LABEL: max_ordered_v4f32:
11648 ; NO-SIMD128-FAST:         .functype max_ordered_v4f32 (i32, f32, f32, f32, f32) -> ()
11649 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
11650 ; NO-SIMD128-FAST-NEXT:    f32.const $push0=, 0x1.4p2
11651 ; NO-SIMD128-FAST-NEXT:    f32.const $push15=, 0x1.4p2
11652 ; NO-SIMD128-FAST-NEXT:    f32.le $push1=, $1, $pop15
11653 ; NO-SIMD128-FAST-NEXT:    f32.select $push2=, $pop0, $1, $pop1
11654 ; NO-SIMD128-FAST-NEXT:    f32.store 0($0), $pop2
11655 ; NO-SIMD128-FAST-NEXT:    f32.const $push14=, 0x1.4p2
11656 ; NO-SIMD128-FAST-NEXT:    f32.const $push13=, 0x1.4p2
11657 ; NO-SIMD128-FAST-NEXT:    f32.le $push3=, $2, $pop13
11658 ; NO-SIMD128-FAST-NEXT:    f32.select $push4=, $pop14, $2, $pop3
11659 ; NO-SIMD128-FAST-NEXT:    f32.store 4($0), $pop4
11660 ; NO-SIMD128-FAST-NEXT:    f32.const $push12=, 0x1.4p2
11661 ; NO-SIMD128-FAST-NEXT:    f32.const $push11=, 0x1.4p2
11662 ; NO-SIMD128-FAST-NEXT:    f32.le $push5=, $3, $pop11
11663 ; NO-SIMD128-FAST-NEXT:    f32.select $push6=, $pop12, $3, $pop5
11664 ; NO-SIMD128-FAST-NEXT:    f32.store 8($0), $pop6
11665 ; NO-SIMD128-FAST-NEXT:    f32.const $push10=, 0x1.4p2
11666 ; NO-SIMD128-FAST-NEXT:    f32.const $push9=, 0x1.4p2
11667 ; NO-SIMD128-FAST-NEXT:    f32.le $push7=, $4, $pop9
11668 ; NO-SIMD128-FAST-NEXT:    f32.select $push8=, $pop10, $4, $pop7
11669 ; NO-SIMD128-FAST-NEXT:    f32.store 12($0), $pop8
11670 ; NO-SIMD128-FAST-NEXT:    return
11671   %cmps = fcmp oge <4 x float> <float 5., float 5., float 5., float 5.>, %x
11672   %a = select <4 x i1> %cmps,
11673     <4 x float> <float 5., float 5., float 5., float 5.>, <4 x float> %x
11674   ret <4 x float> %a
11677 declare <4 x float> @llvm.minimum.v4f32(<4 x float>, <4 x float>)
11678 define <4 x float> @min_intrinsic_v4f32(<4 x float> %x, <4 x float> %y) {
11679 ; SIMD128-LABEL: min_intrinsic_v4f32:
11680 ; SIMD128:         .functype min_intrinsic_v4f32 (v128, v128) -> (v128)
11681 ; SIMD128-NEXT:  # %bb.0:
11682 ; SIMD128-NEXT:    f32x4.min $push0=, $0, $1
11683 ; SIMD128-NEXT:    return $pop0
11685 ; SIMD128-FAST-LABEL: min_intrinsic_v4f32:
11686 ; SIMD128-FAST:         .functype min_intrinsic_v4f32 (v128, v128) -> (v128)
11687 ; SIMD128-FAST-NEXT:  # %bb.0:
11688 ; SIMD128-FAST-NEXT:    f32x4.min $push0=, $0, $1
11689 ; SIMD128-FAST-NEXT:    return $pop0
11691 ; NO-SIMD128-LABEL: min_intrinsic_v4f32:
11692 ; NO-SIMD128:         .functype min_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
11693 ; NO-SIMD128-NEXT:  # %bb.0:
11694 ; NO-SIMD128-NEXT:    f32.min $push0=, $4, $8
11695 ; NO-SIMD128-NEXT:    f32.store 12($0), $pop0
11696 ; NO-SIMD128-NEXT:    f32.min $push1=, $3, $7
11697 ; NO-SIMD128-NEXT:    f32.store 8($0), $pop1
11698 ; NO-SIMD128-NEXT:    f32.min $push2=, $2, $6
11699 ; NO-SIMD128-NEXT:    f32.store 4($0), $pop2
11700 ; NO-SIMD128-NEXT:    f32.min $push3=, $1, $5
11701 ; NO-SIMD128-NEXT:    f32.store 0($0), $pop3
11702 ; NO-SIMD128-NEXT:    return
11704 ; NO-SIMD128-FAST-LABEL: min_intrinsic_v4f32:
11705 ; NO-SIMD128-FAST:         .functype min_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
11706 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
11707 ; NO-SIMD128-FAST-NEXT:    f32.min $push0=, $1, $5
11708 ; NO-SIMD128-FAST-NEXT:    f32.store 0($0), $pop0
11709 ; NO-SIMD128-FAST-NEXT:    f32.min $push1=, $2, $6
11710 ; NO-SIMD128-FAST-NEXT:    f32.store 4($0), $pop1
11711 ; NO-SIMD128-FAST-NEXT:    f32.min $push2=, $3, $7
11712 ; NO-SIMD128-FAST-NEXT:    f32.store 8($0), $pop2
11713 ; NO-SIMD128-FAST-NEXT:    f32.min $push3=, $4, $8
11714 ; NO-SIMD128-FAST-NEXT:    f32.store 12($0), $pop3
11715 ; NO-SIMD128-FAST-NEXT:    return
11716   %a = call <4 x float> @llvm.minimum.v4f32(<4 x float> %x, <4 x float> %y)
11717   ret <4 x float> %a
11720 declare <4 x float> @llvm.minnum.v4f32(<4 x float>, <4 x float>)
11721 define <4 x float> @minnum_intrinsic_v4f32(<4 x float> %x, <4 x float> %y) {
11722 ; SIMD128-LABEL: minnum_intrinsic_v4f32:
11723 ; SIMD128:         .functype minnum_intrinsic_v4f32 (v128, v128) -> (v128)
11724 ; SIMD128-NEXT:  # %bb.0:
11725 ; SIMD128-NEXT:    f32x4.extract_lane $push27=, $0, 0
11726 ; SIMD128-NEXT:    local.tee $push26=, $3=, $pop27
11727 ; SIMD128-NEXT:    f32x4.extract_lane $push25=, $1, 0
11728 ; SIMD128-NEXT:    local.tee $push24=, $2=, $pop25
11729 ; SIMD128-NEXT:    f32.lt $push2=, $3, $2
11730 ; SIMD128-NEXT:    f32.select $push3=, $pop26, $pop24, $pop2
11731 ; SIMD128-NEXT:    f32x4.splat $push4=, $pop3
11732 ; SIMD128-NEXT:    f32x4.extract_lane $push23=, $0, 1
11733 ; SIMD128-NEXT:    local.tee $push22=, $3=, $pop23
11734 ; SIMD128-NEXT:    f32x4.extract_lane $push21=, $1, 1
11735 ; SIMD128-NEXT:    local.tee $push20=, $2=, $pop21
11736 ; SIMD128-NEXT:    f32.lt $push0=, $3, $2
11737 ; SIMD128-NEXT:    f32.select $push1=, $pop22, $pop20, $pop0
11738 ; SIMD128-NEXT:    f32x4.replace_lane $push5=, $pop4, 1, $pop1
11739 ; SIMD128-NEXT:    f32x4.extract_lane $push19=, $0, 2
11740 ; SIMD128-NEXT:    local.tee $push18=, $3=, $pop19
11741 ; SIMD128-NEXT:    f32x4.extract_lane $push17=, $1, 2
11742 ; SIMD128-NEXT:    local.tee $push16=, $2=, $pop17
11743 ; SIMD128-NEXT:    f32.lt $push6=, $3, $2
11744 ; SIMD128-NEXT:    f32.select $push7=, $pop18, $pop16, $pop6
11745 ; SIMD128-NEXT:    f32x4.replace_lane $push8=, $pop5, 2, $pop7
11746 ; SIMD128-NEXT:    f32x4.extract_lane $push15=, $0, 3
11747 ; SIMD128-NEXT:    local.tee $push14=, $3=, $pop15
11748 ; SIMD128-NEXT:    f32x4.extract_lane $push13=, $1, 3
11749 ; SIMD128-NEXT:    local.tee $push12=, $2=, $pop13
11750 ; SIMD128-NEXT:    f32.lt $push9=, $3, $2
11751 ; SIMD128-NEXT:    f32.select $push10=, $pop14, $pop12, $pop9
11752 ; SIMD128-NEXT:    f32x4.replace_lane $push11=, $pop8, 3, $pop10
11753 ; SIMD128-NEXT:    return $pop11
11755 ; SIMD128-FAST-LABEL: minnum_intrinsic_v4f32:
11756 ; SIMD128-FAST:         .functype minnum_intrinsic_v4f32 (v128, v128) -> (v128)
11757 ; SIMD128-FAST-NEXT:  # %bb.0:
11758 ; SIMD128-FAST-NEXT:    f32x4.extract_lane $push27=, $0, 0
11759 ; SIMD128-FAST-NEXT:    local.tee $push26=, $3=, $pop27
11760 ; SIMD128-FAST-NEXT:    f32x4.extract_lane $push25=, $1, 0
11761 ; SIMD128-FAST-NEXT:    local.tee $push24=, $2=, $pop25
11762 ; SIMD128-FAST-NEXT:    f32.lt $push3=, $3, $2
11763 ; SIMD128-FAST-NEXT:    f32.select $push4=, $pop26, $pop24, $pop3
11764 ; SIMD128-FAST-NEXT:    f32x4.splat $push5=, $pop4
11765 ; SIMD128-FAST-NEXT:    f32x4.extract_lane $push23=, $0, 1
11766 ; SIMD128-FAST-NEXT:    local.tee $push22=, $3=, $pop23
11767 ; SIMD128-FAST-NEXT:    f32x4.extract_lane $push21=, $1, 1
11768 ; SIMD128-FAST-NEXT:    local.tee $push20=, $2=, $pop21
11769 ; SIMD128-FAST-NEXT:    f32.lt $push1=, $3, $2
11770 ; SIMD128-FAST-NEXT:    f32.select $push2=, $pop22, $pop20, $pop1
11771 ; SIMD128-FAST-NEXT:    f32x4.replace_lane $push6=, $pop5, 1, $pop2
11772 ; SIMD128-FAST-NEXT:    f32x4.extract_lane $push19=, $0, 2
11773 ; SIMD128-FAST-NEXT:    local.tee $push18=, $3=, $pop19
11774 ; SIMD128-FAST-NEXT:    f32x4.extract_lane $push17=, $1, 2
11775 ; SIMD128-FAST-NEXT:    local.tee $push16=, $2=, $pop17
11776 ; SIMD128-FAST-NEXT:    f32.lt $push7=, $3, $2
11777 ; SIMD128-FAST-NEXT:    f32.select $push8=, $pop18, $pop16, $pop7
11778 ; SIMD128-FAST-NEXT:    f32x4.replace_lane $push9=, $pop6, 2, $pop8
11779 ; SIMD128-FAST-NEXT:    f32x4.extract_lane $push15=, $0, 3
11780 ; SIMD128-FAST-NEXT:    local.tee $push14=, $3=, $pop15
11781 ; SIMD128-FAST-NEXT:    f32x4.extract_lane $push13=, $1, 3
11782 ; SIMD128-FAST-NEXT:    local.tee $push12=, $2=, $pop13
11783 ; SIMD128-FAST-NEXT:    f32.lt $push10=, $3, $2
11784 ; SIMD128-FAST-NEXT:    f32.select $push11=, $pop14, $pop12, $pop10
11785 ; SIMD128-FAST-NEXT:    f32x4.replace_lane $push0=, $pop9, 3, $pop11
11786 ; SIMD128-FAST-NEXT:    return $pop0
11788 ; NO-SIMD128-LABEL: minnum_intrinsic_v4f32:
11789 ; NO-SIMD128:         .functype minnum_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
11790 ; NO-SIMD128-NEXT:  # %bb.0:
11791 ; NO-SIMD128-NEXT:    f32.lt $push0=, $4, $8
11792 ; NO-SIMD128-NEXT:    f32.select $push1=, $4, $8, $pop0
11793 ; NO-SIMD128-NEXT:    f32.store 12($0), $pop1
11794 ; NO-SIMD128-NEXT:    f32.lt $push2=, $3, $7
11795 ; NO-SIMD128-NEXT:    f32.select $push3=, $3, $7, $pop2
11796 ; NO-SIMD128-NEXT:    f32.store 8($0), $pop3
11797 ; NO-SIMD128-NEXT:    f32.lt $push4=, $2, $6
11798 ; NO-SIMD128-NEXT:    f32.select $push5=, $2, $6, $pop4
11799 ; NO-SIMD128-NEXT:    f32.store 4($0), $pop5
11800 ; NO-SIMD128-NEXT:    f32.lt $push6=, $1, $5
11801 ; NO-SIMD128-NEXT:    f32.select $push7=, $1, $5, $pop6
11802 ; NO-SIMD128-NEXT:    f32.store 0($0), $pop7
11803 ; NO-SIMD128-NEXT:    return
11805 ; NO-SIMD128-FAST-LABEL: minnum_intrinsic_v4f32:
11806 ; NO-SIMD128-FAST:         .functype minnum_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
11807 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
11808 ; NO-SIMD128-FAST-NEXT:    f32.lt $push0=, $1, $5
11809 ; NO-SIMD128-FAST-NEXT:    f32.select $push1=, $1, $5, $pop0
11810 ; NO-SIMD128-FAST-NEXT:    f32.store 0($0), $pop1
11811 ; NO-SIMD128-FAST-NEXT:    f32.lt $push2=, $2, $6
11812 ; NO-SIMD128-FAST-NEXT:    f32.select $push3=, $2, $6, $pop2
11813 ; NO-SIMD128-FAST-NEXT:    f32.store 4($0), $pop3
11814 ; NO-SIMD128-FAST-NEXT:    f32.lt $push4=, $3, $7
11815 ; NO-SIMD128-FAST-NEXT:    f32.select $push5=, $3, $7, $pop4
11816 ; NO-SIMD128-FAST-NEXT:    f32.store 8($0), $pop5
11817 ; NO-SIMD128-FAST-NEXT:    f32.lt $push6=, $4, $8
11818 ; NO-SIMD128-FAST-NEXT:    f32.select $push7=, $4, $8, $pop6
11819 ; NO-SIMD128-FAST-NEXT:    f32.store 12($0), $pop7
11820 ; NO-SIMD128-FAST-NEXT:    return
11821   %a = call nnan <4 x float> @llvm.minnum.v4f32(<4 x float> %x, <4 x float> %y)
11822   ret <4 x float> %a
11825 define <4 x float> @minnum_nsz_intrinsic_v4f32(<4 x float> %x, <4 x float> %y) {
11826 ; SIMD128-LABEL: minnum_nsz_intrinsic_v4f32:
11827 ; SIMD128:         .functype minnum_nsz_intrinsic_v4f32 (v128, v128) -> (v128)
11828 ; SIMD128-NEXT:  # %bb.0:
11829 ; SIMD128-NEXT:    f32x4.min $push0=, $0, $1
11830 ; SIMD128-NEXT:    return $pop0
11832 ; SIMD128-FAST-LABEL: minnum_nsz_intrinsic_v4f32:
11833 ; SIMD128-FAST:         .functype minnum_nsz_intrinsic_v4f32 (v128, v128) -> (v128)
11834 ; SIMD128-FAST-NEXT:  # %bb.0:
11835 ; SIMD128-FAST-NEXT:    f32x4.min $push0=, $0, $1
11836 ; SIMD128-FAST-NEXT:    return $pop0
11838 ; NO-SIMD128-LABEL: minnum_nsz_intrinsic_v4f32:
11839 ; NO-SIMD128:         .functype minnum_nsz_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
11840 ; NO-SIMD128-NEXT:  # %bb.0:
11841 ; NO-SIMD128-NEXT:    f32.min $push0=, $4, $8
11842 ; NO-SIMD128-NEXT:    f32.store 12($0), $pop0
11843 ; NO-SIMD128-NEXT:    f32.min $push1=, $3, $7
11844 ; NO-SIMD128-NEXT:    f32.store 8($0), $pop1
11845 ; NO-SIMD128-NEXT:    f32.min $push2=, $2, $6
11846 ; NO-SIMD128-NEXT:    f32.store 4($0), $pop2
11847 ; NO-SIMD128-NEXT:    f32.min $push3=, $1, $5
11848 ; NO-SIMD128-NEXT:    f32.store 0($0), $pop3
11849 ; NO-SIMD128-NEXT:    return
11851 ; NO-SIMD128-FAST-LABEL: minnum_nsz_intrinsic_v4f32:
11852 ; NO-SIMD128-FAST:         .functype minnum_nsz_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
11853 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
11854 ; NO-SIMD128-FAST-NEXT:    f32.min $push0=, $1, $5
11855 ; NO-SIMD128-FAST-NEXT:    f32.store 0($0), $pop0
11856 ; NO-SIMD128-FAST-NEXT:    f32.min $push1=, $2, $6
11857 ; NO-SIMD128-FAST-NEXT:    f32.store 4($0), $pop1
11858 ; NO-SIMD128-FAST-NEXT:    f32.min $push2=, $3, $7
11859 ; NO-SIMD128-FAST-NEXT:    f32.store 8($0), $pop2
11860 ; NO-SIMD128-FAST-NEXT:    f32.min $push3=, $4, $8
11861 ; NO-SIMD128-FAST-NEXT:    f32.store 12($0), $pop3
11862 ; NO-SIMD128-FAST-NEXT:    return
11863   %a = call nnan nsz <4 x float> @llvm.minnum.v4f32(<4 x float> %x, <4 x float> %y)
11864   ret <4 x float> %a
11867 define <4 x float> @fminnumv432_non_zero_intrinsic(<4 x float> %x) {
11868 ; SIMD128-LABEL: fminnumv432_non_zero_intrinsic:
11869 ; SIMD128:         .functype fminnumv432_non_zero_intrinsic (v128) -> (v128)
11870 ; SIMD128-NEXT:  # %bb.0:
11871 ; SIMD128-NEXT:    v128.const $push0=, -0x1p0, -0x1p0, -0x1p0, -0x1p0
11872 ; SIMD128-NEXT:    f32x4.min $push1=, $0, $pop0
11873 ; SIMD128-NEXT:    return $pop1
11875 ; SIMD128-FAST-LABEL: fminnumv432_non_zero_intrinsic:
11876 ; SIMD128-FAST:         .functype fminnumv432_non_zero_intrinsic (v128) -> (v128)
11877 ; SIMD128-FAST-NEXT:  # %bb.0:
11878 ; SIMD128-FAST-NEXT:    v128.const $push1=, -0x1p0, -0x1p0, -0x1p0, -0x1p0
11879 ; SIMD128-FAST-NEXT:    f32x4.min $push0=, $0, $pop1
11880 ; SIMD128-FAST-NEXT:    return $pop0
11882 ; NO-SIMD128-LABEL: fminnumv432_non_zero_intrinsic:
11883 ; NO-SIMD128:         .functype fminnumv432_non_zero_intrinsic (i32, f32, f32, f32, f32) -> ()
11884 ; NO-SIMD128-NEXT:  # %bb.0:
11885 ; NO-SIMD128-NEXT:    f32.const $push0=, -0x1p0
11886 ; NO-SIMD128-NEXT:    f32.min $push1=, $4, $pop0
11887 ; NO-SIMD128-NEXT:    f32.store 12($0), $pop1
11888 ; NO-SIMD128-NEXT:    f32.const $push7=, -0x1p0
11889 ; NO-SIMD128-NEXT:    f32.min $push2=, $3, $pop7
11890 ; NO-SIMD128-NEXT:    f32.store 8($0), $pop2
11891 ; NO-SIMD128-NEXT:    f32.const $push6=, -0x1p0
11892 ; NO-SIMD128-NEXT:    f32.min $push3=, $2, $pop6
11893 ; NO-SIMD128-NEXT:    f32.store 4($0), $pop3
11894 ; NO-SIMD128-NEXT:    f32.const $push5=, -0x1p0
11895 ; NO-SIMD128-NEXT:    f32.min $push4=, $1, $pop5
11896 ; NO-SIMD128-NEXT:    f32.store 0($0), $pop4
11897 ; NO-SIMD128-NEXT:    return
11899 ; NO-SIMD128-FAST-LABEL: fminnumv432_non_zero_intrinsic:
11900 ; NO-SIMD128-FAST:         .functype fminnumv432_non_zero_intrinsic (i32, f32, f32, f32, f32) -> ()
11901 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
11902 ; NO-SIMD128-FAST-NEXT:    f32.const $push0=, -0x1p0
11903 ; NO-SIMD128-FAST-NEXT:    f32.min $push1=, $1, $pop0
11904 ; NO-SIMD128-FAST-NEXT:    f32.store 0($0), $pop1
11905 ; NO-SIMD128-FAST-NEXT:    f32.const $push7=, -0x1p0
11906 ; NO-SIMD128-FAST-NEXT:    f32.min $push2=, $2, $pop7
11907 ; NO-SIMD128-FAST-NEXT:    f32.store 4($0), $pop2
11908 ; NO-SIMD128-FAST-NEXT:    f32.const $push6=, -0x1p0
11909 ; NO-SIMD128-FAST-NEXT:    f32.min $push3=, $3, $pop6
11910 ; NO-SIMD128-FAST-NEXT:    f32.store 8($0), $pop3
11911 ; NO-SIMD128-FAST-NEXT:    f32.const $push5=, -0x1p0
11912 ; NO-SIMD128-FAST-NEXT:    f32.min $push4=, $4, $pop5
11913 ; NO-SIMD128-FAST-NEXT:    f32.store 12($0), $pop4
11914 ; NO-SIMD128-FAST-NEXT:    return
11915   %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>)
11916   ret <4 x float> %a
11919 define <4 x float> @fminnumv432_one_zero_intrinsic(<4 x float> %x) {
11920 ; SIMD128-LABEL: fminnumv432_one_zero_intrinsic:
11921 ; SIMD128:         .functype fminnumv432_one_zero_intrinsic (v128) -> (v128)
11922 ; SIMD128-NEXT:  # %bb.0:
11923 ; SIMD128-NEXT:    f32x4.extract_lane $push27=, $0, 0
11924 ; SIMD128-NEXT:    local.tee $push26=, $1=, $pop27
11925 ; SIMD128-NEXT:    f32.const $push3=, -0x1p0
11926 ; SIMD128-NEXT:    f32.const $push25=, -0x1p0
11927 ; SIMD128-NEXT:    f32.lt $push4=, $1, $pop25
11928 ; SIMD128-NEXT:    f32.select $push5=, $pop26, $pop3, $pop4
11929 ; SIMD128-NEXT:    f32x4.splat $push6=, $pop5
11930 ; SIMD128-NEXT:    f32x4.extract_lane $push24=, $0, 1
11931 ; SIMD128-NEXT:    local.tee $push23=, $1=, $pop24
11932 ; SIMD128-NEXT:    f32.const $push0=, 0x0p0
11933 ; SIMD128-NEXT:    f32.const $push22=, 0x0p0
11934 ; SIMD128-NEXT:    f32.lt $push1=, $1, $pop22
11935 ; SIMD128-NEXT:    f32.select $push2=, $pop23, $pop0, $pop1
11936 ; SIMD128-NEXT:    f32x4.replace_lane $push7=, $pop6, 1, $pop2
11937 ; SIMD128-NEXT:    f32x4.extract_lane $push21=, $0, 2
11938 ; SIMD128-NEXT:    local.tee $push20=, $1=, $pop21
11939 ; SIMD128-NEXT:    f32.const $push19=, -0x1p0
11940 ; SIMD128-NEXT:    f32.const $push18=, -0x1p0
11941 ; SIMD128-NEXT:    f32.lt $push8=, $1, $pop18
11942 ; SIMD128-NEXT:    f32.select $push9=, $pop20, $pop19, $pop8
11943 ; SIMD128-NEXT:    f32x4.replace_lane $push10=, $pop7, 2, $pop9
11944 ; SIMD128-NEXT:    f32x4.extract_lane $push17=, $0, 3
11945 ; SIMD128-NEXT:    local.tee $push16=, $1=, $pop17
11946 ; SIMD128-NEXT:    f32.const $push15=, -0x1p0
11947 ; SIMD128-NEXT:    f32.const $push14=, -0x1p0
11948 ; SIMD128-NEXT:    f32.lt $push11=, $1, $pop14
11949 ; SIMD128-NEXT:    f32.select $push12=, $pop16, $pop15, $pop11
11950 ; SIMD128-NEXT:    f32x4.replace_lane $push13=, $pop10, 3, $pop12
11951 ; SIMD128-NEXT:    return $pop13
11953 ; SIMD128-FAST-LABEL: fminnumv432_one_zero_intrinsic:
11954 ; SIMD128-FAST:         .functype fminnumv432_one_zero_intrinsic (v128) -> (v128)
11955 ; SIMD128-FAST-NEXT:  # %bb.0:
11956 ; SIMD128-FAST-NEXT:    f32x4.extract_lane $push27=, $0, 0
11957 ; SIMD128-FAST-NEXT:    local.tee $push26=, $1=, $pop27
11958 ; SIMD128-FAST-NEXT:    f32.const $push4=, -0x1p0
11959 ; SIMD128-FAST-NEXT:    f32.const $push25=, -0x1p0
11960 ; SIMD128-FAST-NEXT:    f32.lt $push5=, $1, $pop25
11961 ; SIMD128-FAST-NEXT:    f32.select $push6=, $pop26, $pop4, $pop5
11962 ; SIMD128-FAST-NEXT:    f32x4.splat $push7=, $pop6
11963 ; SIMD128-FAST-NEXT:    f32x4.extract_lane $push24=, $0, 1
11964 ; SIMD128-FAST-NEXT:    local.tee $push23=, $1=, $pop24
11965 ; SIMD128-FAST-NEXT:    f32.const $push1=, 0x0p0
11966 ; SIMD128-FAST-NEXT:    f32.const $push22=, 0x0p0
11967 ; SIMD128-FAST-NEXT:    f32.lt $push2=, $1, $pop22
11968 ; SIMD128-FAST-NEXT:    f32.select $push3=, $pop23, $pop1, $pop2
11969 ; SIMD128-FAST-NEXT:    f32x4.replace_lane $push8=, $pop7, 1, $pop3
11970 ; SIMD128-FAST-NEXT:    f32x4.extract_lane $push21=, $0, 2
11971 ; SIMD128-FAST-NEXT:    local.tee $push20=, $1=, $pop21
11972 ; SIMD128-FAST-NEXT:    f32.const $push19=, -0x1p0
11973 ; SIMD128-FAST-NEXT:    f32.const $push18=, -0x1p0
11974 ; SIMD128-FAST-NEXT:    f32.lt $push9=, $1, $pop18
11975 ; SIMD128-FAST-NEXT:    f32.select $push10=, $pop20, $pop19, $pop9
11976 ; SIMD128-FAST-NEXT:    f32x4.replace_lane $push11=, $pop8, 2, $pop10
11977 ; SIMD128-FAST-NEXT:    f32x4.extract_lane $push17=, $0, 3
11978 ; SIMD128-FAST-NEXT:    local.tee $push16=, $1=, $pop17
11979 ; SIMD128-FAST-NEXT:    f32.const $push15=, -0x1p0
11980 ; SIMD128-FAST-NEXT:    f32.const $push14=, -0x1p0
11981 ; SIMD128-FAST-NEXT:    f32.lt $push12=, $1, $pop14
11982 ; SIMD128-FAST-NEXT:    f32.select $push13=, $pop16, $pop15, $pop12
11983 ; SIMD128-FAST-NEXT:    f32x4.replace_lane $push0=, $pop11, 3, $pop13
11984 ; SIMD128-FAST-NEXT:    return $pop0
11986 ; NO-SIMD128-LABEL: fminnumv432_one_zero_intrinsic:
11987 ; NO-SIMD128:         .functype fminnumv432_one_zero_intrinsic (i32, f32, f32, f32, f32) -> ()
11988 ; NO-SIMD128-NEXT:  # %bb.0:
11989 ; NO-SIMD128-NEXT:    f32.const $push0=, -0x1p0
11990 ; NO-SIMD128-NEXT:    f32.min $push1=, $4, $pop0
11991 ; NO-SIMD128-NEXT:    f32.store 12($0), $pop1
11992 ; NO-SIMD128-NEXT:    f32.const $push9=, -0x1p0
11993 ; NO-SIMD128-NEXT:    f32.min $push2=, $3, $pop9
11994 ; NO-SIMD128-NEXT:    f32.store 8($0), $pop2
11995 ; NO-SIMD128-NEXT:    f32.const $push3=, 0x0p0
11996 ; NO-SIMD128-NEXT:    f32.const $push8=, 0x0p0
11997 ; NO-SIMD128-NEXT:    f32.lt $push4=, $2, $pop8
11998 ; NO-SIMD128-NEXT:    f32.select $push5=, $2, $pop3, $pop4
11999 ; NO-SIMD128-NEXT:    f32.store 4($0), $pop5
12000 ; NO-SIMD128-NEXT:    f32.const $push7=, -0x1p0
12001 ; NO-SIMD128-NEXT:    f32.min $push6=, $1, $pop7
12002 ; NO-SIMD128-NEXT:    f32.store 0($0), $pop6
12003 ; NO-SIMD128-NEXT:    return
12005 ; NO-SIMD128-FAST-LABEL: fminnumv432_one_zero_intrinsic:
12006 ; NO-SIMD128-FAST:         .functype fminnumv432_one_zero_intrinsic (i32, f32, f32, f32, f32) -> ()
12007 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
12008 ; NO-SIMD128-FAST-NEXT:    f32.const $push0=, -0x1p0
12009 ; NO-SIMD128-FAST-NEXT:    f32.min $push1=, $1, $pop0
12010 ; NO-SIMD128-FAST-NEXT:    f32.store 0($0), $pop1
12011 ; NO-SIMD128-FAST-NEXT:    f32.const $push9=, -0x1p0
12012 ; NO-SIMD128-FAST-NEXT:    f32.min $push2=, $3, $pop9
12013 ; NO-SIMD128-FAST-NEXT:    f32.store 8($0), $pop2
12014 ; NO-SIMD128-FAST-NEXT:    f32.const $push3=, 0x0p0
12015 ; NO-SIMD128-FAST-NEXT:    f32.const $push8=, 0x0p0
12016 ; NO-SIMD128-FAST-NEXT:    f32.lt $push4=, $2, $pop8
12017 ; NO-SIMD128-FAST-NEXT:    f32.select $push5=, $2, $pop3, $pop4
12018 ; NO-SIMD128-FAST-NEXT:    f32.store 4($0), $pop5
12019 ; NO-SIMD128-FAST-NEXT:    f32.const $push7=, -0x1p0
12020 ; NO-SIMD128-FAST-NEXT:    f32.min $push6=, $4, $pop7
12021 ; NO-SIMD128-FAST-NEXT:    f32.store 12($0), $pop6
12022 ; NO-SIMD128-FAST-NEXT:    return
12023   %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>)
12024   ret <4 x float> %a
12027 declare <4 x float> @llvm.maximum.v4f32(<4 x float>, <4 x float>)
12028 define <4 x float> @max_intrinsic_v4f32(<4 x float> %x, <4 x float> %y) {
12029 ; SIMD128-LABEL: max_intrinsic_v4f32:
12030 ; SIMD128:         .functype max_intrinsic_v4f32 (v128, v128) -> (v128)
12031 ; SIMD128-NEXT:  # %bb.0:
12032 ; SIMD128-NEXT:    f32x4.max $push0=, $0, $1
12033 ; SIMD128-NEXT:    return $pop0
12035 ; SIMD128-FAST-LABEL: max_intrinsic_v4f32:
12036 ; SIMD128-FAST:         .functype max_intrinsic_v4f32 (v128, v128) -> (v128)
12037 ; SIMD128-FAST-NEXT:  # %bb.0:
12038 ; SIMD128-FAST-NEXT:    f32x4.max $push0=, $0, $1
12039 ; SIMD128-FAST-NEXT:    return $pop0
12041 ; NO-SIMD128-LABEL: max_intrinsic_v4f32:
12042 ; NO-SIMD128:         .functype max_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
12043 ; NO-SIMD128-NEXT:  # %bb.0:
12044 ; NO-SIMD128-NEXT:    f32.max $push0=, $4, $8
12045 ; NO-SIMD128-NEXT:    f32.store 12($0), $pop0
12046 ; NO-SIMD128-NEXT:    f32.max $push1=, $3, $7
12047 ; NO-SIMD128-NEXT:    f32.store 8($0), $pop1
12048 ; NO-SIMD128-NEXT:    f32.max $push2=, $2, $6
12049 ; NO-SIMD128-NEXT:    f32.store 4($0), $pop2
12050 ; NO-SIMD128-NEXT:    f32.max $push3=, $1, $5
12051 ; NO-SIMD128-NEXT:    f32.store 0($0), $pop3
12052 ; NO-SIMD128-NEXT:    return
12054 ; NO-SIMD128-FAST-LABEL: max_intrinsic_v4f32:
12055 ; NO-SIMD128-FAST:         .functype max_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
12056 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
12057 ; NO-SIMD128-FAST-NEXT:    f32.max $push0=, $1, $5
12058 ; NO-SIMD128-FAST-NEXT:    f32.store 0($0), $pop0
12059 ; NO-SIMD128-FAST-NEXT:    f32.max $push1=, $2, $6
12060 ; NO-SIMD128-FAST-NEXT:    f32.store 4($0), $pop1
12061 ; NO-SIMD128-FAST-NEXT:    f32.max $push2=, $3, $7
12062 ; NO-SIMD128-FAST-NEXT:    f32.store 8($0), $pop2
12063 ; NO-SIMD128-FAST-NEXT:    f32.max $push3=, $4, $8
12064 ; NO-SIMD128-FAST-NEXT:    f32.store 12($0), $pop3
12065 ; NO-SIMD128-FAST-NEXT:    return
12066   %a = call <4 x float> @llvm.maximum.v4f32(<4 x float> %x, <4 x float> %y)
12067   ret <4 x float> %a
12070 declare <4 x float> @llvm.maxnum.v4f32(<4 x float>, <4 x float>)
12071 define <4 x float> @maxnum_intrinsic_v4f32(<4 x float> %x, <4 x float> %y) {
12072 ; SIMD128-LABEL: maxnum_intrinsic_v4f32:
12073 ; SIMD128:         .functype maxnum_intrinsic_v4f32 (v128, v128) -> (v128)
12074 ; SIMD128-NEXT:  # %bb.0:
12075 ; SIMD128-NEXT:    f32x4.extract_lane $push27=, $0, 0
12076 ; SIMD128-NEXT:    local.tee $push26=, $3=, $pop27
12077 ; SIMD128-NEXT:    f32x4.extract_lane $push25=, $1, 0
12078 ; SIMD128-NEXT:    local.tee $push24=, $2=, $pop25
12079 ; SIMD128-NEXT:    f32.gt $push2=, $3, $2
12080 ; SIMD128-NEXT:    f32.select $push3=, $pop26, $pop24, $pop2
12081 ; SIMD128-NEXT:    f32x4.splat $push4=, $pop3
12082 ; SIMD128-NEXT:    f32x4.extract_lane $push23=, $0, 1
12083 ; SIMD128-NEXT:    local.tee $push22=, $3=, $pop23
12084 ; SIMD128-NEXT:    f32x4.extract_lane $push21=, $1, 1
12085 ; SIMD128-NEXT:    local.tee $push20=, $2=, $pop21
12086 ; SIMD128-NEXT:    f32.gt $push0=, $3, $2
12087 ; SIMD128-NEXT:    f32.select $push1=, $pop22, $pop20, $pop0
12088 ; SIMD128-NEXT:    f32x4.replace_lane $push5=, $pop4, 1, $pop1
12089 ; SIMD128-NEXT:    f32x4.extract_lane $push19=, $0, 2
12090 ; SIMD128-NEXT:    local.tee $push18=, $3=, $pop19
12091 ; SIMD128-NEXT:    f32x4.extract_lane $push17=, $1, 2
12092 ; SIMD128-NEXT:    local.tee $push16=, $2=, $pop17
12093 ; SIMD128-NEXT:    f32.gt $push6=, $3, $2
12094 ; SIMD128-NEXT:    f32.select $push7=, $pop18, $pop16, $pop6
12095 ; SIMD128-NEXT:    f32x4.replace_lane $push8=, $pop5, 2, $pop7
12096 ; SIMD128-NEXT:    f32x4.extract_lane $push15=, $0, 3
12097 ; SIMD128-NEXT:    local.tee $push14=, $3=, $pop15
12098 ; SIMD128-NEXT:    f32x4.extract_lane $push13=, $1, 3
12099 ; SIMD128-NEXT:    local.tee $push12=, $2=, $pop13
12100 ; SIMD128-NEXT:    f32.gt $push9=, $3, $2
12101 ; SIMD128-NEXT:    f32.select $push10=, $pop14, $pop12, $pop9
12102 ; SIMD128-NEXT:    f32x4.replace_lane $push11=, $pop8, 3, $pop10
12103 ; SIMD128-NEXT:    return $pop11
12105 ; SIMD128-FAST-LABEL: maxnum_intrinsic_v4f32:
12106 ; SIMD128-FAST:         .functype maxnum_intrinsic_v4f32 (v128, v128) -> (v128)
12107 ; SIMD128-FAST-NEXT:  # %bb.0:
12108 ; SIMD128-FAST-NEXT:    f32x4.extract_lane $push27=, $0, 0
12109 ; SIMD128-FAST-NEXT:    local.tee $push26=, $3=, $pop27
12110 ; SIMD128-FAST-NEXT:    f32x4.extract_lane $push25=, $1, 0
12111 ; SIMD128-FAST-NEXT:    local.tee $push24=, $2=, $pop25
12112 ; SIMD128-FAST-NEXT:    f32.gt $push3=, $3, $2
12113 ; SIMD128-FAST-NEXT:    f32.select $push4=, $pop26, $pop24, $pop3
12114 ; SIMD128-FAST-NEXT:    f32x4.splat $push5=, $pop4
12115 ; SIMD128-FAST-NEXT:    f32x4.extract_lane $push23=, $0, 1
12116 ; SIMD128-FAST-NEXT:    local.tee $push22=, $3=, $pop23
12117 ; SIMD128-FAST-NEXT:    f32x4.extract_lane $push21=, $1, 1
12118 ; SIMD128-FAST-NEXT:    local.tee $push20=, $2=, $pop21
12119 ; SIMD128-FAST-NEXT:    f32.gt $push1=, $3, $2
12120 ; SIMD128-FAST-NEXT:    f32.select $push2=, $pop22, $pop20, $pop1
12121 ; SIMD128-FAST-NEXT:    f32x4.replace_lane $push6=, $pop5, 1, $pop2
12122 ; SIMD128-FAST-NEXT:    f32x4.extract_lane $push19=, $0, 2
12123 ; SIMD128-FAST-NEXT:    local.tee $push18=, $3=, $pop19
12124 ; SIMD128-FAST-NEXT:    f32x4.extract_lane $push17=, $1, 2
12125 ; SIMD128-FAST-NEXT:    local.tee $push16=, $2=, $pop17
12126 ; SIMD128-FAST-NEXT:    f32.gt $push7=, $3, $2
12127 ; SIMD128-FAST-NEXT:    f32.select $push8=, $pop18, $pop16, $pop7
12128 ; SIMD128-FAST-NEXT:    f32x4.replace_lane $push9=, $pop6, 2, $pop8
12129 ; SIMD128-FAST-NEXT:    f32x4.extract_lane $push15=, $0, 3
12130 ; SIMD128-FAST-NEXT:    local.tee $push14=, $3=, $pop15
12131 ; SIMD128-FAST-NEXT:    f32x4.extract_lane $push13=, $1, 3
12132 ; SIMD128-FAST-NEXT:    local.tee $push12=, $2=, $pop13
12133 ; SIMD128-FAST-NEXT:    f32.gt $push10=, $3, $2
12134 ; SIMD128-FAST-NEXT:    f32.select $push11=, $pop14, $pop12, $pop10
12135 ; SIMD128-FAST-NEXT:    f32x4.replace_lane $push0=, $pop9, 3, $pop11
12136 ; SIMD128-FAST-NEXT:    return $pop0
12138 ; NO-SIMD128-LABEL: maxnum_intrinsic_v4f32:
12139 ; NO-SIMD128:         .functype maxnum_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
12140 ; NO-SIMD128-NEXT:  # %bb.0:
12141 ; NO-SIMD128-NEXT:    f32.gt $push0=, $4, $8
12142 ; NO-SIMD128-NEXT:    f32.select $push1=, $4, $8, $pop0
12143 ; NO-SIMD128-NEXT:    f32.store 12($0), $pop1
12144 ; NO-SIMD128-NEXT:    f32.gt $push2=, $3, $7
12145 ; NO-SIMD128-NEXT:    f32.select $push3=, $3, $7, $pop2
12146 ; NO-SIMD128-NEXT:    f32.store 8($0), $pop3
12147 ; NO-SIMD128-NEXT:    f32.gt $push4=, $2, $6
12148 ; NO-SIMD128-NEXT:    f32.select $push5=, $2, $6, $pop4
12149 ; NO-SIMD128-NEXT:    f32.store 4($0), $pop5
12150 ; NO-SIMD128-NEXT:    f32.gt $push6=, $1, $5
12151 ; NO-SIMD128-NEXT:    f32.select $push7=, $1, $5, $pop6
12152 ; NO-SIMD128-NEXT:    f32.store 0($0), $pop7
12153 ; NO-SIMD128-NEXT:    return
12155 ; NO-SIMD128-FAST-LABEL: maxnum_intrinsic_v4f32:
12156 ; NO-SIMD128-FAST:         .functype maxnum_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
12157 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
12158 ; NO-SIMD128-FAST-NEXT:    f32.gt $push0=, $1, $5
12159 ; NO-SIMD128-FAST-NEXT:    f32.select $push1=, $1, $5, $pop0
12160 ; NO-SIMD128-FAST-NEXT:    f32.store 0($0), $pop1
12161 ; NO-SIMD128-FAST-NEXT:    f32.gt $push2=, $2, $6
12162 ; NO-SIMD128-FAST-NEXT:    f32.select $push3=, $2, $6, $pop2
12163 ; NO-SIMD128-FAST-NEXT:    f32.store 4($0), $pop3
12164 ; NO-SIMD128-FAST-NEXT:    f32.gt $push4=, $3, $7
12165 ; NO-SIMD128-FAST-NEXT:    f32.select $push5=, $3, $7, $pop4
12166 ; NO-SIMD128-FAST-NEXT:    f32.store 8($0), $pop5
12167 ; NO-SIMD128-FAST-NEXT:    f32.gt $push6=, $4, $8
12168 ; NO-SIMD128-FAST-NEXT:    f32.select $push7=, $4, $8, $pop6
12169 ; NO-SIMD128-FAST-NEXT:    f32.store 12($0), $pop7
12170 ; NO-SIMD128-FAST-NEXT:    return
12171   %a = call nnan <4 x float> @llvm.maxnum.v4f32(<4 x float> %x, <4 x float> %y)
12172   ret <4 x float> %a
12175 define <4 x float> @maxnum_nsz_intrinsic_v4f32(<4 x float> %x, <4 x float> %y) {
12176 ; SIMD128-LABEL: maxnum_nsz_intrinsic_v4f32:
12177 ; SIMD128:         .functype maxnum_nsz_intrinsic_v4f32 (v128, v128) -> (v128)
12178 ; SIMD128-NEXT:  # %bb.0:
12179 ; SIMD128-NEXT:    f32x4.max $push0=, $0, $1
12180 ; SIMD128-NEXT:    return $pop0
12182 ; SIMD128-FAST-LABEL: maxnum_nsz_intrinsic_v4f32:
12183 ; SIMD128-FAST:         .functype maxnum_nsz_intrinsic_v4f32 (v128, v128) -> (v128)
12184 ; SIMD128-FAST-NEXT:  # %bb.0:
12185 ; SIMD128-FAST-NEXT:    f32x4.max $push0=, $0, $1
12186 ; SIMD128-FAST-NEXT:    return $pop0
12188 ; NO-SIMD128-LABEL: maxnum_nsz_intrinsic_v4f32:
12189 ; NO-SIMD128:         .functype maxnum_nsz_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
12190 ; NO-SIMD128-NEXT:  # %bb.0:
12191 ; NO-SIMD128-NEXT:    f32.max $push0=, $4, $8
12192 ; NO-SIMD128-NEXT:    f32.store 12($0), $pop0
12193 ; NO-SIMD128-NEXT:    f32.max $push1=, $3, $7
12194 ; NO-SIMD128-NEXT:    f32.store 8($0), $pop1
12195 ; NO-SIMD128-NEXT:    f32.max $push2=, $2, $6
12196 ; NO-SIMD128-NEXT:    f32.store 4($0), $pop2
12197 ; NO-SIMD128-NEXT:    f32.max $push3=, $1, $5
12198 ; NO-SIMD128-NEXT:    f32.store 0($0), $pop3
12199 ; NO-SIMD128-NEXT:    return
12201 ; NO-SIMD128-FAST-LABEL: maxnum_nsz_intrinsic_v4f32:
12202 ; NO-SIMD128-FAST:         .functype maxnum_nsz_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
12203 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
12204 ; NO-SIMD128-FAST-NEXT:    f32.max $push0=, $1, $5
12205 ; NO-SIMD128-FAST-NEXT:    f32.store 0($0), $pop0
12206 ; NO-SIMD128-FAST-NEXT:    f32.max $push1=, $2, $6
12207 ; NO-SIMD128-FAST-NEXT:    f32.store 4($0), $pop1
12208 ; NO-SIMD128-FAST-NEXT:    f32.max $push2=, $3, $7
12209 ; NO-SIMD128-FAST-NEXT:    f32.store 8($0), $pop2
12210 ; NO-SIMD128-FAST-NEXT:    f32.max $push3=, $4, $8
12211 ; NO-SIMD128-FAST-NEXT:    f32.store 12($0), $pop3
12212 ; NO-SIMD128-FAST-NEXT:    return
12213   %a = call nnan nsz <4 x float> @llvm.maxnum.v4f32(<4 x float> %x, <4 x float> %y)
12214   ret <4 x float> %a
12217 define <4 x float> @maxnum_one_zero_intrinsic_v4f32(<4 x float> %x, <4 x float> %y) {
12218 ; SIMD128-LABEL: maxnum_one_zero_intrinsic_v4f32:
12219 ; SIMD128:         .functype maxnum_one_zero_intrinsic_v4f32 (v128, v128) -> (v128)
12220 ; SIMD128-NEXT:  # %bb.0:
12221 ; SIMD128-NEXT:    f32x4.extract_lane $push27=, $0, 0
12222 ; SIMD128-NEXT:    local.tee $push26=, $2=, $pop27
12223 ; SIMD128-NEXT:    f32.const $push3=, -0x1p0
12224 ; SIMD128-NEXT:    f32.const $push25=, -0x1p0
12225 ; SIMD128-NEXT:    f32.gt $push4=, $2, $pop25
12226 ; SIMD128-NEXT:    f32.select $push5=, $pop26, $pop3, $pop4
12227 ; SIMD128-NEXT:    f32x4.splat $push6=, $pop5
12228 ; SIMD128-NEXT:    f32x4.extract_lane $push24=, $0, 1
12229 ; SIMD128-NEXT:    local.tee $push23=, $2=, $pop24
12230 ; SIMD128-NEXT:    f32.const $push0=, 0x0p0
12231 ; SIMD128-NEXT:    f32.const $push22=, 0x0p0
12232 ; SIMD128-NEXT:    f32.gt $push1=, $2, $pop22
12233 ; SIMD128-NEXT:    f32.select $push2=, $pop23, $pop0, $pop1
12234 ; SIMD128-NEXT:    f32x4.replace_lane $push7=, $pop6, 1, $pop2
12235 ; SIMD128-NEXT:    f32x4.extract_lane $push21=, $0, 2
12236 ; SIMD128-NEXT:    local.tee $push20=, $2=, $pop21
12237 ; SIMD128-NEXT:    f32.const $push19=, -0x1p0
12238 ; SIMD128-NEXT:    f32.const $push18=, -0x1p0
12239 ; SIMD128-NEXT:    f32.gt $push8=, $2, $pop18
12240 ; SIMD128-NEXT:    f32.select $push9=, $pop20, $pop19, $pop8
12241 ; SIMD128-NEXT:    f32x4.replace_lane $push10=, $pop7, 2, $pop9
12242 ; SIMD128-NEXT:    f32x4.extract_lane $push17=, $0, 3
12243 ; SIMD128-NEXT:    local.tee $push16=, $2=, $pop17
12244 ; SIMD128-NEXT:    f32.const $push15=, -0x1p0
12245 ; SIMD128-NEXT:    f32.const $push14=, -0x1p0
12246 ; SIMD128-NEXT:    f32.gt $push11=, $2, $pop14
12247 ; SIMD128-NEXT:    f32.select $push12=, $pop16, $pop15, $pop11
12248 ; SIMD128-NEXT:    f32x4.replace_lane $push13=, $pop10, 3, $pop12
12249 ; SIMD128-NEXT:    return $pop13
12251 ; SIMD128-FAST-LABEL: maxnum_one_zero_intrinsic_v4f32:
12252 ; SIMD128-FAST:         .functype maxnum_one_zero_intrinsic_v4f32 (v128, v128) -> (v128)
12253 ; SIMD128-FAST-NEXT:  # %bb.0:
12254 ; SIMD128-FAST-NEXT:    f32x4.extract_lane $push27=, $0, 0
12255 ; SIMD128-FAST-NEXT:    local.tee $push26=, $2=, $pop27
12256 ; SIMD128-FAST-NEXT:    f32.const $push4=, -0x1p0
12257 ; SIMD128-FAST-NEXT:    f32.const $push25=, -0x1p0
12258 ; SIMD128-FAST-NEXT:    f32.gt $push5=, $2, $pop25
12259 ; SIMD128-FAST-NEXT:    f32.select $push6=, $pop26, $pop4, $pop5
12260 ; SIMD128-FAST-NEXT:    f32x4.splat $push7=, $pop6
12261 ; SIMD128-FAST-NEXT:    f32x4.extract_lane $push24=, $0, 1
12262 ; SIMD128-FAST-NEXT:    local.tee $push23=, $2=, $pop24
12263 ; SIMD128-FAST-NEXT:    f32.const $push1=, 0x0p0
12264 ; SIMD128-FAST-NEXT:    f32.const $push22=, 0x0p0
12265 ; SIMD128-FAST-NEXT:    f32.gt $push2=, $2, $pop22
12266 ; SIMD128-FAST-NEXT:    f32.select $push3=, $pop23, $pop1, $pop2
12267 ; SIMD128-FAST-NEXT:    f32x4.replace_lane $push8=, $pop7, 1, $pop3
12268 ; SIMD128-FAST-NEXT:    f32x4.extract_lane $push21=, $0, 2
12269 ; SIMD128-FAST-NEXT:    local.tee $push20=, $2=, $pop21
12270 ; SIMD128-FAST-NEXT:    f32.const $push19=, -0x1p0
12271 ; SIMD128-FAST-NEXT:    f32.const $push18=, -0x1p0
12272 ; SIMD128-FAST-NEXT:    f32.gt $push9=, $2, $pop18
12273 ; SIMD128-FAST-NEXT:    f32.select $push10=, $pop20, $pop19, $pop9
12274 ; SIMD128-FAST-NEXT:    f32x4.replace_lane $push11=, $pop8, 2, $pop10
12275 ; SIMD128-FAST-NEXT:    f32x4.extract_lane $push17=, $0, 3
12276 ; SIMD128-FAST-NEXT:    local.tee $push16=, $2=, $pop17
12277 ; SIMD128-FAST-NEXT:    f32.const $push15=, -0x1p0
12278 ; SIMD128-FAST-NEXT:    f32.const $push14=, -0x1p0
12279 ; SIMD128-FAST-NEXT:    f32.gt $push12=, $2, $pop14
12280 ; SIMD128-FAST-NEXT:    f32.select $push13=, $pop16, $pop15, $pop12
12281 ; SIMD128-FAST-NEXT:    f32x4.replace_lane $push0=, $pop11, 3, $pop13
12282 ; SIMD128-FAST-NEXT:    return $pop0
12284 ; NO-SIMD128-LABEL: maxnum_one_zero_intrinsic_v4f32:
12285 ; NO-SIMD128:         .functype maxnum_one_zero_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
12286 ; NO-SIMD128-NEXT:  # %bb.0:
12287 ; NO-SIMD128-NEXT:    f32.const $push0=, -0x1p0
12288 ; NO-SIMD128-NEXT:    f32.max $push1=, $4, $pop0
12289 ; NO-SIMD128-NEXT:    f32.store 12($0), $pop1
12290 ; NO-SIMD128-NEXT:    f32.const $push9=, -0x1p0
12291 ; NO-SIMD128-NEXT:    f32.max $push2=, $3, $pop9
12292 ; NO-SIMD128-NEXT:    f32.store 8($0), $pop2
12293 ; NO-SIMD128-NEXT:    f32.const $push3=, 0x0p0
12294 ; NO-SIMD128-NEXT:    f32.const $push8=, 0x0p0
12295 ; NO-SIMD128-NEXT:    f32.gt $push4=, $2, $pop8
12296 ; NO-SIMD128-NEXT:    f32.select $push5=, $2, $pop3, $pop4
12297 ; NO-SIMD128-NEXT:    f32.store 4($0), $pop5
12298 ; NO-SIMD128-NEXT:    f32.const $push7=, -0x1p0
12299 ; NO-SIMD128-NEXT:    f32.max $push6=, $1, $pop7
12300 ; NO-SIMD128-NEXT:    f32.store 0($0), $pop6
12301 ; NO-SIMD128-NEXT:    return
12303 ; NO-SIMD128-FAST-LABEL: maxnum_one_zero_intrinsic_v4f32:
12304 ; NO-SIMD128-FAST:         .functype maxnum_one_zero_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
12305 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
12306 ; NO-SIMD128-FAST-NEXT:    f32.const $push0=, -0x1p0
12307 ; NO-SIMD128-FAST-NEXT:    f32.max $push1=, $1, $pop0
12308 ; NO-SIMD128-FAST-NEXT:    f32.store 0($0), $pop1
12309 ; NO-SIMD128-FAST-NEXT:    f32.const $push9=, -0x1p0
12310 ; NO-SIMD128-FAST-NEXT:    f32.max $push2=, $3, $pop9
12311 ; NO-SIMD128-FAST-NEXT:    f32.store 8($0), $pop2
12312 ; NO-SIMD128-FAST-NEXT:    f32.const $push3=, 0x0p0
12313 ; NO-SIMD128-FAST-NEXT:    f32.const $push8=, 0x0p0
12314 ; NO-SIMD128-FAST-NEXT:    f32.gt $push4=, $2, $pop8
12315 ; NO-SIMD128-FAST-NEXT:    f32.select $push5=, $2, $pop3, $pop4
12316 ; NO-SIMD128-FAST-NEXT:    f32.store 4($0), $pop5
12317 ; NO-SIMD128-FAST-NEXT:    f32.const $push7=, -0x1p0
12318 ; NO-SIMD128-FAST-NEXT:    f32.max $push6=, $4, $pop7
12319 ; NO-SIMD128-FAST-NEXT:    f32.store 12($0), $pop6
12320 ; NO-SIMD128-FAST-NEXT:    return
12321   %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>)
12322   ret <4 x float> %a
12325 define <4 x float> @maxnum_non_zero_intrinsic_v4f32(<4 x float> %x, <4 x float> %y) {
12326 ; SIMD128-LABEL: maxnum_non_zero_intrinsic_v4f32:
12327 ; SIMD128:         .functype maxnum_non_zero_intrinsic_v4f32 (v128, v128) -> (v128)
12328 ; SIMD128-NEXT:  # %bb.0:
12329 ; SIMD128-NEXT:    v128.const $push0=, -0x1p0, 0x1p0, -0x1p0, -0x1p0
12330 ; SIMD128-NEXT:    f32x4.max $push1=, $0, $pop0
12331 ; SIMD128-NEXT:    return $pop1
12333 ; SIMD128-FAST-LABEL: maxnum_non_zero_intrinsic_v4f32:
12334 ; SIMD128-FAST:         .functype maxnum_non_zero_intrinsic_v4f32 (v128, v128) -> (v128)
12335 ; SIMD128-FAST-NEXT:  # %bb.0:
12336 ; SIMD128-FAST-NEXT:    v128.const $push1=, -0x1p0, 0x1p0, -0x1p0, -0x1p0
12337 ; SIMD128-FAST-NEXT:    f32x4.max $push0=, $0, $pop1
12338 ; SIMD128-FAST-NEXT:    return $pop0
12340 ; NO-SIMD128-LABEL: maxnum_non_zero_intrinsic_v4f32:
12341 ; NO-SIMD128:         .functype maxnum_non_zero_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
12342 ; NO-SIMD128-NEXT:  # %bb.0:
12343 ; NO-SIMD128-NEXT:    f32.const $push0=, -0x1p0
12344 ; NO-SIMD128-NEXT:    f32.max $push1=, $4, $pop0
12345 ; NO-SIMD128-NEXT:    f32.store 12($0), $pop1
12346 ; NO-SIMD128-NEXT:    f32.const $push7=, -0x1p0
12347 ; NO-SIMD128-NEXT:    f32.max $push2=, $3, $pop7
12348 ; NO-SIMD128-NEXT:    f32.store 8($0), $pop2
12349 ; NO-SIMD128-NEXT:    f32.const $push3=, 0x1p0
12350 ; NO-SIMD128-NEXT:    f32.max $push4=, $2, $pop3
12351 ; NO-SIMD128-NEXT:    f32.store 4($0), $pop4
12352 ; NO-SIMD128-NEXT:    f32.const $push6=, -0x1p0
12353 ; NO-SIMD128-NEXT:    f32.max $push5=, $1, $pop6
12354 ; NO-SIMD128-NEXT:    f32.store 0($0), $pop5
12355 ; NO-SIMD128-NEXT:    return
12357 ; NO-SIMD128-FAST-LABEL: maxnum_non_zero_intrinsic_v4f32:
12358 ; NO-SIMD128-FAST:         .functype maxnum_non_zero_intrinsic_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
12359 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
12360 ; NO-SIMD128-FAST-NEXT:    f32.const $push0=, -0x1p0
12361 ; NO-SIMD128-FAST-NEXT:    f32.max $push1=, $1, $pop0
12362 ; NO-SIMD128-FAST-NEXT:    f32.store 0($0), $pop1
12363 ; NO-SIMD128-FAST-NEXT:    f32.const $push2=, 0x1p0
12364 ; NO-SIMD128-FAST-NEXT:    f32.max $push3=, $2, $pop2
12365 ; NO-SIMD128-FAST-NEXT:    f32.store 4($0), $pop3
12366 ; NO-SIMD128-FAST-NEXT:    f32.const $push7=, -0x1p0
12367 ; NO-SIMD128-FAST-NEXT:    f32.max $push4=, $3, $pop7
12368 ; NO-SIMD128-FAST-NEXT:    f32.store 8($0), $pop4
12369 ; NO-SIMD128-FAST-NEXT:    f32.const $push6=, -0x1p0
12370 ; NO-SIMD128-FAST-NEXT:    f32.max $push5=, $4, $pop6
12371 ; NO-SIMD128-FAST-NEXT:    f32.store 12($0), $pop5
12372 ; NO-SIMD128-FAST-NEXT:    return
12373   %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>)
12374   ret <4 x float> %a
12377 define <4 x float> @min_const_intrinsic_v4f32() {
12378 ; SIMD128-LABEL: min_const_intrinsic_v4f32:
12379 ; SIMD128:         .functype min_const_intrinsic_v4f32 () -> (v128)
12380 ; SIMD128-NEXT:  # %bb.0:
12381 ; SIMD128-NEXT:    v128.const $push0=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2
12382 ; SIMD128-NEXT:    return $pop0
12384 ; SIMD128-FAST-LABEL: min_const_intrinsic_v4f32:
12385 ; SIMD128-FAST:         .functype min_const_intrinsic_v4f32 () -> (v128)
12386 ; SIMD128-FAST-NEXT:  # %bb.0:
12387 ; SIMD128-FAST-NEXT:    v128.const $push0=, 0x1.4p2, 0x1.4p2, 0x1.4p2, 0x1.4p2
12388 ; SIMD128-FAST-NEXT:    return $pop0
12390 ; NO-SIMD128-LABEL: min_const_intrinsic_v4f32:
12391 ; NO-SIMD128:         .functype min_const_intrinsic_v4f32 (i32) -> ()
12392 ; NO-SIMD128-NEXT:  # %bb.0:
12393 ; NO-SIMD128-NEXT:    i64.const $push0=, 4656722015785320448
12394 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop0
12395 ; NO-SIMD128-NEXT:    i64.const $push1=, 4656722015785320448
12396 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop1
12397 ; NO-SIMD128-NEXT:    return
12399 ; NO-SIMD128-FAST-LABEL: min_const_intrinsic_v4f32:
12400 ; NO-SIMD128-FAST:         .functype min_const_intrinsic_v4f32 (i32) -> ()
12401 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
12402 ; NO-SIMD128-FAST-NEXT:    i64.const $push0=, 4656722015785320448
12403 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop0
12404 ; NO-SIMD128-FAST-NEXT:    i64.const $push1=, 4656722015785320448
12405 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop1
12406 ; NO-SIMD128-FAST-NEXT:    return
12407   %a = call <4 x float> @llvm.minimum.v4f32(
12408     <4 x float> <float 42., float 42., float 42., float 42.>,
12409     <4 x float> <float 5., float 5., float 5., float 5.>
12410   )
12411   ret <4 x float> %a
12414 define <4 x float> @max_const_intrinsic_v4f32() {
12415 ; SIMD128-LABEL: max_const_intrinsic_v4f32:
12416 ; SIMD128:         .functype max_const_intrinsic_v4f32 () -> (v128)
12417 ; SIMD128-NEXT:  # %bb.0:
12418 ; SIMD128-NEXT:    v128.const $push0=, 0x1.5p5, 0x1.5p5, 0x1.5p5, 0x1.5p5
12419 ; SIMD128-NEXT:    return $pop0
12421 ; SIMD128-FAST-LABEL: max_const_intrinsic_v4f32:
12422 ; SIMD128-FAST:         .functype max_const_intrinsic_v4f32 () -> (v128)
12423 ; SIMD128-FAST-NEXT:  # %bb.0:
12424 ; SIMD128-FAST-NEXT:    v128.const $push0=, 0x1.5p5, 0x1.5p5, 0x1.5p5, 0x1.5p5
12425 ; SIMD128-FAST-NEXT:    return $pop0
12427 ; NO-SIMD128-LABEL: max_const_intrinsic_v4f32:
12428 ; NO-SIMD128:         .functype max_const_intrinsic_v4f32 (i32) -> ()
12429 ; NO-SIMD128-NEXT:  # %bb.0:
12430 ; NO-SIMD128-NEXT:    i64.const $push0=, 4767060206681587712
12431 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop0
12432 ; NO-SIMD128-NEXT:    i64.const $push1=, 4767060206681587712
12433 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop1
12434 ; NO-SIMD128-NEXT:    return
12436 ; NO-SIMD128-FAST-LABEL: max_const_intrinsic_v4f32:
12437 ; NO-SIMD128-FAST:         .functype max_const_intrinsic_v4f32 (i32) -> ()
12438 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
12439 ; NO-SIMD128-FAST-NEXT:    i64.const $push0=, 4767060206681587712
12440 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop0
12441 ; NO-SIMD128-FAST-NEXT:    i64.const $push1=, 4767060206681587712
12442 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop1
12443 ; NO-SIMD128-FAST-NEXT:    return
12444   %a = call <4 x float> @llvm.maximum.v4f32(
12445     <4 x float> <float 42., float 42., float 42., float 42.>,
12446     <4 x float> <float 5., float 5., float 5., float 5.>
12447   )
12448   ret <4 x float> %a
12451 define <4 x float> @pmin_v4f32(<4 x float> %x, <4 x float> %y) {
12452 ; SIMD128-LABEL: pmin_v4f32:
12453 ; SIMD128:         .functype pmin_v4f32 (v128, v128) -> (v128)
12454 ; SIMD128-NEXT:  # %bb.0:
12455 ; SIMD128-NEXT:    f32x4.pmin $push0=, $0, $1
12456 ; SIMD128-NEXT:    return $pop0
12458 ; SIMD128-FAST-LABEL: pmin_v4f32:
12459 ; SIMD128-FAST:         .functype pmin_v4f32 (v128, v128) -> (v128)
12460 ; SIMD128-FAST-NEXT:  # %bb.0:
12461 ; SIMD128-FAST-NEXT:    f32x4.pmin $push0=, $0, $1
12462 ; SIMD128-FAST-NEXT:    return $pop0
12464 ; NO-SIMD128-LABEL: pmin_v4f32:
12465 ; NO-SIMD128:         .functype pmin_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
12466 ; NO-SIMD128-NEXT:  # %bb.0:
12467 ; NO-SIMD128-NEXT:    f32.lt $push0=, $8, $4
12468 ; NO-SIMD128-NEXT:    f32.select $push1=, $8, $4, $pop0
12469 ; NO-SIMD128-NEXT:    f32.store 12($0), $pop1
12470 ; NO-SIMD128-NEXT:    f32.lt $push2=, $7, $3
12471 ; NO-SIMD128-NEXT:    f32.select $push3=, $7, $3, $pop2
12472 ; NO-SIMD128-NEXT:    f32.store 8($0), $pop3
12473 ; NO-SIMD128-NEXT:    f32.lt $push4=, $6, $2
12474 ; NO-SIMD128-NEXT:    f32.select $push5=, $6, $2, $pop4
12475 ; NO-SIMD128-NEXT:    f32.store 4($0), $pop5
12476 ; NO-SIMD128-NEXT:    f32.lt $push6=, $5, $1
12477 ; NO-SIMD128-NEXT:    f32.select $push7=, $5, $1, $pop6
12478 ; NO-SIMD128-NEXT:    f32.store 0($0), $pop7
12479 ; NO-SIMD128-NEXT:    return
12481 ; NO-SIMD128-FAST-LABEL: pmin_v4f32:
12482 ; NO-SIMD128-FAST:         .functype pmin_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
12483 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
12484 ; NO-SIMD128-FAST-NEXT:    f32.lt $push0=, $5, $1
12485 ; NO-SIMD128-FAST-NEXT:    f32.select $push1=, $5, $1, $pop0
12486 ; NO-SIMD128-FAST-NEXT:    f32.store 0($0), $pop1
12487 ; NO-SIMD128-FAST-NEXT:    f32.lt $push2=, $6, $2
12488 ; NO-SIMD128-FAST-NEXT:    f32.select $push3=, $6, $2, $pop2
12489 ; NO-SIMD128-FAST-NEXT:    f32.store 4($0), $pop3
12490 ; NO-SIMD128-FAST-NEXT:    f32.lt $push4=, $7, $3
12491 ; NO-SIMD128-FAST-NEXT:    f32.select $push5=, $7, $3, $pop4
12492 ; NO-SIMD128-FAST-NEXT:    f32.store 8($0), $pop5
12493 ; NO-SIMD128-FAST-NEXT:    f32.lt $push6=, $8, $4
12494 ; NO-SIMD128-FAST-NEXT:    f32.select $push7=, $8, $4, $pop6
12495 ; NO-SIMD128-FAST-NEXT:    f32.store 12($0), $pop7
12496 ; NO-SIMD128-FAST-NEXT:    return
12497   %c = fcmp olt <4 x float> %y, %x
12498   %a = select <4 x i1> %c, <4 x float> %y, <4 x float> %x
12499   ret <4 x float> %a
12502 define <4 x i32> @pmin_int_v4f32(<4 x i32> %x, <4 x i32> %y) {
12503 ; SIMD128-LABEL: pmin_int_v4f32:
12504 ; SIMD128:         .functype pmin_int_v4f32 (v128, v128) -> (v128)
12505 ; SIMD128-NEXT:  # %bb.0:
12506 ; SIMD128-NEXT:    f32x4.pmin $push0=, $0, $1
12507 ; SIMD128-NEXT:    return $pop0
12509 ; SIMD128-FAST-LABEL: pmin_int_v4f32:
12510 ; SIMD128-FAST:         .functype pmin_int_v4f32 (v128, v128) -> (v128)
12511 ; SIMD128-FAST-NEXT:  # %bb.0:
12512 ; SIMD128-FAST-NEXT:    f32x4.pmin $push0=, $0, $1
12513 ; SIMD128-FAST-NEXT:    return $pop0
12515 ; NO-SIMD128-LABEL: pmin_int_v4f32:
12516 ; NO-SIMD128:         .functype pmin_int_v4f32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
12517 ; NO-SIMD128-NEXT:  # %bb.0:
12518 ; NO-SIMD128-NEXT:    f32.reinterpret_i32 $push1=, $8
12519 ; NO-SIMD128-NEXT:    f32.reinterpret_i32 $push0=, $4
12520 ; NO-SIMD128-NEXT:    f32.lt $push2=, $pop1, $pop0
12521 ; NO-SIMD128-NEXT:    i32.select $push3=, $8, $4, $pop2
12522 ; NO-SIMD128-NEXT:    i32.store 12($0), $pop3
12523 ; NO-SIMD128-NEXT:    f32.reinterpret_i32 $push5=, $7
12524 ; NO-SIMD128-NEXT:    f32.reinterpret_i32 $push4=, $3
12525 ; NO-SIMD128-NEXT:    f32.lt $push6=, $pop5, $pop4
12526 ; NO-SIMD128-NEXT:    i32.select $push7=, $7, $3, $pop6
12527 ; NO-SIMD128-NEXT:    i32.store 8($0), $pop7
12528 ; NO-SIMD128-NEXT:    f32.reinterpret_i32 $push9=, $6
12529 ; NO-SIMD128-NEXT:    f32.reinterpret_i32 $push8=, $2
12530 ; NO-SIMD128-NEXT:    f32.lt $push10=, $pop9, $pop8
12531 ; NO-SIMD128-NEXT:    i32.select $push11=, $6, $2, $pop10
12532 ; NO-SIMD128-NEXT:    i32.store 4($0), $pop11
12533 ; NO-SIMD128-NEXT:    f32.reinterpret_i32 $push13=, $5
12534 ; NO-SIMD128-NEXT:    f32.reinterpret_i32 $push12=, $1
12535 ; NO-SIMD128-NEXT:    f32.lt $push14=, $pop13, $pop12
12536 ; NO-SIMD128-NEXT:    i32.select $push15=, $5, $1, $pop14
12537 ; NO-SIMD128-NEXT:    i32.store 0($0), $pop15
12538 ; NO-SIMD128-NEXT:    return
12540 ; NO-SIMD128-FAST-LABEL: pmin_int_v4f32:
12541 ; NO-SIMD128-FAST:         .functype pmin_int_v4f32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
12542 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
12543 ; NO-SIMD128-FAST-NEXT:    f32.reinterpret_i32 $push1=, $5
12544 ; NO-SIMD128-FAST-NEXT:    f32.reinterpret_i32 $push0=, $1
12545 ; NO-SIMD128-FAST-NEXT:    f32.lt $push2=, $pop1, $pop0
12546 ; NO-SIMD128-FAST-NEXT:    i32.select $push3=, $5, $1, $pop2
12547 ; NO-SIMD128-FAST-NEXT:    i32.store 0($0), $pop3
12548 ; NO-SIMD128-FAST-NEXT:    f32.reinterpret_i32 $push5=, $6
12549 ; NO-SIMD128-FAST-NEXT:    f32.reinterpret_i32 $push4=, $2
12550 ; NO-SIMD128-FAST-NEXT:    f32.lt $push6=, $pop5, $pop4
12551 ; NO-SIMD128-FAST-NEXT:    i32.select $push7=, $6, $2, $pop6
12552 ; NO-SIMD128-FAST-NEXT:    i32.store 4($0), $pop7
12553 ; NO-SIMD128-FAST-NEXT:    f32.reinterpret_i32 $push9=, $7
12554 ; NO-SIMD128-FAST-NEXT:    f32.reinterpret_i32 $push8=, $3
12555 ; NO-SIMD128-FAST-NEXT:    f32.lt $push10=, $pop9, $pop8
12556 ; NO-SIMD128-FAST-NEXT:    i32.select $push11=, $7, $3, $pop10
12557 ; NO-SIMD128-FAST-NEXT:    i32.store 8($0), $pop11
12558 ; NO-SIMD128-FAST-NEXT:    f32.reinterpret_i32 $push13=, $8
12559 ; NO-SIMD128-FAST-NEXT:    f32.reinterpret_i32 $push12=, $4
12560 ; NO-SIMD128-FAST-NEXT:    f32.lt $push14=, $pop13, $pop12
12561 ; NO-SIMD128-FAST-NEXT:    i32.select $push15=, $8, $4, $pop14
12562 ; NO-SIMD128-FAST-NEXT:    i32.store 12($0), $pop15
12563 ; NO-SIMD128-FAST-NEXT:    return
12564   %fx = bitcast <4 x i32> %x to <4 x float>
12565   %fy = bitcast <4 x i32> %y to <4 x float>
12566   %c = fcmp olt <4 x float> %fy, %fx
12567   %a = select <4 x i1> %c, <4 x i32> %y, <4 x i32> %x
12568   ret <4 x i32> %a
12571 define <4 x float> @pmax_v4f32(<4 x float> %x, <4 x float> %y) {
12572 ; SIMD128-LABEL: pmax_v4f32:
12573 ; SIMD128:         .functype pmax_v4f32 (v128, v128) -> (v128)
12574 ; SIMD128-NEXT:  # %bb.0:
12575 ; SIMD128-NEXT:    f32x4.pmax $push0=, $0, $1
12576 ; SIMD128-NEXT:    return $pop0
12578 ; SIMD128-FAST-LABEL: pmax_v4f32:
12579 ; SIMD128-FAST:         .functype pmax_v4f32 (v128, v128) -> (v128)
12580 ; SIMD128-FAST-NEXT:  # %bb.0:
12581 ; SIMD128-FAST-NEXT:    f32x4.pmax $push0=, $0, $1
12582 ; SIMD128-FAST-NEXT:    return $pop0
12584 ; NO-SIMD128-LABEL: pmax_v4f32:
12585 ; NO-SIMD128:         .functype pmax_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
12586 ; NO-SIMD128-NEXT:  # %bb.0:
12587 ; NO-SIMD128-NEXT:    f32.lt $push0=, $4, $8
12588 ; NO-SIMD128-NEXT:    f32.select $push1=, $8, $4, $pop0
12589 ; NO-SIMD128-NEXT:    f32.store 12($0), $pop1
12590 ; NO-SIMD128-NEXT:    f32.lt $push2=, $3, $7
12591 ; NO-SIMD128-NEXT:    f32.select $push3=, $7, $3, $pop2
12592 ; NO-SIMD128-NEXT:    f32.store 8($0), $pop3
12593 ; NO-SIMD128-NEXT:    f32.lt $push4=, $2, $6
12594 ; NO-SIMD128-NEXT:    f32.select $push5=, $6, $2, $pop4
12595 ; NO-SIMD128-NEXT:    f32.store 4($0), $pop5
12596 ; NO-SIMD128-NEXT:    f32.lt $push6=, $1, $5
12597 ; NO-SIMD128-NEXT:    f32.select $push7=, $5, $1, $pop6
12598 ; NO-SIMD128-NEXT:    f32.store 0($0), $pop7
12599 ; NO-SIMD128-NEXT:    return
12601 ; NO-SIMD128-FAST-LABEL: pmax_v4f32:
12602 ; NO-SIMD128-FAST:         .functype pmax_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
12603 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
12604 ; NO-SIMD128-FAST-NEXT:    f32.lt $push0=, $1, $5
12605 ; NO-SIMD128-FAST-NEXT:    f32.select $push1=, $5, $1, $pop0
12606 ; NO-SIMD128-FAST-NEXT:    f32.store 0($0), $pop1
12607 ; NO-SIMD128-FAST-NEXT:    f32.lt $push2=, $2, $6
12608 ; NO-SIMD128-FAST-NEXT:    f32.select $push3=, $6, $2, $pop2
12609 ; NO-SIMD128-FAST-NEXT:    f32.store 4($0), $pop3
12610 ; NO-SIMD128-FAST-NEXT:    f32.lt $push4=, $3, $7
12611 ; NO-SIMD128-FAST-NEXT:    f32.select $push5=, $7, $3, $pop4
12612 ; NO-SIMD128-FAST-NEXT:    f32.store 8($0), $pop5
12613 ; NO-SIMD128-FAST-NEXT:    f32.lt $push6=, $4, $8
12614 ; NO-SIMD128-FAST-NEXT:    f32.select $push7=, $8, $4, $pop6
12615 ; NO-SIMD128-FAST-NEXT:    f32.store 12($0), $pop7
12616 ; NO-SIMD128-FAST-NEXT:    return
12617   %c = fcmp olt <4 x float> %x, %y
12618   %a = select <4 x i1> %c, <4 x float> %y, <4 x float> %x
12619   ret <4 x float> %a
12622 define <4 x i32> @pmax_int_v4f32(<4 x i32> %x, <4 x i32> %y) {
12623 ; SIMD128-LABEL: pmax_int_v4f32:
12624 ; SIMD128:         .functype pmax_int_v4f32 (v128, v128) -> (v128)
12625 ; SIMD128-NEXT:  # %bb.0:
12626 ; SIMD128-NEXT:    f32x4.pmax $push0=, $0, $1
12627 ; SIMD128-NEXT:    return $pop0
12629 ; SIMD128-FAST-LABEL: pmax_int_v4f32:
12630 ; SIMD128-FAST:         .functype pmax_int_v4f32 (v128, v128) -> (v128)
12631 ; SIMD128-FAST-NEXT:  # %bb.0:
12632 ; SIMD128-FAST-NEXT:    f32x4.pmax $push0=, $0, $1
12633 ; SIMD128-FAST-NEXT:    return $pop0
12635 ; NO-SIMD128-LABEL: pmax_int_v4f32:
12636 ; NO-SIMD128:         .functype pmax_int_v4f32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
12637 ; NO-SIMD128-NEXT:  # %bb.0:
12638 ; NO-SIMD128-NEXT:    f32.reinterpret_i32 $push1=, $4
12639 ; NO-SIMD128-NEXT:    f32.reinterpret_i32 $push0=, $8
12640 ; NO-SIMD128-NEXT:    f32.lt $push2=, $pop1, $pop0
12641 ; NO-SIMD128-NEXT:    i32.select $push3=, $8, $4, $pop2
12642 ; NO-SIMD128-NEXT:    i32.store 12($0), $pop3
12643 ; NO-SIMD128-NEXT:    f32.reinterpret_i32 $push5=, $3
12644 ; NO-SIMD128-NEXT:    f32.reinterpret_i32 $push4=, $7
12645 ; NO-SIMD128-NEXT:    f32.lt $push6=, $pop5, $pop4
12646 ; NO-SIMD128-NEXT:    i32.select $push7=, $7, $3, $pop6
12647 ; NO-SIMD128-NEXT:    i32.store 8($0), $pop7
12648 ; NO-SIMD128-NEXT:    f32.reinterpret_i32 $push9=, $2
12649 ; NO-SIMD128-NEXT:    f32.reinterpret_i32 $push8=, $6
12650 ; NO-SIMD128-NEXT:    f32.lt $push10=, $pop9, $pop8
12651 ; NO-SIMD128-NEXT:    i32.select $push11=, $6, $2, $pop10
12652 ; NO-SIMD128-NEXT:    i32.store 4($0), $pop11
12653 ; NO-SIMD128-NEXT:    f32.reinterpret_i32 $push13=, $1
12654 ; NO-SIMD128-NEXT:    f32.reinterpret_i32 $push12=, $5
12655 ; NO-SIMD128-NEXT:    f32.lt $push14=, $pop13, $pop12
12656 ; NO-SIMD128-NEXT:    i32.select $push15=, $5, $1, $pop14
12657 ; NO-SIMD128-NEXT:    i32.store 0($0), $pop15
12658 ; NO-SIMD128-NEXT:    return
12660 ; NO-SIMD128-FAST-LABEL: pmax_int_v4f32:
12661 ; NO-SIMD128-FAST:         .functype pmax_int_v4f32 (i32, i32, i32, i32, i32, i32, i32, i32, i32) -> ()
12662 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
12663 ; NO-SIMD128-FAST-NEXT:    f32.reinterpret_i32 $push1=, $1
12664 ; NO-SIMD128-FAST-NEXT:    f32.reinterpret_i32 $push0=, $5
12665 ; NO-SIMD128-FAST-NEXT:    f32.lt $push2=, $pop1, $pop0
12666 ; NO-SIMD128-FAST-NEXT:    i32.select $push3=, $5, $1, $pop2
12667 ; NO-SIMD128-FAST-NEXT:    i32.store 0($0), $pop3
12668 ; NO-SIMD128-FAST-NEXT:    f32.reinterpret_i32 $push5=, $2
12669 ; NO-SIMD128-FAST-NEXT:    f32.reinterpret_i32 $push4=, $6
12670 ; NO-SIMD128-FAST-NEXT:    f32.lt $push6=, $pop5, $pop4
12671 ; NO-SIMD128-FAST-NEXT:    i32.select $push7=, $6, $2, $pop6
12672 ; NO-SIMD128-FAST-NEXT:    i32.store 4($0), $pop7
12673 ; NO-SIMD128-FAST-NEXT:    f32.reinterpret_i32 $push9=, $3
12674 ; NO-SIMD128-FAST-NEXT:    f32.reinterpret_i32 $push8=, $7
12675 ; NO-SIMD128-FAST-NEXT:    f32.lt $push10=, $pop9, $pop8
12676 ; NO-SIMD128-FAST-NEXT:    i32.select $push11=, $7, $3, $pop10
12677 ; NO-SIMD128-FAST-NEXT:    i32.store 8($0), $pop11
12678 ; NO-SIMD128-FAST-NEXT:    f32.reinterpret_i32 $push13=, $4
12679 ; NO-SIMD128-FAST-NEXT:    f32.reinterpret_i32 $push12=, $8
12680 ; NO-SIMD128-FAST-NEXT:    f32.lt $push14=, $pop13, $pop12
12681 ; NO-SIMD128-FAST-NEXT:    i32.select $push15=, $8, $4, $pop14
12682 ; NO-SIMD128-FAST-NEXT:    i32.store 12($0), $pop15
12683 ; NO-SIMD128-FAST-NEXT:    return
12684   %fx = bitcast <4 x i32> %x to <4 x float>
12685   %fy = bitcast <4 x i32> %y to <4 x float>
12686   %c = fcmp olt <4 x float> %fx, %fy
12687   %a = select <4 x i1> %c, <4 x i32> %y, <4 x i32> %x
12688   ret <4 x i32> %a
12691 define <4 x float> @add_v4f32(<4 x float> %x, <4 x float> %y) {
12692 ; SIMD128-LABEL: add_v4f32:
12693 ; SIMD128:         .functype add_v4f32 (v128, v128) -> (v128)
12694 ; SIMD128-NEXT:  # %bb.0:
12695 ; SIMD128-NEXT:    f32x4.add $push0=, $0, $1
12696 ; SIMD128-NEXT:    return $pop0
12698 ; SIMD128-FAST-LABEL: add_v4f32:
12699 ; SIMD128-FAST:         .functype add_v4f32 (v128, v128) -> (v128)
12700 ; SIMD128-FAST-NEXT:  # %bb.0:
12701 ; SIMD128-FAST-NEXT:    f32x4.add $push0=, $0, $1
12702 ; SIMD128-FAST-NEXT:    return $pop0
12704 ; NO-SIMD128-LABEL: add_v4f32:
12705 ; NO-SIMD128:         .functype add_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
12706 ; NO-SIMD128-NEXT:  # %bb.0:
12707 ; NO-SIMD128-NEXT:    f32.add $push0=, $4, $8
12708 ; NO-SIMD128-NEXT:    f32.store 12($0), $pop0
12709 ; NO-SIMD128-NEXT:    f32.add $push1=, $3, $7
12710 ; NO-SIMD128-NEXT:    f32.store 8($0), $pop1
12711 ; NO-SIMD128-NEXT:    f32.add $push2=, $2, $6
12712 ; NO-SIMD128-NEXT:    f32.store 4($0), $pop2
12713 ; NO-SIMD128-NEXT:    f32.add $push3=, $1, $5
12714 ; NO-SIMD128-NEXT:    f32.store 0($0), $pop3
12715 ; NO-SIMD128-NEXT:    return
12717 ; NO-SIMD128-FAST-LABEL: add_v4f32:
12718 ; NO-SIMD128-FAST:         .functype add_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
12719 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
12720 ; NO-SIMD128-FAST-NEXT:    f32.add $push0=, $1, $5
12721 ; NO-SIMD128-FAST-NEXT:    f32.store 0($0), $pop0
12722 ; NO-SIMD128-FAST-NEXT:    f32.add $push1=, $2, $6
12723 ; NO-SIMD128-FAST-NEXT:    f32.store 4($0), $pop1
12724 ; NO-SIMD128-FAST-NEXT:    f32.add $push2=, $3, $7
12725 ; NO-SIMD128-FAST-NEXT:    f32.store 8($0), $pop2
12726 ; NO-SIMD128-FAST-NEXT:    f32.add $push3=, $4, $8
12727 ; NO-SIMD128-FAST-NEXT:    f32.store 12($0), $pop3
12728 ; NO-SIMD128-FAST-NEXT:    return
12729   %a = fadd <4 x float> %x, %y
12730   ret <4 x float> %a
12733 define <4 x float> @sub_v4f32(<4 x float> %x, <4 x float> %y) {
12734 ; SIMD128-LABEL: sub_v4f32:
12735 ; SIMD128:         .functype sub_v4f32 (v128, v128) -> (v128)
12736 ; SIMD128-NEXT:  # %bb.0:
12737 ; SIMD128-NEXT:    f32x4.sub $push0=, $0, $1
12738 ; SIMD128-NEXT:    return $pop0
12740 ; SIMD128-FAST-LABEL: sub_v4f32:
12741 ; SIMD128-FAST:         .functype sub_v4f32 (v128, v128) -> (v128)
12742 ; SIMD128-FAST-NEXT:  # %bb.0:
12743 ; SIMD128-FAST-NEXT:    f32x4.sub $push0=, $0, $1
12744 ; SIMD128-FAST-NEXT:    return $pop0
12746 ; NO-SIMD128-LABEL: sub_v4f32:
12747 ; NO-SIMD128:         .functype sub_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
12748 ; NO-SIMD128-NEXT:  # %bb.0:
12749 ; NO-SIMD128-NEXT:    f32.sub $push0=, $4, $8
12750 ; NO-SIMD128-NEXT:    f32.store 12($0), $pop0
12751 ; NO-SIMD128-NEXT:    f32.sub $push1=, $3, $7
12752 ; NO-SIMD128-NEXT:    f32.store 8($0), $pop1
12753 ; NO-SIMD128-NEXT:    f32.sub $push2=, $2, $6
12754 ; NO-SIMD128-NEXT:    f32.store 4($0), $pop2
12755 ; NO-SIMD128-NEXT:    f32.sub $push3=, $1, $5
12756 ; NO-SIMD128-NEXT:    f32.store 0($0), $pop3
12757 ; NO-SIMD128-NEXT:    return
12759 ; NO-SIMD128-FAST-LABEL: sub_v4f32:
12760 ; NO-SIMD128-FAST:         .functype sub_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
12761 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
12762 ; NO-SIMD128-FAST-NEXT:    f32.sub $push0=, $1, $5
12763 ; NO-SIMD128-FAST-NEXT:    f32.store 0($0), $pop0
12764 ; NO-SIMD128-FAST-NEXT:    f32.sub $push1=, $2, $6
12765 ; NO-SIMD128-FAST-NEXT:    f32.store 4($0), $pop1
12766 ; NO-SIMD128-FAST-NEXT:    f32.sub $push2=, $3, $7
12767 ; NO-SIMD128-FAST-NEXT:    f32.store 8($0), $pop2
12768 ; NO-SIMD128-FAST-NEXT:    f32.sub $push3=, $4, $8
12769 ; NO-SIMD128-FAST-NEXT:    f32.store 12($0), $pop3
12770 ; NO-SIMD128-FAST-NEXT:    return
12771   %a = fsub <4 x float> %x, %y
12772   ret <4 x float> %a
12775 define <4 x float> @div_v4f32(<4 x float> %x, <4 x float> %y) {
12776 ; SIMD128-LABEL: div_v4f32:
12777 ; SIMD128:         .functype div_v4f32 (v128, v128) -> (v128)
12778 ; SIMD128-NEXT:  # %bb.0:
12779 ; SIMD128-NEXT:    f32x4.div $push0=, $0, $1
12780 ; SIMD128-NEXT:    return $pop0
12782 ; SIMD128-FAST-LABEL: div_v4f32:
12783 ; SIMD128-FAST:         .functype div_v4f32 (v128, v128) -> (v128)
12784 ; SIMD128-FAST-NEXT:  # %bb.0:
12785 ; SIMD128-FAST-NEXT:    f32x4.div $push0=, $0, $1
12786 ; SIMD128-FAST-NEXT:    return $pop0
12788 ; NO-SIMD128-LABEL: div_v4f32:
12789 ; NO-SIMD128:         .functype div_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
12790 ; NO-SIMD128-NEXT:  # %bb.0:
12791 ; NO-SIMD128-NEXT:    f32.div $push0=, $4, $8
12792 ; NO-SIMD128-NEXT:    f32.store 12($0), $pop0
12793 ; NO-SIMD128-NEXT:    f32.div $push1=, $3, $7
12794 ; NO-SIMD128-NEXT:    f32.store 8($0), $pop1
12795 ; NO-SIMD128-NEXT:    f32.div $push2=, $2, $6
12796 ; NO-SIMD128-NEXT:    f32.store 4($0), $pop2
12797 ; NO-SIMD128-NEXT:    f32.div $push3=, $1, $5
12798 ; NO-SIMD128-NEXT:    f32.store 0($0), $pop3
12799 ; NO-SIMD128-NEXT:    return
12801 ; NO-SIMD128-FAST-LABEL: div_v4f32:
12802 ; NO-SIMD128-FAST:         .functype div_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
12803 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
12804 ; NO-SIMD128-FAST-NEXT:    f32.div $push0=, $1, $5
12805 ; NO-SIMD128-FAST-NEXT:    f32.store 0($0), $pop0
12806 ; NO-SIMD128-FAST-NEXT:    f32.div $push1=, $2, $6
12807 ; NO-SIMD128-FAST-NEXT:    f32.store 4($0), $pop1
12808 ; NO-SIMD128-FAST-NEXT:    f32.div $push2=, $3, $7
12809 ; NO-SIMD128-FAST-NEXT:    f32.store 8($0), $pop2
12810 ; NO-SIMD128-FAST-NEXT:    f32.div $push3=, $4, $8
12811 ; NO-SIMD128-FAST-NEXT:    f32.store 12($0), $pop3
12812 ; NO-SIMD128-FAST-NEXT:    return
12813   %a = fdiv <4 x float> %x, %y
12814   ret <4 x float> %a
12817 define <4 x float> @mul_v4f32(<4 x float> %x, <4 x float> %y) {
12818 ; SIMD128-LABEL: mul_v4f32:
12819 ; SIMD128:         .functype mul_v4f32 (v128, v128) -> (v128)
12820 ; SIMD128-NEXT:  # %bb.0:
12821 ; SIMD128-NEXT:    f32x4.mul $push0=, $0, $1
12822 ; SIMD128-NEXT:    return $pop0
12824 ; SIMD128-FAST-LABEL: mul_v4f32:
12825 ; SIMD128-FAST:         .functype mul_v4f32 (v128, v128) -> (v128)
12826 ; SIMD128-FAST-NEXT:  # %bb.0:
12827 ; SIMD128-FAST-NEXT:    f32x4.mul $push0=, $0, $1
12828 ; SIMD128-FAST-NEXT:    return $pop0
12830 ; NO-SIMD128-LABEL: mul_v4f32:
12831 ; NO-SIMD128:         .functype mul_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
12832 ; NO-SIMD128-NEXT:  # %bb.0:
12833 ; NO-SIMD128-NEXT:    f32.mul $push0=, $4, $8
12834 ; NO-SIMD128-NEXT:    f32.store 12($0), $pop0
12835 ; NO-SIMD128-NEXT:    f32.mul $push1=, $3, $7
12836 ; NO-SIMD128-NEXT:    f32.store 8($0), $pop1
12837 ; NO-SIMD128-NEXT:    f32.mul $push2=, $2, $6
12838 ; NO-SIMD128-NEXT:    f32.store 4($0), $pop2
12839 ; NO-SIMD128-NEXT:    f32.mul $push3=, $1, $5
12840 ; NO-SIMD128-NEXT:    f32.store 0($0), $pop3
12841 ; NO-SIMD128-NEXT:    return
12843 ; NO-SIMD128-FAST-LABEL: mul_v4f32:
12844 ; NO-SIMD128-FAST:         .functype mul_v4f32 (i32, f32, f32, f32, f32, f32, f32, f32, f32) -> ()
12845 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
12846 ; NO-SIMD128-FAST-NEXT:    f32.mul $push0=, $1, $5
12847 ; NO-SIMD128-FAST-NEXT:    f32.store 0($0), $pop0
12848 ; NO-SIMD128-FAST-NEXT:    f32.mul $push1=, $2, $6
12849 ; NO-SIMD128-FAST-NEXT:    f32.store 4($0), $pop1
12850 ; NO-SIMD128-FAST-NEXT:    f32.mul $push2=, $3, $7
12851 ; NO-SIMD128-FAST-NEXT:    f32.store 8($0), $pop2
12852 ; NO-SIMD128-FAST-NEXT:    f32.mul $push3=, $4, $8
12853 ; NO-SIMD128-FAST-NEXT:    f32.store 12($0), $pop3
12854 ; NO-SIMD128-FAST-NEXT:    return
12855   %a = fmul <4 x float> %x, %y
12856   ret <4 x float> %a
12859 declare <4 x float> @llvm.sqrt.v4f32(<4 x float> %x)
12860 define <4 x float> @sqrt_v4f32(<4 x float> %x) {
12861 ; SIMD128-LABEL: sqrt_v4f32:
12862 ; SIMD128:         .functype sqrt_v4f32 (v128) -> (v128)
12863 ; SIMD128-NEXT:  # %bb.0:
12864 ; SIMD128-NEXT:    f32x4.sqrt $push0=, $0
12865 ; SIMD128-NEXT:    return $pop0
12867 ; SIMD128-FAST-LABEL: sqrt_v4f32:
12868 ; SIMD128-FAST:         .functype sqrt_v4f32 (v128) -> (v128)
12869 ; SIMD128-FAST-NEXT:  # %bb.0:
12870 ; SIMD128-FAST-NEXT:    f32x4.sqrt $push0=, $0
12871 ; SIMD128-FAST-NEXT:    return $pop0
12873 ; NO-SIMD128-LABEL: sqrt_v4f32:
12874 ; NO-SIMD128:         .functype sqrt_v4f32 (i32, f32, f32, f32, f32) -> ()
12875 ; NO-SIMD128-NEXT:  # %bb.0:
12876 ; NO-SIMD128-NEXT:    f32.sqrt $push0=, $4
12877 ; NO-SIMD128-NEXT:    f32.store 12($0), $pop0
12878 ; NO-SIMD128-NEXT:    f32.sqrt $push1=, $3
12879 ; NO-SIMD128-NEXT:    f32.store 8($0), $pop1
12880 ; NO-SIMD128-NEXT:    f32.sqrt $push2=, $2
12881 ; NO-SIMD128-NEXT:    f32.store 4($0), $pop2
12882 ; NO-SIMD128-NEXT:    f32.sqrt $push3=, $1
12883 ; NO-SIMD128-NEXT:    f32.store 0($0), $pop3
12884 ; NO-SIMD128-NEXT:    return
12886 ; NO-SIMD128-FAST-LABEL: sqrt_v4f32:
12887 ; NO-SIMD128-FAST:         .functype sqrt_v4f32 (i32, f32, f32, f32, f32) -> ()
12888 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
12889 ; NO-SIMD128-FAST-NEXT:    f32.sqrt $push0=, $1
12890 ; NO-SIMD128-FAST-NEXT:    f32.store 0($0), $pop0
12891 ; NO-SIMD128-FAST-NEXT:    f32.sqrt $push1=, $2
12892 ; NO-SIMD128-FAST-NEXT:    f32.store 4($0), $pop1
12893 ; NO-SIMD128-FAST-NEXT:    f32.sqrt $push2=, $3
12894 ; NO-SIMD128-FAST-NEXT:    f32.store 8($0), $pop2
12895 ; NO-SIMD128-FAST-NEXT:    f32.sqrt $push3=, $4
12896 ; NO-SIMD128-FAST-NEXT:    f32.store 12($0), $pop3
12897 ; NO-SIMD128-FAST-NEXT:    return
12898   %a = call <4 x float> @llvm.sqrt.v4f32(<4 x float> %x)
12899   ret <4 x float> %a
12902 ; ==============================================================================
12903 ; 2 x double
12904 ; ==============================================================================
12905 define <2 x double> @neg_v2f64(<2 x double> %x) {
12906   ; nsz makes this semantically equivalent to flipping sign bit
12907 ; SIMD128-LABEL: neg_v2f64:
12908 ; SIMD128:         .functype neg_v2f64 (v128) -> (v128)
12909 ; SIMD128-NEXT:  # %bb.0:
12910 ; SIMD128-NEXT:    f64x2.neg $push0=, $0
12911 ; SIMD128-NEXT:    return $pop0
12913 ; SIMD128-FAST-LABEL: neg_v2f64:
12914 ; SIMD128-FAST:         .functype neg_v2f64 (v128) -> (v128)
12915 ; SIMD128-FAST-NEXT:  # %bb.0:
12916 ; SIMD128-FAST-NEXT:    f64x2.neg $push0=, $0
12917 ; SIMD128-FAST-NEXT:    return $pop0
12919 ; NO-SIMD128-LABEL: neg_v2f64:
12920 ; NO-SIMD128:         .functype neg_v2f64 (i32, f64, f64) -> ()
12921 ; NO-SIMD128-NEXT:  # %bb.0:
12922 ; NO-SIMD128-NEXT:    f64.neg $push0=, $2
12923 ; NO-SIMD128-NEXT:    f64.store 8($0), $pop0
12924 ; NO-SIMD128-NEXT:    f64.neg $push1=, $1
12925 ; NO-SIMD128-NEXT:    f64.store 0($0), $pop1
12926 ; NO-SIMD128-NEXT:    return
12928 ; NO-SIMD128-FAST-LABEL: neg_v2f64:
12929 ; NO-SIMD128-FAST:         .functype neg_v2f64 (i32, f64, f64) -> ()
12930 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
12931 ; NO-SIMD128-FAST-NEXT:    f64.neg $push0=, $1
12932 ; NO-SIMD128-FAST-NEXT:    f64.store 0($0), $pop0
12933 ; NO-SIMD128-FAST-NEXT:    f64.neg $push1=, $2
12934 ; NO-SIMD128-FAST-NEXT:    f64.store 8($0), $pop1
12935 ; NO-SIMD128-FAST-NEXT:    return
12936   %a = fsub nsz <2 x double> <double 0., double 0.>, %x
12937   ret <2 x double> %a
12940 declare <2 x double> @llvm.fabs.v2f64(<2 x double>) nounwind readnone
12941 define <2 x double> @abs_v2f64(<2 x double> %x) {
12942 ; SIMD128-LABEL: abs_v2f64:
12943 ; SIMD128:         .functype abs_v2f64 (v128) -> (v128)
12944 ; SIMD128-NEXT:  # %bb.0:
12945 ; SIMD128-NEXT:    f64x2.abs $push0=, $0
12946 ; SIMD128-NEXT:    return $pop0
12948 ; SIMD128-FAST-LABEL: abs_v2f64:
12949 ; SIMD128-FAST:         .functype abs_v2f64 (v128) -> (v128)
12950 ; SIMD128-FAST-NEXT:  # %bb.0:
12951 ; SIMD128-FAST-NEXT:    f64x2.abs $push0=, $0
12952 ; SIMD128-FAST-NEXT:    return $pop0
12954 ; NO-SIMD128-LABEL: abs_v2f64:
12955 ; NO-SIMD128:         .functype abs_v2f64 (i32, f64, f64) -> ()
12956 ; NO-SIMD128-NEXT:  # %bb.0:
12957 ; NO-SIMD128-NEXT:    f64.abs $push0=, $2
12958 ; NO-SIMD128-NEXT:    f64.store 8($0), $pop0
12959 ; NO-SIMD128-NEXT:    f64.abs $push1=, $1
12960 ; NO-SIMD128-NEXT:    f64.store 0($0), $pop1
12961 ; NO-SIMD128-NEXT:    return
12963 ; NO-SIMD128-FAST-LABEL: abs_v2f64:
12964 ; NO-SIMD128-FAST:         .functype abs_v2f64 (i32, f64, f64) -> ()
12965 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
12966 ; NO-SIMD128-FAST-NEXT:    f64.abs $push0=, $1
12967 ; NO-SIMD128-FAST-NEXT:    f64.store 0($0), $pop0
12968 ; NO-SIMD128-FAST-NEXT:    f64.abs $push1=, $2
12969 ; NO-SIMD128-FAST-NEXT:    f64.store 8($0), $pop1
12970 ; NO-SIMD128-FAST-NEXT:    return
12971   %a = call <2 x double> @llvm.fabs.v2f64(<2 x double> %x)
12972   ret <2 x double> %a
12975 define <2 x double> @min_unordered_v2f64(<2 x double> %x) {
12976 ; SIMD128-LABEL: min_unordered_v2f64:
12977 ; SIMD128:         .functype min_unordered_v2f64 (v128) -> (v128)
12978 ; SIMD128-NEXT:  # %bb.0:
12979 ; SIMD128-NEXT:    v128.const $push0=, 0x1.4p2, 0x1.4p2
12980 ; SIMD128-NEXT:    f64x2.pmin $push1=, $0, $pop0
12981 ; SIMD128-NEXT:    return $pop1
12983 ; SIMD128-FAST-LABEL: min_unordered_v2f64:
12984 ; SIMD128-FAST:         .functype min_unordered_v2f64 (v128) -> (v128)
12985 ; SIMD128-FAST-NEXT:  # %bb.0:
12986 ; SIMD128-FAST-NEXT:    v128.const $push1=, 0x1.4p2, 0x1.4p2
12987 ; SIMD128-FAST-NEXT:    f64x2.pmin $push0=, $0, $pop1
12988 ; SIMD128-FAST-NEXT:    return $pop0
12990 ; NO-SIMD128-LABEL: min_unordered_v2f64:
12991 ; NO-SIMD128:         .functype min_unordered_v2f64 (i32, f64, f64) -> ()
12992 ; NO-SIMD128-NEXT:  # %bb.0:
12993 ; NO-SIMD128-NEXT:    f64.const $push0=, 0x1.4p2
12994 ; NO-SIMD128-NEXT:    f64.const $push7=, 0x1.4p2
12995 ; NO-SIMD128-NEXT:    f64.gt $push1=, $2, $pop7
12996 ; NO-SIMD128-NEXT:    f64.select $push2=, $pop0, $2, $pop1
12997 ; NO-SIMD128-NEXT:    f64.store 8($0), $pop2
12998 ; NO-SIMD128-NEXT:    f64.const $push6=, 0x1.4p2
12999 ; NO-SIMD128-NEXT:    f64.const $push5=, 0x1.4p2
13000 ; NO-SIMD128-NEXT:    f64.gt $push3=, $1, $pop5
13001 ; NO-SIMD128-NEXT:    f64.select $push4=, $pop6, $1, $pop3
13002 ; NO-SIMD128-NEXT:    f64.store 0($0), $pop4
13003 ; NO-SIMD128-NEXT:    return
13005 ; NO-SIMD128-FAST-LABEL: min_unordered_v2f64:
13006 ; NO-SIMD128-FAST:         .functype min_unordered_v2f64 (i32, f64, f64) -> ()
13007 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
13008 ; NO-SIMD128-FAST-NEXT:    f64.const $push0=, 0x1.4p2
13009 ; NO-SIMD128-FAST-NEXT:    f64.const $push7=, 0x1.4p2
13010 ; NO-SIMD128-FAST-NEXT:    f64.gt $push1=, $1, $pop7
13011 ; NO-SIMD128-FAST-NEXT:    f64.select $push2=, $pop0, $1, $pop1
13012 ; NO-SIMD128-FAST-NEXT:    f64.store 0($0), $pop2
13013 ; NO-SIMD128-FAST-NEXT:    f64.const $push6=, 0x1.4p2
13014 ; NO-SIMD128-FAST-NEXT:    f64.const $push5=, 0x1.4p2
13015 ; NO-SIMD128-FAST-NEXT:    f64.gt $push3=, $2, $pop5
13016 ; NO-SIMD128-FAST-NEXT:    f64.select $push4=, $pop6, $2, $pop3
13017 ; NO-SIMD128-FAST-NEXT:    f64.store 8($0), $pop4
13018 ; NO-SIMD128-FAST-NEXT:    return
13019   %cmps = fcmp ule <2 x double> %x, <double 5., double 5.>
13020   %a = select <2 x i1> %cmps, <2 x double> %x,
13021     <2 x double> <double 5., double 5.>
13022   ret <2 x double> %a
13025 define <2 x double> @max_unordered_v2f64(<2 x double> %x) {
13026 ; SIMD128-LABEL: max_unordered_v2f64:
13027 ; SIMD128:         .functype max_unordered_v2f64 (v128) -> (v128)
13028 ; SIMD128-NEXT:  # %bb.0:
13029 ; SIMD128-NEXT:    v128.const $push0=, 0x1.4p2, 0x1.4p2
13030 ; SIMD128-NEXT:    f64x2.pmax $push1=, $0, $pop0
13031 ; SIMD128-NEXT:    return $pop1
13033 ; SIMD128-FAST-LABEL: max_unordered_v2f64:
13034 ; SIMD128-FAST:         .functype max_unordered_v2f64 (v128) -> (v128)
13035 ; SIMD128-FAST-NEXT:  # %bb.0:
13036 ; SIMD128-FAST-NEXT:    v128.const $push1=, 0x1.4p2, 0x1.4p2
13037 ; SIMD128-FAST-NEXT:    f64x2.pmax $push0=, $0, $pop1
13038 ; SIMD128-FAST-NEXT:    return $pop0
13040 ; NO-SIMD128-LABEL: max_unordered_v2f64:
13041 ; NO-SIMD128:         .functype max_unordered_v2f64 (i32, f64, f64) -> ()
13042 ; NO-SIMD128-NEXT:  # %bb.0:
13043 ; NO-SIMD128-NEXT:    f64.const $push0=, 0x1.4p2
13044 ; NO-SIMD128-NEXT:    f64.const $push7=, 0x1.4p2
13045 ; NO-SIMD128-NEXT:    f64.lt $push1=, $2, $pop7
13046 ; NO-SIMD128-NEXT:    f64.select $push2=, $pop0, $2, $pop1
13047 ; NO-SIMD128-NEXT:    f64.store 8($0), $pop2
13048 ; NO-SIMD128-NEXT:    f64.const $push6=, 0x1.4p2
13049 ; NO-SIMD128-NEXT:    f64.const $push5=, 0x1.4p2
13050 ; NO-SIMD128-NEXT:    f64.lt $push3=, $1, $pop5
13051 ; NO-SIMD128-NEXT:    f64.select $push4=, $pop6, $1, $pop3
13052 ; NO-SIMD128-NEXT:    f64.store 0($0), $pop4
13053 ; NO-SIMD128-NEXT:    return
13055 ; NO-SIMD128-FAST-LABEL: max_unordered_v2f64:
13056 ; NO-SIMD128-FAST:         .functype max_unordered_v2f64 (i32, f64, f64) -> ()
13057 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
13058 ; NO-SIMD128-FAST-NEXT:    f64.const $push0=, 0x1.4p2
13059 ; NO-SIMD128-FAST-NEXT:    f64.const $push7=, 0x1.4p2
13060 ; NO-SIMD128-FAST-NEXT:    f64.lt $push1=, $1, $pop7
13061 ; NO-SIMD128-FAST-NEXT:    f64.select $push2=, $pop0, $1, $pop1
13062 ; NO-SIMD128-FAST-NEXT:    f64.store 0($0), $pop2
13063 ; NO-SIMD128-FAST-NEXT:    f64.const $push6=, 0x1.4p2
13064 ; NO-SIMD128-FAST-NEXT:    f64.const $push5=, 0x1.4p2
13065 ; NO-SIMD128-FAST-NEXT:    f64.lt $push3=, $2, $pop5
13066 ; NO-SIMD128-FAST-NEXT:    f64.select $push4=, $pop6, $2, $pop3
13067 ; NO-SIMD128-FAST-NEXT:    f64.store 8($0), $pop4
13068 ; NO-SIMD128-FAST-NEXT:    return
13069   %cmps = fcmp uge <2 x double> %x, <double 5., double 5.>
13070   %a = select <2 x i1> %cmps, <2 x double> %x,
13071     <2 x double> <double 5., double 5.>
13072   ret <2 x double> %a
13075 define <2 x double> @min_ordered_v2f64(<2 x double> %x) {
13076 ; SIMD128-LABEL: min_ordered_v2f64:
13077 ; SIMD128:         .functype min_ordered_v2f64 (v128) -> (v128)
13078 ; SIMD128-NEXT:  # %bb.0:
13079 ; SIMD128-NEXT:    v128.const $push0=, 0x1.4p2, 0x1.4p2
13080 ; SIMD128-NEXT:    f64x2.pmin $push1=, $0, $pop0
13081 ; SIMD128-NEXT:    return $pop1
13083 ; SIMD128-FAST-LABEL: min_ordered_v2f64:
13084 ; SIMD128-FAST:         .functype min_ordered_v2f64 (v128) -> (v128)
13085 ; SIMD128-FAST-NEXT:  # %bb.0:
13086 ; SIMD128-FAST-NEXT:    v128.const $push1=, 0x1.4p2, 0x1.4p2
13087 ; SIMD128-FAST-NEXT:    f64x2.pmin $push0=, $0, $pop1
13088 ; SIMD128-FAST-NEXT:    return $pop0
13090 ; NO-SIMD128-LABEL: min_ordered_v2f64:
13091 ; NO-SIMD128:         .functype min_ordered_v2f64 (i32, f64, f64) -> ()
13092 ; NO-SIMD128-NEXT:  # %bb.0:
13093 ; NO-SIMD128-NEXT:    f64.const $push0=, 0x1.4p2
13094 ; NO-SIMD128-NEXT:    f64.const $push7=, 0x1.4p2
13095 ; NO-SIMD128-NEXT:    f64.ge $push1=, $2, $pop7
13096 ; NO-SIMD128-NEXT:    f64.select $push2=, $pop0, $2, $pop1
13097 ; NO-SIMD128-NEXT:    f64.store 8($0), $pop2
13098 ; NO-SIMD128-NEXT:    f64.const $push6=, 0x1.4p2
13099 ; NO-SIMD128-NEXT:    f64.const $push5=, 0x1.4p2
13100 ; NO-SIMD128-NEXT:    f64.ge $push3=, $1, $pop5
13101 ; NO-SIMD128-NEXT:    f64.select $push4=, $pop6, $1, $pop3
13102 ; NO-SIMD128-NEXT:    f64.store 0($0), $pop4
13103 ; NO-SIMD128-NEXT:    return
13105 ; NO-SIMD128-FAST-LABEL: min_ordered_v2f64:
13106 ; NO-SIMD128-FAST:         .functype min_ordered_v2f64 (i32, f64, f64) -> ()
13107 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
13108 ; NO-SIMD128-FAST-NEXT:    f64.const $push0=, 0x1.4p2
13109 ; NO-SIMD128-FAST-NEXT:    f64.const $push7=, 0x1.4p2
13110 ; NO-SIMD128-FAST-NEXT:    f64.ge $push1=, $1, $pop7
13111 ; NO-SIMD128-FAST-NEXT:    f64.select $push2=, $pop0, $1, $pop1
13112 ; NO-SIMD128-FAST-NEXT:    f64.store 0($0), $pop2
13113 ; NO-SIMD128-FAST-NEXT:    f64.const $push6=, 0x1.4p2
13114 ; NO-SIMD128-FAST-NEXT:    f64.const $push5=, 0x1.4p2
13115 ; NO-SIMD128-FAST-NEXT:    f64.ge $push3=, $2, $pop5
13116 ; NO-SIMD128-FAST-NEXT:    f64.select $push4=, $pop6, $2, $pop3
13117 ; NO-SIMD128-FAST-NEXT:    f64.store 8($0), $pop4
13118 ; NO-SIMD128-FAST-NEXT:    return
13119   %cmps = fcmp ole <2 x double> <double 5., double 5.>, %x
13120   %a = select <2 x i1> %cmps, <2 x double> <double 5., double 5.>,
13121     <2 x double> %x
13122   ret <2 x double> %a
13125 define <2 x double> @max_ordered_v2f64(<2 x double> %x) {
13126 ; SIMD128-LABEL: max_ordered_v2f64:
13127 ; SIMD128:         .functype max_ordered_v2f64 (v128) -> (v128)
13128 ; SIMD128-NEXT:  # %bb.0:
13129 ; SIMD128-NEXT:    v128.const $push0=, 0x1.4p2, 0x1.4p2
13130 ; SIMD128-NEXT:    f64x2.pmax $push1=, $0, $pop0
13131 ; SIMD128-NEXT:    return $pop1
13133 ; SIMD128-FAST-LABEL: max_ordered_v2f64:
13134 ; SIMD128-FAST:         .functype max_ordered_v2f64 (v128) -> (v128)
13135 ; SIMD128-FAST-NEXT:  # %bb.0:
13136 ; SIMD128-FAST-NEXT:    v128.const $push1=, 0x1.4p2, 0x1.4p2
13137 ; SIMD128-FAST-NEXT:    f64x2.pmax $push0=, $0, $pop1
13138 ; SIMD128-FAST-NEXT:    return $pop0
13140 ; NO-SIMD128-LABEL: max_ordered_v2f64:
13141 ; NO-SIMD128:         .functype max_ordered_v2f64 (i32, f64, f64) -> ()
13142 ; NO-SIMD128-NEXT:  # %bb.0:
13143 ; NO-SIMD128-NEXT:    f64.const $push0=, 0x1.4p2
13144 ; NO-SIMD128-NEXT:    f64.const $push7=, 0x1.4p2
13145 ; NO-SIMD128-NEXT:    f64.le $push1=, $2, $pop7
13146 ; NO-SIMD128-NEXT:    f64.select $push2=, $pop0, $2, $pop1
13147 ; NO-SIMD128-NEXT:    f64.store 8($0), $pop2
13148 ; NO-SIMD128-NEXT:    f64.const $push6=, 0x1.4p2
13149 ; NO-SIMD128-NEXT:    f64.const $push5=, 0x1.4p2
13150 ; NO-SIMD128-NEXT:    f64.le $push3=, $1, $pop5
13151 ; NO-SIMD128-NEXT:    f64.select $push4=, $pop6, $1, $pop3
13152 ; NO-SIMD128-NEXT:    f64.store 0($0), $pop4
13153 ; NO-SIMD128-NEXT:    return
13155 ; NO-SIMD128-FAST-LABEL: max_ordered_v2f64:
13156 ; NO-SIMD128-FAST:         .functype max_ordered_v2f64 (i32, f64, f64) -> ()
13157 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
13158 ; NO-SIMD128-FAST-NEXT:    f64.const $push0=, 0x1.4p2
13159 ; NO-SIMD128-FAST-NEXT:    f64.const $push7=, 0x1.4p2
13160 ; NO-SIMD128-FAST-NEXT:    f64.le $push1=, $1, $pop7
13161 ; NO-SIMD128-FAST-NEXT:    f64.select $push2=, $pop0, $1, $pop1
13162 ; NO-SIMD128-FAST-NEXT:    f64.store 0($0), $pop2
13163 ; NO-SIMD128-FAST-NEXT:    f64.const $push6=, 0x1.4p2
13164 ; NO-SIMD128-FAST-NEXT:    f64.const $push5=, 0x1.4p2
13165 ; NO-SIMD128-FAST-NEXT:    f64.le $push3=, $2, $pop5
13166 ; NO-SIMD128-FAST-NEXT:    f64.select $push4=, $pop6, $2, $pop3
13167 ; NO-SIMD128-FAST-NEXT:    f64.store 8($0), $pop4
13168 ; NO-SIMD128-FAST-NEXT:    return
13169   %cmps = fcmp oge <2 x double> <double 5., double 5.>, %x
13170   %a = select <2 x i1> %cmps, <2 x double> <double 5., double 5.>,
13171     <2 x double> %x
13172   ret <2 x double> %a
13175 declare <2 x double> @llvm.minimum.v2f64(<2 x double>, <2 x double>)
13176 define <2 x double> @min_intrinsic_v2f64(<2 x double> %x, <2 x double> %y) {
13177 ; SIMD128-LABEL: min_intrinsic_v2f64:
13178 ; SIMD128:         .functype min_intrinsic_v2f64 (v128, v128) -> (v128)
13179 ; SIMD128-NEXT:  # %bb.0:
13180 ; SIMD128-NEXT:    f64x2.min $push0=, $0, $1
13181 ; SIMD128-NEXT:    return $pop0
13183 ; SIMD128-FAST-LABEL: min_intrinsic_v2f64:
13184 ; SIMD128-FAST:         .functype min_intrinsic_v2f64 (v128, v128) -> (v128)
13185 ; SIMD128-FAST-NEXT:  # %bb.0:
13186 ; SIMD128-FAST-NEXT:    f64x2.min $push0=, $0, $1
13187 ; SIMD128-FAST-NEXT:    return $pop0
13189 ; NO-SIMD128-LABEL: min_intrinsic_v2f64:
13190 ; NO-SIMD128:         .functype min_intrinsic_v2f64 (i32, f64, f64, f64, f64) -> ()
13191 ; NO-SIMD128-NEXT:  # %bb.0:
13192 ; NO-SIMD128-NEXT:    f64.min $push0=, $2, $4
13193 ; NO-SIMD128-NEXT:    f64.store 8($0), $pop0
13194 ; NO-SIMD128-NEXT:    f64.min $push1=, $1, $3
13195 ; NO-SIMD128-NEXT:    f64.store 0($0), $pop1
13196 ; NO-SIMD128-NEXT:    return
13198 ; NO-SIMD128-FAST-LABEL: min_intrinsic_v2f64:
13199 ; NO-SIMD128-FAST:         .functype min_intrinsic_v2f64 (i32, f64, f64, f64, f64) -> ()
13200 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
13201 ; NO-SIMD128-FAST-NEXT:    f64.min $push0=, $1, $3
13202 ; NO-SIMD128-FAST-NEXT:    f64.store 0($0), $pop0
13203 ; NO-SIMD128-FAST-NEXT:    f64.min $push1=, $2, $4
13204 ; NO-SIMD128-FAST-NEXT:    f64.store 8($0), $pop1
13205 ; NO-SIMD128-FAST-NEXT:    return
13206   %a = call <2 x double> @llvm.minimum.v2f64(<2 x double> %x, <2 x double> %y)
13207   ret <2 x double> %a
13210 declare <2 x double> @llvm.maximum.v2f64(<2 x double>, <2 x double>)
13211 define <2 x double> @max_intrinsic_v2f64(<2 x double> %x, <2 x double> %y) {
13212 ; SIMD128-LABEL: max_intrinsic_v2f64:
13213 ; SIMD128:         .functype max_intrinsic_v2f64 (v128, v128) -> (v128)
13214 ; SIMD128-NEXT:  # %bb.0:
13215 ; SIMD128-NEXT:    f64x2.max $push0=, $0, $1
13216 ; SIMD128-NEXT:    return $pop0
13218 ; SIMD128-FAST-LABEL: max_intrinsic_v2f64:
13219 ; SIMD128-FAST:         .functype max_intrinsic_v2f64 (v128, v128) -> (v128)
13220 ; SIMD128-FAST-NEXT:  # %bb.0:
13221 ; SIMD128-FAST-NEXT:    f64x2.max $push0=, $0, $1
13222 ; SIMD128-FAST-NEXT:    return $pop0
13224 ; NO-SIMD128-LABEL: max_intrinsic_v2f64:
13225 ; NO-SIMD128:         .functype max_intrinsic_v2f64 (i32, f64, f64, f64, f64) -> ()
13226 ; NO-SIMD128-NEXT:  # %bb.0:
13227 ; NO-SIMD128-NEXT:    f64.max $push0=, $2, $4
13228 ; NO-SIMD128-NEXT:    f64.store 8($0), $pop0
13229 ; NO-SIMD128-NEXT:    f64.max $push1=, $1, $3
13230 ; NO-SIMD128-NEXT:    f64.store 0($0), $pop1
13231 ; NO-SIMD128-NEXT:    return
13233 ; NO-SIMD128-FAST-LABEL: max_intrinsic_v2f64:
13234 ; NO-SIMD128-FAST:         .functype max_intrinsic_v2f64 (i32, f64, f64, f64, f64) -> ()
13235 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
13236 ; NO-SIMD128-FAST-NEXT:    f64.max $push0=, $1, $3
13237 ; NO-SIMD128-FAST-NEXT:    f64.store 0($0), $pop0
13238 ; NO-SIMD128-FAST-NEXT:    f64.max $push1=, $2, $4
13239 ; NO-SIMD128-FAST-NEXT:    f64.store 8($0), $pop1
13240 ; NO-SIMD128-FAST-NEXT:    return
13241   %a = call <2 x double> @llvm.maximum.v2f64(<2 x double> %x, <2 x double> %y)
13242   ret <2 x double> %a
13245 define <2 x double> @min_const_intrinsic_v2f64() {
13246 ; SIMD128-LABEL: min_const_intrinsic_v2f64:
13247 ; SIMD128:         .functype min_const_intrinsic_v2f64 () -> (v128)
13248 ; SIMD128-NEXT:  # %bb.0:
13249 ; SIMD128-NEXT:    v128.const $push0=, 0x1.4p2, 0x1.4p2
13250 ; SIMD128-NEXT:    return $pop0
13252 ; SIMD128-FAST-LABEL: min_const_intrinsic_v2f64:
13253 ; SIMD128-FAST:         .functype min_const_intrinsic_v2f64 () -> (v128)
13254 ; SIMD128-FAST-NEXT:  # %bb.0:
13255 ; SIMD128-FAST-NEXT:    v128.const $push0=, 0x1.4p2, 0x1.4p2
13256 ; SIMD128-FAST-NEXT:    return $pop0
13258 ; NO-SIMD128-LABEL: min_const_intrinsic_v2f64:
13259 ; NO-SIMD128:         .functype min_const_intrinsic_v2f64 (i32) -> ()
13260 ; NO-SIMD128-NEXT:  # %bb.0:
13261 ; NO-SIMD128-NEXT:    i64.const $push0=, 4617315517961601024
13262 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop0
13263 ; NO-SIMD128-NEXT:    i64.const $push1=, 4617315517961601024
13264 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop1
13265 ; NO-SIMD128-NEXT:    return
13267 ; NO-SIMD128-FAST-LABEL: min_const_intrinsic_v2f64:
13268 ; NO-SIMD128-FAST:         .functype min_const_intrinsic_v2f64 (i32) -> ()
13269 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
13270 ; NO-SIMD128-FAST-NEXT:    i64.const $push0=, 4617315517961601024
13271 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop0
13272 ; NO-SIMD128-FAST-NEXT:    i64.const $push1=, 4617315517961601024
13273 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop1
13274 ; NO-SIMD128-FAST-NEXT:    return
13275   %a = call <2 x double> @llvm.minimum.v2f64(
13276     <2 x double> <double 42., double 42.>,
13277     <2 x double> <double 5., double 5.>
13278   )
13279   ret <2 x double> %a
13282 define <2 x double> @max_const_intrinsic_v2f64() {
13283 ; SIMD128-LABEL: max_const_intrinsic_v2f64:
13284 ; SIMD128:         .functype max_const_intrinsic_v2f64 () -> (v128)
13285 ; SIMD128-NEXT:  # %bb.0:
13286 ; SIMD128-NEXT:    v128.const $push0=, 0x1.5p5, 0x1.5p5
13287 ; SIMD128-NEXT:    return $pop0
13289 ; SIMD128-FAST-LABEL: max_const_intrinsic_v2f64:
13290 ; SIMD128-FAST:         .functype max_const_intrinsic_v2f64 () -> (v128)
13291 ; SIMD128-FAST-NEXT:  # %bb.0:
13292 ; SIMD128-FAST-NEXT:    v128.const $push0=, 0x1.5p5, 0x1.5p5
13293 ; SIMD128-FAST-NEXT:    return $pop0
13295 ; NO-SIMD128-LABEL: max_const_intrinsic_v2f64:
13296 ; NO-SIMD128:         .functype max_const_intrinsic_v2f64 (i32) -> ()
13297 ; NO-SIMD128-NEXT:  # %bb.0:
13298 ; NO-SIMD128-NEXT:    i64.const $push0=, 4631107791820423168
13299 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop0
13300 ; NO-SIMD128-NEXT:    i64.const $push1=, 4631107791820423168
13301 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop1
13302 ; NO-SIMD128-NEXT:    return
13304 ; NO-SIMD128-FAST-LABEL: max_const_intrinsic_v2f64:
13305 ; NO-SIMD128-FAST:         .functype max_const_intrinsic_v2f64 (i32) -> ()
13306 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
13307 ; NO-SIMD128-FAST-NEXT:    i64.const $push0=, 4631107791820423168
13308 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop0
13309 ; NO-SIMD128-FAST-NEXT:    i64.const $push1=, 4631107791820423168
13310 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop1
13311 ; NO-SIMD128-FAST-NEXT:    return
13312   %a = call <2 x double> @llvm.maximum.v2f64(
13313     <2 x double> <double 42., double 42.>,
13314     <2 x double> <double 5., double 5.>
13315   )
13316   ret <2 x double> %a
13319 define <2 x double> @pmin_v2f64(<2 x double> %x, <2 x double> %y) {
13320 ; SIMD128-LABEL: pmin_v2f64:
13321 ; SIMD128:         .functype pmin_v2f64 (v128, v128) -> (v128)
13322 ; SIMD128-NEXT:  # %bb.0:
13323 ; SIMD128-NEXT:    f64x2.pmin $push0=, $0, $1
13324 ; SIMD128-NEXT:    return $pop0
13326 ; SIMD128-FAST-LABEL: pmin_v2f64:
13327 ; SIMD128-FAST:         .functype pmin_v2f64 (v128, v128) -> (v128)
13328 ; SIMD128-FAST-NEXT:  # %bb.0:
13329 ; SIMD128-FAST-NEXT:    f64x2.pmin $push0=, $0, $1
13330 ; SIMD128-FAST-NEXT:    return $pop0
13332 ; NO-SIMD128-LABEL: pmin_v2f64:
13333 ; NO-SIMD128:         .functype pmin_v2f64 (i32, f64, f64, f64, f64) -> ()
13334 ; NO-SIMD128-NEXT:  # %bb.0:
13335 ; NO-SIMD128-NEXT:    f64.lt $push0=, $4, $2
13336 ; NO-SIMD128-NEXT:    f64.select $push1=, $4, $2, $pop0
13337 ; NO-SIMD128-NEXT:    f64.store 8($0), $pop1
13338 ; NO-SIMD128-NEXT:    f64.lt $push2=, $3, $1
13339 ; NO-SIMD128-NEXT:    f64.select $push3=, $3, $1, $pop2
13340 ; NO-SIMD128-NEXT:    f64.store 0($0), $pop3
13341 ; NO-SIMD128-NEXT:    return
13343 ; NO-SIMD128-FAST-LABEL: pmin_v2f64:
13344 ; NO-SIMD128-FAST:         .functype pmin_v2f64 (i32, f64, f64, f64, f64) -> ()
13345 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
13346 ; NO-SIMD128-FAST-NEXT:    f64.lt $push0=, $3, $1
13347 ; NO-SIMD128-FAST-NEXT:    f64.select $push1=, $3, $1, $pop0
13348 ; NO-SIMD128-FAST-NEXT:    f64.store 0($0), $pop1
13349 ; NO-SIMD128-FAST-NEXT:    f64.lt $push2=, $4, $2
13350 ; NO-SIMD128-FAST-NEXT:    f64.select $push3=, $4, $2, $pop2
13351 ; NO-SIMD128-FAST-NEXT:    f64.store 8($0), $pop3
13352 ; NO-SIMD128-FAST-NEXT:    return
13353   %c = fcmp olt <2 x double> %y, %x
13354   %a = select <2 x i1> %c, <2 x double> %y, <2 x double> %x
13355   ret <2 x double> %a
13358 define <2 x i64> @pmin_int_v2f64(<2 x i64> %x, <2 x i64> %y) {
13359 ; SIMD128-LABEL: pmin_int_v2f64:
13360 ; SIMD128:         .functype pmin_int_v2f64 (v128, v128) -> (v128)
13361 ; SIMD128-NEXT:  # %bb.0:
13362 ; SIMD128-NEXT:    f64x2.pmin $push0=, $0, $1
13363 ; SIMD128-NEXT:    return $pop0
13365 ; SIMD128-FAST-LABEL: pmin_int_v2f64:
13366 ; SIMD128-FAST:         .functype pmin_int_v2f64 (v128, v128) -> (v128)
13367 ; SIMD128-FAST-NEXT:  # %bb.0:
13368 ; SIMD128-FAST-NEXT:    f64x2.pmin $push0=, $0, $1
13369 ; SIMD128-FAST-NEXT:    return $pop0
13371 ; NO-SIMD128-LABEL: pmin_int_v2f64:
13372 ; NO-SIMD128:         .functype pmin_int_v2f64 (i32, i64, i64, i64, i64) -> ()
13373 ; NO-SIMD128-NEXT:  # %bb.0:
13374 ; NO-SIMD128-NEXT:    f64.reinterpret_i64 $push1=, $4
13375 ; NO-SIMD128-NEXT:    f64.reinterpret_i64 $push0=, $2
13376 ; NO-SIMD128-NEXT:    f64.lt $push2=, $pop1, $pop0
13377 ; NO-SIMD128-NEXT:    i64.select $push3=, $4, $2, $pop2
13378 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop3
13379 ; NO-SIMD128-NEXT:    f64.reinterpret_i64 $push5=, $3
13380 ; NO-SIMD128-NEXT:    f64.reinterpret_i64 $push4=, $1
13381 ; NO-SIMD128-NEXT:    f64.lt $push6=, $pop5, $pop4
13382 ; NO-SIMD128-NEXT:    i64.select $push7=, $3, $1, $pop6
13383 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop7
13384 ; NO-SIMD128-NEXT:    return
13386 ; NO-SIMD128-FAST-LABEL: pmin_int_v2f64:
13387 ; NO-SIMD128-FAST:         .functype pmin_int_v2f64 (i32, i64, i64, i64, i64) -> ()
13388 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
13389 ; NO-SIMD128-FAST-NEXT:    f64.reinterpret_i64 $push1=, $3
13390 ; NO-SIMD128-FAST-NEXT:    f64.reinterpret_i64 $push0=, $1
13391 ; NO-SIMD128-FAST-NEXT:    f64.lt $push2=, $pop1, $pop0
13392 ; NO-SIMD128-FAST-NEXT:    i64.select $push3=, $3, $1, $pop2
13393 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop3
13394 ; NO-SIMD128-FAST-NEXT:    f64.reinterpret_i64 $push5=, $4
13395 ; NO-SIMD128-FAST-NEXT:    f64.reinterpret_i64 $push4=, $2
13396 ; NO-SIMD128-FAST-NEXT:    f64.lt $push6=, $pop5, $pop4
13397 ; NO-SIMD128-FAST-NEXT:    i64.select $push7=, $4, $2, $pop6
13398 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop7
13399 ; NO-SIMD128-FAST-NEXT:    return
13400   %fx = bitcast <2 x i64> %x to <2 x double>
13401   %fy = bitcast <2 x i64> %y to <2 x double>
13402   %c = fcmp olt <2 x double> %fy, %fx
13403   %a = select <2 x i1> %c, <2 x i64> %y, <2 x i64> %x
13404   ret <2 x i64> %a
13407 define <2 x double> @pmax_v2f64(<2 x double> %x, <2 x double> %y) {
13408 ; SIMD128-LABEL: pmax_v2f64:
13409 ; SIMD128:         .functype pmax_v2f64 (v128, v128) -> (v128)
13410 ; SIMD128-NEXT:  # %bb.0:
13411 ; SIMD128-NEXT:    f64x2.pmax $push0=, $0, $1
13412 ; SIMD128-NEXT:    return $pop0
13414 ; SIMD128-FAST-LABEL: pmax_v2f64:
13415 ; SIMD128-FAST:         .functype pmax_v2f64 (v128, v128) -> (v128)
13416 ; SIMD128-FAST-NEXT:  # %bb.0:
13417 ; SIMD128-FAST-NEXT:    f64x2.pmax $push0=, $0, $1
13418 ; SIMD128-FAST-NEXT:    return $pop0
13420 ; NO-SIMD128-LABEL: pmax_v2f64:
13421 ; NO-SIMD128:         .functype pmax_v2f64 (i32, f64, f64, f64, f64) -> ()
13422 ; NO-SIMD128-NEXT:  # %bb.0:
13423 ; NO-SIMD128-NEXT:    f64.lt $push0=, $2, $4
13424 ; NO-SIMD128-NEXT:    f64.select $push1=, $4, $2, $pop0
13425 ; NO-SIMD128-NEXT:    f64.store 8($0), $pop1
13426 ; NO-SIMD128-NEXT:    f64.lt $push2=, $1, $3
13427 ; NO-SIMD128-NEXT:    f64.select $push3=, $3, $1, $pop2
13428 ; NO-SIMD128-NEXT:    f64.store 0($0), $pop3
13429 ; NO-SIMD128-NEXT:    return
13431 ; NO-SIMD128-FAST-LABEL: pmax_v2f64:
13432 ; NO-SIMD128-FAST:         .functype pmax_v2f64 (i32, f64, f64, f64, f64) -> ()
13433 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
13434 ; NO-SIMD128-FAST-NEXT:    f64.lt $push0=, $1, $3
13435 ; NO-SIMD128-FAST-NEXT:    f64.select $push1=, $3, $1, $pop0
13436 ; NO-SIMD128-FAST-NEXT:    f64.store 0($0), $pop1
13437 ; NO-SIMD128-FAST-NEXT:    f64.lt $push2=, $2, $4
13438 ; NO-SIMD128-FAST-NEXT:    f64.select $push3=, $4, $2, $pop2
13439 ; NO-SIMD128-FAST-NEXT:    f64.store 8($0), $pop3
13440 ; NO-SIMD128-FAST-NEXT:    return
13441   %c = fcmp olt <2 x double> %x, %y
13442   %a = select <2 x i1> %c, <2 x double> %y, <2 x double> %x
13443   ret <2 x double> %a
13446 define <2 x i64> @pmax_int_v2f64(<2 x i64> %x, <2 x i64> %y) {
13447 ; SIMD128-LABEL: pmax_int_v2f64:
13448 ; SIMD128:         .functype pmax_int_v2f64 (v128, v128) -> (v128)
13449 ; SIMD128-NEXT:  # %bb.0:
13450 ; SIMD128-NEXT:    f64x2.pmax $push0=, $0, $1
13451 ; SIMD128-NEXT:    return $pop0
13453 ; SIMD128-FAST-LABEL: pmax_int_v2f64:
13454 ; SIMD128-FAST:         .functype pmax_int_v2f64 (v128, v128) -> (v128)
13455 ; SIMD128-FAST-NEXT:  # %bb.0:
13456 ; SIMD128-FAST-NEXT:    f64x2.pmax $push0=, $0, $1
13457 ; SIMD128-FAST-NEXT:    return $pop0
13459 ; NO-SIMD128-LABEL: pmax_int_v2f64:
13460 ; NO-SIMD128:         .functype pmax_int_v2f64 (i32, i64, i64, i64, i64) -> ()
13461 ; NO-SIMD128-NEXT:  # %bb.0:
13462 ; NO-SIMD128-NEXT:    f64.reinterpret_i64 $push1=, $2
13463 ; NO-SIMD128-NEXT:    f64.reinterpret_i64 $push0=, $4
13464 ; NO-SIMD128-NEXT:    f64.lt $push2=, $pop1, $pop0
13465 ; NO-SIMD128-NEXT:    i64.select $push3=, $4, $2, $pop2
13466 ; NO-SIMD128-NEXT:    i64.store 8($0), $pop3
13467 ; NO-SIMD128-NEXT:    f64.reinterpret_i64 $push5=, $1
13468 ; NO-SIMD128-NEXT:    f64.reinterpret_i64 $push4=, $3
13469 ; NO-SIMD128-NEXT:    f64.lt $push6=, $pop5, $pop4
13470 ; NO-SIMD128-NEXT:    i64.select $push7=, $3, $1, $pop6
13471 ; NO-SIMD128-NEXT:    i64.store 0($0), $pop7
13472 ; NO-SIMD128-NEXT:    return
13474 ; NO-SIMD128-FAST-LABEL: pmax_int_v2f64:
13475 ; NO-SIMD128-FAST:         .functype pmax_int_v2f64 (i32, i64, i64, i64, i64) -> ()
13476 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
13477 ; NO-SIMD128-FAST-NEXT:    f64.reinterpret_i64 $push1=, $1
13478 ; NO-SIMD128-FAST-NEXT:    f64.reinterpret_i64 $push0=, $3
13479 ; NO-SIMD128-FAST-NEXT:    f64.lt $push2=, $pop1, $pop0
13480 ; NO-SIMD128-FAST-NEXT:    i64.select $push3=, $3, $1, $pop2
13481 ; NO-SIMD128-FAST-NEXT:    i64.store 0($0), $pop3
13482 ; NO-SIMD128-FAST-NEXT:    f64.reinterpret_i64 $push5=, $2
13483 ; NO-SIMD128-FAST-NEXT:    f64.reinterpret_i64 $push4=, $4
13484 ; NO-SIMD128-FAST-NEXT:    f64.lt $push6=, $pop5, $pop4
13485 ; NO-SIMD128-FAST-NEXT:    i64.select $push7=, $4, $2, $pop6
13486 ; NO-SIMD128-FAST-NEXT:    i64.store 8($0), $pop7
13487 ; NO-SIMD128-FAST-NEXT:    return
13488   %fx = bitcast <2 x i64> %x to <2 x double>
13489   %fy = bitcast <2 x i64> %y to <2 x double>
13490   %c = fcmp olt <2 x double> %fx, %fy
13491   %a = select <2 x i1> %c, <2 x i64> %y, <2 x i64> %x
13492   ret <2 x i64> %a
13495 define <2 x double> @add_v2f64(<2 x double> %x, <2 x double> %y) {
13496 ; SIMD128-LABEL: add_v2f64:
13497 ; SIMD128:         .functype add_v2f64 (v128, v128) -> (v128)
13498 ; SIMD128-NEXT:  # %bb.0:
13499 ; SIMD128-NEXT:    f64x2.add $push0=, $0, $1
13500 ; SIMD128-NEXT:    return $pop0
13502 ; SIMD128-FAST-LABEL: add_v2f64:
13503 ; SIMD128-FAST:         .functype add_v2f64 (v128, v128) -> (v128)
13504 ; SIMD128-FAST-NEXT:  # %bb.0:
13505 ; SIMD128-FAST-NEXT:    f64x2.add $push0=, $0, $1
13506 ; SIMD128-FAST-NEXT:    return $pop0
13508 ; NO-SIMD128-LABEL: add_v2f64:
13509 ; NO-SIMD128:         .functype add_v2f64 (i32, f64, f64, f64, f64) -> ()
13510 ; NO-SIMD128-NEXT:  # %bb.0:
13511 ; NO-SIMD128-NEXT:    f64.add $push0=, $2, $4
13512 ; NO-SIMD128-NEXT:    f64.store 8($0), $pop0
13513 ; NO-SIMD128-NEXT:    f64.add $push1=, $1, $3
13514 ; NO-SIMD128-NEXT:    f64.store 0($0), $pop1
13515 ; NO-SIMD128-NEXT:    return
13517 ; NO-SIMD128-FAST-LABEL: add_v2f64:
13518 ; NO-SIMD128-FAST:         .functype add_v2f64 (i32, f64, f64, f64, f64) -> ()
13519 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
13520 ; NO-SIMD128-FAST-NEXT:    f64.add $push0=, $1, $3
13521 ; NO-SIMD128-FAST-NEXT:    f64.store 0($0), $pop0
13522 ; NO-SIMD128-FAST-NEXT:    f64.add $push1=, $2, $4
13523 ; NO-SIMD128-FAST-NEXT:    f64.store 8($0), $pop1
13524 ; NO-SIMD128-FAST-NEXT:    return
13525   %a = fadd <2 x double> %x, %y
13526   ret <2 x double> %a
13529 define <2 x double> @sub_v2f64(<2 x double> %x, <2 x double> %y) {
13530 ; SIMD128-LABEL: sub_v2f64:
13531 ; SIMD128:         .functype sub_v2f64 (v128, v128) -> (v128)
13532 ; SIMD128-NEXT:  # %bb.0:
13533 ; SIMD128-NEXT:    f64x2.sub $push0=, $0, $1
13534 ; SIMD128-NEXT:    return $pop0
13536 ; SIMD128-FAST-LABEL: sub_v2f64:
13537 ; SIMD128-FAST:         .functype sub_v2f64 (v128, v128) -> (v128)
13538 ; SIMD128-FAST-NEXT:  # %bb.0:
13539 ; SIMD128-FAST-NEXT:    f64x2.sub $push0=, $0, $1
13540 ; SIMD128-FAST-NEXT:    return $pop0
13542 ; NO-SIMD128-LABEL: sub_v2f64:
13543 ; NO-SIMD128:         .functype sub_v2f64 (i32, f64, f64, f64, f64) -> ()
13544 ; NO-SIMD128-NEXT:  # %bb.0:
13545 ; NO-SIMD128-NEXT:    f64.sub $push0=, $2, $4
13546 ; NO-SIMD128-NEXT:    f64.store 8($0), $pop0
13547 ; NO-SIMD128-NEXT:    f64.sub $push1=, $1, $3
13548 ; NO-SIMD128-NEXT:    f64.store 0($0), $pop1
13549 ; NO-SIMD128-NEXT:    return
13551 ; NO-SIMD128-FAST-LABEL: sub_v2f64:
13552 ; NO-SIMD128-FAST:         .functype sub_v2f64 (i32, f64, f64, f64, f64) -> ()
13553 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
13554 ; NO-SIMD128-FAST-NEXT:    f64.sub $push0=, $1, $3
13555 ; NO-SIMD128-FAST-NEXT:    f64.store 0($0), $pop0
13556 ; NO-SIMD128-FAST-NEXT:    f64.sub $push1=, $2, $4
13557 ; NO-SIMD128-FAST-NEXT:    f64.store 8($0), $pop1
13558 ; NO-SIMD128-FAST-NEXT:    return
13559   %a = fsub <2 x double> %x, %y
13560   ret <2 x double> %a
13563 define <2 x double> @div_v2f64(<2 x double> %x, <2 x double> %y) {
13564 ; SIMD128-LABEL: div_v2f64:
13565 ; SIMD128:         .functype div_v2f64 (v128, v128) -> (v128)
13566 ; SIMD128-NEXT:  # %bb.0:
13567 ; SIMD128-NEXT:    f64x2.div $push0=, $0, $1
13568 ; SIMD128-NEXT:    return $pop0
13570 ; SIMD128-FAST-LABEL: div_v2f64:
13571 ; SIMD128-FAST:         .functype div_v2f64 (v128, v128) -> (v128)
13572 ; SIMD128-FAST-NEXT:  # %bb.0:
13573 ; SIMD128-FAST-NEXT:    f64x2.div $push0=, $0, $1
13574 ; SIMD128-FAST-NEXT:    return $pop0
13576 ; NO-SIMD128-LABEL: div_v2f64:
13577 ; NO-SIMD128:         .functype div_v2f64 (i32, f64, f64, f64, f64) -> ()
13578 ; NO-SIMD128-NEXT:  # %bb.0:
13579 ; NO-SIMD128-NEXT:    f64.div $push0=, $2, $4
13580 ; NO-SIMD128-NEXT:    f64.store 8($0), $pop0
13581 ; NO-SIMD128-NEXT:    f64.div $push1=, $1, $3
13582 ; NO-SIMD128-NEXT:    f64.store 0($0), $pop1
13583 ; NO-SIMD128-NEXT:    return
13585 ; NO-SIMD128-FAST-LABEL: div_v2f64:
13586 ; NO-SIMD128-FAST:         .functype div_v2f64 (i32, f64, f64, f64, f64) -> ()
13587 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
13588 ; NO-SIMD128-FAST-NEXT:    f64.div $push0=, $1, $3
13589 ; NO-SIMD128-FAST-NEXT:    f64.store 0($0), $pop0
13590 ; NO-SIMD128-FAST-NEXT:    f64.div $push1=, $2, $4
13591 ; NO-SIMD128-FAST-NEXT:    f64.store 8($0), $pop1
13592 ; NO-SIMD128-FAST-NEXT:    return
13593   %a = fdiv <2 x double> %x, %y
13594   ret <2 x double> %a
13597 define <2 x double> @mul_v2f64(<2 x double> %x, <2 x double> %y) {
13598 ; SIMD128-LABEL: mul_v2f64:
13599 ; SIMD128:         .functype mul_v2f64 (v128, v128) -> (v128)
13600 ; SIMD128-NEXT:  # %bb.0:
13601 ; SIMD128-NEXT:    f64x2.mul $push0=, $0, $1
13602 ; SIMD128-NEXT:    return $pop0
13604 ; SIMD128-FAST-LABEL: mul_v2f64:
13605 ; SIMD128-FAST:         .functype mul_v2f64 (v128, v128) -> (v128)
13606 ; SIMD128-FAST-NEXT:  # %bb.0:
13607 ; SIMD128-FAST-NEXT:    f64x2.mul $push0=, $0, $1
13608 ; SIMD128-FAST-NEXT:    return $pop0
13610 ; NO-SIMD128-LABEL: mul_v2f64:
13611 ; NO-SIMD128:         .functype mul_v2f64 (i32, f64, f64, f64, f64) -> ()
13612 ; NO-SIMD128-NEXT:  # %bb.0:
13613 ; NO-SIMD128-NEXT:    f64.mul $push0=, $2, $4
13614 ; NO-SIMD128-NEXT:    f64.store 8($0), $pop0
13615 ; NO-SIMD128-NEXT:    f64.mul $push1=, $1, $3
13616 ; NO-SIMD128-NEXT:    f64.store 0($0), $pop1
13617 ; NO-SIMD128-NEXT:    return
13619 ; NO-SIMD128-FAST-LABEL: mul_v2f64:
13620 ; NO-SIMD128-FAST:         .functype mul_v2f64 (i32, f64, f64, f64, f64) -> ()
13621 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
13622 ; NO-SIMD128-FAST-NEXT:    f64.mul $push0=, $1, $3
13623 ; NO-SIMD128-FAST-NEXT:    f64.store 0($0), $pop0
13624 ; NO-SIMD128-FAST-NEXT:    f64.mul $push1=, $2, $4
13625 ; NO-SIMD128-FAST-NEXT:    f64.store 8($0), $pop1
13626 ; NO-SIMD128-FAST-NEXT:    return
13627   %a = fmul <2 x double> %x, %y
13628   ret <2 x double> %a
13631 declare <2 x double> @llvm.sqrt.v2f64(<2 x double> %x)
13632 define <2 x double> @sqrt_v2f64(<2 x double> %x) {
13633 ; SIMD128-LABEL: sqrt_v2f64:
13634 ; SIMD128:         .functype sqrt_v2f64 (v128) -> (v128)
13635 ; SIMD128-NEXT:  # %bb.0:
13636 ; SIMD128-NEXT:    f64x2.sqrt $push0=, $0
13637 ; SIMD128-NEXT:    return $pop0
13639 ; SIMD128-FAST-LABEL: sqrt_v2f64:
13640 ; SIMD128-FAST:         .functype sqrt_v2f64 (v128) -> (v128)
13641 ; SIMD128-FAST-NEXT:  # %bb.0:
13642 ; SIMD128-FAST-NEXT:    f64x2.sqrt $push0=, $0
13643 ; SIMD128-FAST-NEXT:    return $pop0
13645 ; NO-SIMD128-LABEL: sqrt_v2f64:
13646 ; NO-SIMD128:         .functype sqrt_v2f64 (i32, f64, f64) -> ()
13647 ; NO-SIMD128-NEXT:  # %bb.0:
13648 ; NO-SIMD128-NEXT:    f64.sqrt $push0=, $2
13649 ; NO-SIMD128-NEXT:    f64.store 8($0), $pop0
13650 ; NO-SIMD128-NEXT:    f64.sqrt $push1=, $1
13651 ; NO-SIMD128-NEXT:    f64.store 0($0), $pop1
13652 ; NO-SIMD128-NEXT:    return
13654 ; NO-SIMD128-FAST-LABEL: sqrt_v2f64:
13655 ; NO-SIMD128-FAST:         .functype sqrt_v2f64 (i32, f64, f64) -> ()
13656 ; NO-SIMD128-FAST-NEXT:  # %bb.0:
13657 ; NO-SIMD128-FAST-NEXT:    f64.sqrt $push0=, $1
13658 ; NO-SIMD128-FAST-NEXT:    f64.store 0($0), $pop0
13659 ; NO-SIMD128-FAST-NEXT:    f64.sqrt $push1=, $2
13660 ; NO-SIMD128-FAST-NEXT:    f64.store 8($0), $pop1
13661 ; NO-SIMD128-FAST-NEXT:    return
13662   %a = call <2 x double> @llvm.sqrt.v2f64(<2 x double> %x)
13663   ret <2 x double> %a