diff options
Diffstat (limited to 'gcc/doc/md.texi')
-rw-r--r-- | gcc/doc/md.texi | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/gcc/doc/md.texi b/gcc/doc/md.texi index 4527b44..245fa90 100644 --- a/gcc/doc/md.texi +++ b/gcc/doc/md.texi @@ -4908,6 +4908,35 @@ for (j = 0; j < GET_MODE_NUNITS (@var{n}); j++) This pattern is not allowed to @code{FAIL}. +@cindex @code{gather_load@var{m}} instruction pattern +@item @samp{gather_load@var{m}} +Load several separate memory locations into a vector of mode @var{m}. +Operand 1 is a scalar base address and operand 2 is a vector of +offsets from that base. Operand 0 is a destination vector with the +same number of elements as the offset. For each element index @var{i}: + +@itemize @bullet +@item +extend the offset element @var{i} to address width, using zero +extension if operand 3 is 1 and sign extension if operand 3 is zero; +@item +multiply the extended offset by operand 4; +@item +add the result to the base; and +@item +load the value at that address into element @var{i} of operand 0. +@end itemize + +The value of operand 3 does not matter if the offsets are already +address width. + +@cindex @code{mask_gather_load@var{m}} instruction pattern +@item @samp{mask_gather_load@var{m}} +Like @samp{gather_load@var{m}}, but takes an extra mask operand as +operand 5. Bit @var{i} of the mask is set if element @var{i} +of the result should be loaded from memory and clear if element @var{i} +of the result should be set to zero. + @cindex @code{vec_set@var{m}} instruction pattern @item @samp{vec_set@var{m}} Set given field in the vector value. Operand 0 is the vector to modify, |