Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 1 | *** |
| 2 | |
| 3 | add gcc builtins for alpha instructions |
| 4 | |
| 5 | |
| 6 | *** |
| 7 | |
| 8 | custom expand byteswap into nifty |
| 9 | extract/insert/mask byte/word/longword/quadword low/high |
| 10 | sequences |
| 11 | |
| 12 | *** |
| 13 | |
| 14 | see if any of the extract/insert/mask operations can be added |
| 15 | |
| 16 | *** |
| 17 | |
| 18 | match more interesting things for cmovlbc cmovlbs (move if low bit clear/set) |
| 19 | |
| 20 | *** |
| 21 | |
| 22 | lower srem and urem |
| 23 | |
| 24 | remq(i,j): i - (j * divq(i,j)) if j != 0 |
| 25 | remqu(i,j): i - (j * divqu(i,j)) if j != 0 |
| 26 | reml(i,j): i - (j * divl(i,j)) if j != 0 |
| 27 | remlu(i,j): i - (j * divlu(i,j)) if j != 0 |
| 28 | |
| 29 | *** |
| 30 | |
| 31 | add crazy vector instructions (MVI): |
| 32 | |
| 33 | (MIN|MAX)(U|S)(B8|W4) min and max, signed and unsigned, byte and word |
| 34 | PKWB, UNPKBW pack/unpack word to byte |
| 35 | PKLB UNPKBL pack/unpack long to byte |
| 36 | PERR pixel error (sum accross bytes of bytewise abs(i8v8 a - i8v8 b)) |
| 37 | |
| 38 | cmpbytes bytewise cmpeq of i8v8 a and i8v8 b (not part of MVI extentions) |
| 39 | |
| 40 | this has some good examples for other operations that can be synthesised well |
| 41 | from these rather meager vector ops (such as saturating add). |
| 42 | http://www.alphalinux.org/docs/MVI-full.html |