=== IDISA Field Movement Operations ===
The tables below list the various IDISA field movement operations on vectors of n-bit
fields, together with their description and semantic specification.
An important characteristic of these operations is that fields
may be moved or rearranged in various ways, but the contents
of the fields remain unchanged.
== Constant Fill Operations ==
The operations `r = mvmd::fill()` and `r = mvmd::fill(c)` fills each ''w''-bit field with an integer value c.
In the first case, the fill value is a compile-time constant.
== Unary Movement Operations ==
These operations generally have the form `r = mvmd::op(a)` for each
operation `op`, where `a` is an operand vectors of ''w''-bit fields and `r` is
the corresponding result vector. Let ''N'' = ''W''/''w'' be the number of
''w''-bit fields in a vector.
|| `splat` || splat || r,,i,, = a,,j,,||
|| `slli` || shift left logical immediate || r,,i,, = a,,i+j,, if i + j <= ''N'', 0 otherwise||
|| `srli` || shift right logical immediate || r,,i,, = a,,i-j,, if i > j, 0 otherwise ||
|| `shufflei` || shuffle immediate || r,,i,, = a,,t,,, where ''t'' = `index(m, i)` ||
== Binary Movement Operations ==
These operations generally have the form `r = mvmd::op(a, b)` for each
operation `op`, where `a` and `b` are operand vectors of ''w''-bit fields and `r` is
the corresponding result vector.
|| `dslli` || double shift left logical immediate || r,,i,, = a,,i+j,, if i + j <= ''N'', b,,i + j - ''N'',, otherwise||
|| `dsrli` || double shift right logical immediate || r,,i,, = a,,i + ''N'' -j,, if i <= j, b,,i - j,, otherwise ||
|| `shuffle` || shuffle || r,,i,, = a,,t,,, where ''t'' = b,,i,,||