@@ -23657,7 +23657,9 @@ The final two are immediates and the result is a vector with the i1 element type
23657
23657
Semantics:
23658
23658
""""""""""
23659
23659
23660
- In the case that ``%writeAfterRead`` is true, the
23660
+ The intrinsic will return poison if ``%ptrA`` and ``%ptrB`` are within
23661
+ VF * ``%elementSize`` of each other and ``%ptrA`` + VF * ``%elementSize`` wraps.
23662
+ In other cases when ``%writeAfterRead`` is true, the
23661
23663
'``llvm.experimental.get.alias.lane.mask.*``' intrinsics are semantically
23662
23664
equivalent to:
23663
23665
@@ -23666,7 +23668,9 @@ equivalent to:
23666
23668
%diff = (%ptrB - %ptrA) / %elementSize
23667
23669
%m[i] = (icmp ult i, %diff) || (%diff <= 0)
23668
23670
23669
- Otherwise they are semantically equivalent to:
23671
+ When the return value is not poison and ``%writeAfterRead`` is false, the
23672
+ '``llvm.experimental.get.alias.lane.mask.*``' intrinsics are semantically
23673
+ equivalent to:
23670
23674
23671
23675
::
23672
23676
@@ -23675,12 +23679,9 @@ Otherwise they are semantically equivalent to:
23675
23679
23676
23680
where ``%m`` is a vector (mask) of active/inactive lanes with its elements
23677
23681
indexed by ``i``, and ``%ptrA``, ``%ptrB`` are the two i64 arguments to
23678
- ``llvm.experimental.get.alias.lane.mask.*``, ``%elementSize`` is the first
23679
- immediate argument, ``%abs`` is the absolute difference operation, ``%icmp`` is
23680
- an integer compare and ``ult`` the unsigned less-than comparison operator. The
23681
- subtraction between ``%ptrA`` and ``%ptrB`` could be negative. The
23682
- ``%writeAfterRead`` argument is expected to be true if the ``%ptrB`` is stored
23683
- to after ``%ptrA`` is read from.
23682
+ ``llvm.experimental.get.alias.lane.mask.*`` and ``%elementSize`` is the first
23683
+ immediate argument. The ``%writeAfterRead`` argument is expected to be true if
23684
+ ``%ptrB`` is stored to after ``%ptrA`` is read from.
23684
23685
The above is equivalent to:
23685
23686
23686
23687
::
@@ -23697,9 +23698,6 @@ then lanes 3, 4, 5, 6 and 7 of the vector loaded from ``%ptrA``
23697
23698
share addresses with lanes 0, 1, 2, 3, 4 and 5 from the vector stored to at
23698
23699
``%ptrB``.
23699
23700
23700
- The intrinsic will return poison if ``%ptrA`` and ``%ptrB`` are within
23701
- VF * ``%elementSize`` of each other and ``%ptrA`` + VF * ``%elementSize`` wraps.
23702
-
23703
23701
23704
23702
Examples:
23705
23703
"""""""""
0 commit comments