MSA 011110 |
110 |
df |
wt |
ws |
wd |
3R 001110 |
6 |
3 |
2 |
5 |
5 |
5 |
6 |
MAX_A.df |
Vector Maximum Based on Absolute Values | |
MAX_A.B wd,ws,wt |
MSA |
Vector Maximum Based on Absolute Values |
MAX_A.H wd,ws,wt |
MSA |
Vector Maximum Based on Absolute Values |
MAX_A.W wd,ws,wt |
MSA |
Vector Maximum Based on Absolute Values |
MAX_A.D wd,ws,wt |
MSA |
Vector Maximum Based on Absolute Values |
Vector Maximum Based on Absolute Values
Vector and vector maximum based on the absolute values.
wd[i] = absolute_value(ws[i]) > absolute_value(wt[i])? ws[i]: wt[i]
The value with the largest magnitude, i.e. absolute value, between corresponding signed elements in vector ws and vector wt are written to vector wd.
The minimum negative value representable has the largest absolute value.
The operands and results are values in integer data format df.
No data-dependent exceptions are possible.
MAX_A.B for i in 0 .. WRLEN/8-1 WR[wd]8i+7..8i = max_a(WR[ws]8i+7..8i, WR[wt]8i+7..8i, 8) endfor MAX_A.H for i in 0 .. WRLEN/16-1 WR[wd]16i+15..16i = max_a(WR[ws]16i+15..16i, WR[wt]16i+15..16i, 16) endfor MAX_A.W for i in 0 .. WRLEN/32-1 WR[wd]32i+31..32i = max_a(WR[ws]32i+31..32i, WR[wt]32i+31..32i, 32) endfor MAX_A.D for i in 0 .. WRLEN/64-1 WR[wd]64i+63..64i = max_a(WR[ws]64i+63..64i, WR[wt]64i+63..64i, 64) endfor function abs(tt, n) if ttn-1 = 1 then return -ttn-1...0 else return ttn-1..0 endif endfunction abs function max_a(ts, tt, n) t = 0 || abs(tt, n) s = 0 || abs(ts, n) if t < s then return ts else return tt endif endfunction max_a
Reserved Instruction Exception, MSA Disabled Exception.