Version 13 (modified by cameron, 8 years ago) (diff)

--

### IDISA Field Movement Operations

The tables below list the various IDISA field movement operations on vectors of w-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<w>::fill<c>() and r = mvmd<w>::fill(c) fill 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<w>::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 ri = aj slli shift left logical immediate ri = ai+j if i + j <= N, 0 otherwise srli shift right logical immediate ri = ai-j if i > j, 0 otherwise shufflei shuffle immediate ri = at, where t = index(m, i)

The immediate constant value used for shufflei is computed by one of the functions:

 shufflemask2(s1, s2) compute mask for selecting 1 of 2 fields shufflemask4(s1, s2, s3, s4) compute mask for selecting 1 of 4 fields shufflemask8(s1, s2, s3, s4, s5, s6, s7, s8) compute mask for selecting 1 of 8 fields shufflemask16(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16) compute mask for selecting 1 of 16 fields

## Binary Movement Operations

These operations generally have the form r = mvmd<w>::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 ri = ai+j if i + j <= N, bi + j - N otherwise dsrli double shift right logical immediate ri = ai + N -j if i <= j, bi - j otherwise shuffle shuffle ri = at, where t = bi