MSA 011110 |
000 |
df |
rt |
ws |
wd |
3R 010100 |
6 |
3 |
2 |
5 |
5 |
5 |
6 |
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 |
GPR Columns Slide
GPR number of columns to slide left source array.
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.
No data-dependent exceptions are possible.
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
Reserved Instruction Exception, MSA Disabled Exception.