Encoding:

MSA

011110

000

df

rt

ws

wd

3R

010100

6

3

2

5

5

5

6

Format:

SLD.df 

GPR Columns Slide

SLD.B wd,ws[rt]

MSA

GPR Columns Slide

SLD.H wd,ws[rt]

MSA

GPR Columns Slide

SLD.W wd,ws[rt]

MSA

GPR Columns Slide

SLD.D wd,ws[rt]

MSA

GPR Columns Slide

Purpose:

GPR Columns Slide

GPR number of columns to slide left source array.

Description:

wd[i] = slide(wd, ws, rt)

Vector registers wd and ws contain 2-dimensional byte arrays (rectangles) stored row-wise, with as many rows as bytes in integer data format df.

The slide instructions manipulate the content of vector registers wd and ws as byte elements, with data format df indicating the 2-dimensional byte array layout.

The two source rectangles wd and ws are concatenated horizontally in the order they appear in the syntax, i.e. first wd and then ws. Place a new destination rectangle over ws and then slide it to the left over the concatenation of wd and ws by the number of columns given in GPR rt. The result is written to vector wd.

GPR rt value is interpreted modulo the number of columns in destination rectangle, or equivalently, the number of data format df elements in the destination vector.

Restrictions:

No data-dependent exceptions are possible.

Operation:

SLD.B
   n = GPR[rt] % (WRLEN/8)
   v = WR[wd] || WR[ws]
   for i in 0 .. WRLEN/8-1
      j = i + n
      WR[wd]8i+7..8i = v8j+7..8j
   endfor
SLD.H
   n = GPR[rt] % (WRLEN/16)
   s = WRLEN/2
   for k in 0, 1
      t = s * k
      v = (WR[wd]t+s-1..t || WR[ws]t+s-1..t)
      for i in 0 .. s/8-1
          j = i + n
          WR[wd]t+8i+7..t+8i = v8j+7..8j
      endfor
   endfor
SLD.W
   n = GPR[rt] % (WRLEN/32)
   s = WRLEN/4
   for k in 0, .., 3
      t = s * k
      v = (WR[wd]t+s-1..t || WR[ws]t+s-1..t)
      for i in 0 .. s/8-1
          j = i + n
          WR[wd]t+8i+7..t+8i = v8j+7..8j
      endfor
   endfor
SLD.D
   n = GPR[rt] % (WRLEN/64)
   s = WRLEN/8
   for k in 0, .., 7
      t = s * k
      v = (WR[wd]t+s-1..t || WR[ws]t+s-1..t)
      for i in 0 .. s/8-1
          j = i + n
          WR[wd]t+8i+7..t+8i = v8j+7..8j
      endfor
   endfor

Exceptions:

Reserved Instruction Exception, MSA Disabled Exception.