Commit dc3dba5
committed
[Intrinsics][AArch64] Add intrinsic to mask off aliasing vector lanes
It can be unsafe to load a vector from an address and write a vector to
an address if those two addresses have overlapping lanes within a
vectorised loop iteration.
This PR adds an intrinsic designed to create a mask with lanes disabled
if they overlap between the two pointer arguments, so that only safe
lanes are loaded, operated on and stored.
Along with the two pointer parameters, the intrinsic also takes an
immediate that represents the size in bytes of the vector element
types, as well as an immediate i1 that is true if there is a write
after-read-hazard or false if there is a read-after-write hazard.
This will be used by llvm#100579 and replaces the existing lowering for
whilewr since that isn't needed now we have the intrinsic.1 parent 71b87d1 commit dc3dba5
File tree
11 files changed
+714
-1216
lines changed- llvm
- docs
- include/llvm
- CodeGen
- IR
- lib
- CodeGen/SelectionDAG
- Target/AArch64
- test/CodeGen/AArch64
11 files changed
+714
-1216
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
23475 | 23475 | | |
23476 | 23476 | | |
23477 | 23477 | | |
| 23478 | + | |
| 23479 | + | |
| 23480 | + | |
| 23481 | + | |
| 23482 | + | |
| 23483 | + | |
| 23484 | + | |
| 23485 | + | |
| 23486 | + | |
| 23487 | + | |
| 23488 | + | |
| 23489 | + | |
| 23490 | + | |
| 23491 | + | |
| 23492 | + | |
| 23493 | + | |
| 23494 | + | |
| 23495 | + | |
| 23496 | + | |
| 23497 | + | |
| 23498 | + | |
| 23499 | + | |
| 23500 | + | |
| 23501 | + | |
| 23502 | + | |
| 23503 | + | |
| 23504 | + | |
| 23505 | + | |
| 23506 | + | |
| 23507 | + | |
| 23508 | + | |
| 23509 | + | |
| 23510 | + | |
| 23511 | + | |
| 23512 | + | |
| 23513 | + | |
| 23514 | + | |
| 23515 | + | |
| 23516 | + | |
| 23517 | + | |
| 23518 | + | |
| 23519 | + | |
| 23520 | + | |
| 23521 | + | |
| 23522 | + | |
| 23523 | + | |
| 23524 | + | |
| 23525 | + | |
| 23526 | + | |
| 23527 | + | |
| 23528 | + | |
| 23529 | + | |
| 23530 | + | |
| 23531 | + | |
| 23532 | + | |
| 23533 | + | |
| 23534 | + | |
| 23535 | + | |
| 23536 | + | |
| 23537 | + | |
| 23538 | + | |
| 23539 | + | |
| 23540 | + | |
| 23541 | + | |
| 23542 | + | |
| 23543 | + | |
| 23544 | + | |
| 23545 | + | |
| 23546 | + | |
| 23547 | + | |
| 23548 | + | |
| 23549 | + | |
| 23550 | + | |
| 23551 | + | |
| 23552 | + | |
| 23553 | + | |
| 23554 | + | |
| 23555 | + | |
| 23556 | + | |
| 23557 | + | |
23478 | 23558 | | |
23479 | 23559 | | |
23480 | 23560 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
468 | 468 | | |
469 | 469 | | |
470 | 470 | | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
471 | 476 | | |
472 | 477 | | |
473 | 478 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2363 | 2363 | | |
2364 | 2364 | | |
2365 | 2365 | | |
| 2366 | + | |
| 2367 | + | |
| 2368 | + | |
| 2369 | + | |
| 2370 | + | |
2366 | 2371 | | |
2367 | 2372 | | |
2368 | 2373 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8284 | 8284 | | |
8285 | 8285 | | |
8286 | 8286 | | |
| 8287 | + | |
| 8288 | + | |
| 8289 | + | |
| 8290 | + | |
| 8291 | + | |
| 8292 | + | |
| 8293 | + | |
| 8294 | + | |
| 8295 | + | |
| 8296 | + | |
| 8297 | + | |
| 8298 | + | |
| 8299 | + | |
| 8300 | + | |
| 8301 | + | |
| 8302 | + | |
| 8303 | + | |
| 8304 | + | |
| 8305 | + | |
| 8306 | + | |
| 8307 | + | |
| 8308 | + | |
| 8309 | + | |
| 8310 | + | |
| 8311 | + | |
| 8312 | + | |
| 8313 | + | |
| 8314 | + | |
| 8315 | + | |
| 8316 | + | |
| 8317 | + | |
| 8318 | + | |
| 8319 | + | |
| 8320 | + | |
| 8321 | + | |
| 8322 | + | |
| 8323 | + | |
| 8324 | + | |
| 8325 | + | |
| 8326 | + | |
| 8327 | + | |
| 8328 | + | |
| 8329 | + | |
| 8330 | + | |
8287 | 8331 | | |
8288 | 8332 | | |
8289 | 8333 | | |
| |||
0 commit comments