Commit 7f5c069
committed
[AArch64] Use SVE2 bit-sel instructions for some binary patterns.
We can use NBSL/BSL2N to implement the following operations via the
corresponding identities:
* EON(a, b) = BSL2N(a, a, b)
* NAND(a, b) = NBSL(a, b, b) = NBSL(b, a, a)
* NOR(a, b) = NBSL(a, b, a) = NBSL(b, a, b)
* ORN(a, b) = BSL2N(a, b, a)
These operations are currently lowered into at least two instructions
because we don't have dedicated Neon/SVE instructions for them. With the
appropriate pattern of NBSL/BSL2N we can lower them in a single
instruction.
P.S. We can also use NBSL to implement an unpredicated NOT(a) =
NBSL(a, a, a). However, because of the tied register constraint, this
may not be always profitable.1 parent 46785cb commit 7f5c069
File tree
5 files changed
+57
-30
lines changed- llvm
- lib/Target/AArch64
- test/CodeGen/AArch64
5 files changed
+57
-30
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4034 | 4034 | | |
4035 | 4035 | | |
4036 | 4036 | | |
| 4037 | + | |
| 4038 | + | |
| 4039 | + | |
| 4040 | + | |
| 4041 | + | |
| 4042 | + | |
| 4043 | + | |
| 4044 | + | |
| 4045 | + | |
| 4046 | + | |
| 4047 | + | |
| 4048 | + | |
| 4049 | + | |
| 4050 | + | |
| 4051 | + | |
| 4052 | + | |
| 4053 | + | |
| 4054 | + | |
| 4055 | + | |
| 4056 | + | |
| 4057 | + | |
| 4058 | + | |
| 4059 | + | |
| 4060 | + | |
| 4061 | + | |
| 4062 | + | |
| 4063 | + | |
| 4064 | + | |
| 4065 | + | |
| 4066 | + | |
4037 | 4067 | | |
4038 | 4068 | | |
4039 | 4069 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
457 | 457 | | |
458 | 458 | | |
459 | 459 | | |
460 | | - | |
461 | | - | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
462 | 464 | | |
463 | 465 | | |
464 | 466 | | |
| |||
475 | 477 | | |
476 | 478 | | |
477 | 479 | | |
478 | | - | |
479 | | - | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
480 | 484 | | |
481 | 485 | | |
482 | 486 | | |
| |||
493 | 497 | | |
494 | 498 | | |
495 | 499 | | |
496 | | - | |
497 | | - | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
498 | 504 | | |
499 | 505 | | |
500 | 506 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
259 | 259 | | |
260 | 260 | | |
261 | 261 | | |
262 | | - | |
263 | | - | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
264 | 266 | | |
265 | 267 | | |
266 | 268 | | |
267 | 269 | | |
268 | | - | |
269 | | - | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
270 | 274 | | |
271 | 275 | | |
272 | 276 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
322 | 322 | | |
323 | 323 | | |
324 | 324 | | |
325 | | - | |
326 | 325 | | |
| 326 | + | |
327 | 327 | | |
328 | | - | |
329 | | - | |
330 | 328 | | |
331 | 329 | | |
332 | 330 | | |
| |||
340 | 338 | | |
341 | 339 | | |
342 | 340 | | |
343 | | - | |
344 | 341 | | |
| 342 | + | |
345 | 343 | | |
346 | | - | |
347 | | - | |
348 | 344 | | |
349 | 345 | | |
350 | 346 | | |
| |||
358 | 354 | | |
359 | 355 | | |
360 | 356 | | |
361 | | - | |
362 | 357 | | |
| 358 | + | |
363 | 359 | | |
364 | | - | |
365 | | - | |
366 | 360 | | |
367 | 361 | | |
368 | 362 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
330 | 330 | | |
331 | 331 | | |
332 | 332 | | |
333 | | - | |
334 | | - | |
335 | | - | |
| 333 | + | |
336 | 334 | | |
337 | 335 | | |
338 | 336 | | |
| |||
343 | 341 | | |
344 | 342 | | |
345 | 343 | | |
346 | | - | |
347 | | - | |
348 | | - | |
| 344 | + | |
349 | 345 | | |
350 | 346 | | |
351 | 347 | | |
| |||
356 | 352 | | |
357 | 353 | | |
358 | 354 | | |
359 | | - | |
360 | | - | |
| 355 | + | |
361 | 356 | | |
362 | 357 | | |
363 | 358 | | |
| |||
368 | 363 | | |
369 | 364 | | |
370 | 365 | | |
371 | | - | |
372 | | - | |
373 | | - | |
| 366 | + | |
374 | 367 | | |
375 | 368 | | |
376 | 369 | | |
| |||
0 commit comments