OLD | NEW |
1 ; This test checks support for vector arithmetic. | 1 ; This test checks support for vector arithmetic. |
2 | 2 |
3 ; RUN: %p2i -i %s --filetype=obj --disassemble -a -O2 \ | 3 ; RUN: %p2i -i %s --filetype=obj --disassemble -a -O2 \ |
4 ; RUN: | FileCheck %s | 4 ; RUN: | FileCheck %s |
5 ; RUN: %p2i -i %s --filetype=obj --disassemble -a -Om1 \ | 5 ; RUN: %p2i -i %s --filetype=obj --disassemble -a -Om1 \ |
6 ; RUN: | FileCheck %s | 6 ; RUN: | FileCheck %s |
7 ; RUN: %p2i -i %s --filetype=obj --disassemble -a -O2 -mattr=sse4.1 \ | 7 ; RUN: %p2i -i %s --filetype=obj --disassemble -a -O2 -mattr=sse4.1 \ |
8 ; RUN: | FileCheck --check-prefix=SSE41 %s | 8 ; RUN: | FileCheck --check-prefix=SSE41 %s |
9 ; RUN: %p2i -i %s --filetype=obj --disassemble -a -Om1 -mattr=sse4.1 \ | 9 ; RUN: %p2i -i %s --filetype=obj --disassemble -a -Om1 -mattr=sse4.1 \ |
10 ; RUN: | FileCheck --check-prefix=SSE41 %s | 10 ; RUN: | FileCheck --check-prefix=SSE41 %s |
11 | 11 |
| 12 ; RUN: %if --need=target_MIPS32 --need=allow_dump \ |
| 13 ; RUN: --command %p2i --filetype=asm --assemble --disassemble --target \ |
| 14 ; RUN: mips32 -i %s --args -O2 -allow-externally-defined-symbols \ |
| 15 ; RUN: | %if --need=target_MIPS32 --need=allow_dump \ |
| 16 ; RUN: --command FileCheck --check-prefix MIPS32 %s |
| 17 |
12 define internal <4 x float> @test_fadd(<4 x float> %arg0, <4 x float> %arg1) { | 18 define internal <4 x float> @test_fadd(<4 x float> %arg0, <4 x float> %arg1) { |
13 entry: | 19 entry: |
14 %res = fadd <4 x float> %arg0, %arg1 | 20 %res = fadd <4 x float> %arg0, %arg1 |
15 ret <4 x float> %res | 21 ret <4 x float> %res |
16 ; CHECK-LABEL: test_fadd | 22 ; CHECK-LABEL: test_fadd |
17 ; CHECK: addps | 23 ; CHECK: addps |
| 24 ; MIPS32-LABEL: test_fadd |
| 25 ; MIPS32: add.s |
| 26 ; MIPS32: add.s |
| 27 ; MIPS32: add.s |
| 28 ; MIPS32: add.s |
18 } | 29 } |
19 | 30 |
20 define internal <4 x float> @test_fsub(<4 x float> %arg0, <4 x float> %arg1) { | 31 define internal <4 x float> @test_fsub(<4 x float> %arg0, <4 x float> %arg1) { |
21 entry: | 32 entry: |
22 %res = fsub <4 x float> %arg0, %arg1 | 33 %res = fsub <4 x float> %arg0, %arg1 |
23 ret <4 x float> %res | 34 ret <4 x float> %res |
24 ; CHECK-LABEL: test_fsub | 35 ; CHECK-LABEL: test_fsub |
25 ; CHECK: subps | 36 ; CHECK: subps |
| 37 ; MIPS32-LABEL: test_fsub |
| 38 ; MIPS32: sub.s |
| 39 ; MIPS32: sub.s |
| 40 ; MIPS32: sub.s |
| 41 ; MIPS32: sub.s |
26 } | 42 } |
27 | 43 |
28 define internal <4 x float> @test_fmul(<4 x float> %arg0, <4 x float> %arg1) { | 44 define internal <4 x float> @test_fmul(<4 x float> %arg0, <4 x float> %arg1) { |
29 entry: | 45 entry: |
30 %res = fmul <4 x float> %arg0, %arg1 | 46 %res = fmul <4 x float> %arg0, %arg1 |
31 ret <4 x float> %res | 47 ret <4 x float> %res |
32 ; CHECK-LABEL: test_fmul | 48 ; CHECK-LABEL: test_fmul |
33 ; CHECK: mulps | 49 ; CHECK: mulps |
| 50 ; MIPS32-LABEL: test_fmul |
| 51 ; MIPS32: mul.s |
| 52 ; MIPS32: mul.s |
| 53 ; MIPS32: mul.s |
| 54 ; MIPS32: mul.s |
34 } | 55 } |
35 | 56 |
36 define internal <4 x float> @test_fdiv(<4 x float> %arg0, <4 x float> %arg1) { | 57 define internal <4 x float> @test_fdiv(<4 x float> %arg0, <4 x float> %arg1) { |
37 entry: | 58 entry: |
38 %res = fdiv <4 x float> %arg0, %arg1 | 59 %res = fdiv <4 x float> %arg0, %arg1 |
39 ret <4 x float> %res | 60 ret <4 x float> %res |
40 ; CHECK-LABEL: test_fdiv | 61 ; CHECK-LABEL: test_fdiv |
41 ; CHECK: divps | 62 ; CHECK: divps |
| 63 ; MIPS32-LABEL: test_fdiv |
| 64 ; MIPS32: div.s |
| 65 ; MIPS32: div.s |
| 66 ; MIPS32: div.s |
| 67 ; MIPS32: div.s |
42 } | 68 } |
43 | 69 |
44 define internal <4 x float> @test_frem(<4 x float> %arg0, <4 x float> %arg1) { | 70 define internal <4 x float> @test_frem(<4 x float> %arg0, <4 x float> %arg1) { |
45 entry: | 71 entry: |
46 %res = frem <4 x float> %arg0, %arg1 | 72 %res = frem <4 x float> %arg0, %arg1 |
47 ret <4 x float> %res | 73 ret <4 x float> %res |
48 ; CHECK-LABEL: test_frem | 74 ; CHECK-LABEL: test_frem |
49 ; CHECK: fmodf | 75 ; CHECK: fmodf |
50 ; CHECK: fmodf | 76 ; CHECK: fmodf |
51 ; CHECK: fmodf | 77 ; CHECK: fmodf |
52 ; CHECK: fmodf | 78 ; CHECK: fmodf |
53 } | 79 } |
54 | 80 |
55 define internal <16 x i8> @test_add_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { | 81 define internal <16 x i8> @test_add_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { |
56 entry: | 82 entry: |
57 %res = add <16 x i8> %arg0, %arg1 | 83 %res = add <16 x i8> %arg0, %arg1 |
58 ret <16 x i8> %res | 84 ret <16 x i8> %res |
59 ; CHECK-LABEL: test_add_v16i8 | 85 ; CHECK-LABEL: test_add_v16i8 |
60 ; CHECK: paddb | 86 ; CHECK: paddb |
| 87 ; MIPS32-LABEL: test_add_v16i8 |
| 88 ; MIPS32: addu |
| 89 ; MIPS32: addu |
| 90 ; MIPS32: addu |
| 91 ; MIPS32: addu |
| 92 ; MIPS32: addu |
| 93 ; MIPS32: addu |
| 94 ; MIPS32: addu |
| 95 ; MIPS32: addu |
| 96 ; MIPS32: addu |
| 97 ; MIPS32: addu |
| 98 ; MIPS32: addu |
| 99 ; MIPS32: addu |
| 100 ; MIPS32: addu |
| 101 ; MIPS32: addu |
| 102 ; MIPS32: addu |
| 103 ; MIPS32: addu |
61 } | 104 } |
62 | 105 |
63 define internal <16 x i8> @test_and_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { | 106 define internal <16 x i8> @test_and_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { |
64 entry: | 107 entry: |
65 %res = and <16 x i8> %arg0, %arg1 | 108 %res = and <16 x i8> %arg0, %arg1 |
66 ret <16 x i8> %res | 109 ret <16 x i8> %res |
67 ; CHECK-LABEL: test_and_v16i8 | 110 ; CHECK-LABEL: test_and_v16i8 |
68 ; CHECK: pand | 111 ; CHECK: pand |
| 112 ; MIPS32-LABEL: test_and_v16i8 |
| 113 ; MIPS32: and |
| 114 ; MIPS32: and |
| 115 ; MIPS32: and |
| 116 ; MIPS32: and |
| 117 ; MIPS32: and |
| 118 ; MIPS32: and |
| 119 ; MIPS32: and |
| 120 ; MIPS32: and |
| 121 ; MIPS32: and |
| 122 ; MIPS32: and |
| 123 ; MIPS32: and |
| 124 ; MIPS32: and |
| 125 ; MIPS32: and |
| 126 ; MIPS32: and |
| 127 ; MIPS32: and |
| 128 ; MIPS32: and |
69 } | 129 } |
70 | 130 |
71 define internal <16 x i8> @test_or_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { | 131 define internal <16 x i8> @test_or_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { |
72 entry: | 132 entry: |
73 %res = or <16 x i8> %arg0, %arg1 | 133 %res = or <16 x i8> %arg0, %arg1 |
74 ret <16 x i8> %res | 134 ret <16 x i8> %res |
75 ; CHECK-LABEL: test_or_v16i8 | 135 ; CHECK-LABEL: test_or_v16i8 |
76 ; CHECK: por | 136 ; CHECK: por |
| 137 ; MIPS32-LABEL: test_or_v16i8 |
| 138 ; MIPS32: or |
| 139 ; MIPS32: or |
| 140 ; MIPS32: or |
| 141 ; MIPS32: or |
| 142 ; MIPS32: or |
| 143 ; MIPS32: or |
| 144 ; MIPS32: or |
| 145 ; MIPS32: or |
| 146 ; MIPS32: or |
| 147 ; MIPS32: or |
| 148 ; MIPS32: or |
| 149 ; MIPS32: or |
| 150 ; MIPS32: or |
| 151 ; MIPS32: or |
| 152 ; MIPS32: or |
| 153 ; MIPS32: or |
77 } | 154 } |
78 | 155 |
79 define internal <16 x i8> @test_xor_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { | 156 define internal <16 x i8> @test_xor_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { |
80 entry: | 157 entry: |
81 %res = xor <16 x i8> %arg0, %arg1 | 158 %res = xor <16 x i8> %arg0, %arg1 |
82 ret <16 x i8> %res | 159 ret <16 x i8> %res |
83 ; CHECK-LABEL: test_xor_v16i8 | 160 ; CHECK-LABEL: test_xor_v16i8 |
84 ; CHECK: pxor | 161 ; CHECK: pxor |
| 162 ; MIPS32-LABEL: test_xor_v16i8 |
| 163 ; MIPS32: xor |
| 164 ; MIPS32: xor |
| 165 ; MIPS32: xor |
| 166 ; MIPS32: xor |
| 167 ; MIPS32: xor |
| 168 ; MIPS32: xor |
| 169 ; MIPS32: xor |
| 170 ; MIPS32: xor |
| 171 ; MIPS32: xor |
| 172 ; MIPS32: xor |
| 173 ; MIPS32: xor |
| 174 ; MIPS32: xor |
| 175 ; MIPS32: xor |
| 176 ; MIPS32: xor |
| 177 ; MIPS32: xor |
| 178 ; MIPS32: xor |
85 } | 179 } |
86 | 180 |
87 define internal <16 x i8> @test_sub_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { | 181 define internal <16 x i8> @test_sub_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { |
88 entry: | 182 entry: |
89 %res = sub <16 x i8> %arg0, %arg1 | 183 %res = sub <16 x i8> %arg0, %arg1 |
90 ret <16 x i8> %res | 184 ret <16 x i8> %res |
91 ; CHECK-LABEL: test_sub_v16i8 | 185 ; CHECK-LABEL: test_sub_v16i8 |
92 ; CHECK: psubb | 186 ; CHECK: psubb |
| 187 ; MIPS32-LABEL: test_sub_v16i8 |
| 188 ; MIPS32: subu |
| 189 ; MIPS32: subu |
| 190 ; MIPS32: subu |
| 191 ; MIPS32: subu |
| 192 ; MIPS32: subu |
| 193 ; MIPS32: subu |
| 194 ; MIPS32: subu |
| 195 ; MIPS32: subu |
| 196 ; MIPS32: subu |
| 197 ; MIPS32: subu |
| 198 ; MIPS32: subu |
| 199 ; MIPS32: subu |
| 200 ; MIPS32: subu |
| 201 ; MIPS32: subu |
| 202 ; MIPS32: subu |
| 203 ; MIPS32: subu |
93 } | 204 } |
94 | 205 |
95 define internal <16 x i8> @test_mul_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { | 206 define internal <16 x i8> @test_mul_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { |
96 entry: | 207 entry: |
97 %res = mul <16 x i8> %arg0, %arg1 | 208 %res = mul <16 x i8> %arg0, %arg1 |
98 ret <16 x i8> %res | 209 ret <16 x i8> %res |
99 ; CHECK-LABEL: test_mul_v16i8 | 210 ; CHECK-LABEL: test_mul_v16i8 |
100 ; CHECK: imul | 211 ; CHECK: imul |
101 ; CHECK: imul | 212 ; CHECK: imul |
102 ; CHECK: imul | 213 ; CHECK: imul |
103 ; CHECK: imul | 214 ; CHECK: imul |
104 ; CHECK: imul | 215 ; CHECK: imul |
105 ; CHECK: imul | 216 ; CHECK: imul |
106 ; CHECK: imul | 217 ; CHECK: imul |
107 ; CHECK: imul | 218 ; CHECK: imul |
108 ; CHECK: imul | 219 ; CHECK: imul |
109 ; CHECK: imul | 220 ; CHECK: imul |
110 ; CHECK: imul | 221 ; CHECK: imul |
111 ; CHECK: imul | 222 ; CHECK: imul |
112 ; CHECK: imul | 223 ; CHECK: imul |
113 ; CHECK: imul | 224 ; CHECK: imul |
114 ; CHECK: imul | 225 ; CHECK: imul |
115 ; CHECK: imul | 226 ; CHECK: imul |
| 227 ; MIPS32-LABEL: test_mul_v16i8 |
| 228 ; MIPS32: mul |
| 229 ; MIPS32: mul |
| 230 ; MIPS32: mul |
| 231 ; MIPS32: mul |
| 232 ; MIPS32: mul |
| 233 ; MIPS32: mul |
| 234 ; MIPS32: mul |
| 235 ; MIPS32: mul |
| 236 ; MIPS32: mul |
| 237 ; MIPS32: mul |
| 238 ; MIPS32: mul |
| 239 ; MIPS32: mul |
| 240 ; MIPS32: mul |
| 241 ; MIPS32: mul |
| 242 ; MIPS32: mul |
| 243 ; MIPS32: mul |
116 } | 244 } |
117 | 245 |
118 define internal <16 x i8> @test_shl_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { | 246 define internal <16 x i8> @test_shl_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { |
119 entry: | 247 entry: |
120 %res = shl <16 x i8> %arg0, %arg1 | 248 %res = shl <16 x i8> %arg0, %arg1 |
121 ret <16 x i8> %res | 249 ret <16 x i8> %res |
122 ; CHECK-LABEL: test_shl_v16i8 | 250 ; CHECK-LABEL: test_shl_v16i8 |
123 ; CHECK: shl | 251 ; CHECK: shl |
124 ; CHECK: shl | 252 ; CHECK: shl |
125 ; CHECK: shl | 253 ; CHECK: shl |
126 ; CHECK: shl | 254 ; CHECK: shl |
127 ; CHECK: shl | 255 ; CHECK: shl |
128 ; CHECK: shl | 256 ; CHECK: shl |
129 ; CHECK: shl | 257 ; CHECK: shl |
130 ; CHECK: shl | 258 ; CHECK: shl |
131 ; CHECK: shl | 259 ; CHECK: shl |
132 ; CHECK: shl | 260 ; CHECK: shl |
133 ; CHECK: shl | 261 ; CHECK: shl |
134 ; CHECK: shl | 262 ; CHECK: shl |
135 ; CHECK: shl | 263 ; CHECK: shl |
136 ; CHECK: shl | 264 ; CHECK: shl |
137 ; CHECK: shl | 265 ; CHECK: shl |
138 ; CHECK: shl | 266 ; CHECK: shl |
| 267 ; MIPS32-LABEL: test_shl_v16i8 |
| 268 ; MIPS32: sllv |
| 269 ; MIPS32: sllv |
| 270 ; MIPS32: sllv |
| 271 ; MIPS32: sllv |
| 272 ; MIPS32: sllv |
| 273 ; MIPS32: sllv |
| 274 ; MIPS32: sllv |
| 275 ; MIPS32: sllv |
| 276 ; MIPS32: sllv |
| 277 ; MIPS32: sllv |
| 278 ; MIPS32: sllv |
| 279 ; MIPS32: sllv |
| 280 ; MIPS32: sllv |
| 281 ; MIPS32: sllv |
| 282 ; MIPS32: sllv |
| 283 ; MIPS32: sllv |
139 } | 284 } |
140 | 285 |
141 define internal <16 x i8> @test_lshr_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { | 286 define internal <16 x i8> @test_lshr_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { |
142 entry: | 287 entry: |
143 %res = lshr <16 x i8> %arg0, %arg1 | 288 %res = lshr <16 x i8> %arg0, %arg1 |
144 ret <16 x i8> %res | 289 ret <16 x i8> %res |
145 ; CHECK-LABEL: test_lshr_v16i8 | 290 ; CHECK-LABEL: test_lshr_v16i8 |
146 ; CHECK: shr | 291 ; CHECK: shr |
147 ; CHECK: shr | 292 ; CHECK: shr |
148 ; CHECK: shr | 293 ; CHECK: shr |
149 ; CHECK: shr | 294 ; CHECK: shr |
150 ; CHECK: shr | 295 ; CHECK: shr |
151 ; CHECK: shr | 296 ; CHECK: shr |
152 ; CHECK: shr | 297 ; CHECK: shr |
153 ; CHECK: shr | 298 ; CHECK: shr |
154 ; CHECK: shr | 299 ; CHECK: shr |
155 ; CHECK: shr | 300 ; CHECK: shr |
156 ; CHECK: shr | 301 ; CHECK: shr |
157 ; CHECK: shr | 302 ; CHECK: shr |
158 ; CHECK: shr | 303 ; CHECK: shr |
159 ; CHECK: shr | 304 ; CHECK: shr |
160 ; CHECK: shr | 305 ; CHECK: shr |
161 ; CHECK: shr | 306 ; CHECK: shr |
| 307 ; MIPS32-LABEL: test_lshr_v16i8 |
| 308 ; MIPS32: srlv |
| 309 ; MIPS32: srlv |
| 310 ; MIPS32: srlv |
| 311 ; MIPS32: srlv |
| 312 ; MIPS32: srlv |
| 313 ; MIPS32: srlv |
| 314 ; MIPS32: srlv |
| 315 ; MIPS32: srlv |
| 316 ; MIPS32: srlv |
| 317 ; MIPS32: srlv |
| 318 ; MIPS32: srlv |
| 319 ; MIPS32: srlv |
| 320 ; MIPS32: srlv |
| 321 ; MIPS32: srlv |
| 322 ; MIPS32: srlv |
| 323 ; MIPS32: srlv |
162 } | 324 } |
163 | 325 |
164 define internal <16 x i8> @test_ashr_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { | 326 define internal <16 x i8> @test_ashr_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { |
165 entry: | 327 entry: |
166 %res = ashr <16 x i8> %arg0, %arg1 | 328 %res = ashr <16 x i8> %arg0, %arg1 |
167 ret <16 x i8> %res | 329 ret <16 x i8> %res |
168 ; CHECK-LABEL: test_ashr_v16i8 | 330 ; CHECK-LABEL: test_ashr_v16i8 |
169 ; CHECK: sar | 331 ; CHECK: sar |
170 ; CHECK: sar | 332 ; CHECK: sar |
171 ; CHECK: sar | 333 ; CHECK: sar |
172 ; CHECK: sar | 334 ; CHECK: sar |
173 ; CHECK: sar | 335 ; CHECK: sar |
174 ; CHECK: sar | 336 ; CHECK: sar |
175 ; CHECK: sar | 337 ; CHECK: sar |
176 ; CHECK: sar | 338 ; CHECK: sar |
177 ; CHECK: sar | 339 ; CHECK: sar |
178 ; CHECK: sar | 340 ; CHECK: sar |
179 ; CHECK: sar | 341 ; CHECK: sar |
180 ; CHECK: sar | 342 ; CHECK: sar |
181 ; CHECK: sar | 343 ; CHECK: sar |
182 ; CHECK: sar | 344 ; CHECK: sar |
183 ; CHECK: sar | 345 ; CHECK: sar |
184 ; CHECK: sar | 346 ; CHECK: sar |
| 347 ; MIPS32-LABEL: test_ashr_v16i8 |
| 348 ; MIPS32: srav |
| 349 ; MIPS32: srav |
| 350 ; MIPS32: srav |
| 351 ; MIPS32: srav |
| 352 ; MIPS32: srav |
| 353 ; MIPS32: srav |
| 354 ; MIPS32: srav |
| 355 ; MIPS32: srav |
| 356 ; MIPS32: srav |
| 357 ; MIPS32: srav |
| 358 ; MIPS32: srav |
| 359 ; MIPS32: srav |
| 360 ; MIPS32: srav |
| 361 ; MIPS32: srav |
| 362 ; MIPS32: srav |
| 363 ; MIPS32: srav |
185 } | 364 } |
186 | 365 |
187 define internal <16 x i8> @test_udiv_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { | 366 define internal <16 x i8> @test_udiv_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { |
188 entry: | 367 entry: |
189 %res = udiv <16 x i8> %arg0, %arg1 | 368 %res = udiv <16 x i8> %arg0, %arg1 |
190 ret <16 x i8> %res | 369 ret <16 x i8> %res |
191 ; CHECK-LABEL: test_udiv_v16i8 | 370 ; CHECK-LABEL: test_udiv_v16i8 |
192 ; CHECK: div | 371 ; CHECK: div |
193 ; CHECK: div | 372 ; CHECK: div |
194 ; CHECK: div | 373 ; CHECK: div |
195 ; CHECK: div | 374 ; CHECK: div |
196 ; CHECK: div | 375 ; CHECK: div |
197 ; CHECK: div | 376 ; CHECK: div |
198 ; CHECK: div | 377 ; CHECK: div |
199 ; CHECK: div | 378 ; CHECK: div |
200 ; CHECK: div | 379 ; CHECK: div |
201 ; CHECK: div | 380 ; CHECK: div |
202 ; CHECK: div | 381 ; CHECK: div |
203 ; CHECK: div | 382 ; CHECK: div |
204 ; CHECK: div | 383 ; CHECK: div |
205 ; CHECK: div | 384 ; CHECK: div |
206 ; CHECK: div | 385 ; CHECK: div |
207 ; CHECK: div | 386 ; CHECK: div |
| 387 ; MIPS32-LABEL: test_udiv_v16i8 |
| 388 ; MIPS32: divu |
| 389 ; MIPS32: divu |
| 390 ; MIPS32: divu |
| 391 ; MIPS32: divu |
| 392 ; MIPS32: divu |
| 393 ; MIPS32: divu |
| 394 ; MIPS32: divu |
| 395 ; MIPS32: divu |
| 396 ; MIPS32: divu |
| 397 ; MIPS32: divu |
| 398 ; MIPS32: divu |
| 399 ; MIPS32: divu |
| 400 ; MIPS32: divu |
| 401 ; MIPS32: divu |
| 402 ; MIPS32: divu |
| 403 ; MIPS32: divu |
208 } | 404 } |
209 | 405 |
210 define internal <16 x i8> @test_sdiv_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { | 406 define internal <16 x i8> @test_sdiv_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { |
211 entry: | 407 entry: |
212 %res = sdiv <16 x i8> %arg0, %arg1 | 408 %res = sdiv <16 x i8> %arg0, %arg1 |
213 ret <16 x i8> %res | 409 ret <16 x i8> %res |
214 ; CHECK-LABEL: test_sdiv_v16i8 | 410 ; CHECK-LABEL: test_sdiv_v16i8 |
215 ; CHECK: idiv | 411 ; CHECK: idiv |
216 ; CHECK: idiv | 412 ; CHECK: idiv |
217 ; CHECK: idiv | 413 ; CHECK: idiv |
218 ; CHECK: idiv | 414 ; CHECK: idiv |
219 ; CHECK: idiv | 415 ; CHECK: idiv |
220 ; CHECK: idiv | 416 ; CHECK: idiv |
221 ; CHECK: idiv | 417 ; CHECK: idiv |
222 ; CHECK: idiv | 418 ; CHECK: idiv |
223 ; CHECK: idiv | 419 ; CHECK: idiv |
224 ; CHECK: idiv | 420 ; CHECK: idiv |
225 ; CHECK: idiv | 421 ; CHECK: idiv |
226 ; CHECK: idiv | 422 ; CHECK: idiv |
227 ; CHECK: idiv | 423 ; CHECK: idiv |
228 ; CHECK: idiv | 424 ; CHECK: idiv |
229 ; CHECK: idiv | 425 ; CHECK: idiv |
230 ; CHECK: idiv | 426 ; CHECK: idiv |
| 427 ; MIPS32-LABEL: test_sdiv_v16i8 |
| 428 ; MIPS32: div |
| 429 ; MIPS32: div |
| 430 ; MIPS32: div |
| 431 ; MIPS32: div |
| 432 ; MIPS32: div |
| 433 ; MIPS32: div |
| 434 ; MIPS32: div |
| 435 ; MIPS32: div |
| 436 ; MIPS32: div |
| 437 ; MIPS32: div |
| 438 ; MIPS32: div |
| 439 ; MIPS32: div |
| 440 ; MIPS32: div |
| 441 ; MIPS32: div |
| 442 ; MIPS32: div |
| 443 ; MIPS32: div |
231 } | 444 } |
232 | 445 |
233 define internal <16 x i8> @test_urem_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { | 446 define internal <16 x i8> @test_urem_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { |
234 entry: | 447 entry: |
235 %res = urem <16 x i8> %arg0, %arg1 | 448 %res = urem <16 x i8> %arg0, %arg1 |
236 ret <16 x i8> %res | 449 ret <16 x i8> %res |
237 ; CHECK-LABEL: test_urem_v16i8 | 450 ; CHECK-LABEL: test_urem_v16i8 |
238 ; CHECK: div | 451 ; CHECK: div |
239 ; CHECK: div | 452 ; CHECK: div |
240 ; CHECK: div | 453 ; CHECK: div |
241 ; CHECK: div | 454 ; CHECK: div |
242 ; CHECK: div | 455 ; CHECK: div |
243 ; CHECK: div | 456 ; CHECK: div |
244 ; CHECK: div | 457 ; CHECK: div |
245 ; CHECK: div | 458 ; CHECK: div |
246 ; CHECK: div | 459 ; CHECK: div |
247 ; CHECK: div | 460 ; CHECK: div |
248 ; CHECK: div | 461 ; CHECK: div |
249 ; CHECK: div | 462 ; CHECK: div |
250 ; CHECK: div | 463 ; CHECK: div |
251 ; CHECK: div | 464 ; CHECK: div |
252 ; CHECK: div | 465 ; CHECK: div |
253 ; CHECK: div | 466 ; CHECK: div |
| 467 ; MIPS32-LABEL: test_urem_v16i8 |
| 468 ; MIPS32: divu |
| 469 ; MIPS32: divu |
| 470 ; MIPS32: divu |
| 471 ; MIPS32: divu |
| 472 ; MIPS32: divu |
| 473 ; MIPS32: divu |
| 474 ; MIPS32: divu |
| 475 ; MIPS32: divu |
| 476 ; MIPS32: divu |
| 477 ; MIPS32: divu |
| 478 ; MIPS32: divu |
| 479 ; MIPS32: divu |
| 480 ; MIPS32: divu |
| 481 ; MIPS32: divu |
| 482 ; MIPS32: divu |
| 483 ; MIPS32: divu |
254 } | 484 } |
255 | 485 |
256 define internal <16 x i8> @test_srem_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { | 486 define internal <16 x i8> @test_srem_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) { |
257 entry: | 487 entry: |
258 %res = srem <16 x i8> %arg0, %arg1 | 488 %res = srem <16 x i8> %arg0, %arg1 |
259 ret <16 x i8> %res | 489 ret <16 x i8> %res |
260 ; CHECK-LABEL: test_srem_v16i8 | 490 ; CHECK-LABEL: test_srem_v16i8 |
261 ; CHECK: idiv | 491 ; CHECK: idiv |
262 ; CHECK: idiv | 492 ; CHECK: idiv |
263 ; CHECK: idiv | 493 ; CHECK: idiv |
264 ; CHECK: idiv | 494 ; CHECK: idiv |
265 ; CHECK: idiv | 495 ; CHECK: idiv |
266 ; CHECK: idiv | 496 ; CHECK: idiv |
267 ; CHECK: idiv | 497 ; CHECK: idiv |
268 ; CHECK: idiv | 498 ; CHECK: idiv |
269 ; CHECK: idiv | 499 ; CHECK: idiv |
270 ; CHECK: idiv | 500 ; CHECK: idiv |
271 ; CHECK: idiv | 501 ; CHECK: idiv |
272 ; CHECK: idiv | 502 ; CHECK: idiv |
273 ; CHECK: idiv | 503 ; CHECK: idiv |
274 ; CHECK: idiv | 504 ; CHECK: idiv |
275 ; CHECK: idiv | 505 ; CHECK: idiv |
276 ; CHECK: idiv | 506 ; CHECK: idiv |
| 507 ; MIPS32-LABEL: test_srem_v16i8 |
| 508 ; MIPS32: div |
| 509 ; MIPS32: div |
| 510 ; MIPS32: div |
| 511 ; MIPS32: div |
| 512 ; MIPS32: div |
| 513 ; MIPS32: div |
| 514 ; MIPS32: div |
| 515 ; MIPS32: div |
| 516 ; MIPS32: div |
| 517 ; MIPS32: div |
| 518 ; MIPS32: div |
| 519 ; MIPS32: div |
| 520 ; MIPS32: div |
| 521 ; MIPS32: div |
| 522 ; MIPS32: div |
| 523 ; MIPS32: div |
277 } | 524 } |
278 | 525 |
279 define internal <8 x i16> @test_add_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { | 526 define internal <8 x i16> @test_add_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { |
280 entry: | 527 entry: |
281 %res = add <8 x i16> %arg0, %arg1 | 528 %res = add <8 x i16> %arg0, %arg1 |
282 ret <8 x i16> %res | 529 ret <8 x i16> %res |
283 ; CHECK-LABEL: test_add_v8i16 | 530 ; CHECK-LABEL: test_add_v8i16 |
284 ; CHECK: paddw | 531 ; CHECK: paddw |
| 532 ; MIPS32-LABEL: test_add_v8i16 |
| 533 ; MIPS32: addu |
| 534 ; MIPS32: addu |
| 535 ; MIPS32: addu |
| 536 ; MIPS32: addu |
| 537 ; MIPS32: addu |
| 538 ; MIPS32: addu |
| 539 ; MIPS32: addu |
| 540 ; MIPS32: addu |
285 } | 541 } |
286 | 542 |
287 define internal <8 x i16> @test_and_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { | 543 define internal <8 x i16> @test_and_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { |
288 entry: | 544 entry: |
289 %res = and <8 x i16> %arg0, %arg1 | 545 %res = and <8 x i16> %arg0, %arg1 |
290 ret <8 x i16> %res | 546 ret <8 x i16> %res |
291 ; CHECK-LABEL: test_and_v8i16 | 547 ; CHECK-LABEL: test_and_v8i16 |
292 ; CHECK: pand | 548 ; CHECK: pand |
| 549 ; MIPS32-LABEL: test_and_v8i16 |
| 550 ; MIPS32: andi |
| 551 ; MIPS32: andi |
| 552 ; MIPS32: andi |
| 553 ; MIPS32: andi |
| 554 ; MIPS32: andi |
| 555 ; MIPS32: andi |
| 556 ; MIPS32: andi |
| 557 ; MIPS32: andi |
293 } | 558 } |
294 | 559 |
295 define internal <8 x i16> @test_or_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { | 560 define internal <8 x i16> @test_or_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { |
296 entry: | 561 entry: |
297 %res = or <8 x i16> %arg0, %arg1 | 562 %res = or <8 x i16> %arg0, %arg1 |
298 ret <8 x i16> %res | 563 ret <8 x i16> %res |
299 ; CHECK-LABEL: test_or_v8i16 | 564 ; CHECK-LABEL: test_or_v8i16 |
300 ; CHECK: por | 565 ; CHECK: por |
| 566 ; MIPS32-LABEL: test_or_v8i16 |
| 567 ; MIPS32: or |
| 568 ; MIPS32: or |
| 569 ; MIPS32: or |
| 570 ; MIPS32: or |
| 571 ; MIPS32: or |
| 572 ; MIPS32: or |
| 573 ; MIPS32: or |
| 574 ; MIPS32: or |
301 } | 575 } |
302 | 576 |
303 define internal <8 x i16> @test_xor_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { | 577 define internal <8 x i16> @test_xor_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { |
304 entry: | 578 entry: |
305 %res = xor <8 x i16> %arg0, %arg1 | 579 %res = xor <8 x i16> %arg0, %arg1 |
306 ret <8 x i16> %res | 580 ret <8 x i16> %res |
307 ; CHECK-LABEL: test_xor_v8i16 | 581 ; CHECK-LABEL: test_xor_v8i16 |
308 ; CHECK: pxor | 582 ; CHECK: pxor |
| 583 ; MIPS32-LABEL: test_xor_v8i16 |
| 584 ; MIPS32: xor |
| 585 ; MIPS32: xor |
| 586 ; MIPS32: xor |
| 587 ; MIPS32: xor |
| 588 ; MIPS32: xor |
| 589 ; MIPS32: xor |
| 590 ; MIPS32: xor |
| 591 ; MIPS32: xor |
309 } | 592 } |
310 | 593 |
311 define internal <8 x i16> @test_sub_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { | 594 define internal <8 x i16> @test_sub_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { |
312 entry: | 595 entry: |
313 %res = sub <8 x i16> %arg0, %arg1 | 596 %res = sub <8 x i16> %arg0, %arg1 |
314 ret <8 x i16> %res | 597 ret <8 x i16> %res |
315 ; CHECK-LABEL: test_sub_v8i16 | 598 ; CHECK-LABEL: test_sub_v8i16 |
316 ; CHECK: psubw | 599 ; CHECK: psubw |
| 600 ; MIPS32-LABEL: test_sub_v8i16 |
| 601 ; MIPS32: subu |
| 602 ; MIPS32: subu |
| 603 ; MIPS32: subu |
| 604 ; MIPS32: subu |
| 605 ; MIPS32: subu |
| 606 ; MIPS32: subu |
| 607 ; MIPS32: subu |
| 608 ; MIPS32: subu |
317 } | 609 } |
318 | 610 |
319 define internal <8 x i16> @test_mul_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { | 611 define internal <8 x i16> @test_mul_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { |
320 entry: | 612 entry: |
321 %res = mul <8 x i16> %arg0, %arg1 | 613 %res = mul <8 x i16> %arg0, %arg1 |
322 ret <8 x i16> %res | 614 ret <8 x i16> %res |
323 ; CHECK-LABEL: test_mul_v8i16 | 615 ; CHECK-LABEL: test_mul_v8i16 |
324 ; CHECK: pmullw | 616 ; CHECK: pmullw |
| 617 ; MIPS32-LABEL: test_mul_v8i16 |
| 618 ; MIPS32: mul |
| 619 ; MIPS32: mul |
| 620 ; MIPS32: mul |
| 621 ; MIPS32: mul |
| 622 ; MIPS32: mul |
| 623 ; MIPS32: mul |
| 624 ; MIPS32: mul |
| 625 ; MIPS32: mul |
325 } | 626 } |
326 | 627 |
327 define internal <8 x i16> @test_shl_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { | 628 define internal <8 x i16> @test_shl_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { |
328 entry: | 629 entry: |
329 %res = shl <8 x i16> %arg0, %arg1 | 630 %res = shl <8 x i16> %arg0, %arg1 |
330 ret <8 x i16> %res | 631 ret <8 x i16> %res |
331 ; CHECK-LABEL: test_shl_v8i16 | 632 ; CHECK-LABEL: test_shl_v8i16 |
332 ; CHECK: shl | 633 ; CHECK: shl |
333 ; CHECK: shl | 634 ; CHECK: shl |
334 ; CHECK: shl | 635 ; CHECK: shl |
335 ; CHECK: shl | 636 ; CHECK: shl |
336 ; CHECK: shl | 637 ; CHECK: shl |
337 ; CHECK: shl | 638 ; CHECK: shl |
338 ; CHECK: shl | 639 ; CHECK: shl |
339 ; CHECK: shl | 640 ; CHECK: shl |
| 641 ; MIPS32-LABEL: test_shl_v8i16 |
| 642 ; MIPS32: sllv |
| 643 ; MIPS32: sllv |
| 644 ; MIPS32: sllv |
| 645 ; MIPS32: sllv |
| 646 ; MIPS32: sllv |
| 647 ; MIPS32: sllv |
| 648 ; MIPS32: sllv |
| 649 ; MIPS32: sllv |
340 } | 650 } |
341 | 651 |
342 define internal <8 x i16> @test_lshr_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { | 652 define internal <8 x i16> @test_lshr_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { |
343 entry: | 653 entry: |
344 %res = lshr <8 x i16> %arg0, %arg1 | 654 %res = lshr <8 x i16> %arg0, %arg1 |
345 ret <8 x i16> %res | 655 ret <8 x i16> %res |
346 ; CHECK-LABEL: test_lshr_v8i16 | 656 ; CHECK-LABEL: test_lshr_v8i16 |
347 ; CHECK: shr | 657 ; CHECK: shr |
348 ; CHECK: shr | 658 ; CHECK: shr |
349 ; CHECK: shr | 659 ; CHECK: shr |
350 ; CHECK: shr | 660 ; CHECK: shr |
351 ; CHECK: shr | 661 ; CHECK: shr |
352 ; CHECK: shr | 662 ; CHECK: shr |
353 ; CHECK: shr | 663 ; CHECK: shr |
354 ; CHECK: shr | 664 ; CHECK: shr |
| 665 ; MIPS32-LABEL: test_lshr_v8i16 |
| 666 ; MIPS32: srlv |
| 667 ; MIPS32: srlv |
| 668 ; MIPS32: srlv |
| 669 ; MIPS32: srlv |
| 670 ; MIPS32: srlv |
| 671 ; MIPS32: srlv |
| 672 ; MIPS32: srlv |
| 673 ; MIPS32: srlv |
355 } | 674 } |
356 | 675 |
357 define internal <8 x i16> @test_ashr_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { | 676 define internal <8 x i16> @test_ashr_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { |
358 entry: | 677 entry: |
359 %res = ashr <8 x i16> %arg0, %arg1 | 678 %res = ashr <8 x i16> %arg0, %arg1 |
360 ret <8 x i16> %res | 679 ret <8 x i16> %res |
361 ; CHECK-LABEL: test_ashr_v8i16 | 680 ; CHECK-LABEL: test_ashr_v8i16 |
362 ; CHECK: sar | 681 ; CHECK: sar |
363 ; CHECK: sar | 682 ; CHECK: sar |
364 ; CHECK: sar | 683 ; CHECK: sar |
365 ; CHECK: sar | 684 ; CHECK: sar |
366 ; CHECK: sar | 685 ; CHECK: sar |
367 ; CHECK: sar | 686 ; CHECK: sar |
368 ; CHECK: sar | 687 ; CHECK: sar |
369 ; CHECK: sar | 688 ; CHECK: sar |
| 689 ; MIPS32-LABEL: test_ashr_v8i16 |
| 690 ; MIPS32: srav |
| 691 ; MIPS32: srav |
| 692 ; MIPS32: srav |
| 693 ; MIPS32: srav |
| 694 ; MIPS32: srav |
| 695 ; MIPS32: srav |
| 696 ; MIPS32: srav |
| 697 ; MIPS32: srav |
370 } | 698 } |
371 | 699 |
372 define internal <8 x i16> @test_udiv_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { | 700 define internal <8 x i16> @test_udiv_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { |
373 entry: | 701 entry: |
374 %res = udiv <8 x i16> %arg0, %arg1 | 702 %res = udiv <8 x i16> %arg0, %arg1 |
375 ret <8 x i16> %res | 703 ret <8 x i16> %res |
376 ; CHECK-LABEL: test_udiv_v8i16 | 704 ; CHECK-LABEL: test_udiv_v8i16 |
377 ; CHECK: div | 705 ; CHECK: div |
378 ; CHECK: div | 706 ; CHECK: div |
379 ; CHECK: div | 707 ; CHECK: div |
380 ; CHECK: div | 708 ; CHECK: div |
381 ; CHECK: div | 709 ; CHECK: div |
382 ; CHECK: div | 710 ; CHECK: div |
383 ; CHECK: div | 711 ; CHECK: div |
384 ; CHECK: div | 712 ; CHECK: div |
| 713 ; MIPS32-LABEL: test_udiv_v8i16 |
| 714 ; MIPS32: divu |
| 715 ; MIPS32: divu |
| 716 ; MIPS32: divu |
| 717 ; MIPS32: divu |
| 718 ; MIPS32: divu |
| 719 ; MIPS32: divu |
| 720 ; MIPS32: divu |
| 721 ; MIPS32: divu |
385 } | 722 } |
386 | 723 |
387 define internal <8 x i16> @test_sdiv_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { | 724 define internal <8 x i16> @test_sdiv_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { |
388 entry: | 725 entry: |
389 %res = sdiv <8 x i16> %arg0, %arg1 | 726 %res = sdiv <8 x i16> %arg0, %arg1 |
390 ret <8 x i16> %res | 727 ret <8 x i16> %res |
391 ; CHECK-LABEL: test_sdiv_v8i16 | 728 ; CHECK-LABEL: test_sdiv_v8i16 |
392 ; CHECK: idiv | 729 ; CHECK: idiv |
393 ; CHECK: idiv | 730 ; CHECK: idiv |
394 ; CHECK: idiv | 731 ; CHECK: idiv |
395 ; CHECK: idiv | 732 ; CHECK: idiv |
396 ; CHECK: idiv | 733 ; CHECK: idiv |
397 ; CHECK: idiv | 734 ; CHECK: idiv |
398 ; CHECK: idiv | 735 ; CHECK: idiv |
399 ; CHECK: idiv | 736 ; CHECK: idiv |
| 737 ; MIPS32-LABEL: test_sdiv_v8i16 |
| 738 ; MIPS32: div |
| 739 ; MIPS32: div |
| 740 ; MIPS32: div |
| 741 ; MIPS32: div |
| 742 ; MIPS32: div |
| 743 ; MIPS32: div |
| 744 ; MIPS32: div |
| 745 ; MIPS32: div |
400 } | 746 } |
401 | 747 |
402 define internal <8 x i16> @test_urem_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { | 748 define internal <8 x i16> @test_urem_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { |
403 entry: | 749 entry: |
404 %res = urem <8 x i16> %arg0, %arg1 | 750 %res = urem <8 x i16> %arg0, %arg1 |
405 ret <8 x i16> %res | 751 ret <8 x i16> %res |
406 ; CHECK-LABEL: test_urem_v8i16 | 752 ; CHECK-LABEL: test_urem_v8i16 |
407 ; CHECK: div | 753 ; CHECK: div |
408 ; CHECK: div | 754 ; CHECK: div |
409 ; CHECK: div | 755 ; CHECK: div |
410 ; CHECK: div | 756 ; CHECK: div |
411 ; CHECK: div | 757 ; CHECK: div |
412 ; CHECK: div | 758 ; CHECK: div |
413 ; CHECK: div | 759 ; CHECK: div |
414 ; CHECK: div | 760 ; CHECK: div |
| 761 ; MIPS32-LABEL: test_urem_v8i16 |
| 762 ; MIPS32: divu |
| 763 ; MIPS32: divu |
| 764 ; MIPS32: divu |
| 765 ; MIPS32: divu |
| 766 ; MIPS32: divu |
| 767 ; MIPS32: divu |
| 768 ; MIPS32: divu |
| 769 ; MIPS32: divu |
415 } | 770 } |
416 | 771 |
417 define internal <8 x i16> @test_srem_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { | 772 define internal <8 x i16> @test_srem_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) { |
418 entry: | 773 entry: |
419 %res = srem <8 x i16> %arg0, %arg1 | 774 %res = srem <8 x i16> %arg0, %arg1 |
420 ret <8 x i16> %res | 775 ret <8 x i16> %res |
421 ; CHECK-LABEL: test_srem_v8i16 | 776 ; CHECK-LABEL: test_srem_v8i16 |
422 ; CHECK: idiv | 777 ; CHECK: idiv |
423 ; CHECK: idiv | 778 ; CHECK: idiv |
424 ; CHECK: idiv | 779 ; CHECK: idiv |
425 ; CHECK: idiv | 780 ; CHECK: idiv |
426 ; CHECK: idiv | 781 ; CHECK: idiv |
427 ; CHECK: idiv | 782 ; CHECK: idiv |
428 ; CHECK: idiv | 783 ; CHECK: idiv |
429 ; CHECK: idiv | 784 ; CHECK: idiv |
| 785 ; MIPS32-LABEL: test_srem_v8i16 |
| 786 ; MIPS32: div |
| 787 ; MIPS32: div |
| 788 ; MIPS32: div |
| 789 ; MIPS32: div |
| 790 ; MIPS32: div |
| 791 ; MIPS32: div |
| 792 ; MIPS32: div |
| 793 ; MIPS32: div |
430 } | 794 } |
431 | 795 |
432 define internal <4 x i32> @test_add_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { | 796 define internal <4 x i32> @test_add_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { |
433 entry: | 797 entry: |
434 %res = add <4 x i32> %arg0, %arg1 | 798 %res = add <4 x i32> %arg0, %arg1 |
435 ret <4 x i32> %res | 799 ret <4 x i32> %res |
436 ; CHECK-LABEL: test_add_v4i32 | 800 ; CHECK-LABEL: test_add_v4i32 |
437 ; CHECK: paddd | 801 ; CHECK: paddd |
| 802 ; MIPS32-LABEL: test_add_v4i32 |
| 803 ; MIPS32: addu |
| 804 ; MIPS32: addu |
| 805 ; MIPS32: addu |
| 806 ; MIPS32: addu |
438 } | 807 } |
439 | 808 |
440 define internal <4 x i32> @test_and_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { | 809 define internal <4 x i32> @test_and_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { |
441 entry: | 810 entry: |
442 %res = and <4 x i32> %arg0, %arg1 | 811 %res = and <4 x i32> %arg0, %arg1 |
443 ret <4 x i32> %res | 812 ret <4 x i32> %res |
444 ; CHECK-LABEL: test_and_v4i32 | 813 ; CHECK-LABEL: test_and_v4i32 |
445 ; CHECK: pand | 814 ; CHECK: pand |
| 815 ; MIPS32-LABEL: test_and_v4i32 |
| 816 ; MIPS32: and |
| 817 ; MIPS32: and |
| 818 ; MIPS32: and |
| 819 ; MIPS32: and |
446 } | 820 } |
447 | 821 |
448 define internal <4 x i32> @test_or_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { | 822 define internal <4 x i32> @test_or_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { |
449 entry: | 823 entry: |
450 %res = or <4 x i32> %arg0, %arg1 | 824 %res = or <4 x i32> %arg0, %arg1 |
451 ret <4 x i32> %res | 825 ret <4 x i32> %res |
452 ; CHECK-LABEL: test_or_v4i32 | 826 ; CHECK-LABEL: test_or_v4i32 |
453 ; CHECK: por | 827 ; CHECK: por |
| 828 ; MIPS32-LABEL: test_or_v4i32 |
| 829 ; MIPS32: or |
| 830 ; MIPS32: or |
| 831 ; MIPS32: or |
| 832 ; MIPS32: or |
454 } | 833 } |
455 | 834 |
456 define internal <4 x i32> @test_xor_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { | 835 define internal <4 x i32> @test_xor_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { |
457 entry: | 836 entry: |
458 %res = xor <4 x i32> %arg0, %arg1 | 837 %res = xor <4 x i32> %arg0, %arg1 |
459 ret <4 x i32> %res | 838 ret <4 x i32> %res |
460 ; CHECK-LABEL: test_xor_v4i32 | 839 ; CHECK-LABEL: test_xor_v4i32 |
461 ; CHECK: pxor | 840 ; CHECK: pxor |
| 841 ; MIPS32-LABEL: test_xor_v4i32 |
| 842 ; MIPS32: xor |
| 843 ; MIPS32: xor |
| 844 ; MIPS32: xor |
| 845 ; MIPS32: xor |
462 } | 846 } |
463 | 847 |
464 define internal <4 x i32> @test_sub_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { | 848 define internal <4 x i32> @test_sub_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { |
465 entry: | 849 entry: |
466 %res = sub <4 x i32> %arg0, %arg1 | 850 %res = sub <4 x i32> %arg0, %arg1 |
467 ret <4 x i32> %res | 851 ret <4 x i32> %res |
468 ; CHECK-LABEL: test_sub_v4i32 | 852 ; CHECK-LABEL: test_sub_v4i32 |
469 ; CHECK: psubd | 853 ; CHECK: psubd |
| 854 ; MIPS32-LABEL: test_sub_v4i32 |
| 855 ; MIPS32: subu |
| 856 ; MIPS32: subu |
| 857 ; MIPS32: subu |
| 858 ; MIPS32: subu |
470 } | 859 } |
471 | 860 |
472 define internal <4 x i32> @test_mul_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { | 861 define internal <4 x i32> @test_mul_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { |
473 entry: | 862 entry: |
474 %res = mul <4 x i32> %arg0, %arg1 | 863 %res = mul <4 x i32> %arg0, %arg1 |
475 ret <4 x i32> %res | 864 ret <4 x i32> %res |
476 ; CHECK-LABEL: test_mul_v4i32 | 865 ; CHECK-LABEL: test_mul_v4i32 |
477 ; CHECK: pmuludq | 866 ; CHECK: pmuludq |
478 ; CHECK: pmuludq | 867 ; CHECK: pmuludq |
479 ; | 868 ; |
480 ; SSE41-LABEL: test_mul_v4i32 | 869 ; SSE41-LABEL: test_mul_v4i32 |
481 ; SSE41: pmulld | 870 ; SSE41: pmulld |
| 871 ; MIPS32-LABEL: test_mul_v4i32 |
| 872 ; MIPS32: mul |
| 873 ; MIPS32: mul |
| 874 ; MIPS32: mul |
| 875 ; MIPS32: mul |
482 } | 876 } |
483 | 877 |
484 define internal <4 x i32> @test_shl_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { | 878 define internal <4 x i32> @test_shl_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { |
485 entry: | 879 entry: |
486 %res = shl <4 x i32> %arg0, %arg1 | 880 %res = shl <4 x i32> %arg0, %arg1 |
487 ret <4 x i32> %res | 881 ret <4 x i32> %res |
488 ; CHECK-LABEL: test_shl_v4i32 | 882 ; CHECK-LABEL: test_shl_v4i32 |
489 ; CHECK: shl | 883 ; CHECK: shl |
490 ; CHECK: shl | 884 ; CHECK: shl |
491 ; CHECK: shl | 885 ; CHECK: shl |
492 ; CHECK: shl | 886 ; CHECK: shl |
493 | 887 |
494 ; This line is to ensure that pmulld is generated in test_mul_v4i32 above. | 888 ; This line is to ensure that pmulld is generated in test_mul_v4i32 above. |
495 ; SSE41-LABEL: test_shl_v4i32 | 889 ; SSE41-LABEL: test_shl_v4i32 |
| 890 ; MIPS32-LABEL: test_shl_v4i32 |
| 891 ; MIPS32: sllv |
| 892 ; MIPS32: sllv |
| 893 ; MIPS32: sllv |
| 894 ; MIPS32: sllv |
496 } | 895 } |
497 | 896 |
498 define internal <4 x i32> @test_lshr_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { | 897 define internal <4 x i32> @test_lshr_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { |
499 entry: | 898 entry: |
500 %res = lshr <4 x i32> %arg0, %arg1 | 899 %res = lshr <4 x i32> %arg0, %arg1 |
501 ret <4 x i32> %res | 900 ret <4 x i32> %res |
502 ; CHECK-LABEL: test_lshr_v4i32 | 901 ; CHECK-LABEL: test_lshr_v4i32 |
503 ; CHECK: shr | 902 ; CHECK: shr |
504 ; CHECK: shr | 903 ; CHECK: shr |
505 ; CHECK: shr | 904 ; CHECK: shr |
506 ; CHECK: shr | 905 ; CHECK: shr |
| 906 ; MIPS32-LABEL: test_lshr_v4i32 |
| 907 ; MIPS32: srlv |
| 908 ; MIPS32: srlv |
| 909 ; MIPS32: srlv |
| 910 ; MIPS32: srlv |
507 } | 911 } |
508 | 912 |
509 define internal <4 x i32> @test_ashr_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { | 913 define internal <4 x i32> @test_ashr_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { |
510 entry: | 914 entry: |
511 %res = ashr <4 x i32> %arg0, %arg1 | 915 %res = ashr <4 x i32> %arg0, %arg1 |
512 ret <4 x i32> %res | 916 ret <4 x i32> %res |
513 ; CHECK-LABEL: test_ashr_v4i32 | 917 ; CHECK-LABEL: test_ashr_v4i32 |
514 ; CHECK: sar | 918 ; CHECK: sar |
515 ; CHECK: sar | 919 ; CHECK: sar |
516 ; CHECK: sar | 920 ; CHECK: sar |
517 ; CHECK: sar | 921 ; CHECK: sar |
| 922 ; MIPS32-LABEL: test_ashr_v4i32 |
| 923 ; MIPS32: srav |
| 924 ; MIPS32: srav |
| 925 ; MIPS32: srav |
| 926 ; MIPS32: srav |
518 } | 927 } |
519 | 928 |
520 define internal <4 x i32> @test_udiv_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { | 929 define internal <4 x i32> @test_udiv_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { |
521 entry: | 930 entry: |
522 %res = udiv <4 x i32> %arg0, %arg1 | 931 %res = udiv <4 x i32> %arg0, %arg1 |
523 ret <4 x i32> %res | 932 ret <4 x i32> %res |
524 ; CHECK-LABEL: test_udiv_v4i32 | 933 ; CHECK-LABEL: test_udiv_v4i32 |
525 ; CHECK: div | 934 ; CHECK: div |
526 ; CHECK: div | 935 ; CHECK: div |
527 ; CHECK: div | 936 ; CHECK: div |
528 ; CHECK: div | 937 ; CHECK: div |
| 938 ; MIPS32-LABEL: test_udiv_v4i32 |
| 939 ; MIPS32: divu |
| 940 ; MIPS32: divu |
| 941 ; MIPS32: divu |
| 942 ; MIPS32: divu |
529 } | 943 } |
530 | 944 |
531 define internal <4 x i32> @test_sdiv_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { | 945 define internal <4 x i32> @test_sdiv_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { |
532 entry: | 946 entry: |
533 %res = sdiv <4 x i32> %arg0, %arg1 | 947 %res = sdiv <4 x i32> %arg0, %arg1 |
534 ret <4 x i32> %res | 948 ret <4 x i32> %res |
535 ; CHECK-LABEL: test_sdiv_v4i32 | 949 ; CHECK-LABEL: test_sdiv_v4i32 |
536 ; CHECK: idiv | 950 ; CHECK: idiv |
537 ; CHECK: idiv | 951 ; CHECK: idiv |
538 ; CHECK: idiv | 952 ; CHECK: idiv |
539 ; CHECK: idiv | 953 ; CHECK: idiv |
| 954 ; MIPS32-LABEL: test_sdiv_v4i32 |
| 955 ; MIPS32: div |
| 956 ; MIPS32: div |
| 957 ; MIPS32: div |
| 958 ; MIPS32: div |
540 } | 959 } |
541 | 960 |
542 define internal <4 x i32> @test_urem_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { | 961 define internal <4 x i32> @test_urem_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { |
543 entry: | 962 entry: |
544 %res = urem <4 x i32> %arg0, %arg1 | 963 %res = urem <4 x i32> %arg0, %arg1 |
545 ret <4 x i32> %res | 964 ret <4 x i32> %res |
546 ; CHECK-LABEL: test_urem_v4i32 | 965 ; CHECK-LABEL: test_urem_v4i32 |
547 ; CHECK: div | 966 ; CHECK: div |
548 ; CHECK: div | 967 ; CHECK: div |
549 ; CHECK: div | 968 ; CHECK: div |
550 ; CHECK: div | 969 ; CHECK: div |
| 970 ; MIPS32-LABEL: test_urem_v4i32 |
| 971 ; MIPS32: divu |
| 972 ; MIPS32: divu |
| 973 ; MIPS32: divu |
| 974 ; MIPS32: divu |
551 } | 975 } |
552 | 976 |
553 define internal <4 x i32> @test_srem_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { | 977 define internal <4 x i32> @test_srem_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) { |
554 entry: | 978 entry: |
555 %res = srem <4 x i32> %arg0, %arg1 | 979 %res = srem <4 x i32> %arg0, %arg1 |
556 ret <4 x i32> %res | 980 ret <4 x i32> %res |
557 ; CHECK-LABEL: test_srem_v4i32 | 981 ; CHECK-LABEL: test_srem_v4i32 |
558 ; CHECK: idiv | 982 ; CHECK: idiv |
559 ; CHECK: idiv | 983 ; CHECK: idiv |
560 ; CHECK: idiv | 984 ; CHECK: idiv |
561 ; CHECK: idiv | 985 ; CHECK: idiv |
| 986 ; MIPS32-LABEL: test_srem_v4i32 |
| 987 ; MIPS32: div |
| 988 ; MIPS32: div |
| 989 ; MIPS32: div |
| 990 ; MIPS32: div |
562 } | 991 } |
OLD | NEW |