1 <table frame="all" id="table-basictypes" xreflabel="Table of Opcodes">
2 <title>Table of Opcodes</title>
3 <tgroup cols="3" align="left" colsep="1" rowsep="1">
7 <entry>destination size</entry>
8 <entry>source 1 size</entry>
9 <entry>source 2 size</entry>
10 <entry>description</entry>
11 <entry>pseudo code</entry>
20 <entry>absolute value</entry>
21 <entry>(a < 0) ? -a : a</entry>
36 <entry>add with signed saturate</entry>
37 <entry>clamp(a + b)</entry>
44 <entry>add with unsigned saturate</entry>
45 <entry>clamp(a + b)</entry>
52 <entry>bitwise AND</entry>
53 <entry>a & b</entry>
60 <entry>bitwise AND NOT</entry>
61 <entry>a & (~b)</entry>
68 <entry>signed average</entry>
69 <entry>(a + b + 1)>>1</entry>
76 <entry>unsigned average</entry>
77 <entry>(a + b + 1)>>1</entry>
84 <entry>compare equal</entry>
85 <entry>(a == b) ? (~0) : 0</entry>
88 <entry>cmpgtsb</entry>
92 <entry>compare greater than</entry>
93 <entry>(a > b) ? (~0) : 0</entry>
108 <entry>load from memory</entry>
109 <entry>array[i]</entry>
112 <entry>loadoffb</entry>
116 <entry>load from memory with offset</entry>
117 <entry>array[i+offset]</entry>
120 <entry>loadupdb</entry>
124 <entry>load upsampled duplicate</entry>
125 <entry>array[i>>1]</entry>
128 <entry>loadupib</entry>
132 <entry>load upsampled interpolate</entry>
133 <entry>(array[i>>1] + array[(i+1)>>1] + 1)>>1</entry>
136 <entry>loadpb</entry>
140 <entry>load parameter or constant</entry>
141 <entry>scalar</entry>
144 <entry>ldresnearb</entry>
148 <entry>load, nearest neighbor resampled</entry>
149 <entry>array[(b+c*i)>>8]</entry>
152 <entry>ldresnearl</entry>
156 <entry>load, nearest neighbor resampled</entry>
157 <entry>array[(b+c*i)>>8]</entry>
160 <entry>ldreslinb</entry>
164 <entry>load, bilinear resampled</entry>
165 <entry>special</entry>
168 <entry>ldreslinl</entry>
172 <entry>load, bilinear resampled</entry>
173 <entry>special</entry>
180 <entry>signed maximum</entry>
181 <entry>(a > b) ? a : b</entry>
188 <entry>unsigned maximum</entry>
189 <entry>(a > b) ? a : b</entry>
196 <entry>signed minimum</entry>
197 <entry>(a < b) ? a : b</entry>
204 <entry>unsigned minimum</entry>
205 <entry>(a < b) ? a : b</entry>
212 <entry>low bits of multiply</entry>
216 <entry>mulhsb</entry>
220 <entry>high bits of signed multiply</entry>
221 <entry>(a * b) >> 8</entry>
224 <entry>mulhub</entry>
228 <entry>high bits of unsigned multiply</entry>
229 <entry>(a * b) >> 8</entry>
236 <entry>bitwise or</entry>
244 <entry>shift left</entry>
245 <entry>a << b</entry>
252 <entry>signed shift right</entry>
253 <entry>a >> b</entry>
260 <entry>unsigned shift right</entry>
261 <entry>a >> b</entry>
269 <entry>sign(a)</entry>
272 <entry>storeb</entry>
276 <entry>store to memory</entry>
277 <entry>special</entry>
284 <entry>subtract</entry>
288 <entry>subssb</entry>
292 <entry>subtract with signed saturate</entry>
293 <entry>clamp(a - b)</entry>
296 <entry>subusb</entry>
300 <entry>subtract with unsigned saturate</entry>
301 <entry>clamp(a - b)</entry>
308 <entry>bitwise XOR</entry>
316 <entry>absolute value</entry>
317 <entry>(a < 0) ? -a : a</entry>
328 <entry>addssw</entry>
332 <entry>add with signed saturate</entry>
333 <entry>clamp(a + b)</entry>
336 <entry>addusw</entry>
340 <entry>add with unsigned saturate</entry>
341 <entry>clamp(a + b)</entry>
348 <entry>bitwise AND</entry>
349 <entry>a & b</entry>
356 <entry>bitwise AND NOT</entry>
357 <entry>a & (~b)</entry>
364 <entry>signed average</entry>
365 <entry>(a + b + 1)>>1</entry>
372 <entry>unsigned average</entry>
373 <entry>(a + b + 1)>>1</entry>
376 <entry>cmpeqw</entry>
380 <entry>compare equal</entry>
381 <entry>(a == b) ? (~0) : 0</entry>
384 <entry>cmpgtsw</entry>
388 <entry>compare greater than</entry>
389 <entry>(a > b) ? (~0) : 0</entry>
400 <entry>div255w</entry>
404 <entry>divide by 255</entry>
408 <entry>divluw</entry>
412 <entry>saturated unsigned divide 16-bit by 8-bit</entry>
413 <entry>clamp(a/(b & 255),0,255)</entry>
420 <entry>load from memory</entry>
421 <entry>array[i]</entry>
424 <entry>loadoffw</entry>
428 <entry>load from memory with offset</entry>
429 <entry>array[i+offset]</entry>
432 <entry>loadpw</entry>
436 <entry>load parameter or constant</entry>
437 <entry>scalar</entry>
444 <entry>signed maximum</entry>
445 <entry>(a > b) ? a : b</entry>
452 <entry>unsigned maximum</entry>
453 <entry>(a > b) ? a : b</entry>
460 <entry>signed minimum</entry>
461 <entry>(a < b) ? a : b</entry>
468 <entry>unsigned minimum</entry>
469 <entry>(a < b) ? a : b</entry>
476 <entry>low bits of multiply</entry>
480 <entry>mulhsw</entry>
484 <entry>high bits of signed multiply</entry>
485 <entry>(a * b) >> 8</entry>
488 <entry>mulhuw</entry>
492 <entry>high bits of unsigned multiply</entry>
493 <entry>(a * b) >> 8</entry>
500 <entry>bitwise or</entry>
508 <entry>shift left</entry>
509 <entry>a << b</entry>
516 <entry>signed shift right</entry>
517 <entry>a >> b</entry>
524 <entry>unsigned shift right</entry>
525 <entry>a >> b</entry>
533 <entry>sign(a)</entry>
536 <entry>storew</entry>
540 <entry>store to memory</entry>
541 <entry>special</entry>
548 <entry>subtract</entry>
552 <entry>subssw</entry>
556 <entry>subtract with signed saturate</entry>
557 <entry>clamp(a - b)</entry>
560 <entry>subusw</entry>
564 <entry>subtract with unsigned saturate</entry>
565 <entry>clamp(a - b)</entry>
572 <entry>bitwise XOR</entry>
580 <entry>absolute value</entry>
581 <entry>(a < 0) ? -a : a</entry>
592 <entry>addssl</entry>
596 <entry>add with signed saturate</entry>
597 <entry>clamp(a + b)</entry>
600 <entry>addusl</entry>
604 <entry>add with unsigned saturate</entry>
605 <entry>clamp(a + b)</entry>
612 <entry>bitwise AND</entry>
613 <entry>a & b</entry>
620 <entry>bitwise AND NOT</entry>
621 <entry>a & (~b)</entry>
628 <entry>signed average</entry>
629 <entry>(a + b + 1)>>1</entry>
636 <entry>unsigned average</entry>
637 <entry>(a + b + 1)>>1</entry>
640 <entry>cmpeql</entry>
644 <entry>compare equal</entry>
645 <entry>(a == b) ? (~0) : 0</entry>
648 <entry>cmpgtsl</entry>
652 <entry>compare greater than</entry>
653 <entry>(a > b) ? (~0) : 0</entry>
668 <entry>load from memory</entry>
669 <entry>array[i]</entry>
672 <entry>loadoffl</entry>
676 <entry>load from memory with offset</entry>
677 <entry>array[i+offset]</entry>
680 <entry>loadpl</entry>
684 <entry>load parameter or constant</entry>
685 <entry>scalar</entry>
692 <entry>signed maximum</entry>
693 <entry>(a > b) ? a : b</entry>
700 <entry>unsigned maximum</entry>
701 <entry>(a > b) ? a : b</entry>
708 <entry>signed minimum</entry>
709 <entry>(a < b) ? a : b</entry>
716 <entry>unsigned minimum</entry>
717 <entry>(a < b) ? a : b</entry>
724 <entry>low bits of multiply</entry>
728 <entry>mulhsl</entry>
732 <entry>high bits of signed multiply</entry>
733 <entry>(a * b) >> 16</entry>
736 <entry>mulhul</entry>
740 <entry>high bits of unsigned multiply</entry>
741 <entry>(a * b) >> 16</entry>
748 <entry>bitwise or</entry>
756 <entry>shift left</entry>
757 <entry>a << b</entry>
764 <entry>signed shift right</entry>
765 <entry>a >> b</entry>
772 <entry>unsigned shift right</entry>
773 <entry>a >> b</entry>
781 <entry>sign(a)</entry>
784 <entry>storel</entry>
788 <entry>store to memory</entry>
789 <entry>special</entry>
796 <entry>subtract</entry>
800 <entry>subssl</entry>
804 <entry>subtract with signed saturate</entry>
805 <entry>clamp(a - b)</entry>
808 <entry>subusl</entry>
812 <entry>subtract with unsigned saturate</entry>
813 <entry>clamp(a - b)</entry>
820 <entry>bitwise XOR</entry>
828 <entry>load from memory</entry>
829 <entry>array[i]</entry>
832 <entry>loadpq</entry>
836 <entry>load parameter or constant</entry>
837 <entry>scalar</entry>
840 <entry>storeq</entry>
844 <entry>store to memory</entry>
845 <entry>special</entry>
848 <entry>splatw3q</entry>
852 <entry>duplicates high 16-bits to lower 48 bits</entry>
853 <entry>special</entry>
864 <entry>cmpeqq</entry>
872 <entry>cmpgtsq</entry>
952 <entry>convsbw</entry>
956 <entry>convert signed</entry>
960 <entry>convubw</entry>
964 <entry>convert unsigned</entry>
968 <entry>splatbw</entry>
972 <entry>duplicates 8 bits to both halfs of 16 bits</entry>
973 <entry>special</entry>
976 <entry>splatbl</entry>
980 <entry>duplicates 8 bits to all parts of 32 bits</entry>
981 <entry>special</entry>
984 <entry>convswl</entry>
988 <entry>convert signed</entry>
992 <entry>convuwl</entry>
996 <entry>convert unsigned</entry>
1000 <entry>convslq</entry>
1004 <entry>signed convert</entry>
1008 <entry>convulq</entry>
1012 <entry>unsigned convert</entry>
1016 <entry>convwb</entry>
1020 <entry>convert</entry>
1024 <entry>convhwb</entry>
1028 <entry>shift and convert</entry>
1032 <entry>convssswb</entry>
1036 <entry>convert signed to signed with saturation</entry>
1037 <entry>clamp(a)</entry>
1040 <entry>convsuswb</entry>
1044 <entry>convert signed to unsigned with saturation</entry>
1045 <entry>clamp(a)</entry>
1048 <entry>convusswb</entry>
1052 <entry>convert unsigned to signed with saturation</entry>
1053 <entry>clamp(a)</entry>
1056 <entry>convuuswb</entry>
1060 <entry>convert unsigned to unsigned with saturation</entry>
1061 <entry>clamp(a)</entry>
1064 <entry>convlw</entry>
1068 <entry>convert</entry>
1072 <entry>convhlw</entry>
1076 <entry>shift and convert</entry>
1077 <entry>a>>16</entry>
1080 <entry>convssslw</entry>
1084 <entry>convert signed to signed with saturation</entry>
1085 <entry>clamp(a)</entry>
1088 <entry>convsuslw</entry>
1092 <entry>convert signed to unsigned with saturation</entry>
1093 <entry>clamp(a)</entry>
1096 <entry>convusslw</entry>
1100 <entry>convert unsigned to signed with saturation</entry>
1101 <entry>clamp(a)</entry>
1104 <entry>convuuslw</entry>
1108 <entry>convert unsigned to unsigned with saturation</entry>
1109 <entry>clamp(a)</entry>
1112 <entry>convql</entry>
1116 <entry>convert</entry>
1120 <entry>convsssql</entry>
1124 <entry>convert signed to signed with saturation</entry>
1125 <entry>clamp(a)</entry>
1128 <entry>convsusql</entry>
1132 <entry>convert signed to unsigned with saturation</entry>
1133 <entry>clamp(a)</entry>
1136 <entry>convussql</entry>
1140 <entry>convert unsigned to signed with saturation</entry>
1141 <entry>clamp(a)</entry>
1144 <entry>convuusql</entry>
1148 <entry>convert unsigned to unsigned with saturation</entry>
1149 <entry>clamp(a)</entry>
1152 <entry>mulsbw</entry>
1156 <entry>multiply signed</entry>
1157 <entry>a * b</entry>
1160 <entry>mulubw</entry>
1164 <entry>multiply unsigned</entry>
1165 <entry>a * b</entry>
1168 <entry>mulswl</entry>
1172 <entry>multiply signed</entry>
1173 <entry>a * b</entry>
1176 <entry>muluwl</entry>
1180 <entry>multiply unsigned</entry>
1181 <entry>a * b</entry>
1188 <entry>accumulate</entry>
1196 <entry>accumulate</entry>
1200 <entry>accsadubl</entry>
1204 <entry>accumulate absolute difference</entry>
1205 <entry>+= abs(a - b)</entry>
1208 <entry>swapw</entry>
1212 <entry>endianness swap</entry>
1213 <entry>special</entry>
1216 <entry>swapl</entry>
1220 <entry>endianness swap</entry>
1221 <entry>special</entry>
1224 <entry>swapwl</entry>
1232 <entry>swapq</entry>
1240 <entry>swaplq</entry>
1248 <entry>select0wb</entry>
1252 <entry>select first half</entry>
1253 <entry>special</entry>
1256 <entry>select1wb</entry>
1260 <entry>select second half</entry>
1261 <entry>special</entry>
1264 <entry>select0lw</entry>
1268 <entry>select first half</entry>
1269 <entry>special</entry>
1272 <entry>select1lw</entry>
1276 <entry>select second half</entry>
1277 <entry>special</entry>
1280 <entry>mergewl</entry>
1284 <entry>merge halves</entry>
1285 <entry>special</entry>
1288 <entry>mergebw</entry>
1292 <entry>merge halves</entry>
1293 <entry>special</entry>
1296 <entry>splitql</entry>
1304 <entry>splitlw</entry>
1308 <entry>split first/second words</entry>
1309 <entry>special</entry>
1312 <entry>splitwb</entry>
1316 <entry>split first/second bytes</entry>
1317 <entry>special</entry>
1325 <entry>a + b</entry>
1332 <entry>subtract</entry>
1333 <entry>a - b</entry>
1340 <entry>multiply</entry>
1341 <entry>a * b</entry>
1348 <entry>divide</entry>
1349 <entry>a / b</entry>
1352 <entry>sqrtf</entry>
1356 <entry>square root</entry>
1357 <entry>sqrt(a)</entry>
1364 <entry>maximum</entry>
1365 <entry>max(a,b)</entry>
1372 <entry>minimum</entry>
1373 <entry>min(a,b)</entry>
1376 <entry>cmpeqf</entry>
1380 <entry>compare equal</entry>
1381 <entry>(a == b) ? (~0) : 0</entry>
1384 <entry>cmpltf</entry>
1388 <entry>compare less than</entry>
1389 <entry>(a == b) ? (~0) : 0</entry>
1392 <entry>cmplef</entry>
1396 <entry>compare less than or equal</entry>
1397 <entry>(a == b) ? (~0) : 0</entry>
1400 <entry>convfl</entry>
1404 <entry>convert float point to integer</entry>
1408 <entry>convlf</entry>
1412 <entry>convert integer to floating point</entry>
1448 <entry>sqrtd</entry>
1472 <entry>cmpeqd</entry>
1480 <entry>cmpltd</entry>
1488 <entry>cmpled</entry>
1496 <entry>convdl</entry>
1504 <entry>convld</entry>
1512 <entry>convfd</entry>
1520 <entry>convdf</entry>